@flighthq/displayobject-canvas 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/canvasBackground.d.ts +3 -0
- package/dist/canvasBackground.d.ts.map +1 -0
- package/dist/canvasBackground.js +19 -0
- package/dist/canvasBackground.js.map +1 -0
- package/dist/canvasBitmap.d.ts +4 -0
- package/dist/canvasBitmap.d.ts.map +1 -0
- package/dist/canvasBitmap.js +32 -0
- package/dist/canvasBitmap.js.map +1 -0
- package/dist/canvasCSSFilterBinding.d.ts +24 -0
- package/dist/canvasCSSFilterBinding.d.ts.map +1 -0
- package/dist/canvasCSSFilterBinding.js +43 -0
- package/dist/canvasCSSFilterBinding.js.map +1 -0
- package/dist/canvasCache.d.ts +33 -0
- package/dist/canvasCache.d.ts.map +1 -0
- package/dist/canvasCache.js +141 -0
- package/dist/canvasCache.js.map +1 -0
- package/dist/canvasClip.d.ts +3 -0
- package/dist/canvasClip.d.ts.map +1 -0
- package/dist/canvasClip.js +38 -0
- package/dist/canvasClip.js.map +1 -0
- package/dist/canvasClipRectangle.d.ts +5 -0
- package/dist/canvasClipRectangle.d.ts.map +1 -0
- package/dist/canvasClipRectangle.js +31 -0
- package/dist/canvasClipRectangle.js.map +1 -0
- package/dist/canvasDisplayObject.d.ts +5 -0
- package/dist/canvasDisplayObject.d.ts.map +1 -0
- package/dist/canvasDisplayObject.js +46 -0
- package/dist/canvasDisplayObject.js.map +1 -0
- package/dist/canvasElement.d.ts +2 -0
- package/dist/canvasElement.d.ts.map +1 -0
- package/dist/canvasElement.js +9 -0
- package/dist/canvasElement.js.map +1 -0
- package/dist/canvasFillPattern.d.ts +4 -0
- package/dist/canvasFillPattern.d.ts.map +1 -0
- package/dist/canvasFillPattern.js +108 -0
- package/dist/canvasFillPattern.js.map +1 -0
- package/dist/canvasMaterialRegistry.d.ts +6 -0
- package/dist/canvasMaterialRegistry.d.ts.map +1 -0
- package/dist/canvasMaterialRegistry.js +42 -0
- package/dist/canvasMaterialRegistry.js.map +1 -0
- package/dist/canvasMaterials.d.ts +5 -0
- package/dist/canvasMaterials.d.ts.map +1 -0
- package/dist/canvasMaterials.js +33 -0
- package/dist/canvasMaterials.js.map +1 -0
- package/dist/canvasParticleEmitter.d.ts +4 -0
- package/dist/canvasParticleEmitter.d.ts.map +1 -0
- package/dist/canvasParticleEmitter.js +64 -0
- package/dist/canvasParticleEmitter.js.map +1 -0
- package/dist/canvasQuadBatch.d.ts +4 -0
- package/dist/canvasQuadBatch.d.ts.map +1 -0
- package/dist/canvasQuadBatch.js +64 -0
- package/dist/canvasQuadBatch.js.map +1 -0
- package/dist/canvasRegistration.d.ts +4 -0
- package/dist/canvasRegistration.d.ts.map +1 -0
- package/dist/canvasRegistration.js +39 -0
- package/dist/canvasRegistration.js.map +1 -0
- package/dist/canvasRenderState.d.ts +5 -0
- package/dist/canvasRenderState.d.ts.map +1 -0
- package/dist/canvasRenderState.js +44 -0
- package/dist/canvasRenderState.js.map +1 -0
- package/dist/canvasRenderTarget.d.ts +16 -0
- package/dist/canvasRenderTarget.d.ts.map +1 -0
- package/dist/canvasRenderTarget.js +66 -0
- package/dist/canvasRenderTarget.js.map +1 -0
- package/dist/canvasRichText.d.ts +7 -0
- package/dist/canvasRichText.d.ts.map +1 -0
- package/dist/canvasRichText.js +127 -0
- package/dist/canvasRichText.js.map +1 -0
- package/dist/canvasScale9Mapper.d.ts +10 -0
- package/dist/canvasScale9Mapper.d.ts.map +1 -0
- package/dist/canvasScale9Mapper.js +148 -0
- package/dist/canvasScale9Mapper.js.map +1 -0
- package/dist/canvasScale9Shape.d.ts +5 -0
- package/dist/canvasScale9Shape.d.ts.map +1 -0
- package/dist/canvasScale9Shape.js +156 -0
- package/dist/canvasScale9Shape.js.map +1 -0
- package/dist/canvasShape.d.ts +5 -0
- package/dist/canvasShape.d.ts.map +1 -0
- package/dist/canvasShape.js +79 -0
- package/dist/canvasShape.js.map +1 -0
- package/dist/canvasShapeCommands.d.ts +19 -0
- package/dist/canvasShapeCommands.d.ts.map +1 -0
- package/dist/canvasShapeCommands.js +352 -0
- package/dist/canvasShapeCommands.js.map +1 -0
- package/dist/canvasShapeRegistry.d.ts +5 -0
- package/dist/canvasShapeRegistry.d.ts.map +1 -0
- package/dist/canvasShapeRegistry.js +17 -0
- package/dist/canvasShapeRegistry.js.map +1 -0
- package/dist/canvasSprite.d.ts +5 -0
- package/dist/canvasSprite.d.ts.map +1 -0
- package/dist/canvasSprite.js +59 -0
- package/dist/canvasSprite.js.map +1 -0
- package/dist/canvasTextInput.d.ts +4 -0
- package/dist/canvasTextInput.d.ts.map +1 -0
- package/dist/canvasTextInput.js +67 -0
- package/dist/canvasTextInput.js.map +1 -0
- package/dist/canvasTextLabel.d.ts +4 -0
- package/dist/canvasTextLabel.d.ts.map +1 -0
- package/dist/canvasTextLabel.js +55 -0
- package/dist/canvasTextLabel.js.map +1 -0
- package/dist/canvasTextMeasure.d.ts +3 -0
- package/dist/canvasTextMeasure.d.ts.map +1 -0
- package/dist/canvasTextMeasure.js +15 -0
- package/dist/canvasTextMeasure.js.map +1 -0
- package/dist/canvasTilemap.d.ts +4 -0
- package/dist/canvasTilemap.d.ts.map +1 -0
- package/dist/canvasTilemap.js +50 -0
- package/dist/canvasTilemap.js.map +1 -0
- package/dist/canvasTransform.d.ts +3 -0
- package/dist/canvasTransform.d.ts.map +1 -0
- package/dist/canvasTransform.js +9 -0
- package/dist/canvasTransform.js.map +1 -0
- package/dist/canvasVideo.d.ts +4 -0
- package/dist/canvasVideo.d.ts.map +1 -0
- package/dist/canvasVideo.js +26 -0
- package/dist/canvasVideo.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/package.json +50 -0
- package/src/canvasBackground.test.ts +65 -0
- package/src/canvasBitmap.test.ts +92 -0
- package/src/canvasCSSFilterBinding.test.ts +86 -0
- package/src/canvasCache.test.ts +189 -0
- package/src/canvasClip.test.ts +12 -0
- package/src/canvasClipRectangle.test.ts +101 -0
- package/src/canvasDisplayObject.test.ts +117 -0
- package/src/canvasElement.test.ts +21 -0
- package/src/canvasFillPattern.test.ts +96 -0
- package/src/canvasMaterialRegistry.test.ts +69 -0
- package/src/canvasMaterials.test.ts +85 -0
- package/src/canvasParticleEmitter.test.ts +105 -0
- package/src/canvasQuadBatch.test.ts +119 -0
- package/src/canvasRegistration.test.ts +57 -0
- package/src/canvasRenderState.test.ts +186 -0
- package/src/canvasRenderTarget.test.ts +154 -0
- package/src/canvasRichText.test.ts +89 -0
- package/src/canvasScale9Mapper.test.ts +53 -0
- package/src/canvasScale9Shape.test.ts +89 -0
- package/src/canvasShape.test.ts +183 -0
- package/src/canvasShapeCommands.test.ts +448 -0
- package/src/canvasShapeRegistry.test.ts +42 -0
- package/src/canvasSprite.test.ts +90 -0
- package/src/canvasTextInput.test.ts +67 -0
- package/src/canvasTextLabel.test.ts +32 -0
- package/src/canvasTextMeasure.test.ts +9 -0
- package/src/canvasTilemap.test.ts +69 -0
- package/src/canvasTransform.test.ts +42 -0
- package/src/canvasVideo.test.ts +43 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { computeRgbHexString } from '@flighthq/materials';
|
|
2
|
+
import { noopRendererData } from '@flighthq/render';
|
|
3
|
+
import { computeTextFormatFontString, getRichTextPasswordCharacter, getRichTextRuntime } from '@flighthq/text';
|
|
4
|
+
import { computeRichTextContent, computeTextBoundsHeight, computeTextBoundsWidth, computeTextLayout, getRichTextContent, getRichTextScrollYOffset, getRichTextSelectionRectangles, getTextLayoutResult, } from '@flighthq/textlayout';
|
|
5
|
+
import { drawCanvasDisplayObject } from './canvasDisplayObject';
|
|
6
|
+
import { setCanvasTransform } from './canvasTransform';
|
|
7
|
+
export function drawCanvasRichText(state, renderProxy) {
|
|
8
|
+
drawCanvasRichTextField(state, renderProxy);
|
|
9
|
+
// The editable-input overlay (caret/selection) draws on top of the field, in its own coordinate
|
|
10
|
+
// space, and must run even when the text is empty — so it is invoked after the field, keyed off the
|
|
11
|
+
// input slot. registerCanvasTextInputOverlay (enableCanvasTextInput) is what installs it; a static
|
|
12
|
+
// RichText leaves the slot null and pulls no text-input code.
|
|
13
|
+
if (_canvasTextInputOverlay !== null && getRichTextRuntime(renderProxy.source).input !== null) {
|
|
14
|
+
_canvasTextInputOverlay(state, renderProxy);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function drawCanvasRichTextMask(state, data) {
|
|
18
|
+
drawCanvasDisplayObject(state, data);
|
|
19
|
+
}
|
|
20
|
+
function drawCanvasRichTextField(state, renderProxy) {
|
|
21
|
+
drawCanvasDisplayObject(state, renderProxy);
|
|
22
|
+
const source = renderProxy.source;
|
|
23
|
+
const data = source.data;
|
|
24
|
+
const context = state.context;
|
|
25
|
+
state.applyBlendMode?.(state, renderProxy.blendMode);
|
|
26
|
+
context.globalAlpha = renderProxy.alpha;
|
|
27
|
+
setCanvasTransform(state, context, renderProxy.transform2D);
|
|
28
|
+
const richTextRuntime = getRichTextRuntime(source);
|
|
29
|
+
const content = getRichTextContent(richTextRuntime);
|
|
30
|
+
computeRichTextContent(content, data, getRichTextPasswordCharacter(source));
|
|
31
|
+
const { text } = content;
|
|
32
|
+
const measure = (t, fmt) => {
|
|
33
|
+
context.font = computeTextFormatFontString(fmt);
|
|
34
|
+
return context.measureText(t).width;
|
|
35
|
+
};
|
|
36
|
+
const result = getTextLayoutResult(richTextRuntime);
|
|
37
|
+
computeTextLayout(result, {
|
|
38
|
+
text,
|
|
39
|
+
formatRanges: content.formatRanges,
|
|
40
|
+
width: data.wordWrap ? data.width : 10000,
|
|
41
|
+
height: data.height,
|
|
42
|
+
measure,
|
|
43
|
+
multiline: data.multiline,
|
|
44
|
+
wordWrap: data.wordWrap,
|
|
45
|
+
});
|
|
46
|
+
const fieldW = computeTextBoundsWidth(data, result);
|
|
47
|
+
const fieldH = computeTextBoundsHeight(data, result);
|
|
48
|
+
if (data.background) {
|
|
49
|
+
context.fillStyle = computeRgbHexString(data.backgroundColor);
|
|
50
|
+
context.fillRect(0, 0, fieldW, fieldH);
|
|
51
|
+
}
|
|
52
|
+
if (data.border) {
|
|
53
|
+
context.strokeStyle = computeRgbHexString(data.borderColor);
|
|
54
|
+
context.lineWidth = 1;
|
|
55
|
+
context.strokeRect(0, 0, fieldW, fieldH);
|
|
56
|
+
}
|
|
57
|
+
if (text.length === 0)
|
|
58
|
+
return;
|
|
59
|
+
// scrollV is 1-based: first visible line index = scrollV - 1
|
|
60
|
+
const firstVisibleLine = data.scrollV - 1;
|
|
61
|
+
const scrollYOffset = firstVisibleLine > 0 ? getRichTextScrollYOffset(result.lineHeights, firstVisibleLine) : 0;
|
|
62
|
+
const scrollXOffset = data.scrollH;
|
|
63
|
+
context.save();
|
|
64
|
+
context.beginPath();
|
|
65
|
+
context.rect(0, 0, fieldW, fieldH);
|
|
66
|
+
context.clip();
|
|
67
|
+
if (source.data.selectable && richTextRuntime.selectionBeginIndex !== richTextRuntime.selectionEndIndex) {
|
|
68
|
+
getRichTextSelectionRectangles(_richTextSelectionRectangles, richTextRuntime.selectionBeginIndex, richTextRuntime.selectionEndIndex, result);
|
|
69
|
+
context.fillStyle = SELECTION_COLOR;
|
|
70
|
+
context.globalAlpha = Math.min(1, renderProxy.alpha * SELECTION_ALPHA);
|
|
71
|
+
for (const rectangle of _richTextSelectionRectangles) {
|
|
72
|
+
context.fillRect(rectangle.x - scrollXOffset, rectangle.y - scrollYOffset, rectangle.width, rectangle.height);
|
|
73
|
+
}
|
|
74
|
+
context.globalAlpha = renderProxy.alpha;
|
|
75
|
+
}
|
|
76
|
+
context.textBaseline = 'alphabetic';
|
|
77
|
+
context.textAlign = 'start';
|
|
78
|
+
const bulletLines = new Set();
|
|
79
|
+
for (const group of result.groups) {
|
|
80
|
+
if (group.lineIndex < firstVisibleLine)
|
|
81
|
+
continue;
|
|
82
|
+
context.font = computeTextFormatFontString(group.format);
|
|
83
|
+
context.fillStyle = computeRgbHexString(group.format.color ?? data.textColor);
|
|
84
|
+
const slice = text.substring(group.startIndex, group.endIndex);
|
|
85
|
+
const x = group.offsetX - scrollXOffset;
|
|
86
|
+
const y = group.offsetY + group.ascent - scrollYOffset;
|
|
87
|
+
if (group.format.bullet && !bulletLines.has(group.lineIndex)) {
|
|
88
|
+
bulletLines.add(group.lineIndex);
|
|
89
|
+
const bulletW = context.measureText(BULLET_CHAR).width;
|
|
90
|
+
context.fillText(BULLET_CHAR, x - bulletW - BULLET_GAP, y);
|
|
91
|
+
}
|
|
92
|
+
context.fillText(slice, x, y);
|
|
93
|
+
const lineColor = computeRgbHexString(group.format.color ?? data.textColor);
|
|
94
|
+
const lineWidth = Math.max(1, (group.format.size ?? 12) / 16);
|
|
95
|
+
if (group.format.underline || group.format.strikethrough) {
|
|
96
|
+
context.strokeStyle = lineColor;
|
|
97
|
+
context.lineWidth = lineWidth;
|
|
98
|
+
if (group.format.underline) {
|
|
99
|
+
context.beginPath();
|
|
100
|
+
context.moveTo(x, y + group.descent);
|
|
101
|
+
context.lineTo(x + group.width, y + group.descent);
|
|
102
|
+
context.stroke();
|
|
103
|
+
}
|
|
104
|
+
if (group.format.strikethrough) {
|
|
105
|
+
context.beginPath();
|
|
106
|
+
context.moveTo(x, y - group.ascent * 0.35);
|
|
107
|
+
context.lineTo(x + group.width, y - group.ascent * 0.35);
|
|
108
|
+
context.stroke();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
context.restore();
|
|
113
|
+
}
|
|
114
|
+
export function registerCanvasTextInputOverlay(overlay) {
|
|
115
|
+
_canvasTextInputOverlay = overlay;
|
|
116
|
+
}
|
|
117
|
+
const BULLET_CHAR = '•';
|
|
118
|
+
const BULLET_GAP = 4;
|
|
119
|
+
const SELECTION_ALPHA = 0.35;
|
|
120
|
+
const SELECTION_COLOR = '#0078d7';
|
|
121
|
+
const _richTextSelectionRectangles = [];
|
|
122
|
+
let _canvasTextInputOverlay = null;
|
|
123
|
+
export const defaultCanvasRichTextRenderer = {
|
|
124
|
+
createData: noopRendererData,
|
|
125
|
+
submit: drawCanvasRichText,
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=canvasRichText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasRichText.js","sourceRoot":"","sources":["../src/canvasRichText.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RectangleLike, Scale9Mapper } from '@flighthq/types';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a coordinate mapper for 9-slice scaled rendering.
|
|
4
|
+
* Returns null if scale9Grid cannot be applied (zero/negative scale, degenerate bounds).
|
|
5
|
+
*
|
|
6
|
+
* Caller is responsible for ensuring the canvas transform has the object's own
|
|
7
|
+
* scaleX/scaleY removed (leaving only parent scale + translation) before drawing.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildScale9Mapper(commands: readonly unknown[], scale9Grid: Readonly<RectangleLike>, scaleX: number, scaleY: number): Scale9Mapper | null;
|
|
10
|
+
//# sourceMappingURL=canvasScale9Mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasScale9Mapper.d.ts","sourceRoot":"","sources":["../src/canvasScale9Mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,YAAY,GAAG,IAAI,CAgBrB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a coordinate mapper for 9-slice scaled rendering.
|
|
3
|
+
* Returns null if scale9Grid cannot be applied (zero/negative scale, degenerate bounds).
|
|
4
|
+
*
|
|
5
|
+
* Caller is responsible for ensuring the canvas transform has the object's own
|
|
6
|
+
* scaleX/scaleY removed (leaving only parent scale + translation) before drawing.
|
|
7
|
+
*/
|
|
8
|
+
export function buildScale9Mapper(commands, scale9Grid, scaleX, scaleY) {
|
|
9
|
+
if (scaleX <= 0 || scaleY <= 0)
|
|
10
|
+
return null;
|
|
11
|
+
const bounds = computeCommandsBounds(commands);
|
|
12
|
+
if (bounds === null || bounds.width <= 0 || bounds.height <= 0)
|
|
13
|
+
return null;
|
|
14
|
+
const { width: bw, height: bh } = bounds;
|
|
15
|
+
const gx = scale9Grid.x;
|
|
16
|
+
const gy = scale9Grid.y;
|
|
17
|
+
const gw = scale9Grid.width;
|
|
18
|
+
const gh = scale9Grid.height;
|
|
19
|
+
return {
|
|
20
|
+
mapX: (x) => toScale9Position(x, gx, gw, bw, scaleX),
|
|
21
|
+
mapY: (y) => toScale9Position(y, gy, gh, bh, scaleY),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Private helpers
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* Maps a local coordinate to its 9-slice-scaled position.
|
|
29
|
+
* Port of OpenFL's CanvasGraphics.hx `toScale9Position`.
|
|
30
|
+
*/
|
|
31
|
+
function toScale9Position(pos, scale9Start, scale9Center, unscaledSize, scale) {
|
|
32
|
+
const scale9End = unscaledSize - scale9Center - scale9Start;
|
|
33
|
+
const size = unscaledSize * scale;
|
|
34
|
+
const center = size - scale9Start - scale9End;
|
|
35
|
+
if (pos <= scale9Start) {
|
|
36
|
+
if (center < 0) {
|
|
37
|
+
return (pos * (scale9Start + scale9End + center)) / (scale9Start + scale9End);
|
|
38
|
+
}
|
|
39
|
+
return pos;
|
|
40
|
+
}
|
|
41
|
+
if (pos >= scale9Start + scale9Center) {
|
|
42
|
+
if (center < 0) {
|
|
43
|
+
return (((scale9Start + (pos - scale9Start - scale9Center)) * (scale9Start + scale9End + center)) /
|
|
44
|
+
(scale9Start + scale9End));
|
|
45
|
+
}
|
|
46
|
+
return scale9Start + center + (pos - scale9Start - scale9Center);
|
|
47
|
+
}
|
|
48
|
+
if (center < 0) {
|
|
49
|
+
return (scale9Start * (scale9Start + scale9End + center)) / (scale9Start + scale9End);
|
|
50
|
+
}
|
|
51
|
+
return scale9Start + (center * (pos - scale9Start)) / scale9Center;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Computes an axis-aligned bounding box from shape commands.
|
|
55
|
+
* Uses endpoints and control points as a conservative over-estimate of bezier extents.
|
|
56
|
+
*/
|
|
57
|
+
function computeCommandsBounds(commands) {
|
|
58
|
+
let minX = Infinity;
|
|
59
|
+
let minY = Infinity;
|
|
60
|
+
let maxX = -Infinity;
|
|
61
|
+
let maxY = -Infinity;
|
|
62
|
+
function expand(x, y) {
|
|
63
|
+
if (x < minX)
|
|
64
|
+
minX = x;
|
|
65
|
+
if (x > maxX)
|
|
66
|
+
maxX = x;
|
|
67
|
+
if (y < minY)
|
|
68
|
+
minY = y;
|
|
69
|
+
if (y > maxY)
|
|
70
|
+
maxY = y;
|
|
71
|
+
}
|
|
72
|
+
let i = 0;
|
|
73
|
+
while (i < commands.length) {
|
|
74
|
+
const key = commands[i];
|
|
75
|
+
const argCount = commands[i + 1];
|
|
76
|
+
// args begin at i+2 (after key and argCount)
|
|
77
|
+
switch (key) {
|
|
78
|
+
case 'moveTo':
|
|
79
|
+
case 'lineTo':
|
|
80
|
+
expand(commands[i + 2], commands[i + 3]);
|
|
81
|
+
break;
|
|
82
|
+
case 'curveTo':
|
|
83
|
+
expand(commands[i + 2], commands[i + 3]);
|
|
84
|
+
expand(commands[i + 4], commands[i + 5]);
|
|
85
|
+
break;
|
|
86
|
+
case 'cubicCurveTo':
|
|
87
|
+
expand(commands[i + 2], commands[i + 3]);
|
|
88
|
+
expand(commands[i + 4], commands[i + 5]);
|
|
89
|
+
expand(commands[i + 6], commands[i + 7]);
|
|
90
|
+
break;
|
|
91
|
+
case 'drawCircle': {
|
|
92
|
+
const cx = commands[i + 2];
|
|
93
|
+
const cy = commands[i + 3];
|
|
94
|
+
const r = commands[i + 4];
|
|
95
|
+
expand(cx - r, cy - r);
|
|
96
|
+
expand(cx + r, cy + r);
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case 'drawEllipse':
|
|
100
|
+
case 'drawRectangle':
|
|
101
|
+
expand(commands[i + 2], commands[i + 3]);
|
|
102
|
+
expand(commands[i + 2] + commands[i + 4], commands[i + 3] + commands[i + 5]);
|
|
103
|
+
break;
|
|
104
|
+
case 'drawRoundRectangle':
|
|
105
|
+
expand(commands[i + 2], commands[i + 3]);
|
|
106
|
+
expand(commands[i + 2] + commands[i + 4], commands[i + 3] + commands[i + 5]);
|
|
107
|
+
break;
|
|
108
|
+
case 'drawPath': {
|
|
109
|
+
const pathCmds = commands[i + 2];
|
|
110
|
+
const data = commands[i + 3];
|
|
111
|
+
let di = 0;
|
|
112
|
+
for (const pc of pathCmds) {
|
|
113
|
+
switch (pc) {
|
|
114
|
+
case 1: // MOVE_TO
|
|
115
|
+
case 2: // LINE_TO
|
|
116
|
+
expand(data[di], data[di + 1]);
|
|
117
|
+
di += 2;
|
|
118
|
+
break;
|
|
119
|
+
case 3: // CURVE_TO
|
|
120
|
+
expand(data[di], data[di + 1]);
|
|
121
|
+
expand(data[di + 2], data[di + 3]);
|
|
122
|
+
di += 4;
|
|
123
|
+
break;
|
|
124
|
+
case 4: // WIDE_MOVE_TO
|
|
125
|
+
case 5: // WIDE_LINE_TO
|
|
126
|
+
expand(data[di + 2], data[di + 3]);
|
|
127
|
+
di += 4;
|
|
128
|
+
break;
|
|
129
|
+
case 6: // CUBIC_CURVE_TO
|
|
130
|
+
expand(data[di], data[di + 1]);
|
|
131
|
+
expand(data[di + 2], data[di + 3]);
|
|
132
|
+
expand(data[di + 4], data[di + 5]);
|
|
133
|
+
di += 6;
|
|
134
|
+
break;
|
|
135
|
+
default:
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
i += argCount + 2;
|
|
143
|
+
}
|
|
144
|
+
if (!isFinite(minX))
|
|
145
|
+
return null;
|
|
146
|
+
return { width: maxX - minX, height: maxY - minY };
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=canvasScale9Mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasScale9Mapper.js","sourceRoot":"","sources":["../src/canvasScale9Mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CanvasRenderState, DisplayObjectRenderer, RenderProxy2D, Scale9Mapper } from '@flighthq/types';
|
|
2
|
+
export declare function drawCanvasScale9Shape(state: CanvasRenderState, renderProxy: RenderProxy2D): void;
|
|
3
|
+
export declare function mapCanvasScale9ShapeCommands(out: unknown[], source: readonly unknown[], mapper: Scale9Mapper): void;
|
|
4
|
+
export declare const defaultCanvasScale9ShapeRenderer: DisplayObjectRenderer;
|
|
5
|
+
//# sourceMappingURL=canvasScale9Shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasScale9Shape.d.ts","sourceRoot":"","sources":["../src/canvasScale9Shape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EAErB,aAAa,EACb,YAAY,EAEb,MAAM,iBAAiB,CAAC;AAUzB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAsBhG;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAsEnH;AAED,eAAO,MAAM,gCAAgC,EAAE,qBAG9C,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { noopRendererData } from '@flighthq/render';
|
|
2
|
+
import { drawCanvasDisplayObject } from './canvasDisplayObject';
|
|
3
|
+
import { buildScale9Mapper } from './canvasScale9Mapper';
|
|
4
|
+
import { renderCanvasShapeCommands } from './canvasShape';
|
|
5
|
+
import { setCanvasTransform } from './canvasTransform';
|
|
6
|
+
const _remappedCommands = [];
|
|
7
|
+
const _remappedPathData = [];
|
|
8
|
+
export function drawCanvasScale9Shape(state, renderProxy) {
|
|
9
|
+
drawCanvasDisplayObject(state, renderProxy);
|
|
10
|
+
const source = renderProxy.source;
|
|
11
|
+
const { commands, scale9Grid } = source.data;
|
|
12
|
+
if (commands.length === 0)
|
|
13
|
+
return;
|
|
14
|
+
const context = state.context;
|
|
15
|
+
state.applyBlendMode?.(state, renderProxy.blendMode);
|
|
16
|
+
context.globalAlpha = renderProxy.alpha;
|
|
17
|
+
const { scaleX, scaleY } = source;
|
|
18
|
+
const mapper = buildScale9Mapper(commands, scale9Grid, scaleX, scaleY);
|
|
19
|
+
if (mapper === null) {
|
|
20
|
+
setCanvasTransform(state, context, renderProxy.transform2D);
|
|
21
|
+
renderCanvasShapeCommands(context, commands);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
applyStrippedTransform(state, context, renderProxy.transform2D, scaleX, scaleY);
|
|
25
|
+
mapCanvasScale9ShapeCommands(_remappedCommands, commands, mapper);
|
|
26
|
+
renderCanvasShapeCommands(context, _remappedCommands);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function mapCanvasScale9ShapeCommands(out, source, mapper) {
|
|
30
|
+
if (out !== source) {
|
|
31
|
+
out.length = source.length;
|
|
32
|
+
for (let k = 0; k < source.length; k++)
|
|
33
|
+
out[k] = source[k];
|
|
34
|
+
}
|
|
35
|
+
let i = 0;
|
|
36
|
+
while (i < out.length) {
|
|
37
|
+
const key = out[i];
|
|
38
|
+
const argCount = out[i + 1];
|
|
39
|
+
switch (key) {
|
|
40
|
+
case 'moveTo':
|
|
41
|
+
case 'lineTo':
|
|
42
|
+
out[i + 2] = mapper.mapX(out[i + 2]);
|
|
43
|
+
out[i + 3] = mapper.mapY(out[i + 3]);
|
|
44
|
+
break;
|
|
45
|
+
case 'curveTo':
|
|
46
|
+
out[i + 2] = mapper.mapX(out[i + 2]);
|
|
47
|
+
out[i + 3] = mapper.mapY(out[i + 3]);
|
|
48
|
+
out[i + 4] = mapper.mapX(out[i + 4]);
|
|
49
|
+
out[i + 5] = mapper.mapY(out[i + 5]);
|
|
50
|
+
break;
|
|
51
|
+
case 'cubicCurveTo':
|
|
52
|
+
out[i + 2] = mapper.mapX(out[i + 2]);
|
|
53
|
+
out[i + 3] = mapper.mapY(out[i + 3]);
|
|
54
|
+
out[i + 4] = mapper.mapX(out[i + 4]);
|
|
55
|
+
out[i + 5] = mapper.mapY(out[i + 5]);
|
|
56
|
+
out[i + 6] = mapper.mapX(out[i + 6]);
|
|
57
|
+
out[i + 7] = mapper.mapY(out[i + 7]);
|
|
58
|
+
break;
|
|
59
|
+
case 'drawRectangle':
|
|
60
|
+
case 'drawEllipse': {
|
|
61
|
+
const x = out[i + 2];
|
|
62
|
+
const y = out[i + 3];
|
|
63
|
+
const w = out[i + 4];
|
|
64
|
+
const h = out[i + 5];
|
|
65
|
+
const mx = mapper.mapX(x);
|
|
66
|
+
const my = mapper.mapY(y);
|
|
67
|
+
out[i + 2] = mx;
|
|
68
|
+
out[i + 3] = my;
|
|
69
|
+
out[i + 4] = mapper.mapX(x + w) - mx;
|
|
70
|
+
out[i + 5] = mapper.mapY(y + h) - my;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
case 'drawRoundRectangle': {
|
|
74
|
+
const x = out[i + 2];
|
|
75
|
+
const y = out[i + 3];
|
|
76
|
+
const w = out[i + 4];
|
|
77
|
+
const h = out[i + 5];
|
|
78
|
+
const mx = mapper.mapX(x);
|
|
79
|
+
const my = mapper.mapY(y);
|
|
80
|
+
out[i + 2] = mx;
|
|
81
|
+
out[i + 3] = my;
|
|
82
|
+
out[i + 4] = mapper.mapX(x + w) - mx;
|
|
83
|
+
out[i + 5] = mapper.mapY(y + h) - my;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'drawCircle':
|
|
87
|
+
out[i + 2] = mapper.mapX(out[i + 2]);
|
|
88
|
+
out[i + 3] = mapper.mapY(out[i + 3]);
|
|
89
|
+
break;
|
|
90
|
+
case 'drawPath':
|
|
91
|
+
remapPathData(_remappedPathData, out[i + 3], out[i + 2], mapper);
|
|
92
|
+
out[i + 3] = _remappedPathData;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
i += argCount + 2;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export const defaultCanvasScale9ShapeRenderer = {
|
|
99
|
+
createData: noopRendererData,
|
|
100
|
+
submit: drawCanvasScale9Shape,
|
|
101
|
+
};
|
|
102
|
+
function applyStrippedTransform(state, context, t, scaleX, scaleY) {
|
|
103
|
+
const a = scaleX !== 0 ? t.a / scaleX : t.a;
|
|
104
|
+
const b = scaleX !== 0 ? t.b / scaleX : t.b;
|
|
105
|
+
const c = scaleY !== 0 ? t.c / scaleY : t.c;
|
|
106
|
+
const d = scaleY !== 0 ? t.d / scaleY : t.d;
|
|
107
|
+
if (state.roundPixels) {
|
|
108
|
+
context.setTransform(a, b, c, d, Math.fround(t.tx), Math.fround(t.ty));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
context.setTransform(a, b, c, d, t.tx, t.ty);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function remapPathData(out, source, cmds, mapper) {
|
|
115
|
+
if (out !== source) {
|
|
116
|
+
out.length = source.length;
|
|
117
|
+
for (let k = 0; k < source.length; k++)
|
|
118
|
+
out[k] = source[k];
|
|
119
|
+
}
|
|
120
|
+
let di = 0;
|
|
121
|
+
for (const pc of cmds) {
|
|
122
|
+
switch (pc) {
|
|
123
|
+
case 1: // MOVE_TO [x, y]
|
|
124
|
+
case 2: // LINE_TO [x, y]
|
|
125
|
+
out[di] = mapper.mapX(out[di]);
|
|
126
|
+
out[di + 1] = mapper.mapY(out[di + 1]);
|
|
127
|
+
di += 2;
|
|
128
|
+
break;
|
|
129
|
+
case 3: // CURVE_TO [cx, cy, ax, ay]
|
|
130
|
+
out[di] = mapper.mapX(out[di]);
|
|
131
|
+
out[di + 1] = mapper.mapY(out[di + 1]);
|
|
132
|
+
out[di + 2] = mapper.mapX(out[di + 2]);
|
|
133
|
+
out[di + 3] = mapper.mapY(out[di + 3]);
|
|
134
|
+
di += 4;
|
|
135
|
+
break;
|
|
136
|
+
case 4: // WIDE_MOVE_TO [?, ?, x, y]
|
|
137
|
+
case 5: // WIDE_LINE_TO [?, ?, x, y]
|
|
138
|
+
out[di + 2] = mapper.mapX(out[di + 2]);
|
|
139
|
+
out[di + 3] = mapper.mapY(out[di + 3]);
|
|
140
|
+
di += 4;
|
|
141
|
+
break;
|
|
142
|
+
case 6: // CUBIC_CURVE_TO [cx1, cy1, cx2, cy2, ax, ay]
|
|
143
|
+
out[di] = mapper.mapX(out[di]);
|
|
144
|
+
out[di + 1] = mapper.mapY(out[di + 1]);
|
|
145
|
+
out[di + 2] = mapper.mapX(out[di + 2]);
|
|
146
|
+
out[di + 3] = mapper.mapY(out[di + 3]);
|
|
147
|
+
out[di + 4] = mapper.mapX(out[di + 4]);
|
|
148
|
+
out[di + 5] = mapper.mapY(out[di + 5]);
|
|
149
|
+
di += 6;
|
|
150
|
+
break;
|
|
151
|
+
default:
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=canvasScale9Shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasScale9Shape.js","sourceRoot":"","sources":["../src/canvasScale9Shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAUpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,iBAAiB,GAAc,EAAE,CAAC;AACxC,MAAM,iBAAiB,GAAa,EAAE,CAAC;AAEvC,MAAM,UAAU,qBAAqB,CAAC,KAAwB,EAAE,WAA0B;IACxF,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAqB,CAAC;IACjD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,KAAK,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;IAExC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAClC,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;QAC5D,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAChF,4BAA4B,CAAC,iBAAiB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,GAAc,EAAE,MAA0B,EAAE,MAAoB;IAC3G,IAAI,GAAG,KAAM,MAAoB,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAW,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;QAEtC,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,SAAS;gBACZ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,cAAc;gBACjB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,eAAe,CAAC;YACrB,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACrC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACrC,MAAM;YACR,CAAC;YACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACrC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACrC,MAAM;YACR,CAAC;YACD,KAAK,YAAY;gBACf,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,UAAU;gBACb,aAAa,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAsB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAsB,EAAE,MAAM,CAAC,CAAC;gBAC3G,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC;gBAC/B,MAAM;QACV,CAAC;QAED,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gCAAgC,GAA0B;IACrE,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,qBAAqB;CAC9B,CAAC;AAEF,SAAS,sBAAsB,CAC7B,KAAwB,EACxB,OAAiC,EACjC,CAAuB,EACvB,MAAc,EACd,MAAc;IAEd,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAa,EAAE,MAAyB,EAAE,IAAuB,EAAE,MAAoB;IAC5G,IAAI,GAAG,KAAM,MAAmB,EAAE,CAAC;QACjC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,CAAC,CAAC,CAAC,iBAAiB;YACzB,KAAK,CAAC,EAAE,iBAAiB;gBACvB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/B,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,EAAE,IAAI,CAAC,CAAC;gBACR,MAAM;YACR,KAAK,CAAC,EAAE,4BAA4B;gBAClC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/B,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,EAAE,IAAI,CAAC,CAAC;gBACR,MAAM;YACR,KAAK,CAAC,CAAC,CAAC,4BAA4B;YACpC,KAAK,CAAC,EAAE,4BAA4B;gBAClC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,EAAE,IAAI,CAAC,CAAC;gBACR,MAAM;YACR,KAAK,CAAC,EAAE,8CAA8C;gBACpD,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/B,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,EAAE,IAAI,CAAC,CAAC;gBACR,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CanvasRenderState, DisplayObjectRenderer, RenderProxy2D } from '@flighthq/types';
|
|
2
|
+
export declare function drawCanvasShape(state: CanvasRenderState, renderProxy: RenderProxy2D): void;
|
|
3
|
+
export declare function renderCanvasShapeCommands(context: CanvasRenderingContext2D, commands: unknown[]): void;
|
|
4
|
+
export declare const defaultCanvasShapeRenderer: DisplayObjectRenderer;
|
|
5
|
+
//# sourceMappingURL=canvasShape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasShape.d.ts","sourceRoot":"","sources":["../src/canvasShape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAEjB,qBAAqB,EACrB,aAAa,EAEd,MAAM,iBAAiB,CAAC;AAMzB,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAa1F;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CActG;AAED,eAAO,MAAM,0BAA0B,EAAE,qBAGxC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { noopRendererData } from '@flighthq/render';
|
|
2
|
+
import { drawCanvasDisplayObject } from './canvasDisplayObject';
|
|
3
|
+
import { getCanvasShapeCommand } from './canvasShapeRegistry';
|
|
4
|
+
import { setCanvasTransform } from './canvasTransform';
|
|
5
|
+
export function drawCanvasShape(state, renderProxy) {
|
|
6
|
+
drawCanvasDisplayObject(state, renderProxy);
|
|
7
|
+
const source = renderProxy.source;
|
|
8
|
+
const { commands } = source.data;
|
|
9
|
+
if (commands.length === 0)
|
|
10
|
+
return;
|
|
11
|
+
const context = state.context;
|
|
12
|
+
state.applyBlendMode?.(state, renderProxy.blendMode);
|
|
13
|
+
context.globalAlpha = renderProxy.alpha;
|
|
14
|
+
setCanvasTransform(state, context, renderProxy.transform2D);
|
|
15
|
+
renderCanvasShapeCommands(context, commands);
|
|
16
|
+
}
|
|
17
|
+
export function renderCanvasShapeCommands(context, commands) {
|
|
18
|
+
const drawState = createCanvasShapeDrawState(context);
|
|
19
|
+
context.beginPath();
|
|
20
|
+
let i = 0;
|
|
21
|
+
while (i < commands.length) {
|
|
22
|
+
const key = commands[i];
|
|
23
|
+
const argCount = commands[i + 1];
|
|
24
|
+
const def = getCanvasShapeCommand(key);
|
|
25
|
+
if (def !== undefined)
|
|
26
|
+
def.draw(context, drawState, commands, i + 2);
|
|
27
|
+
i += argCount + 2;
|
|
28
|
+
}
|
|
29
|
+
if (drawState.hasPendingPath && (drawState.hasFill || drawState.hasStroke)) {
|
|
30
|
+
flushCanvasShapePath(context, drawState);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const defaultCanvasShapeRenderer = {
|
|
34
|
+
createData: noopRendererData,
|
|
35
|
+
submit: drawCanvasShape,
|
|
36
|
+
};
|
|
37
|
+
function createCanvasShapeDrawState(context) {
|
|
38
|
+
const state = {
|
|
39
|
+
bitmapH: 0,
|
|
40
|
+
bitmapSrc: null,
|
|
41
|
+
bitmapW: 0,
|
|
42
|
+
fillMatrix: null,
|
|
43
|
+
fillMatrixInverse: null,
|
|
44
|
+
fillStyle: '',
|
|
45
|
+
hasFill: false,
|
|
46
|
+
hasPendingPath: false,
|
|
47
|
+
hasCurrentPoint: false,
|
|
48
|
+
hasStroke: false,
|
|
49
|
+
strokeStyle: '',
|
|
50
|
+
strokeWidth: 1,
|
|
51
|
+
windingRule: 'evenodd',
|
|
52
|
+
flush: () => flushCanvasShapePath(context, state),
|
|
53
|
+
};
|
|
54
|
+
return state;
|
|
55
|
+
}
|
|
56
|
+
function flushCanvasShapePath(context, state) {
|
|
57
|
+
if (state.hasFill) {
|
|
58
|
+
context.fillStyle = state.fillStyle;
|
|
59
|
+
if (state.fillMatrix !== null && state.fillMatrixInverse !== null) {
|
|
60
|
+
const m = state.fillMatrix;
|
|
61
|
+
const inv = state.fillMatrixInverse;
|
|
62
|
+
context.transform(m.a, m.b, m.c, m.d, m.tx, m.ty);
|
|
63
|
+
context.fill(state.windingRule);
|
|
64
|
+
context.transform(inv.a, inv.b, inv.c, inv.d, inv.tx, inv.ty);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
context.fill(state.windingRule);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (state.hasStroke) {
|
|
71
|
+
context.strokeStyle = state.strokeStyle;
|
|
72
|
+
context.lineWidth = state.strokeWidth;
|
|
73
|
+
context.stroke();
|
|
74
|
+
}
|
|
75
|
+
state.hasPendingPath = false;
|
|
76
|
+
state.hasCurrentPoint = false;
|
|
77
|
+
context.beginPath();
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=canvasShape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasShape.js","sourceRoot":"","sources":["../src/canvasShape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CanvasShapeCommand } from '@flighthq/types';
|
|
2
|
+
export declare const defaultCanvasBeginBitmapFill: CanvasShapeCommand<'beginBitmapFill'>;
|
|
3
|
+
export declare const defaultCanvasBeginFill: CanvasShapeCommand<'beginFill'>;
|
|
4
|
+
export declare const defaultCanvasBeginGradientFill: CanvasShapeCommand<'beginGradientFill'>;
|
|
5
|
+
export declare const defaultCanvasCubicCurveTo: CanvasShapeCommand<'cubicCurveTo'>;
|
|
6
|
+
export declare const defaultCanvasCurveTo: CanvasShapeCommand<'curveTo'>;
|
|
7
|
+
export declare const defaultCanvasDrawCircle: CanvasShapeCommand<'drawCircle'>;
|
|
8
|
+
export declare const defaultCanvasDrawEllipse: CanvasShapeCommand<'drawEllipse'>;
|
|
9
|
+
export declare const defaultCanvasDrawPath: CanvasShapeCommand<'drawPath'>;
|
|
10
|
+
export declare const defaultCanvasDrawRectangle: CanvasShapeCommand<'drawRectangle'>;
|
|
11
|
+
export declare const defaultCanvasDrawRoundRectangle: CanvasShapeCommand<'drawRoundRectangle'>;
|
|
12
|
+
export declare const defaultCanvasEndFill: CanvasShapeCommand<'endFill'>;
|
|
13
|
+
export declare const defaultCanvasLineBitmapStyle: CanvasShapeCommand<'lineBitmapStyle'>;
|
|
14
|
+
export declare const defaultCanvasLineGradientStyle: CanvasShapeCommand<'lineGradientStyle'>;
|
|
15
|
+
export declare const defaultCanvasLineStyle: CanvasShapeCommand<'lineStyle'>;
|
|
16
|
+
export declare const defaultCanvasLineTo: CanvasShapeCommand<'lineTo'>;
|
|
17
|
+
export declare const defaultCanvasMoveTo: CanvasShapeCommand<'moveTo'>;
|
|
18
|
+
export declare const defaultCanvasShapeCommands: CanvasShapeCommand<any>[];
|
|
19
|
+
//# sourceMappingURL=canvasShapeCommands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasShapeCommands.d.ts","sourceRoot":"","sources":["../src/canvasShapeCommands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAyB,MAAM,iBAAiB,CAAC;AAMjF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAAC,iBAAiB,CAsB9E,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,WAAW,CAYlE,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,kBAAkB,CAAC,mBAAmB,CA6BlF,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,cAAc,CAgBxE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,SAAS,CAc9D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,YAAY,CAWpE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,aAAa,CActE,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,CAAC,UAAU,CA+DhE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,eAAe,CAkC1E,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,kBAAkB,CAAC,oBAAoB,CAoBpF,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,SAAS,CAS9D,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAAC,iBAAiB,CAY9E,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,kBAAkB,CAAC,mBAAmB,CA2BlF,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,WAAW,CAkBlE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,QAAQ,CAY5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,QAAQ,CAS5D,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAiB/D,CAAC"}
|