♻️ switching to typescript
This commit is contained in:
@@ -5,13 +5,17 @@ import {
|
||||
Variables,
|
||||
ImageVar,
|
||||
BooleanVar,
|
||||
NumberVar
|
||||
NumberVar,
|
||||
VariableValueType
|
||||
} from '../io/AbstractIOSet';
|
||||
|
||||
const inputs = {
|
||||
image: {
|
||||
type: 'Image',
|
||||
} as ImageVar,
|
||||
width: {
|
||||
type: 'Number',
|
||||
} as NumberVar,
|
||||
};
|
||||
|
||||
const outputs = {
|
||||
@@ -29,11 +33,10 @@ const outputs = {
|
||||
|
||||
|
||||
export default class Canvas2d<I extends Variables, O extends Variables> extends Node<I & (typeof inputs), O & (typeof outputs)> {
|
||||
constructor(name, inputDefinition: I, outputDefiniton: O, options) {
|
||||
constructor(name, inputDefinition: I, outputDefiniton: O) {
|
||||
super(name,
|
||||
merge(inputs, inputDefinition),
|
||||
merge(outputs, outputDefiniton),
|
||||
options
|
||||
);
|
||||
}
|
||||
|
||||
@@ -42,7 +45,11 @@ export default class Canvas2d<I extends Variables, O extends Variables> extends
|
||||
}
|
||||
|
||||
async _update() {
|
||||
const values = {};
|
||||
type valuesType = {
|
||||
[K in keyof I]: VariableValueType<I[K]['type']>;
|
||||
}
|
||||
const values:valuesType = <valuesType>{};
|
||||
|
||||
for (let name of Object.keys(this.in.variables)) {
|
||||
values[name] = await waitForMedia(this.in[name].value);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import Canvas2d from './Canvas2d';
|
||||
import {PoolCanvas} from '../../canvas/CanvasPool';
|
||||
import {createCanvas, mediaSize, paintToCanvas} from '../canvas';
|
||||
import {
|
||||
ImageVar,
|
||||
@@ -89,7 +90,7 @@ const outputs = {
|
||||
export default class Compose extends Canvas2d<typeof inputs, typeof outputs> {
|
||||
|
||||
constructor(options={}) {
|
||||
super('Compose', inputs, outputs, options);
|
||||
super('Compose', inputs, outputs);
|
||||
}
|
||||
|
||||
get width() {
|
||||
@@ -149,13 +150,13 @@ export default class Compose extends Canvas2d<typeof inputs, typeof outputs> {
|
||||
ctx.globalCompositeOperation = 'source-over';
|
||||
|
||||
if (this.bg) {
|
||||
paintToCanvas(canvas, this.bg.image, this.bg);
|
||||
paintToCanvas(canvas, <PoolCanvas<any>>this.bg.image, this.bg);
|
||||
}
|
||||
|
||||
ctx.globalCompositeOperation = mode;
|
||||
|
||||
if (this.fg) {
|
||||
paintToCanvas(canvas, this.fg.image, this.fg);
|
||||
paintToCanvas(canvas, <PoolCanvas<any>>this.fg.image, this.fg);
|
||||
}
|
||||
|
||||
return canvas;
|
||||
|
||||
@@ -29,7 +29,7 @@ const outputs = {
|
||||
export default class EmptySpace extends Canvas2d<typeof inputs, typeof outputs> {
|
||||
|
||||
constructor() {
|
||||
super('EmptySpace', inputs, outputs, {});
|
||||
super('EmptySpace', inputs, outputs);
|
||||
this._update();
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ const outputs = {};
|
||||
export default class Flip extends Canvas2d<typeof inputs, typeof outputs> {
|
||||
|
||||
constructor() {
|
||||
super('Flip', inputs, outputs, {});
|
||||
super('Flip', inputs, outputs);
|
||||
this._update();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// @ts-nocheck
|
||||
import Node from './Canvas2d';
|
||||
import {waitForMedia} from '../../utils';
|
||||
import {createCanvas, mediaSize, paintToCanvas} from '../canvas';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import Canvas2d from './Canvas2d';
|
||||
import {waitForMedia} from '../../utils';
|
||||
import {createCanvas, mediaSize, paintToCanvas} from '../canvas';
|
||||
import {createCanvas, mediaSize, paintToCanvas, Bounds} from '../canvas';
|
||||
import {
|
||||
ImageVar,
|
||||
StringVar,
|
||||
@@ -27,7 +27,7 @@ const outputs = {};
|
||||
export default class Resize extends Canvas2d<typeof inputs, typeof outputs> {
|
||||
|
||||
constructor() {
|
||||
super('Resize', inputs, outputs, {});
|
||||
super('Resize', inputs, outputs);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -52,7 +52,7 @@ export default class Resize extends Canvas2d<typeof inputs, typeof outputs> {
|
||||
const {width: destWidth, height: destHeight} = mediaSize(canvas);
|
||||
const srcAspectRatio = (srcWidth / srcHeight);
|
||||
const destAspectRatio = (destWidth / destHeight);
|
||||
const newImage = {};
|
||||
const newImage:Partial<Bounds> = {};
|
||||
if (srcAspectRatio > destAspectRatio) {
|
||||
newImage.width = destHeight * srcAspectRatio;
|
||||
newImage.height = destHeight;
|
||||
@@ -64,7 +64,7 @@ export default class Resize extends Canvas2d<typeof inputs, typeof outputs> {
|
||||
newImage.top = (destHeight - newImage.height) / 2;
|
||||
newImage.left = (destWidth - newImage.width) / 2;
|
||||
|
||||
paintToCanvas(canvas, media, newImage);
|
||||
paintToCanvas(canvas, media, <Bounds>newImage);
|
||||
return canvas;
|
||||
}
|
||||
}
|
||||
@@ -65,7 +65,7 @@ const outputs = {};
|
||||
export default class Resize extends Canvas2d<typeof inputs, typeof outputs> {
|
||||
|
||||
constructor() {
|
||||
super('Text', inputs, outputs, {});
|
||||
super('Text', inputs, outputs);
|
||||
this._update();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user