@flighthq/shape 0.1.0
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 +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/scale9Shape.d.ts +6 -0
- package/dist/scale9Shape.d.ts.map +1 -0
- package/dist/scale9Shape.js +19 -0
- package/dist/scale9Shape.js.map +1 -0
- package/dist/shape.d.ts +13 -0
- package/dist/shape.d.ts.map +1 -0
- package/dist/shape.js +297 -0
- package/dist/shape.js.map +1 -0
- package/dist/shapeCommands.d.ts +25 -0
- package/dist/shapeCommands.d.ts.map +1 -0
- package/dist/shapeCommands.js +260 -0
- package/dist/shapeCommands.js.map +1 -0
- package/dist/shapeFill.d.ts +4 -0
- package/dist/shapeFill.d.ts.map +1 -0
- package/dist/shapeFill.js +187 -0
- package/dist/shapeFill.js.map +1 -0
- package/dist/shapeHitTestBuiltins.d.ts +2 -0
- package/dist/shapeHitTestBuiltins.d.ts.map +1 -0
- package/dist/shapeHitTestBuiltins.js +85 -0
- package/dist/shapeHitTestBuiltins.js.map +1 -0
- package/dist/shapeHitTestRegistry.d.ts +4 -0
- package/dist/shapeHitTestRegistry.d.ts.map +1 -0
- package/dist/shapeHitTestRegistry.js +13 -0
- package/dist/shapeHitTestRegistry.js.map +1 -0
- package/package.json +41 -0
- package/src/scale9Shape.test.ts +64 -0
- package/src/shape.test.ts +207 -0
- package/src/shapeCommands.test.ts +429 -0
- package/src/shapeFill.test.ts +116 -0
- package/src/shapeHitTestBuiltins.test.ts +77 -0
- package/src/shapeHitTestRegistry.test.ts +45 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PartialNode, RectangleLike, Scale9Shape, Scale9ShapeData, Scale9ShapeRuntime } from '@flighthq/types';
|
|
2
|
+
export declare function createScale9Shape(scale9Grid: Readonly<RectangleLike>, obj?: Readonly<PartialNode<Scale9Shape>>): Scale9Shape;
|
|
3
|
+
export declare function createScale9ShapeData(scale9Grid: Readonly<RectangleLike>, data?: Readonly<Partial<Scale9ShapeData>>): Scale9ShapeData;
|
|
4
|
+
export declare function createScale9ShapeRuntime(): Scale9ShapeRuntime;
|
|
5
|
+
export declare function getScale9ShapeRuntime(source: Readonly<Scale9Shape>): Readonly<Scale9ShapeRuntime>;
|
|
6
|
+
//# sourceMappingURL=scale9Shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scale9Shape.d.ts","sourceRoot":"","sources":["../src/scale9Shape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAKpH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,EACnC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GACvC,WAAW,CAOb;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,EACnC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GACxC,eAAe,CAKjB;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAEjG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createDisplayObjectGeneric, getDisplayObjectRuntime } from '@flighthq/displayobject';
|
|
2
|
+
import { Scale9ShapeKind } from '@flighthq/types';
|
|
3
|
+
import { createShapeRuntime } from './shape';
|
|
4
|
+
export function createScale9Shape(scale9Grid, obj) {
|
|
5
|
+
return createDisplayObjectGeneric(Scale9ShapeKind, obj, (data) => createScale9ShapeData(scale9Grid, data), createScale9ShapeRuntime);
|
|
6
|
+
}
|
|
7
|
+
export function createScale9ShapeData(scale9Grid, data) {
|
|
8
|
+
return {
|
|
9
|
+
commands: data?.commands ?? [],
|
|
10
|
+
scale9Grid,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function createScale9ShapeRuntime() {
|
|
14
|
+
return createShapeRuntime();
|
|
15
|
+
}
|
|
16
|
+
export function getScale9ShapeRuntime(source) {
|
|
17
|
+
return getDisplayObjectRuntime(source);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=scale9Shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scale9Shape.js","sourceRoot":"","sources":["../src/scale9Shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,UAAU,iBAAiB,CAC/B,UAAmC,EACnC,GAAwC;IAExC,OAAO,0BAA0B,CAC/B,eAAe,EACf,GAAyC,EACzC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,EACjD,wBAAwB,CACV,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAAmC,EACnC,IAAyC;IAEzC,OAAO;QACL,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE;QAC9B,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,kBAAkB,EAAwB,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,OAAO,uBAAuB,CAAC,MAAM,CAAuB,CAAC;AAC/D,CAAC"}
|
package/dist/shape.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BoundsNodeAny, PartialNode, Rectangle, Shape, ShapeData, ShapeRuntime } from '@flighthq/types';
|
|
2
|
+
export declare function clearShapeCommands(shape: Shape): void;
|
|
3
|
+
export declare function computeShapeLocalBoundsRectangle(out: Rectangle, source: Readonly<BoundsNodeAny>): void;
|
|
4
|
+
export declare function copyShapeCommands(out: Shape, source: Readonly<Shape>): void;
|
|
5
|
+
export declare function createShape(obj?: Readonly<PartialNode<Shape>>): Shape;
|
|
6
|
+
export declare function createShapeData(data?: Readonly<Partial<ShapeData>>): ShapeData;
|
|
7
|
+
export declare function createShapeRuntime(): ShapeRuntime;
|
|
8
|
+
export declare function getShapeBounds(out: Rectangle, source: Readonly<Shape>): void;
|
|
9
|
+
export declare function getShapeCommandCount(source: Readonly<Shape>): number;
|
|
10
|
+
export declare function getShapeRuntime(source: Readonly<Shape>): Readonly<ShapeRuntime>;
|
|
11
|
+
export declare function invalidateShapeGeometry(shape: Shape): void;
|
|
12
|
+
export declare function isShapeEmpty(source: Readonly<Shape>): boolean;
|
|
13
|
+
//# sourceMappingURL=shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG7G,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAGrD;AAED,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAoQtG;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAI3E;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAErE;AAED,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAI9E;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAE5E;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAUpE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAE/E;AAKD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAG1D;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAE7D"}
|
package/dist/shape.js
ADDED
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { createDisplayObjectGeneric, createDisplayObjectRuntime, getDisplayObjectRuntime, } from '@flighthq/displayobject';
|
|
2
|
+
import { invalidateNodeLocalBounds, invalidateNodeLocalContent } from '@flighthq/node';
|
|
3
|
+
import { ShapeKind } from '@flighthq/types';
|
|
4
|
+
export function clearShapeCommands(shape) {
|
|
5
|
+
shape.data.commands.length = 0;
|
|
6
|
+
invalidateShapeGeometry(shape);
|
|
7
|
+
}
|
|
8
|
+
export function computeShapeLocalBoundsRectangle(out, source) {
|
|
9
|
+
const shape = source;
|
|
10
|
+
const commands = shape.data.commands;
|
|
11
|
+
let minX = Infinity;
|
|
12
|
+
let minY = Infinity;
|
|
13
|
+
let maxX = -Infinity;
|
|
14
|
+
let maxY = -Infinity;
|
|
15
|
+
let strokeHalf = 0;
|
|
16
|
+
let penX = 0;
|
|
17
|
+
let penY = 0;
|
|
18
|
+
function expand(x, y) {
|
|
19
|
+
const lo_x = x - strokeHalf;
|
|
20
|
+
const hi_x = x + strokeHalf;
|
|
21
|
+
const lo_y = y - strokeHalf;
|
|
22
|
+
const hi_y = y + strokeHalf;
|
|
23
|
+
if (lo_x < minX)
|
|
24
|
+
minX = lo_x;
|
|
25
|
+
if (lo_y < minY)
|
|
26
|
+
minY = lo_y;
|
|
27
|
+
if (hi_x > maxX)
|
|
28
|
+
maxX = hi_x;
|
|
29
|
+
if (hi_y > maxY)
|
|
30
|
+
maxY = hi_y;
|
|
31
|
+
}
|
|
32
|
+
function quadPoint(t, p0, p1, p2) {
|
|
33
|
+
const u = 1 - t;
|
|
34
|
+
return u * u * p0 + 2 * u * t * p1 + t * t * p2;
|
|
35
|
+
}
|
|
36
|
+
function cubicPoint(t, p0, p1, p2, p3) {
|
|
37
|
+
const u = 1 - t;
|
|
38
|
+
return u * u * u * p0 + 3 * u * u * t * p1 + 3 * u * t * t * p2 + t * t * t * p3;
|
|
39
|
+
}
|
|
40
|
+
// Solve the quadratic at² + bt + c = 0 for roots in (0, 1) and expand the cubic at those t values.
|
|
41
|
+
function expandCubicExtrema(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
|
|
42
|
+
expandCubicAxis(p0x, p1x, p2x, p3x, p0y, p1y, p2y, p3y);
|
|
43
|
+
expandCubicAxis(p0y, p1y, p2y, p3y, p0x, p1x, p2x, p3x);
|
|
44
|
+
}
|
|
45
|
+
function expandCubicAxis(p0, p1, p2, p3, q0, q1, q2, q3) {
|
|
46
|
+
// Derivative: 3[(-p0+3p1-3p2+p3)t² + 2(p0-2p1+p2)t + (-p0+p1)]
|
|
47
|
+
const a = -p0 + 3 * p1 - 3 * p2 + p3;
|
|
48
|
+
const b = 2 * (p0 - 2 * p1 + p2);
|
|
49
|
+
const c = -p0 + p1;
|
|
50
|
+
if (Math.abs(a) < 1e-12) {
|
|
51
|
+
if (Math.abs(b) > 1e-12) {
|
|
52
|
+
const t = -c / b;
|
|
53
|
+
if (t > 0 && t < 1)
|
|
54
|
+
expand(cubicPoint(t, p0, p1, p2, p3), cubicPoint(t, q0, q1, q2, q3));
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const disc = b * b - 4 * a * c;
|
|
59
|
+
if (disc < 0)
|
|
60
|
+
return;
|
|
61
|
+
const sqrtDisc = Math.sqrt(disc);
|
|
62
|
+
const t1 = (-b + sqrtDisc) / (2 * a);
|
|
63
|
+
const t2 = (-b - sqrtDisc) / (2 * a);
|
|
64
|
+
if (t1 > 0 && t1 < 1)
|
|
65
|
+
expand(cubicPoint(t1, p0, p1, p2, p3), cubicPoint(t1, q0, q1, q2, q3));
|
|
66
|
+
if (t2 > 0 && t2 < 1)
|
|
67
|
+
expand(cubicPoint(t2, p0, p1, p2, p3), cubicPoint(t2, q0, q1, q2, q3));
|
|
68
|
+
}
|
|
69
|
+
let i = 0;
|
|
70
|
+
while (i < commands.length) {
|
|
71
|
+
const key = commands[i];
|
|
72
|
+
const argCount = commands[i + 1];
|
|
73
|
+
const b = i + 2;
|
|
74
|
+
switch (key) {
|
|
75
|
+
case 'drawRectangle':
|
|
76
|
+
case 'drawRoundRectangle': {
|
|
77
|
+
const x = commands[b];
|
|
78
|
+
const y = commands[b + 1];
|
|
79
|
+
const w = commands[b + 2];
|
|
80
|
+
const h = commands[b + 3];
|
|
81
|
+
expand(x, y);
|
|
82
|
+
expand(x + w, y + h);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case 'drawCircle': {
|
|
86
|
+
const x = commands[b];
|
|
87
|
+
const y = commands[b + 1];
|
|
88
|
+
const r = commands[b + 2];
|
|
89
|
+
expand(x - r, y - r);
|
|
90
|
+
expand(x + r, y + r);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
case 'drawEllipse': {
|
|
94
|
+
const x = commands[b];
|
|
95
|
+
const y = commands[b + 1];
|
|
96
|
+
const w = commands[b + 2];
|
|
97
|
+
const h = commands[b + 3];
|
|
98
|
+
expand(x, y);
|
|
99
|
+
expand(x + w, y + h);
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case 'moveTo': {
|
|
103
|
+
penX = commands[b];
|
|
104
|
+
penY = commands[b + 1];
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case 'lineTo': {
|
|
108
|
+
const x = commands[b];
|
|
109
|
+
const y = commands[b + 1];
|
|
110
|
+
expand(penX, penY);
|
|
111
|
+
expand(x, y);
|
|
112
|
+
penX = x;
|
|
113
|
+
penY = y;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
case 'curveTo': {
|
|
117
|
+
const controlX = commands[b];
|
|
118
|
+
const controlY = commands[b + 1];
|
|
119
|
+
const anchorX = commands[b + 2];
|
|
120
|
+
const anchorY = commands[b + 3];
|
|
121
|
+
expand(penX, penY);
|
|
122
|
+
// Expand by quadratic bezier extrema (t where derivative = 0)
|
|
123
|
+
const denomX = penX - 2 * controlX + anchorX;
|
|
124
|
+
if (denomX !== 0) {
|
|
125
|
+
const tx = (penX - controlX) / denomX;
|
|
126
|
+
if (tx > 0 && tx < 1)
|
|
127
|
+
expand(quadPoint(tx, penX, controlX, anchorX), quadPoint(tx, penY, controlY, anchorY));
|
|
128
|
+
}
|
|
129
|
+
const denomY = penY - 2 * controlY + anchorY;
|
|
130
|
+
if (denomY !== 0) {
|
|
131
|
+
const ty = (penY - controlY) / denomY;
|
|
132
|
+
if (ty > 0 && ty < 1)
|
|
133
|
+
expand(quadPoint(ty, penX, controlX, anchorX), quadPoint(ty, penY, controlY, anchorY));
|
|
134
|
+
}
|
|
135
|
+
expand(anchorX, anchorY);
|
|
136
|
+
penX = anchorX;
|
|
137
|
+
penY = anchorY;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
case 'cubicCurveTo': {
|
|
141
|
+
const control1X = commands[b];
|
|
142
|
+
const control1Y = commands[b + 1];
|
|
143
|
+
const control2X = commands[b + 2];
|
|
144
|
+
const control2Y = commands[b + 3];
|
|
145
|
+
const anchorX = commands[b + 4];
|
|
146
|
+
const anchorY = commands[b + 5];
|
|
147
|
+
expand(penX, penY);
|
|
148
|
+
expand(anchorX, anchorY);
|
|
149
|
+
expandCubicExtrema(penX, penY, control1X, control1Y, control2X, control2Y, anchorX, anchorY);
|
|
150
|
+
penX = anchorX;
|
|
151
|
+
penY = anchorY;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
case 'lineStyle': {
|
|
155
|
+
strokeHalf = commands[b] / 2;
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
case 'drawPath': {
|
|
159
|
+
const pathCmds = commands[b];
|
|
160
|
+
const data = commands[b + 1];
|
|
161
|
+
let di = 0;
|
|
162
|
+
for (const pc of pathCmds) {
|
|
163
|
+
switch (pc) {
|
|
164
|
+
case 1: // MOVE_TO
|
|
165
|
+
penX = data[di];
|
|
166
|
+
penY = data[di + 1];
|
|
167
|
+
di += 2;
|
|
168
|
+
break;
|
|
169
|
+
case 2: // LINE_TO
|
|
170
|
+
expand(penX, penY);
|
|
171
|
+
expand(data[di], data[di + 1]);
|
|
172
|
+
penX = data[di];
|
|
173
|
+
penY = data[di + 1];
|
|
174
|
+
di += 2;
|
|
175
|
+
break;
|
|
176
|
+
case 3: {
|
|
177
|
+
// CURVE_TO
|
|
178
|
+
const qcx = data[di];
|
|
179
|
+
const qcy = data[di + 1];
|
|
180
|
+
const qax = data[di + 2];
|
|
181
|
+
const qay = data[di + 3];
|
|
182
|
+
expand(penX, penY);
|
|
183
|
+
const qdx = penX - 2 * qcx + qax;
|
|
184
|
+
if (qdx !== 0) {
|
|
185
|
+
const qt = (penX - qcx) / qdx;
|
|
186
|
+
if (qt > 0 && qt < 1)
|
|
187
|
+
expand(quadPoint(qt, penX, qcx, qax), quadPoint(qt, penY, qcy, qay));
|
|
188
|
+
}
|
|
189
|
+
const qdy = penY - 2 * qcy + qay;
|
|
190
|
+
if (qdy !== 0) {
|
|
191
|
+
const qt = (penY - qcy) / qdy;
|
|
192
|
+
if (qt > 0 && qt < 1)
|
|
193
|
+
expand(quadPoint(qt, penX, qcx, qax), quadPoint(qt, penY, qcy, qay));
|
|
194
|
+
}
|
|
195
|
+
expand(qax, qay);
|
|
196
|
+
penX = qax;
|
|
197
|
+
penY = qay;
|
|
198
|
+
di += 4;
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case 4: // WIDE_MOVE_TO
|
|
202
|
+
penX = data[di + 2];
|
|
203
|
+
penY = data[di + 3];
|
|
204
|
+
di += 4;
|
|
205
|
+
break;
|
|
206
|
+
case 5: // WIDE_LINE_TO
|
|
207
|
+
expand(penX, penY);
|
|
208
|
+
expand(data[di + 2], data[di + 3]);
|
|
209
|
+
penX = data[di + 2];
|
|
210
|
+
penY = data[di + 3];
|
|
211
|
+
di += 4;
|
|
212
|
+
break;
|
|
213
|
+
case 6: {
|
|
214
|
+
// CUBIC_CURVE_TO
|
|
215
|
+
expand(penX, penY);
|
|
216
|
+
const ax = data[di + 4];
|
|
217
|
+
const ay = data[di + 5];
|
|
218
|
+
expand(ax, ay);
|
|
219
|
+
expandCubicExtrema(penX, penY, data[di], data[di + 1], data[di + 2], data[di + 3], ax, ay);
|
|
220
|
+
penX = ax;
|
|
221
|
+
penY = ay;
|
|
222
|
+
di += 6;
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
case 'drawTriangles': {
|
|
230
|
+
const vertices = commands[b];
|
|
231
|
+
for (let vi = 0; vi < vertices.length; vi += 2) {
|
|
232
|
+
expand(vertices[vi], vertices[vi + 1]);
|
|
233
|
+
}
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
i += argCount + 2;
|
|
238
|
+
}
|
|
239
|
+
if (minX === Infinity) {
|
|
240
|
+
out.x = 0;
|
|
241
|
+
out.y = 0;
|
|
242
|
+
out.width = 0;
|
|
243
|
+
out.height = 0;
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
out.x = minX;
|
|
247
|
+
out.y = minY;
|
|
248
|
+
out.width = maxX - minX;
|
|
249
|
+
out.height = maxY - minY;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
export function copyShapeCommands(out, source) {
|
|
253
|
+
out.data.commands.length = 0;
|
|
254
|
+
out.data.commands.push(...source.data.commands);
|
|
255
|
+
invalidateShapeGeometry(out);
|
|
256
|
+
}
|
|
257
|
+
export function createShape(obj) {
|
|
258
|
+
return createDisplayObjectGeneric(ShapeKind, obj, createShapeData, createShapeRuntime);
|
|
259
|
+
}
|
|
260
|
+
export function createShapeData(data) {
|
|
261
|
+
return {
|
|
262
|
+
commands: data?.commands ?? [],
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
export function createShapeRuntime() {
|
|
266
|
+
return createDisplayObjectRuntime({ computeLocalBoundsRectangle: computeShapeLocalBoundsRectangle });
|
|
267
|
+
}
|
|
268
|
+
export function getShapeBounds(out, source) {
|
|
269
|
+
computeShapeLocalBoundsRectangle(out, source);
|
|
270
|
+
}
|
|
271
|
+
// Returns the number of drawing commands in the shape's command stream.
|
|
272
|
+
export function getShapeCommandCount(source) {
|
|
273
|
+
const commands = source.data.commands;
|
|
274
|
+
let count = 0;
|
|
275
|
+
let i = 0;
|
|
276
|
+
while (i < commands.length) {
|
|
277
|
+
const argCount = commands[i + 1];
|
|
278
|
+
count++;
|
|
279
|
+
i += argCount + 2;
|
|
280
|
+
}
|
|
281
|
+
return count;
|
|
282
|
+
}
|
|
283
|
+
export function getShapeRuntime(source) {
|
|
284
|
+
return getDisplayObjectRuntime(source);
|
|
285
|
+
}
|
|
286
|
+
// A shape's payload defines both its drawn surface and its extent, so any command change bumps
|
|
287
|
+
// content (re-rasterize) and local bounds (re-measure) together. Call after mutating
|
|
288
|
+
// shape.data.commands directly; the append*/clear/copy helpers call it for you.
|
|
289
|
+
export function invalidateShapeGeometry(shape) {
|
|
290
|
+
invalidateNodeLocalContent(shape);
|
|
291
|
+
invalidateNodeLocalBounds(shape);
|
|
292
|
+
}
|
|
293
|
+
// True when the shape has no drawing commands in its command stream.
|
|
294
|
+
export function isShapeEmpty(source) {
|
|
295
|
+
return source.data.commands.length === 0;
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.js","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CapsStyle, GradientType, ImageResource, InterpolationMethod, JointStyle, LineScaleMode, Matrix, PathWinding, Shape, SpreadMethod, TriangleCulling } from '@flighthq/types';
|
|
2
|
+
export { PathCommand } from '@flighthq/types';
|
|
3
|
+
export declare function appendShapeArc(shape: Shape, cx: number, cy: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
|
|
4
|
+
export declare function appendShapeArcTo(shape: Shape, x1: number, y1: number, x2: number, y2: number, radius: number): void;
|
|
5
|
+
export declare function appendShapeBeginBitmapFill(shape: Shape, bitmap: ImageResource, matrix?: Matrix | null, repeat?: boolean, smooth?: boolean): void;
|
|
6
|
+
export declare function appendShapeBeginFill(shape: Shape, color?: number, alpha?: number): void;
|
|
7
|
+
export declare function appendShapeBeginGradientFill(shape: Shape, gradientType: GradientType, colors: number[], alphas: number[], ratios: number[], matrix?: Matrix | null, spreadMethod?: SpreadMethod, interpolationMethod?: InterpolationMethod, focalPointRatio?: number): void;
|
|
8
|
+
export declare function appendShapeCircle(shape: Shape, x: number, y: number, radius: number): void;
|
|
9
|
+
export declare function appendShapeCubicCurveTo(shape: Shape, controlX1: number, controlY1: number, controlX2: number, controlY2: number, anchorX: number, anchorY: number): void;
|
|
10
|
+
export declare function appendShapeCurveTo(shape: Shape, controlX: number, controlY: number, anchorX: number, anchorY: number): void;
|
|
11
|
+
export declare function appendShapeDrawTriangles(shape: Shape, vertices: number[], indices?: number[] | null, uvtData?: number[] | null, culling?: TriangleCulling): void;
|
|
12
|
+
export declare function appendShapeEllipse(shape: Shape, x: number, y: number, width: number, height: number): void;
|
|
13
|
+
export declare function appendShapeEndFill(shape: Shape): void;
|
|
14
|
+
export declare function appendShapeLineBitmapStyle(shape: Shape, bitmap: ImageResource, matrix?: Matrix | null, repeat?: boolean, smooth?: boolean): void;
|
|
15
|
+
export declare function appendShapeLineGradientStyle(shape: Shape, gradientType: GradientType, colors: number[], alphas: number[], ratios: number[], matrix?: Matrix | null, spreadMethod?: SpreadMethod, interpolationMethod?: InterpolationMethod, focalPointRatio?: number): void;
|
|
16
|
+
export declare function appendShapeLineStyle(shape: Shape, thickness?: number, color?: number, alpha?: number, pixelHinting?: boolean, scaleMode?: LineScaleMode, caps?: CapsStyle, joints?: JointStyle, miterLimit?: number): void;
|
|
17
|
+
export declare function appendShapeLineTo(shape: Shape, x: number, y: number): void;
|
|
18
|
+
export declare function appendShapeMoveTo(shape: Shape, x: number, y: number): void;
|
|
19
|
+
export declare function appendShapePath(shape: Shape, commands: number[], pathData: number[], winding?: PathWinding): void;
|
|
20
|
+
export declare function appendShapePolygon(shape: Shape, points: number[]): void;
|
|
21
|
+
export declare function appendShapePolyline(shape: Shape, points: number[]): void;
|
|
22
|
+
export declare function appendShapeRectangle(shape: Shape, x: number, y: number, width: number, height: number): void;
|
|
23
|
+
export declare function appendShapeRoundRectangle(shape: Shape, x: number, y: number, width: number, height: number, ellipseWidth: number, ellipseHeight: number): void;
|
|
24
|
+
export declare function appendShapeRoundRectangleVarying(shape: Shape, x: number, y: number, width: number, height: number, topLeftRadius: number, topRightRadius: number, bottomLeftRadius: number, bottomRightRadius: number): void;
|
|
25
|
+
//# sourceMappingURL=shapeCommands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapeCommands.d.ts","sourceRoot":"","sources":["../src/shapeCommands.ts"],"names":[],"mappings":"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"}
|