@nmmty/lazycanvas 0.5.3 → 0.6.0-dev.1a1f37
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/utils/utils.js +49 -83
- package/package.json +3 -2
- package/animation.gif +0 -0
- package/test.png +0 -0
package/dist/utils/utils.js
CHANGED
|
@@ -24,113 +24,79 @@ function isColor(v) {
|
|
|
24
24
|
}
|
|
25
25
|
exports.isColor = isColor;
|
|
26
26
|
function parseToNormal(v, ctx, canvas, layer = { width: 0, height: 0 }, options = { vertical: false, layer: false }, manager) {
|
|
27
|
-
if (typeof v === 'number')
|
|
27
|
+
if (typeof v === 'number')
|
|
28
28
|
return v;
|
|
29
|
-
|
|
30
|
-
else if (typeof v === 'string') {
|
|
29
|
+
if (typeof v === 'string') {
|
|
31
30
|
if (percentReg.test(v)) {
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
const base = options.layer
|
|
32
|
+
? options.vertical ? layer.height : layer.width
|
|
33
|
+
: options.vertical ? canvas.height : canvas.width;
|
|
34
|
+
return (parseFloat(v) / 100) * base;
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
if (pxReg.test(v))
|
|
36
37
|
return parseFloat(v);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return (
|
|
44
|
-
}
|
|
45
|
-
else if (v === 'vmin') {
|
|
46
|
-
return (options.layer ? Math.max(layer.width, layer.height) : Math.min(canvas.width, canvas.height));
|
|
47
|
-
}
|
|
48
|
-
else if (v === 'vmax') {
|
|
49
|
-
return (options.layer ? Math.max(layer.width, layer.height) : Math.max(canvas.width, canvas.height));
|
|
38
|
+
if (canvasReg.test(v)) {
|
|
39
|
+
const base = options.layer ? layer : canvas;
|
|
40
|
+
switch (v) {
|
|
41
|
+
case 'vw': return base.width;
|
|
42
|
+
case 'vh': return base.height;
|
|
43
|
+
case 'vmin': return Math.min(base.width, base.height);
|
|
44
|
+
case 'vmax': return Math.max(base.width, base.height);
|
|
50
45
|
}
|
|
51
46
|
}
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
if (linkReg.test(v)) {
|
|
48
|
+
const match = v.match(linkReg);
|
|
54
49
|
if (!manager)
|
|
55
50
|
return 0;
|
|
56
|
-
|
|
51
|
+
const anyLayer = manager.get(match[2], true);
|
|
57
52
|
if (!anyLayer || anyLayer instanceof components_1.Group || anyLayer instanceof components_1.Path2DLayer)
|
|
58
53
|
return 0;
|
|
59
|
-
const
|
|
54
|
+
const parserInstance = parser(ctx, canvas, manager);
|
|
55
|
+
const additionalSpacing = parseInt(match[3]) || 0;
|
|
60
56
|
switch (match[1]) {
|
|
61
|
-
case 'link-w':
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
else if (anyLayer instanceof components_1.TextLayer) {
|
|
66
|
-
return anyLayer.measureText(ctx, canvas).width + (parseInt(match[3]) || 0);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
return (parcer.parse(anyLayer.props.size.width) || 0) + (parseInt(match[3]) || 0);
|
|
70
|
-
}
|
|
71
|
-
case 'link-h':
|
|
72
|
-
if (anyLayer instanceof components_1.LineLayer || anyLayer instanceof components_1.BezierLayer || anyLayer instanceof components_1.QuadraticLayer) {
|
|
73
|
-
return anyLayer.getBoundingBox(ctx, canvas, manager).height + (parseInt(match[3]) || 0);
|
|
74
|
-
}
|
|
75
|
-
else if (anyLayer instanceof components_1.TextLayer) {
|
|
76
|
-
return anyLayer.measureText(ctx, canvas).height + (parseInt(match[3]) || 0);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
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);
|
|
80
|
-
}
|
|
81
|
-
case 'link-x':
|
|
82
|
-
return (parcer.parse(anyLayer.props.x) || 0) + (parseInt(match[3]) || 0);
|
|
83
|
-
case 'link-y':
|
|
84
|
-
return (parcer.parse(anyLayer.props.y, LazyUtil_1.defaultArg.wh(), LazyUtil_1.defaultArg.vl(true)) || 0) + (parseInt(match[3]) || 0);
|
|
57
|
+
case 'link-w': return getLayerWidth(anyLayer, ctx, canvas, manager, parserInstance) + additionalSpacing;
|
|
58
|
+
case 'link-h': return getLayerHeight(anyLayer, ctx, canvas, manager, parserInstance) + additionalSpacing;
|
|
59
|
+
case 'link-x': return parserInstance.parse(anyLayer.props.x) + additionalSpacing;
|
|
60
|
+
case 'link-y': return parserInstance.parse(anyLayer.props.y) + additionalSpacing;
|
|
85
61
|
}
|
|
86
62
|
}
|
|
87
63
|
}
|
|
88
|
-
|
|
64
|
+
if (v instanceof helpers_1.Link) {
|
|
89
65
|
if (!manager)
|
|
90
66
|
return 0;
|
|
91
|
-
|
|
67
|
+
const anyLayer = manager.get(v.source, true);
|
|
92
68
|
if (!anyLayer || anyLayer instanceof components_1.Group || anyLayer instanceof components_1.Path2DLayer)
|
|
93
69
|
return 0;
|
|
94
|
-
const
|
|
70
|
+
const parserInstance = parser(ctx, canvas, manager);
|
|
71
|
+
const additionalSpacing = parserInstance.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0;
|
|
95
72
|
switch (v.type) {
|
|
96
|
-
case types_1.LinkType.Width:
|
|
97
|
-
case
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
else if (anyLayer instanceof components_1.TextLayer) {
|
|
102
|
-
return anyLayer.measureText(ctx, canvas).width + (parcer.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
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);
|
|
106
|
-
}
|
|
107
|
-
case types_1.LinkType.Height:
|
|
108
|
-
case 'height':
|
|
109
|
-
if (anyLayer instanceof components_1.LineLayer || anyLayer instanceof components_1.BezierLayer || anyLayer instanceof components_1.QuadraticLayer) {
|
|
110
|
-
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);
|
|
111
|
-
}
|
|
112
|
-
else if (anyLayer instanceof components_1.TextLayer) {
|
|
113
|
-
return anyLayer.measureText(ctx, canvas).height + (parcer.parse(v.additionalSpacing, LazyUtil_1.defaultArg.wh(layer.width, layer.height), LazyUtil_1.defaultArg.vl(options.vertical, options.layer)) || 0);
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
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);
|
|
117
|
-
}
|
|
118
|
-
case types_1.LinkType.X:
|
|
119
|
-
case 'x':
|
|
120
|
-
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);
|
|
121
|
-
case types_1.LinkType.Y:
|
|
122
|
-
case 'y':
|
|
123
|
-
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);
|
|
124
|
-
default:
|
|
125
|
-
return 0;
|
|
73
|
+
case types_1.LinkType.Width: return getLayerWidth(anyLayer, ctx, canvas, manager, parserInstance) + additionalSpacing;
|
|
74
|
+
case types_1.LinkType.Height: return getLayerHeight(anyLayer, ctx, canvas, manager, parserInstance) + additionalSpacing;
|
|
75
|
+
case types_1.LinkType.X: return parserInstance.parse(anyLayer.props.x) + additionalSpacing;
|
|
76
|
+
case types_1.LinkType.Y: return parserInstance.parse(anyLayer.props.y) + additionalSpacing;
|
|
126
77
|
}
|
|
127
78
|
}
|
|
128
|
-
else {
|
|
129
|
-
return 0;
|
|
130
|
-
}
|
|
131
79
|
return 0;
|
|
132
80
|
}
|
|
133
81
|
exports.parseToNormal = parseToNormal;
|
|
82
|
+
function getLayerWidth(anyLayer, ctx, canvas, manager, parserInstance) {
|
|
83
|
+
if (anyLayer instanceof components_1.LineLayer || anyLayer instanceof components_1.BezierLayer || anyLayer instanceof components_1.QuadraticLayer) {
|
|
84
|
+
return anyLayer.getBoundingBox(ctx, canvas, manager).width;
|
|
85
|
+
}
|
|
86
|
+
if (anyLayer instanceof components_1.TextLayer) {
|
|
87
|
+
return anyLayer.measureText(ctx, canvas).width;
|
|
88
|
+
}
|
|
89
|
+
return anyLayer instanceof components_1.Path2DLayer ? 0 : parserInstance.parse(anyLayer.props.size.width) || 0;
|
|
90
|
+
}
|
|
91
|
+
function getLayerHeight(anyLayer, ctx, canvas, manager, parserInstance) {
|
|
92
|
+
if (anyLayer instanceof components_1.LineLayer || anyLayer instanceof components_1.BezierLayer || anyLayer instanceof components_1.QuadraticLayer) {
|
|
93
|
+
return anyLayer.getBoundingBox(ctx, canvas, manager).height;
|
|
94
|
+
}
|
|
95
|
+
if (anyLayer instanceof components_1.TextLayer) {
|
|
96
|
+
return anyLayer.measureText(ctx, canvas).height;
|
|
97
|
+
}
|
|
98
|
+
return anyLayer instanceof components_1.Path2DLayer ? 0 : parserInstance.parse(anyLayer.props.size.height) || 0;
|
|
99
|
+
}
|
|
134
100
|
function parser(ctx, canvas, manager) {
|
|
135
101
|
return {
|
|
136
102
|
parse(v, layer = LazyUtil_1.defaultArg.wh(), options = LazyUtil_1.defaultArg.vl()) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nmmty/lazycanvas",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0-dev.1a1f37",
|
|
4
4
|
"description": "A simple way to interact with @napi-rs/canvas in an advanced way!",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"text": "tsc ./test/text.ts && node ./test/text.js",
|
|
12
12
|
"animation": "tsc ./test/animation.ts && node ./test/animation.js",
|
|
13
13
|
"iotest": "tsc ./test/iotest.ts && node ./test/iotest.js",
|
|
14
|
+
"gradient": "tsc ./test/gradient.ts && node ./test/gradient.js",
|
|
14
15
|
"doc": "tsx docgen.ts",
|
|
15
16
|
"font": "tsc ./scripts/font-gen.ts && node ./scripts/font-gen.js",
|
|
16
17
|
"build": "tsc"
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
},
|
|
34
35
|
"homepage": "https://github.com/NMMTY/LazyCanvas#readme",
|
|
35
36
|
"dependencies": {
|
|
36
|
-
"@napi-rs/canvas": "^0.1.
|
|
37
|
+
"@napi-rs/canvas": "^0.1.72",
|
|
37
38
|
"gifenc": "^1.0.3",
|
|
38
39
|
"js-yaml": "^4.1.0",
|
|
39
40
|
"path": "^0.12.7",
|
package/animation.gif
DELETED
|
Binary file
|
package/test.png
DELETED
|
Binary file
|