Files
RomanKuschanow-ComfyUI-Adva…/js/transforms/multiply.js
T
2024-04-04 18:05:24 +03:00

103 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { app } from "/scripts/app.js";
import {addCanvas, computeCanvasSize} from "../utils.js";
const multiplyWidget = {
type: "customCanvas",
name: "Multiply-Canvas",
get value() {
return this.canvas.value;
},
set value(x) {
this.canvas.value = x;
},
draw: function (ctx, node, widgetWidth, widgetY) {
if (!node.canvasHeight) {
computeCanvasSize(node, node.size)
}
const visible = true
const t = ctx.getTransform();
const margin = 10
const widgetHeight = node.canvasHeight
const width = 32
const height = 32
const scale = Math.min((widgetWidth - margin * 2) / width, (widgetHeight - margin * 2) / height)
Object.assign(this.canvas.style, {
left: `${t.e}px`,
top: `${t.f + (widgetY * t.d)}px`,
width: `${widgetWidth * t.a}px`,
height: `${widgetHeight * t.d}px`,
position: "absolute",
zIndex: 1,
fontSize: `${t.d * 10.0}px`,
pointerEvents: "none",
});
this.canvas.hidden = !visible;
let backgroundWidth = width * scale
let backgroundHeight = height * scale
let xOffset = margin
if (backgroundWidth < widgetWidth) {
xOffset += (widgetWidth - backgroundWidth) / 2 - margin
}
let yOffset = margin
if (backgroundHeight < widgetHeight) {
yOffset += (widgetHeight - backgroundHeight) / 2 - margin
}
let widgetX = xOffset
widgetY = widgetY + yOffset
const multiplayer = node.widgets[3].value
const operationType = node.widgets[2].value
const widgetMargin = 10
const x = widgetX + widgetMargin
const y = widgetY + widgetMargin
function drawFractionAndMultiply(x, y) {
ctx.font = `${Math.min(backgroundWidth, backgroundHeight)/4}px Consolas`;
ctx.fillStyle = "#2383ef"
ctx.fillText(`${multiplayer.toFixed(2)} ×`, x, y);
}
function drawReplaceShape(x, y) {
}
function drawCombineShape(x, y) {
}
drawFractionAndMultiply(x, y);
if (operationType === 'replace') {
drawReplaceShape(x, y);
} else {
drawCombineShape(x, y);
}
},
};
app.registerExtension({
name: "Comfy.LatentControl.Transform.Multiply",
async beforeRegisterNodeDef (nodeType, nodeData, app){
if (nodeData.name === "MultiplyTransform") {
const onNodeCreated = nodeType.prototype.onNodeCreated;
nodeType.prototype.onNodeCreated = function () {
const r = onNodeCreated ? onNodeCreated.apply(this, arguments) : undefined;
addCanvas(this, app, multiplyWidget)
return r;
}
}
},
});