@nmmty/lazycanvas 0.6.5 → 1.0.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ReadMe.md +1 -1
- package/dist/core/Interpolation.d.ts +30 -0
- package/dist/core/Interpolation.js +200 -0
- package/dist/core/Scene.d.ts +94 -0
- package/dist/core/Scene.js +157 -0
- package/dist/core/Signal.d.ts +133 -0
- package/dist/core/Signal.js +255 -0
- package/dist/core/SignalUtils.d.ts +133 -0
- package/dist/core/SignalUtils.js +333 -0
- package/dist/core/ThreadScheduler.d.ts +38 -0
- package/dist/core/ThreadScheduler.js +74 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.js +21 -0
- package/dist/helpers/Filters.js +1 -1
- package/dist/helpers/FontsList.js +18 -18
- package/dist/helpers/Utlis.d.ts +3 -3
- package/dist/helpers/Utlis.js +25 -36
- package/dist/helpers/index.d.ts +3 -3
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -1
- package/dist/jsx-runtime.d.ts +17 -0
- package/dist/jsx-runtime.js +111 -0
- package/dist/structures/LazyCanvas.d.ts +10 -48
- package/dist/structures/LazyCanvas.js +17 -78
- package/dist/structures/components/BaseLayer.d.ts +78 -32
- package/dist/structures/components/BaseLayer.js +106 -37
- package/dist/structures/components/BezierLayer.d.ts +25 -38
- package/dist/structures/components/BezierLayer.js +88 -53
- package/dist/structures/components/{Group.d.ts → Div.d.ts} +37 -18
- package/dist/structures/components/Div.js +202 -0
- package/dist/structures/components/ImageLayer.d.ts +1 -1
- package/dist/structures/components/ImageLayer.js +28 -29
- package/dist/structures/components/LineLayer.d.ts +18 -36
- package/dist/structures/components/LineLayer.js +43 -45
- package/dist/structures/components/MorphLayer.d.ts +4 -33
- package/dist/structures/components/MorphLayer.js +37 -51
- package/dist/structures/components/Path2DLayer.d.ts +7 -35
- package/dist/structures/components/Path2DLayer.js +32 -41
- package/dist/structures/components/PolygonLayer.d.ts +3 -32
- package/dist/structures/components/PolygonLayer.js +37 -42
- package/dist/structures/components/QuadraticLayer.d.ts +25 -34
- package/dist/structures/components/QuadraticLayer.js +83 -47
- package/dist/structures/components/TextLayer.d.ts +5 -34
- package/dist/structures/components/TextLayer.js +88 -71
- package/dist/structures/components/index.d.ts +10 -11
- package/dist/structures/components/index.js +1 -2
- package/dist/structures/helpers/Exporter.d.ts +13 -4
- package/dist/structures/helpers/Exporter.js +82 -46
- package/dist/structures/helpers/Font.js +1 -17
- package/dist/structures/helpers/Gradient.js +35 -49
- package/dist/structures/helpers/Link.js +2 -14
- package/dist/structures/helpers/Pattern.js +10 -18
- package/dist/structures/helpers/index.d.ts +7 -7
- package/dist/structures/helpers/readers/JSONReader.d.ts +4 -4
- package/dist/structures/helpers/readers/JSONReader.js +44 -48
- package/dist/structures/helpers/readers/YAMLReader.js +11 -11
- package/dist/structures/managers/FontsManager.js +9 -18
- package/dist/structures/managers/LayersManager.d.ts +18 -28
- package/dist/structures/managers/LayersManager.js +14 -36
- package/dist/structures/managers/LayoutManager.d.ts +23 -0
- package/dist/structures/managers/LayoutManager.js +409 -0
- package/dist/structures/managers/index.d.ts +3 -5
- package/dist/structures/managers/index.js +1 -3
- package/dist/structures/managers/{RenderManager.d.ts → piplines/ClassicRenderPipeline.d.ts} +4 -30
- package/dist/structures/managers/piplines/ClassicRenderPipeline.js +90 -0
- package/dist/structures/managers/piplines/ModernRenderPipeline.d.ts +44 -0
- package/dist/structures/managers/piplines/ModernRenderPipeline.js +123 -0
- package/dist/structures/managers/piplines/index.d.ts +24 -0
- package/dist/structures/managers/piplines/index.js +18 -0
- package/dist/types/enum.d.ts +1 -2
- package/dist/types/enum.js +1 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types.d.ts +257 -107
- package/dist/utils/APNGEncoder.d.ts +67 -0
- package/dist/utils/APNGEncoder.js +205 -0
- package/dist/utils/DrawUtils.d.ts +9 -0
- package/dist/utils/DrawUtils.js +42 -0
- package/dist/utils/LazyUtil.js +1 -2
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/utils.d.ts +4 -7
- package/dist/utils/utils.js +140 -78
- package/package.json +61 -59
- package/dist/structures/components/ClearLayer.d.ts +0 -147
- package/dist/structures/components/ClearLayer.js +0 -158
- package/dist/structures/components/Group.js +0 -153
- package/dist/structures/managers/AnimationManager.d.ts +0 -120
- package/dist/structures/managers/AnimationManager.js +0 -99
- package/dist/structures/managers/PluginManager.d.ts +0 -230
- package/dist/structures/managers/PluginManager.js +0 -182
- package/dist/structures/managers/RenderManager.js +0 -183
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APNGEncoder = void 0;
|
|
4
|
+
exports.createAPNG = createAPNG;
|
|
5
|
+
const node_zlib_1 = require("node:zlib");
|
|
6
|
+
/**
|
|
7
|
+
* APNG Encoder that works directly with Uint8ClampedArray (ImageData)
|
|
8
|
+
* Much faster than encoding each frame to PNG separately
|
|
9
|
+
*/
|
|
10
|
+
class APNGEncoder {
|
|
11
|
+
constructor(width, height, fps = 30) {
|
|
12
|
+
this.frames = [];
|
|
13
|
+
/**
|
|
14
|
+
* CRC32 lookup table
|
|
15
|
+
*/
|
|
16
|
+
this.crcTable = (() => {
|
|
17
|
+
const table = new Uint32Array(256);
|
|
18
|
+
for (let i = 0; i < 256; i++) {
|
|
19
|
+
let c = i;
|
|
20
|
+
for (let k = 0; k < 8; k++) {
|
|
21
|
+
c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
|
|
22
|
+
}
|
|
23
|
+
table[i] = c;
|
|
24
|
+
}
|
|
25
|
+
return table;
|
|
26
|
+
})();
|
|
27
|
+
this.width = width;
|
|
28
|
+
this.height = height;
|
|
29
|
+
this.fps = fps;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Add a frame from ImageData
|
|
33
|
+
*/
|
|
34
|
+
addFrame(imageData) {
|
|
35
|
+
if (imageData.length !== this.width * this.height * 4) {
|
|
36
|
+
throw new Error(`Invalid ImageData size. Expected ${this.width * this.height * 4}, got ${imageData.length}`);
|
|
37
|
+
}
|
|
38
|
+
this.frames.push(imageData);
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
addFrames(...imageDatas) {
|
|
42
|
+
for (const imageData of imageDatas) {
|
|
43
|
+
this.addFrame(imageData);
|
|
44
|
+
}
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Encode all frames to APNG buffer
|
|
49
|
+
*/
|
|
50
|
+
encode() {
|
|
51
|
+
if (this.frames.length === 0) {
|
|
52
|
+
throw new Error("No frames to encode");
|
|
53
|
+
}
|
|
54
|
+
const chunks = [];
|
|
55
|
+
// PNG signature
|
|
56
|
+
chunks.push(Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]));
|
|
57
|
+
// IHDR chunk
|
|
58
|
+
chunks.push(this.createIHDR());
|
|
59
|
+
// acTL chunk (animation control)
|
|
60
|
+
chunks.push(this.createACTL());
|
|
61
|
+
// Add all frames with proper sequence numbering
|
|
62
|
+
let sequenceNumber = 0;
|
|
63
|
+
for (let i = 0; i < this.frames.length; i++) {
|
|
64
|
+
chunks.push(...this.createFrame(i, sequenceNumber));
|
|
65
|
+
// First frame: fcTL (0) + IDAT = 1 chunk with sequence
|
|
66
|
+
// Other frames: fcTL (n) + fdAT (n+1) = 2 chunks with sequences
|
|
67
|
+
sequenceNumber += i === 0 ? 1 : 2;
|
|
68
|
+
}
|
|
69
|
+
// IEND chunk
|
|
70
|
+
chunks.push(this.createIEND());
|
|
71
|
+
return Buffer.concat(chunks);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create IHDR chunk (image header)
|
|
75
|
+
*/
|
|
76
|
+
createIHDR() {
|
|
77
|
+
const data = Buffer.alloc(13);
|
|
78
|
+
data.writeUInt32BE(this.width, 0);
|
|
79
|
+
data.writeUInt32BE(this.height, 4);
|
|
80
|
+
data[8] = 8; // bit depth
|
|
81
|
+
data[9] = 6; // color type: RGBA
|
|
82
|
+
data[10] = 0; // compression method
|
|
83
|
+
data[11] = 0; // filter method
|
|
84
|
+
data[12] = 0; // interlace method
|
|
85
|
+
return this.createChunk("IHDR", data);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Create acTL chunk (animation control)
|
|
89
|
+
*/
|
|
90
|
+
createACTL() {
|
|
91
|
+
const data = Buffer.alloc(8);
|
|
92
|
+
data.writeUInt32BE(this.frames.length, 0); // num_frames
|
|
93
|
+
data.writeUInt32BE(0, 4); // num_plays (0 = infinite)
|
|
94
|
+
return this.createChunk("acTL", data);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create frame chunks (fcTL + fdAT or IDAT)
|
|
98
|
+
* @param frameIndex - Index of the frame (0-based)
|
|
99
|
+
* @param sequenceNumber - Global sequence number for fcTL/fdAT chunks
|
|
100
|
+
*/
|
|
101
|
+
createFrame(frameIndex, sequenceNumber) {
|
|
102
|
+
const chunks = [];
|
|
103
|
+
// fcTL chunk (frame control) - always comes first
|
|
104
|
+
const fctl = Buffer.alloc(26);
|
|
105
|
+
fctl.writeUInt32BE(sequenceNumber, 0); // sequence_number
|
|
106
|
+
fctl.writeUInt32BE(this.width, 4); // width
|
|
107
|
+
fctl.writeUInt32BE(this.height, 8); // height
|
|
108
|
+
fctl.writeUInt32BE(0, 12); // x_offset
|
|
109
|
+
fctl.writeUInt32BE(0, 16); // y_offset
|
|
110
|
+
// Frame delay (delay_num / delay_den seconds)
|
|
111
|
+
const delayNum = 1;
|
|
112
|
+
const delayDen = this.fps;
|
|
113
|
+
fctl.writeUInt16BE(delayNum, 20);
|
|
114
|
+
fctl.writeUInt16BE(delayDen, 22);
|
|
115
|
+
fctl[24] = 0; // dispose_op: APNG_DISPOSE_OP_NONE
|
|
116
|
+
fctl[25] = 0; // blend_op: APNG_BLEND_OP_SOURCE
|
|
117
|
+
chunks.push(this.createChunk("fcTL", fctl));
|
|
118
|
+
// Compress frame data
|
|
119
|
+
const imageData = this.frames[frameIndex];
|
|
120
|
+
const compressed = this.compressImageData(imageData);
|
|
121
|
+
// First frame uses IDAT (no sequence number), subsequent frames use fdAT
|
|
122
|
+
if (frameIndex === 0) {
|
|
123
|
+
chunks.push(this.createChunk("IDAT", compressed));
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// fdAT includes sequence number (sequenceNumber + 1 for the data chunk)
|
|
127
|
+
const fdatData = Buffer.alloc(4 + compressed.length);
|
|
128
|
+
fdatData.writeUInt32BE(sequenceNumber + 1, 0);
|
|
129
|
+
compressed.copy(fdatData, 4);
|
|
130
|
+
chunks.push(this.createChunk("fdAT", fdatData));
|
|
131
|
+
}
|
|
132
|
+
return chunks;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Compress ImageData using PNG filter and zlib
|
|
136
|
+
*/
|
|
137
|
+
compressImageData(imageData) {
|
|
138
|
+
const bytesPerPixel = 4; // RGBA
|
|
139
|
+
const stride = this.width * bytesPerPixel;
|
|
140
|
+
const filtered = Buffer.alloc(imageData.length + this.height);
|
|
141
|
+
// Apply PNG filter type 0 (None) to each scanline
|
|
142
|
+
for (let y = 0; y < this.height; y++) {
|
|
143
|
+
const offset = y * stride;
|
|
144
|
+
const filteredOffset = y * (stride + 1);
|
|
145
|
+
filtered[filteredOffset] = 0; // Filter type: None
|
|
146
|
+
imageData.subarray(offset, offset + stride).forEach((byte, i) => {
|
|
147
|
+
filtered[filteredOffset + 1 + i] = byte;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// Compress with zlib
|
|
151
|
+
return (0, node_zlib_1.deflateSync)(filtered, { level: 6 });
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Create IEND chunk
|
|
155
|
+
*/
|
|
156
|
+
createIEND() {
|
|
157
|
+
return this.createChunk("IEND", Buffer.alloc(0));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Create a PNG chunk with length, type, data, and CRC
|
|
161
|
+
*/
|
|
162
|
+
createChunk(type, data) {
|
|
163
|
+
const length = Buffer.alloc(4);
|
|
164
|
+
length.writeUInt32BE(data.length, 0);
|
|
165
|
+
const typeBuffer = Buffer.from(type, "ascii");
|
|
166
|
+
const crc = this.crc32(Buffer.concat([typeBuffer, data]));
|
|
167
|
+
const crcBuffer = Buffer.alloc(4);
|
|
168
|
+
crcBuffer.writeUInt32BE(crc, 0);
|
|
169
|
+
return Buffer.concat([length, typeBuffer, data, crcBuffer]);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Calculate CRC32 checksum
|
|
173
|
+
*/
|
|
174
|
+
crc32(data) {
|
|
175
|
+
let crc = 0xffffffff;
|
|
176
|
+
for (let i = 0; i < data.length; i++) {
|
|
177
|
+
crc = this.crcTable[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
|
|
178
|
+
}
|
|
179
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get number of frames
|
|
183
|
+
*/
|
|
184
|
+
getFrameCount() {
|
|
185
|
+
return this.frames.length;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Clear all frames
|
|
189
|
+
*/
|
|
190
|
+
clear() {
|
|
191
|
+
this.frames = [];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
exports.APNGEncoder = APNGEncoder;
|
|
195
|
+
exports.default = APNGEncoder;
|
|
196
|
+
/**
|
|
197
|
+
* Helper function to create APNG from ImageData array
|
|
198
|
+
*/
|
|
199
|
+
function createAPNG(frames, width, height, fps = 30) {
|
|
200
|
+
const encoder = new APNGEncoder(width, height, fps);
|
|
201
|
+
for (const frame of frames) {
|
|
202
|
+
encoder.addFrame(frame);
|
|
203
|
+
}
|
|
204
|
+
return encoder.encode();
|
|
205
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SKRSContext2D } from "@napi-rs/canvas";
|
|
2
|
+
import { Signal } from "../core/Signal";
|
|
3
|
+
import { StrokeOptions } from "../types";
|
|
4
|
+
export declare class DrawUtils {
|
|
5
|
+
static drawShadow(ctx: SKRSContext2D, shadow: any): void;
|
|
6
|
+
static opacity(ctx: SKRSContext2D, opacity?: number | Signal<number>): void;
|
|
7
|
+
static filters(ctx: SKRSContext2D, filters: string | null | undefined): void;
|
|
8
|
+
static fillStyle(ctx: SKRSContext2D, color: string | CanvasGradient | CanvasPattern, fillStyle?: StrokeOptions): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DrawUtils = void 0;
|
|
4
|
+
const Signal_1 = require("../core/Signal");
|
|
5
|
+
class DrawUtils {
|
|
6
|
+
static drawShadow(ctx, shadow) {
|
|
7
|
+
if (shadow) {
|
|
8
|
+
ctx.shadowColor = shadow.color;
|
|
9
|
+
ctx.shadowBlur = shadow.blur || 0;
|
|
10
|
+
ctx.shadowOffsetX = shadow.offsetX || 0;
|
|
11
|
+
ctx.shadowOffsetY = shadow.offsetY || 0;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
static opacity(ctx, opacity = 1) {
|
|
15
|
+
const opacityValue = (0, Signal_1.unwrap)(opacity);
|
|
16
|
+
if (opacityValue < 1) {
|
|
17
|
+
ctx.globalAlpha = opacityValue;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static filters(ctx, filters) {
|
|
21
|
+
if (filters) {
|
|
22
|
+
ctx.filter = filters;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
static fillStyle(ctx, color, fillStyle) {
|
|
26
|
+
if (fillStyle) {
|
|
27
|
+
ctx.lineWidth = fillStyle.width;
|
|
28
|
+
ctx.lineCap = fillStyle.cap || "butt";
|
|
29
|
+
ctx.lineJoin = fillStyle.join || "miter";
|
|
30
|
+
ctx.miterLimit = fillStyle.miterLimit || 10;
|
|
31
|
+
if (fillStyle.dash) {
|
|
32
|
+
ctx.setLineDash(fillStyle.dash);
|
|
33
|
+
ctx.lineDashOffset = fillStyle.dashOffset || 0;
|
|
34
|
+
}
|
|
35
|
+
ctx.strokeStyle = color;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
ctx.fillStyle = color;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.DrawUtils = DrawUtils;
|
package/dist/utils/LazyUtil.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defaultArg = exports.LazyLog = exports.LazyError = void 0;
|
|
4
4
|
class LazyError extends Error {
|
|
5
|
-
message;
|
|
6
5
|
constructor(message) {
|
|
7
6
|
super(message);
|
|
8
7
|
this.message = "[LazyCanvas] [ERROR] " + message;
|
|
@@ -31,5 +30,5 @@ exports.defaultArg = {
|
|
|
31
30
|
},
|
|
32
31
|
vl(vertical, layer) {
|
|
33
32
|
return { vertical: vertical || false, layer: layer || false };
|
|
34
|
-
}
|
|
33
|
+
},
|
|
35
34
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./APNGEncoder"), exports);
|
|
18
|
+
__exportStar(require("./DrawUtils"), exports);
|
|
19
|
+
__exportStar(require("./LazyUtil"), exports);
|
|
20
|
+
__exportStar(require("./utils"), exports);
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AnyCentring, AnyLayer, AnyTextAlign, ColorType, LayerType, PointNumber, ScaleType, SubStringColor, Transform } from "../types";
|
|
2
2
|
import { Canvas, SKRSContext2D, SvgCanvas } from "@napi-rs/canvas";
|
|
3
3
|
import { LayersManager } from "../structures/managers";
|
|
4
|
-
import {
|
|
4
|
+
import { Div } from "../structures/components";
|
|
5
5
|
export declare function generateID(type: string): string;
|
|
6
|
-
export declare function isColor(v: ColorType | SubStringColor):
|
|
6
|
+
export declare function isColor(v: ColorType | SubStringColor): boolean;
|
|
7
7
|
export declare function parseToNormal(v: ScaleType, ctx: SKRSContext2D, canvas: Canvas | SvgCanvas, layer?: {
|
|
8
8
|
width: number;
|
|
9
9
|
height: number;
|
|
@@ -31,9 +31,6 @@ export declare function parser(ctx: SKRSContext2D, canvas: Canvas | SvgCanvas, m
|
|
|
31
31
|
};
|
|
32
32
|
}>): Record<string, number>;
|
|
33
33
|
};
|
|
34
|
-
export declare function drawShadow(ctx: SKRSContext2D, shadow: any): void;
|
|
35
|
-
export declare function opacity(ctx: SKRSContext2D, opacity?: number): void;
|
|
36
|
-
export declare function filters(ctx: SKRSContext2D, filters: string | null | undefined): void;
|
|
37
34
|
export declare function parseFillStyle(ctx: SKRSContext2D, color: ColorType | SubStringColor, opts: {
|
|
38
35
|
debug?: boolean;
|
|
39
36
|
layer?: {
|
|
@@ -44,7 +41,7 @@ export declare function parseFillStyle(ctx: SKRSContext2D, color: ColorType | Su
|
|
|
44
41
|
align: AnyCentring;
|
|
45
42
|
};
|
|
46
43
|
manager?: LayersManager;
|
|
47
|
-
}): string |
|
|
44
|
+
}): string | Promise<CanvasPattern> | CanvasGradient;
|
|
48
45
|
export declare function transform(ctx: SKRSContext2D, transform: Transform, layer?: {
|
|
49
46
|
width: number;
|
|
50
47
|
height: number;
|
|
@@ -80,4 +77,4 @@ export declare function getBoundingBoxBezier(points: PointNumber[], steps?: numb
|
|
|
80
77
|
height: number;
|
|
81
78
|
};
|
|
82
79
|
export declare function resize(value: ScaleType, ratio: number): number | string;
|
|
83
|
-
export declare function resizeLayers(layers: Array<AnyLayer |
|
|
80
|
+
export declare function resizeLayers(layers: Array<AnyLayer | Div>, ratio: number): (AnyLayer | Div)[];
|