Spaces:
Running
on
L40S
Running
on
L40S
import { app } from "../../scripts/app.js"; | |
import { RgthreeBaseServerNode } from "./base_node.js"; | |
import { NodeTypesString } from "./constants.js"; | |
class ImageInsetCrop extends RgthreeBaseServerNode { | |
constructor(title = ImageInsetCrop.title) { | |
super(title); | |
} | |
onAdded(graph) { | |
const measurementWidget = this.widgets[0]; | |
let callback = measurementWidget.callback; | |
measurementWidget.callback = (...args) => { | |
this.setWidgetStep(); | |
callback && callback.apply(measurementWidget, [...args]); | |
}; | |
this.setWidgetStep(); | |
} | |
configure(info) { | |
super.configure(info); | |
this.setWidgetStep(); | |
} | |
setWidgetStep() { | |
const measurementWidget = this.widgets[0]; | |
for (let i = 1; i <= 4; i++) { | |
if (measurementWidget.value === "Pixels") { | |
this.widgets[i].options.step = 80; | |
this.widgets[i].options.max = ImageInsetCrop.maxResolution; | |
} | |
else { | |
this.widgets[i].options.step = 10; | |
this.widgets[i].options.max = 99; | |
} | |
} | |
} | |
async handleAction(action) { | |
if (action === "Reset Crop") { | |
for (const widget of this.widgets) { | |
if (["left", "right", "top", "bottom"].includes(widget.name)) { | |
widget.value = 0; | |
} | |
} | |
} | |
} | |
static setUp(comfyClass, nodeData) { | |
RgthreeBaseServerNode.registerForOverride(comfyClass, nodeData, ImageInsetCrop); | |
} | |
} | |
ImageInsetCrop.title = NodeTypesString.IMAGE_INSET_CROP; | |
ImageInsetCrop.type = NodeTypesString.IMAGE_INSET_CROP; | |
ImageInsetCrop.comfyClass = NodeTypesString.IMAGE_INSET_CROP; | |
ImageInsetCrop.exposedActions = ["Reset Crop"]; | |
ImageInsetCrop.maxResolution = 8192; | |
app.registerExtension({ | |
name: "rgthree.ImageInsetCrop", | |
async beforeRegisterNodeDef(nodeType, nodeData, _app) { | |
if (nodeData.name === NodeTypesString.IMAGE_INSET_CROP) { | |
ImageInsetCrop.setUp(nodeType, nodeData); | |
} | |
}, | |
}); | |