@nmmty/lazycanvas 0.3.3 → 0.3.4
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/dist/index.d.ts +5 -4
- package/dist/index.js +4 -1
- package/dist/structures/components/BezierLayer.d.ts +16 -0
- package/dist/structures/components/BezierLayer.js +26 -8
- package/dist/structures/components/ImageLayer.js +8 -5
- package/dist/structures/components/LineLayer.d.ts +8 -0
- package/dist/structures/components/LineLayer.js +19 -4
- package/dist/structures/components/MorphLayer.js +8 -5
- package/dist/structures/components/QuadraticLayer.d.ts +16 -0
- package/dist/structures/components/QuadraticLayer.js +22 -6
- package/dist/structures/components/TextLayer.js +16 -9
- package/dist/structures/helpers/Link.d.ts +22 -0
- package/dist/structures/helpers/Link.js +39 -0
- package/dist/types/components/TextLayer.d.ts +3 -1
- package/dist/types/enum.d.ts +6 -0
- package/dist/types/enum.js +8 -1
- package/dist/types/helpers/Link.d.ts +7 -0
- package/dist/types/index.d.ts +17 -16
- package/dist/types/types.d.ts +19 -3
- package/dist/utils/LazyUtil.d.ts +10 -0
- package/dist/utils/LazyUtil.js +9 -1
- package/dist/utils/utils.d.ts +20 -0
- package/dist/utils/utils.js +142 -28
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -7,13 +7,14 @@ import { QuadraticLayer } from "./structures/components/QuadraticLayer";
|
|
|
7
7
|
import { LineLayer } from "./structures/components/LineLayer";
|
|
8
8
|
import { BaseLayer } from "./structures/components/BaseLayer";
|
|
9
9
|
import { Group } from "./structures/components/Group";
|
|
10
|
-
import { LayerType, LayerScaleType, LineCap, LineJoin, TextAlign, TextDirection, TextBaseline, FontWeight, Export, Centring, PatternType, SaveFormat, GradientType } from "./types/enum";
|
|
11
|
-
import type { AnyLayer, AnyCentring, AnyPatternType, AnyGradientType, AnyTextAlign, AnyTextDirection, AnyTextBaseline, AnyWeight, AnyExport, AnyLineCap, AnyLineJoin, AnySaveFormat, ScaleType, ColorType, IFont, IFonts, IGradient, IPattern, IImageLayer, IImageLayerProps, IMorphLayer, IMorphLayerProps, ITextLayer, ITextLayerProps, IBezierLayer, IBezierLayerProps, IQuadraticLayer, IQuadraticLayerProps, ILineLayer, ILineLayerProps, IBaseLayer, IBaseLayerProps, IGroup } from "./types";
|
|
10
|
+
import { LayerType, LayerScaleType, LineCap, LineJoin, TextAlign, TextDirection, TextBaseline, FontWeight, Export, Centring, PatternType, SaveFormat, GradientType, LinkType } from "./types/enum";
|
|
11
|
+
import type { AnyLayer, AnyCentring, AnyPatternType, AnyGradientType, AnyTextAlign, AnyTextDirection, AnyTextBaseline, AnyWeight, AnyExport, AnyLineCap, AnyLineJoin, AnySaveFormat, AnyLinkType, ScaleType, ColorType, IFont, IFonts, IGradient, IPattern, IImageLayer, IImageLayerProps, IMorphLayer, IMorphLayerProps, ITextLayer, ITextLayerProps, IBezierLayer, IBezierLayerProps, IQuadraticLayer, IQuadraticLayerProps, ILineLayer, ILineLayerProps, IBaseLayer, IBaseLayerProps, IGroup } from "./types";
|
|
12
12
|
import { Font } from "./structures/helpers/Font";
|
|
13
13
|
import { Gradient } from "./structures/helpers/Gradient";
|
|
14
14
|
import { Pattern } from "./structures/helpers/Pattern";
|
|
15
|
+
import { Link } from "./structures/helpers/Link";
|
|
15
16
|
import { saveFile } from "./utils/utils";
|
|
16
17
|
import { Filters } from "./helpers/Filters";
|
|
17
18
|
import { FontsList } from "./helpers/FontsList";
|
|
18
|
-
export { LazyCanvas, ImageLayer, MorphLayer, TextLayer, BezierLayer, QuadraticLayer, LineLayer, BaseLayer, Group, Font, Gradient, Pattern, LayerScaleType, LayerType, FontWeight, GradientType, Export, LineCap, LineJoin, TextAlign, TextDirection, TextBaseline, SaveFormat, Centring, PatternType, saveFile, Filters, FontsList, };
|
|
19
|
-
export type { IFont, IFonts, IGradient, IPattern, IImageLayer, IImageLayerProps, IMorphLayer, IMorphLayerProps, ITextLayer, ITextLayerProps, IBaseLayer, IBaseLayerProps, IBezierLayer, IBezierLayerProps, IQuadraticLayer, IQuadraticLayerProps, ILineLayer, ILineLayerProps, IGroup, AnyLayer, AnyCentring, AnyPatternType, AnyGradientType, AnyTextAlign, AnyTextDirection, AnyTextBaseline, AnyWeight, AnyExport, AnyLineCap, AnyLineJoin, AnySaveFormat, ScaleType, ColorType };
|
|
19
|
+
export { LazyCanvas, ImageLayer, MorphLayer, TextLayer, BezierLayer, QuadraticLayer, LineLayer, BaseLayer, Group, Font, Gradient, Pattern, Link, LayerScaleType, LayerType, FontWeight, GradientType, Export, LineCap, LineJoin, TextAlign, TextDirection, TextBaseline, SaveFormat, Centring, PatternType, LinkType, saveFile, Filters, FontsList, };
|
|
20
|
+
export type { IFont, IFonts, IGradient, IPattern, IImageLayer, IImageLayerProps, IMorphLayer, IMorphLayerProps, ITextLayer, ITextLayerProps, IBaseLayer, IBaseLayerProps, IBezierLayer, IBezierLayerProps, IQuadraticLayer, IQuadraticLayerProps, ILineLayer, ILineLayerProps, IGroup, AnyLayer, AnyCentring, AnyPatternType, AnyGradientType, AnyTextAlign, AnyTextDirection, AnyTextBaseline, AnyWeight, AnyExport, AnyLineCap, AnyLineJoin, AnySaveFormat, AnyLinkType, ScaleType, ColorType };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FontsList = exports.Filters = exports.saveFile = exports.PatternType = exports.Centring = exports.SaveFormat = exports.TextBaseline = exports.TextDirection = exports.TextAlign = exports.LineJoin = exports.LineCap = exports.Export = exports.GradientType = exports.FontWeight = exports.LayerType = exports.LayerScaleType = exports.Pattern = exports.Gradient = exports.Font = exports.Group = exports.BaseLayer = exports.LineLayer = exports.QuadraticLayer = exports.BezierLayer = exports.TextLayer = exports.MorphLayer = exports.ImageLayer = exports.LazyCanvas = void 0;
|
|
3
|
+
exports.FontsList = exports.Filters = exports.saveFile = exports.LinkType = exports.PatternType = exports.Centring = exports.SaveFormat = exports.TextBaseline = exports.TextDirection = exports.TextAlign = exports.LineJoin = exports.LineCap = exports.Export = exports.GradientType = exports.FontWeight = exports.LayerType = exports.LayerScaleType = exports.Link = exports.Pattern = exports.Gradient = exports.Font = exports.Group = exports.BaseLayer = exports.LineLayer = exports.QuadraticLayer = exports.BezierLayer = exports.TextLayer = exports.MorphLayer = exports.ImageLayer = exports.LazyCanvas = void 0;
|
|
4
4
|
const LazyCanvas_1 = require("./structures/LazyCanvas");
|
|
5
5
|
Object.defineProperty(exports, "LazyCanvas", { enumerable: true, get: function () { return LazyCanvas_1.LazyCanvas; } });
|
|
6
6
|
const ImageLayer_1 = require("./structures/components/ImageLayer");
|
|
@@ -33,12 +33,15 @@ Object.defineProperty(exports, "Centring", { enumerable: true, get: function ()
|
|
|
33
33
|
Object.defineProperty(exports, "PatternType", { enumerable: true, get: function () { return enum_1.PatternType; } });
|
|
34
34
|
Object.defineProperty(exports, "SaveFormat", { enumerable: true, get: function () { return enum_1.SaveFormat; } });
|
|
35
35
|
Object.defineProperty(exports, "GradientType", { enumerable: true, get: function () { return enum_1.GradientType; } });
|
|
36
|
+
Object.defineProperty(exports, "LinkType", { enumerable: true, get: function () { return enum_1.LinkType; } });
|
|
36
37
|
const Font_1 = require("./structures/helpers/Font");
|
|
37
38
|
Object.defineProperty(exports, "Font", { enumerable: true, get: function () { return Font_1.Font; } });
|
|
38
39
|
const Gradient_1 = require("./structures/helpers/Gradient");
|
|
39
40
|
Object.defineProperty(exports, "Gradient", { enumerable: true, get: function () { return Gradient_1.Gradient; } });
|
|
40
41
|
const Pattern_1 = require("./structures/helpers/Pattern");
|
|
41
42
|
Object.defineProperty(exports, "Pattern", { enumerable: true, get: function () { return Pattern_1.Pattern; } });
|
|
43
|
+
const Link_1 = require("./structures/helpers/Link");
|
|
44
|
+
Object.defineProperty(exports, "Link", { enumerable: true, get: function () { return Link_1.Link; } });
|
|
42
45
|
const utils_1 = require("./utils/utils");
|
|
43
46
|
Object.defineProperty(exports, "saveFile", { enumerable: true, get: function () { return utils_1.saveFile; } });
|
|
44
47
|
const Filters_1 = require("./helpers/Filters");
|
|
@@ -34,6 +34,22 @@ export declare class BezierLayer extends BaseLayer<IBezierLayerProps> {
|
|
|
34
34
|
* @param miterLimit {number} - The `miterLimit` of the stroke.
|
|
35
35
|
*/
|
|
36
36
|
setStroke(width: number, cap?: CanvasLineCap, join?: CanvasLineJoin, dash?: number[], dashOffset?: number, miterLimit?: number): this;
|
|
37
|
+
getBoundingBox(ctx: SKRSContext2D, canvas: Canvas, manager: LayersManager): {
|
|
38
|
+
max: {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
};
|
|
42
|
+
min: {
|
|
43
|
+
x: number;
|
|
44
|
+
y: number;
|
|
45
|
+
};
|
|
46
|
+
center: {
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
};
|
|
50
|
+
width: number;
|
|
51
|
+
height: number;
|
|
52
|
+
};
|
|
37
53
|
draw(ctx: SKRSContext2D, canvas: Canvas, manager: LayersManager, debug: boolean): Promise<void>;
|
|
38
54
|
/**
|
|
39
55
|
* @returns {IBezierLayer}
|
|
@@ -75,15 +75,33 @@ class BezierLayer extends BaseLayer_1.BaseLayer {
|
|
|
75
75
|
};
|
|
76
76
|
return this;
|
|
77
77
|
}
|
|
78
|
+
getBoundingBox(ctx, canvas, manager) {
|
|
79
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
80
|
+
const { xs, ys, cp1x, cp1y, cp2x, cp2y, xe, ye } = parcer.parseBatch({
|
|
81
|
+
xs: { v: this.props.x },
|
|
82
|
+
ys: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
83
|
+
cp1x: { v: this.props.controlPoints[0].x },
|
|
84
|
+
cp1y: { v: this.props.controlPoints[0].y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
85
|
+
cp2x: { v: this.props.controlPoints[1].x },
|
|
86
|
+
cp2y: { v: this.props.controlPoints[1].y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
87
|
+
xe: { v: this.props.endPoint.x },
|
|
88
|
+
ye: { v: this.props.endPoint.y, options: LazyUtil_1.defaultArg.vl(true) }
|
|
89
|
+
});
|
|
90
|
+
const { max, min, center, width, height } = (0, utils_1.getBoundingBoxBezier)([{ x: xs, y: ys }, { x: cp1x, y: cp1y }, { x: cp2x, y: cp2y }, { x: xe, y: ye }]);
|
|
91
|
+
return { max, min, center, width, height };
|
|
92
|
+
}
|
|
78
93
|
async draw(ctx, canvas, manager, debug) {
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
94
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
95
|
+
const { xs, ys, cp1x, cp1y, cp2x, cp2y, xe, ye } = parcer.parseBatch({
|
|
96
|
+
xs: { v: this.props.x },
|
|
97
|
+
ys: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
98
|
+
cp1x: { v: this.props.controlPoints[0].x },
|
|
99
|
+
cp1y: { v: this.props.controlPoints[0].y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
100
|
+
cp2x: { v: this.props.controlPoints[1].x },
|
|
101
|
+
cp2y: { v: this.props.controlPoints[1].y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
102
|
+
xe: { v: this.props.endPoint.x },
|
|
103
|
+
ye: { v: this.props.endPoint.y, options: LazyUtil_1.defaultArg.vl(true) }
|
|
104
|
+
});
|
|
87
105
|
const { max, min, center, width, height } = (0, utils_1.getBoundingBoxBezier)([{ x: xs, y: ys }, { x: cp1x, y: cp1y }, { x: cp2x, y: cp2y }, { x: xe, y: ye }]);
|
|
88
106
|
let fillStyle = await (0, utils_1.parseFillStyle)(ctx, this.props.fillStyle);
|
|
89
107
|
if (debug)
|
|
@@ -62,11 +62,14 @@ class ImageLayer extends BaseLayer_1.BaseLayer {
|
|
|
62
62
|
return this;
|
|
63
63
|
}
|
|
64
64
|
async draw(ctx, canvas, manager, debug) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
66
|
+
const { xs, ys, w, h } = parcer.parseBatch({
|
|
67
|
+
xs: { v: this.props.x },
|
|
68
|
+
ys: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
69
|
+
w: { v: this.props.size.width },
|
|
70
|
+
h: { v: this.props.size.height, options: LazyUtil_1.defaultArg.vl(true) },
|
|
71
|
+
});
|
|
72
|
+
const r = parcer.parse(this.props.size.radius, LazyUtil_1.defaultArg.wh(w / 2, h / 2), LazyUtil_1.defaultArg.vl(false, true));
|
|
70
73
|
let { x, y } = (0, utils_1.centring)(this.props.centring, this.type, w, h, xs, ys);
|
|
71
74
|
if (debug)
|
|
72
75
|
LazyUtil_1.LazyLog.log('none', `ImageLayer:`, { x, y, w, h, r });
|
|
@@ -26,6 +26,14 @@ export declare class LineLayer extends BaseLayer<ILineLayerProps> {
|
|
|
26
26
|
* @param miterLimit {number} - The `miterLimit` of the stroke.
|
|
27
27
|
*/
|
|
28
28
|
setStroke(width: number, cap?: CanvasLineCap, join?: CanvasLineJoin, dash?: number[], dashOffset?: number, miterLimit?: number): this;
|
|
29
|
+
getBoundingBox(ctx: SKRSContext2D, canvas: Canvas, manager: LayersManager): {
|
|
30
|
+
xs: number;
|
|
31
|
+
ys: number;
|
|
32
|
+
xe: number;
|
|
33
|
+
ye: number;
|
|
34
|
+
width: number;
|
|
35
|
+
height: number;
|
|
36
|
+
};
|
|
29
37
|
draw(ctx: SKRSContext2D, canvas: Canvas, manager: LayersManager, debug: boolean): Promise<void>;
|
|
30
38
|
toJSON(): ILineLayer;
|
|
31
39
|
}
|
|
@@ -65,11 +65,26 @@ class LineLayer extends BaseLayer_1.BaseLayer {
|
|
|
65
65
|
};
|
|
66
66
|
return this;
|
|
67
67
|
}
|
|
68
|
+
getBoundingBox(ctx, canvas, manager) {
|
|
69
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
70
|
+
const { xs, ys, xe, ye } = parcer.parseBatch({
|
|
71
|
+
xs: { v: this.props.x },
|
|
72
|
+
ys: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
73
|
+
xe: { v: this.props.endPoint.x },
|
|
74
|
+
ye: { v: this.props.endPoint.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
75
|
+
});
|
|
76
|
+
let width = xe - xs;
|
|
77
|
+
let height = ye - ys;
|
|
78
|
+
return { xs, ys, xe, ye, width, height };
|
|
79
|
+
}
|
|
68
80
|
async draw(ctx, canvas, manager, debug) {
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
82
|
+
const { xs, ys, xe, ye } = parcer.parseBatch({
|
|
83
|
+
xs: { v: this.props.x },
|
|
84
|
+
ys: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
85
|
+
xe: { v: this.props.endPoint.x },
|
|
86
|
+
ye: { v: this.props.endPoint.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
87
|
+
});
|
|
73
88
|
let width = xe - xs;
|
|
74
89
|
let height = ye - ys;
|
|
75
90
|
let fillStyle = await (0, utils_1.parseFillStyle)(ctx, this.props.fillStyle);
|
|
@@ -81,11 +81,14 @@ class MorphLayer extends BaseLayer_1.BaseLayer {
|
|
|
81
81
|
return this;
|
|
82
82
|
}
|
|
83
83
|
async draw(ctx, canvas, manager, debug) {
|
|
84
|
-
const
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
85
|
+
const { xs, ys, w, h } = parcer.parseBatch({
|
|
86
|
+
xs: { v: this.props.x },
|
|
87
|
+
ys: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
88
|
+
w: { v: this.props.size.width },
|
|
89
|
+
h: { v: this.props.size.height, options: LazyUtil_1.defaultArg.vl(true) },
|
|
90
|
+
});
|
|
91
|
+
const r = parcer.parse(this.props.size.radius, LazyUtil_1.defaultArg.wh(w / 2, h / 2), LazyUtil_1.defaultArg.vl(false, true));
|
|
89
92
|
let { x, y } = (0, utils_1.centring)(this.props.centring, this.type, w, h, xs, ys);
|
|
90
93
|
let fillStyle = await (0, utils_1.parseFillStyle)(ctx, this.props.fillStyle);
|
|
91
94
|
if (debug)
|
|
@@ -32,6 +32,22 @@ export declare class QuadraticLayer extends BaseLayer<IQuadraticLayerProps> {
|
|
|
32
32
|
* @param miterLimit {number} - The `miterLimit` of the stroke.
|
|
33
33
|
*/
|
|
34
34
|
setStroke(width: number, cap?: CanvasLineCap, join?: CanvasLineJoin, dash?: number[], dashOffset?: number, miterLimit?: number): this;
|
|
35
|
+
getBoundingBox(ctx: SKRSContext2D, canvas: Canvas, manager: LayersManager): {
|
|
36
|
+
max: {
|
|
37
|
+
x: number;
|
|
38
|
+
y: number;
|
|
39
|
+
};
|
|
40
|
+
min: {
|
|
41
|
+
x: number;
|
|
42
|
+
y: number;
|
|
43
|
+
};
|
|
44
|
+
center: {
|
|
45
|
+
x: number;
|
|
46
|
+
y: number;
|
|
47
|
+
};
|
|
48
|
+
width: number;
|
|
49
|
+
height: number;
|
|
50
|
+
};
|
|
35
51
|
draw(ctx: SKRSContext2D, canvas: Canvas, manager: LayersManager, debug: boolean): Promise<void>;
|
|
36
52
|
/**
|
|
37
53
|
* @returns {IQuadraticLayer}
|
|
@@ -74,13 +74,29 @@ class QuadraticLayer extends BaseLayer_1.BaseLayer {
|
|
|
74
74
|
};
|
|
75
75
|
return this;
|
|
76
76
|
}
|
|
77
|
+
getBoundingBox(ctx, canvas, manager) {
|
|
78
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
79
|
+
const { xs, ys, cx, cy, xe, ye } = parcer.parseBatch({
|
|
80
|
+
xs: { v: this.props.x },
|
|
81
|
+
ys: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
82
|
+
cx: { v: this.props.controlPoint.x },
|
|
83
|
+
cy: { v: this.props.controlPoint.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
84
|
+
xe: { v: this.props.endPoint.x },
|
|
85
|
+
ye: { v: this.props.endPoint.y, options: LazyUtil_1.defaultArg.vl(true) }
|
|
86
|
+
});
|
|
87
|
+
const { max, min, center, width, height } = (0, utils_1.getBoundingBoxBezier)([{ x: xs, y: ys }, { x: cx, y: cy }, { x: xe, y: ye }]);
|
|
88
|
+
return { max, min, center, width, height };
|
|
89
|
+
}
|
|
77
90
|
async draw(ctx, canvas, manager, debug) {
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
91
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
92
|
+
const { xs, ys, cx, cy, xe, ye } = parcer.parseBatch({
|
|
93
|
+
xs: { v: this.props.x },
|
|
94
|
+
ys: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
95
|
+
cx: { v: this.props.controlPoint.x },
|
|
96
|
+
cy: { v: this.props.controlPoint.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
97
|
+
xe: { v: this.props.endPoint.x },
|
|
98
|
+
ye: { v: this.props.endPoint.y, options: LazyUtil_1.defaultArg.vl(true) }
|
|
99
|
+
});
|
|
84
100
|
const { max, min, center, width, height } = (0, utils_1.getBoundingBoxBezier)([{ x: xs, y: ys }, { x: cx, y: cy }, { x: xe, y: ye }]);
|
|
85
101
|
let fillStyle = await (0, utils_1.parseFillStyle)(ctx, this.props.fillStyle);
|
|
86
102
|
if (debug)
|
|
@@ -22,9 +22,11 @@ class TextLayer extends BaseLayer_1.BaseLayer {
|
|
|
22
22
|
this.props.filled = true;
|
|
23
23
|
this.props.multiline = {
|
|
24
24
|
enabled: false,
|
|
25
|
+
spacing: 1.1,
|
|
26
|
+
};
|
|
27
|
+
this.props.size = {
|
|
25
28
|
width: 'vw',
|
|
26
29
|
height: 0,
|
|
27
|
-
spacing: 1.1,
|
|
28
30
|
};
|
|
29
31
|
this.props.centring = enum_1.Centring.Center;
|
|
30
32
|
}
|
|
@@ -73,10 +75,12 @@ class TextLayer extends BaseLayer_1.BaseLayer {
|
|
|
73
75
|
setMultiline(enabled, width, height, spacing) {
|
|
74
76
|
this.props.multiline = {
|
|
75
77
|
enabled: enabled,
|
|
76
|
-
width: width,
|
|
77
|
-
height: height,
|
|
78
78
|
spacing: spacing || 1.1,
|
|
79
79
|
};
|
|
80
|
+
this.props.size = {
|
|
81
|
+
width,
|
|
82
|
+
height,
|
|
83
|
+
};
|
|
80
84
|
return this;
|
|
81
85
|
}
|
|
82
86
|
/**
|
|
@@ -152,8 +156,8 @@ class TextLayer extends BaseLayer_1.BaseLayer {
|
|
|
152
156
|
return this;
|
|
153
157
|
}
|
|
154
158
|
measureText(ctx, canvas) {
|
|
155
|
-
const w = (0, utils_1.parseToNormal)(this.props.
|
|
156
|
-
const h = (0, utils_1.parseToNormal)(this.props.
|
|
159
|
+
const w = (0, utils_1.parseToNormal)(this.props.size?.width, ctx, canvas);
|
|
160
|
+
const h = (0, utils_1.parseToNormal)(this.props.size?.height, ctx, canvas, { width: w, height: 0 }, { vertical: true });
|
|
157
161
|
if (this.props.multiline.enabled) {
|
|
158
162
|
return { width: w, height: h };
|
|
159
163
|
}
|
|
@@ -164,10 +168,13 @@ class TextLayer extends BaseLayer_1.BaseLayer {
|
|
|
164
168
|
}
|
|
165
169
|
}
|
|
166
170
|
async draw(ctx, canvas, manager, debug) {
|
|
167
|
-
const
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
+
const parcer = (0, utils_1.parser)(ctx, canvas, manager);
|
|
172
|
+
const { x, y, w, h } = parcer.parseBatch({
|
|
173
|
+
x: { v: this.props.x },
|
|
174
|
+
y: { v: this.props.y, options: LazyUtil_1.defaultArg.vl(true) },
|
|
175
|
+
w: { v: this.props.size?.width },
|
|
176
|
+
h: { v: this.props.size?.height, options: LazyUtil_1.defaultArg.vl(true) },
|
|
177
|
+
});
|
|
171
178
|
if (debug)
|
|
172
179
|
LazyUtil_1.LazyLog.log('none', `TextLayer:`, { x, y, w, h });
|
|
173
180
|
ctx.save();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AnyLinkType, ILink, ScaleType } from "../../types";
|
|
2
|
+
export declare class Link {
|
|
3
|
+
source: string;
|
|
4
|
+
type: AnyLinkType;
|
|
5
|
+
additionalSpacing: ScaleType;
|
|
6
|
+
constructor(props?: ILink);
|
|
7
|
+
/**
|
|
8
|
+
* @description Sets the source of the link.
|
|
9
|
+
* @param source {string} - The `id` of the layer to link.
|
|
10
|
+
*/
|
|
11
|
+
setSource(source: string): this;
|
|
12
|
+
/**
|
|
13
|
+
* @description Sets the type of the link.
|
|
14
|
+
* @param type {AnyLinkType} - The `type` of the link.
|
|
15
|
+
*/
|
|
16
|
+
setType(type: AnyLinkType): this;
|
|
17
|
+
/**
|
|
18
|
+
* @description Sets the additional spacing of the link.
|
|
19
|
+
* @param additionalSpacing {ScaleType} - The `additionalSpacing` of the link.
|
|
20
|
+
*/
|
|
21
|
+
setSpacing(additionalSpacing: ScaleType): this;
|
|
22
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Link = void 0;
|
|
4
|
+
const enum_1 = require("../../types/enum");
|
|
5
|
+
class Link {
|
|
6
|
+
source;
|
|
7
|
+
type;
|
|
8
|
+
additionalSpacing;
|
|
9
|
+
constructor(props) {
|
|
10
|
+
this.source = props?.source || '';
|
|
11
|
+
this.type = props?.type || enum_1.LinkType.Width;
|
|
12
|
+
this.additionalSpacing = props?.additionalSpacing || 0;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @description Sets the source of the link.
|
|
16
|
+
* @param source {string} - The `id` of the layer to link.
|
|
17
|
+
*/
|
|
18
|
+
setSource(source) {
|
|
19
|
+
this.source = source;
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @description Sets the type of the link.
|
|
24
|
+
* @param type {AnyLinkType} - The `type` of the link.
|
|
25
|
+
*/
|
|
26
|
+
setType(type) {
|
|
27
|
+
this.type = type;
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @description Sets the additional spacing of the link.
|
|
32
|
+
* @param additionalSpacing {ScaleType} - The `additionalSpacing` of the link.
|
|
33
|
+
*/
|
|
34
|
+
setSpacing(additionalSpacing) {
|
|
35
|
+
this.additionalSpacing = additionalSpacing;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Link = Link;
|
|
@@ -14,9 +14,11 @@ export interface ITextLayerProps extends IBaseLayerProps {
|
|
|
14
14
|
};
|
|
15
15
|
multiline: {
|
|
16
16
|
enabled: boolean;
|
|
17
|
+
spacing?: number;
|
|
18
|
+
};
|
|
19
|
+
size: {
|
|
17
20
|
width: ScaleType;
|
|
18
21
|
height: ScaleType;
|
|
19
|
-
spacing?: number;
|
|
20
22
|
};
|
|
21
23
|
align: AnyTextAlign;
|
|
22
24
|
baseline: AnyTextBaseline;
|
package/dist/types/enum.d.ts
CHANGED
package/dist/types/enum.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PatternType = exports.Centring = exports.SaveFormat = exports.Export = exports.LineJoin = exports.LineCap = exports.TextDirection = exports.TextBaseline = exports.TextAlign = exports.FontWeight = exports.GradientType = exports.LayerScaleType = exports.LayerType = void 0;
|
|
3
|
+
exports.LinkType = exports.PatternType = exports.Centring = exports.SaveFormat = exports.Export = exports.LineJoin = exports.LineCap = exports.TextDirection = exports.TextBaseline = exports.TextAlign = exports.FontWeight = exports.GradientType = exports.LayerScaleType = exports.LayerType = void 0;
|
|
4
4
|
var LayerType;
|
|
5
5
|
(function (LayerType) {
|
|
6
6
|
LayerType["Base"] = "base";
|
|
@@ -110,3 +110,10 @@ var PatternType;
|
|
|
110
110
|
PatternType["RepeatY"] = "repeat-y";
|
|
111
111
|
PatternType["NoRepeat"] = "no-repeat";
|
|
112
112
|
})(PatternType || (exports.PatternType = PatternType = {}));
|
|
113
|
+
var LinkType;
|
|
114
|
+
(function (LinkType) {
|
|
115
|
+
LinkType["Width"] = "width";
|
|
116
|
+
LinkType["Height"] = "height";
|
|
117
|
+
LinkType["X"] = "x";
|
|
118
|
+
LinkType["Y"] = "y";
|
|
119
|
+
})(LinkType || (exports.LinkType = LinkType = {}));
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
export * from "./types";
|
|
2
|
-
export * from "./components/BaseLayer";
|
|
3
|
-
export * from "./components/TextLayer";
|
|
4
|
-
export * from "./components/ImageLayer";
|
|
5
|
-
export * from "./components/MorphLayer";
|
|
6
|
-
export * from "./components/BezierLayer";
|
|
7
|
-
export * from "./components/QuadraticLayer";
|
|
8
|
-
export * from "./components/LineLayer";
|
|
9
|
-
export * from "./components/Group";
|
|
10
|
-
export * from "./helpers/Font";
|
|
11
|
-
export * from "./helpers/Gradient";
|
|
12
|
-
export * from "./helpers/Pattern";
|
|
13
|
-
export * from "./
|
|
14
|
-
export * from "./managers/
|
|
15
|
-
export * from "./managers/
|
|
16
|
-
export * from "./
|
|
1
|
+
export type * from "./types";
|
|
2
|
+
export type * from "./components/BaseLayer";
|
|
3
|
+
export type * from "./components/TextLayer";
|
|
4
|
+
export type * from "./components/ImageLayer";
|
|
5
|
+
export type * from "./components/MorphLayer";
|
|
6
|
+
export type * from "./components/BezierLayer";
|
|
7
|
+
export type * from "./components/QuadraticLayer";
|
|
8
|
+
export type * from "./components/LineLayer";
|
|
9
|
+
export type * from "./components/Group";
|
|
10
|
+
export type * from "./helpers/Font";
|
|
11
|
+
export type * from "./helpers/Gradient";
|
|
12
|
+
export type * from "./helpers/Pattern";
|
|
13
|
+
export type * from "./helpers/Link";
|
|
14
|
+
export type * from "./managers/LayersManager";
|
|
15
|
+
export type * from "./managers/RenderManager";
|
|
16
|
+
export type * from "./managers/FontsManager";
|
|
17
|
+
export type * from "./LazyCanvas";
|
package/dist/types/types.d.ts
CHANGED
|
@@ -7,9 +7,23 @@ import { BezierLayer } from "../structures/components/BezierLayer";
|
|
|
7
7
|
import { QuadraticLayer } from "../structures/components/QuadraticLayer";
|
|
8
8
|
import { LineLayer } from "../structures/components/LineLayer";
|
|
9
9
|
import { Group } from "../structures/components/Group";
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
import { Link } from "../structures/helpers/Link";
|
|
11
|
+
import {
|
|
12
|
+
FontWeight,
|
|
13
|
+
GradientType,
|
|
14
|
+
TextAlign,
|
|
15
|
+
TextBaseline,
|
|
16
|
+
TextDirection,
|
|
17
|
+
LineCap,
|
|
18
|
+
LineJoin,
|
|
19
|
+
Export,
|
|
20
|
+
Centring,
|
|
21
|
+
PatternType,
|
|
22
|
+
SaveFormat,
|
|
23
|
+
LinkType
|
|
24
|
+
} from "./enum";
|
|
25
|
+
|
|
26
|
+
export type ScaleType = string | number | 'vw' | 'vh' | 'vmin' | 'vmax' | Link;
|
|
13
27
|
|
|
14
28
|
export type ColorType = string | Gradient | Pattern;
|
|
15
29
|
|
|
@@ -37,6 +51,8 @@ export type AnyPatternType = PatternType | 'repeat' | 'repeat-x' | 'repeat-y' |
|
|
|
37
51
|
|
|
38
52
|
export type AnySaveFormat = SaveFormat | 'png' | 'jpeg' | 'jpg' | 'svg';
|
|
39
53
|
|
|
54
|
+
export type AnyLinkType = LinkType | 'width' | 'height' | 'x' | 'y';
|
|
55
|
+
|
|
40
56
|
export type Point = {
|
|
41
57
|
x: ScaleType;
|
|
42
58
|
y: ScaleType;
|
package/dist/utils/LazyUtil.d.ts
CHANGED
|
@@ -5,3 +5,13 @@ export declare class LazyError extends Error {
|
|
|
5
5
|
export declare class LazyLog {
|
|
6
6
|
static log(type?: string, ...message: any): void;
|
|
7
7
|
}
|
|
8
|
+
export declare const defaultArg: {
|
|
9
|
+
wh(w?: number, h?: number): {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
vl(vertical?: boolean, layer?: boolean): {
|
|
14
|
+
vertical: boolean;
|
|
15
|
+
layer: boolean;
|
|
16
|
+
};
|
|
17
|
+
};
|
package/dist/utils/LazyUtil.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LazyLog = exports.LazyError = void 0;
|
|
3
|
+
exports.defaultArg = exports.LazyLog = exports.LazyError = void 0;
|
|
4
4
|
class LazyError extends Error {
|
|
5
5
|
message;
|
|
6
6
|
constructor(message) {
|
|
@@ -25,3 +25,11 @@ class LazyLog {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
exports.LazyLog = LazyLog;
|
|
28
|
+
exports.defaultArg = {
|
|
29
|
+
wh(w, h) {
|
|
30
|
+
return { width: w || 0, height: h || 0 };
|
|
31
|
+
},
|
|
32
|
+
vl(vertical, layer) {
|
|
33
|
+
return { vertical: vertical || false, layer: layer || false };
|
|
34
|
+
}
|
|
35
|
+
};
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -15,6 +15,26 @@ export declare function parseToNormal(v: ScaleType, ctx: SKRSContext2D, canvas:
|
|
|
15
15
|
vertical?: boolean;
|
|
16
16
|
layer?: boolean;
|
|
17
17
|
}, manager?: LayersManager): number;
|
|
18
|
+
export declare function parser(ctx: SKRSContext2D, canvas: Canvas, manager?: LayersManager): {
|
|
19
|
+
parse(v: ScaleType, layer?: {
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
}, options?: {
|
|
23
|
+
vertical?: boolean;
|
|
24
|
+
layer?: boolean;
|
|
25
|
+
}): number;
|
|
26
|
+
parseBatch(values: Record<string, {
|
|
27
|
+
v: ScaleType;
|
|
28
|
+
layer?: {
|
|
29
|
+
width: number;
|
|
30
|
+
height: number;
|
|
31
|
+
};
|
|
32
|
+
options?: {
|
|
33
|
+
vertical?: boolean;
|
|
34
|
+
layer?: boolean;
|
|
35
|
+
};
|
|
36
|
+
}>): Record<string, number>;
|
|
37
|
+
};
|
|
18
38
|
export declare function drawShadow(ctx: SKRSContext2D, shadow: any): void;
|
|
19
39
|
export declare function opacity(ctx: SKRSContext2D, opacity: number): void;
|
|
20
40
|
export declare function filters(ctx: SKRSContext2D, filters: string): void;
|
package/dist/utils/utils.js
CHANGED
|
@@ -23,14 +23,18 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.getBoundingBoxBezier = exports.centring = exports.isImageUrlValid = exports.generateRandomName = exports.saveFile = exports.transform = exports.parseFillStyle = exports.filters = exports.opacity = exports.drawShadow = exports.parseToNormal = exports.parseColor = exports.parseHex = exports.isColor = exports.generateID = void 0;
|
|
26
|
+
exports.getBoundingBoxBezier = exports.centring = exports.isImageUrlValid = exports.generateRandomName = exports.saveFile = exports.transform = exports.parseFillStyle = exports.filters = exports.opacity = exports.drawShadow = exports.parser = exports.parseToNormal = exports.parseColor = exports.parseHex = exports.isColor = exports.generateID = void 0;
|
|
27
27
|
const enum_1 = require("../types/enum");
|
|
28
28
|
const Gradient_1 = require("../structures/helpers/Gradient");
|
|
29
29
|
const LazyUtil_1 = require("./LazyUtil");
|
|
30
30
|
const fs = __importStar(require("fs"));
|
|
31
31
|
const jimp = __importStar(require("jimp"));
|
|
32
32
|
const Pattern_1 = require("../structures/helpers/Pattern");
|
|
33
|
-
const
|
|
33
|
+
const Link_1 = require("../structures/helpers/Link");
|
|
34
|
+
const Group_1 = require("../structures/components/Group");
|
|
35
|
+
const LineLayer_1 = require("../structures/components/LineLayer");
|
|
36
|
+
const BezierLayer_1 = require("../structures/components/BezierLayer");
|
|
37
|
+
const QuadraticLayer_1 = require("../structures/components/QuadraticLayer");
|
|
34
38
|
function generateID(type) {
|
|
35
39
|
return `${type}-${Math.random().toString(36).substr(2, 9)}`;
|
|
36
40
|
}
|
|
@@ -38,7 +42,7 @@ exports.generateID = generateID;
|
|
|
38
42
|
let percentReg = /^(\d+)%$/;
|
|
39
43
|
let pxReg = /^(\d+)px$/;
|
|
40
44
|
let canvasReg = /^(vw|vh|vmin|vmax)$/;
|
|
41
|
-
let linkReg = /^(link-w|link-h)-([A-Za-z0-9_]+)-(\d+)$/;
|
|
45
|
+
let linkReg = /^(link-w|link-h|link-x|link-y)-([A-Za-z0-9_]+)-(\d+)$/;
|
|
42
46
|
let hexReg = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
|
|
43
47
|
let rgbReg = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/;
|
|
44
48
|
let rgbaReg = /^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(0|0?\.\d+|1(\.0)?)\)$/;
|
|
@@ -120,47 +124,157 @@ function parseToNormal(v, ctx, canvas, layer = { width: 0, height: 0 }, options
|
|
|
120
124
|
if (typeof v === 'number') {
|
|
121
125
|
return v;
|
|
122
126
|
}
|
|
123
|
-
else if (
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
else if (pxReg.test(v)) {
|
|
127
|
-
return parseFloat(v);
|
|
128
|
-
}
|
|
129
|
-
else if (canvasReg.test(v)) {
|
|
130
|
-
if (v === 'vw') {
|
|
131
|
-
return (options.layer ? layer.width : canvas.width);
|
|
127
|
+
else if (typeof v === 'string') {
|
|
128
|
+
if (percentReg.test(v)) {
|
|
129
|
+
return (parseFloat(v) / 100) * (options.layer ? (options.vertical ? layer.width : layer.height) : (options.vertical ? canvas.width : canvas.height));
|
|
132
130
|
}
|
|
133
|
-
else if (v
|
|
134
|
-
return (
|
|
131
|
+
else if (pxReg.test(v)) {
|
|
132
|
+
return parseFloat(v);
|
|
135
133
|
}
|
|
136
|
-
else if (v
|
|
137
|
-
|
|
134
|
+
else if (canvasReg.test(v)) {
|
|
135
|
+
if (v === 'vw') {
|
|
136
|
+
return (options.layer ? layer.width : canvas.width);
|
|
137
|
+
}
|
|
138
|
+
else if (v === 'vh') {
|
|
139
|
+
return (options.layer ? layer.height : canvas.height);
|
|
140
|
+
}
|
|
141
|
+
else if (v === 'vmin') {
|
|
142
|
+
return (options.layer ? Math.max(layer.width, layer.height) : Math.min(canvas.width, canvas.height));
|
|
143
|
+
}
|
|
144
|
+
else if (v === 'vmax') {
|
|
145
|
+
return (options.layer ? Math.max(layer.width, layer.height) : Math.max(canvas.width, canvas.height));
|
|
146
|
+
}
|
|
138
147
|
}
|
|
139
|
-
else if (v
|
|
140
|
-
|
|
148
|
+
else if (linkReg.test(v)) {
|
|
149
|
+
let match = v.match(linkReg);
|
|
150
|
+
if (!manager)
|
|
151
|
+
return 0;
|
|
152
|
+
let anyLayer = manager.get(match[2]);
|
|
153
|
+
const parcer = parser(ctx, canvas, manager);
|
|
154
|
+
switch (match[1]) {
|
|
155
|
+
case 'link-w':
|
|
156
|
+
if (anyLayer && !(anyLayer instanceof Group_1.Group)) {
|
|
157
|
+
if (anyLayer instanceof LineLayer_1.LineLayer || anyLayer instanceof BezierLayer_1.BezierLayer || anyLayer instanceof QuadraticLayer_1.QuadraticLayer) {
|
|
158
|
+
return anyLayer.getBoundingBox(ctx, canvas, manager).width + (parseInt(match[3]) || 0);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
return (parcer.parse(anyLayer.props.size.width) || 0) + (parseInt(match[3]) || 0);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
return 0;
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
case 'link-h':
|
|
169
|
+
if (anyLayer && !(anyLayer instanceof Group_1.Group)) {
|
|
170
|
+
if (anyLayer instanceof LineLayer_1.LineLayer || anyLayer instanceof BezierLayer_1.BezierLayer || anyLayer instanceof QuadraticLayer_1.QuadraticLayer) {
|
|
171
|
+
return anyLayer.getBoundingBox(ctx, canvas, manager).height + (parseInt(match[3]) || 0);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return (parcer.parse(anyLayer.props.size.height, LazyUtil_1.defaultArg.wh(parcer.parse(anyLayer.props.size.width)), LazyUtil_1.defaultArg.vl(true)) || 0) + (parseInt(match[3]) || 0);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
return 0;
|
|
179
|
+
}
|
|
180
|
+
break;
|
|
181
|
+
case 'link-x':
|
|
182
|
+
if (anyLayer && !(anyLayer instanceof Group_1.Group)) {
|
|
183
|
+
return (parcer.parse(anyLayer.props.x) || 0) + (parseInt(match[3]) || 0);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return 0;
|
|
187
|
+
}
|
|
188
|
+
break;
|
|
189
|
+
case 'link-y':
|
|
190
|
+
if (anyLayer && !(anyLayer instanceof Group_1.Group)) {
|
|
191
|
+
return (parcer.parse(anyLayer.props.y, LazyUtil_1.defaultArg.wh(), LazyUtil_1.defaultArg.vl(true)) || 0) + (parseInt(match[3]) || 0);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
return 0;
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
141
198
|
}
|
|
142
199
|
}
|
|
143
|
-
else if (
|
|
144
|
-
let match = v.match(linkReg);
|
|
200
|
+
else if (v instanceof Link_1.Link) {
|
|
145
201
|
if (!manager)
|
|
146
202
|
return 0;
|
|
147
|
-
let
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
203
|
+
let anyLayer = manager.get(v.source);
|
|
204
|
+
const parcer = parser(ctx, canvas, manager);
|
|
205
|
+
switch (v.type) {
|
|
206
|
+
case enum_1.LinkType.Width:
|
|
207
|
+
case 'width':
|
|
208
|
+
if (anyLayer && !(anyLayer instanceof Group_1.Group)) {
|
|
209
|
+
if (anyLayer instanceof LineLayer_1.LineLayer || anyLayer instanceof BezierLayer_1.BezierLayer || anyLayer instanceof QuadraticLayer_1.QuadraticLayer) {
|
|
210
|
+
return anyLayer.getBoundingBox(ctx, canvas, manager).width + (parcer.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
return (parcer.parse(anyLayer.props.size.width) || 0) + (parcer.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
return 0;
|
|
152
218
|
}
|
|
153
219
|
break;
|
|
154
|
-
case
|
|
155
|
-
|
|
156
|
-
|
|
220
|
+
case enum_1.LinkType.Height:
|
|
221
|
+
case 'height':
|
|
222
|
+
if (anyLayer && !(anyLayer instanceof Group_1.Group)) {
|
|
223
|
+
if (anyLayer instanceof LineLayer_1.LineLayer || anyLayer instanceof BezierLayer_1.BezierLayer || anyLayer instanceof QuadraticLayer_1.QuadraticLayer) {
|
|
224
|
+
return anyLayer.getBoundingBox(ctx, canvas, manager).height + (parcer.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
return (parcer.parse(anyLayer.props.size.height, LazyUtil_1.defaultArg.wh(parcer.parse(anyLayer.props.size.width)), LazyUtil_1.defaultArg.vl(true)) || 0) + (parcer.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
return 0;
|
|
157
232
|
}
|
|
158
233
|
break;
|
|
234
|
+
case enum_1.LinkType.X:
|
|
235
|
+
case 'x':
|
|
236
|
+
if (anyLayer && !(anyLayer instanceof Group_1.Group)) {
|
|
237
|
+
return (parcer.parse(anyLayer.props.x) || 0) + (parcer.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
return 0;
|
|
241
|
+
}
|
|
242
|
+
break;
|
|
243
|
+
case enum_1.LinkType.Y:
|
|
244
|
+
case 'y':
|
|
245
|
+
if (anyLayer && !(anyLayer instanceof Group_1.Group)) {
|
|
246
|
+
return (parcer.parse(anyLayer.props.y) || 0) + (parcer.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
return 0;
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
default:
|
|
253
|
+
return 0;
|
|
159
254
|
}
|
|
160
255
|
}
|
|
256
|
+
else {
|
|
257
|
+
return 0;
|
|
258
|
+
}
|
|
161
259
|
return 0;
|
|
162
260
|
}
|
|
163
261
|
exports.parseToNormal = parseToNormal;
|
|
262
|
+
function parser(ctx, canvas, manager) {
|
|
263
|
+
return {
|
|
264
|
+
parse(v, layer = LazyUtil_1.defaultArg.wh(), options = LazyUtil_1.defaultArg.vl()) {
|
|
265
|
+
return parseToNormal(v, ctx, canvas, layer, options, manager);
|
|
266
|
+
},
|
|
267
|
+
parseBatch(values) {
|
|
268
|
+
const result = {};
|
|
269
|
+
for (const key in values) {
|
|
270
|
+
const { v, layer, options } = values[key];
|
|
271
|
+
result[key] = parseToNormal(v, ctx, canvas, layer ?? LazyUtil_1.defaultArg.wh(), options ?? LazyUtil_1.defaultArg.vl(), manager);
|
|
272
|
+
}
|
|
273
|
+
return result;
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
exports.parser = parser;
|
|
164
278
|
function drawShadow(ctx, shadow) {
|
|
165
279
|
if (shadow) {
|
|
166
280
|
ctx.shadowColor = shadow.color;
|