@shopify/react-native-skia 2.12.0-next.1 → 2.12.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/Package.swift +117 -0
- package/android/CMakeLists.txt +1 -2
- package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +0 -10
- package/android/src/main/java/com/shopify/reactnative/skia/ViewScreenshotService.java +9 -12
- package/apple/RNSkApplePlatformContext.h +0 -3
- package/apple/RNSkApplePlatformContext.mm +0 -11
- package/cpp/api/JsiSkApi.h +0 -6
- package/cpp/api/JsiSkFont.h +5 -10
- package/cpp/api/JsiSkMatrix.h +4 -2
- package/cpp/api/JsiSkSVGFactory.h +4 -0
- package/cpp/api/recorder/Convertor.h +5 -2
- package/cpp/api/recorder/Drawings.h +13 -3
- package/cpp/api/recorder/ImageFilters.h +15 -1
- package/cpp/api/recorder/Paint.h +8 -1
- package/cpp/jsi/JSICache.cpp +99 -0
- package/cpp/jsi/JSICache.h +90 -0
- package/cpp/jsi/NativeObject.h +38 -87
- package/cpp/jsi/ViewProperty.h +0 -24
- package/cpp/rnskia/RNDawnContext.h +2 -1
- package/cpp/rnskia/RNDawnWindowContext.h +22 -0
- package/cpp/rnskia/RNSkManager.cpp +0 -6
- package/cpp/rnskia/RNSkPlatformContext.h +0 -3
- package/cpp/skia/include/core/RasterContext.h +25 -0
- package/cpp/skia/include/core/SkCanvas.h +0 -1
- package/cpp/skia/include/core/SkContext.h +62 -0
- package/cpp/skia/include/core/SkContextOptions.h +15 -0
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkPicture.h +36 -18
- package/cpp/skia/include/core/SkRecorder.h +8 -0
- package/cpp/skia/include/core/SkSerialProcs.h +2 -6
- package/cpp/skia/include/effects/SkImageFilters.h +15 -2
- package/cpp/skia/include/gpu/ganesh/GrDirectContext.h +73 -47
- package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +7 -4
- package/cpp/skia/include/gpu/ganesh/d3d/GrD3DDirectContext.h +12 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLDirectContext.h +11 -0
- package/cpp/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +11 -0
- package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +13 -0
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +6 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +5 -4
- package/cpp/skia/include/gpu/graphite/PrecompileContext.h +9 -1
- package/cpp/skia/include/gpu/graphite/Recorder.h +0 -2
- package/cpp/skia/include/gpu/graphite/Recording.h +3 -0
- package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +8 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +11 -0
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteContext.h +11 -0
- package/cpp/skia/include/private/SkLog.h +1 -19
- package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +2 -1
- package/cpp/skia/include/utils/SkLogHandler.h +53 -0
- package/cpp/skia/include/utils/SkNWayCanvas.h +1 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +9 -10
- package/cpp/skia/modules/skcms/src/skcms_internals.h +8 -3
- package/cpp/skia/modules/skottie/include/SkottieProperty.h +2 -0
- package/cpp/skia/modules/skottie/include/TextShaper.h +1 -0
- package/cpp/skia/modules/skshaper/include/SkShaper.h +23 -1
- package/include/ReactNativeSkia.h +6 -0
- package/lib/commonjs/dom/nodes/datatypes/Rect.js +5 -1
- package/lib/commonjs/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/commonjs/external/reanimated/useVideo.js +8 -2
- package/lib/commonjs/external/reanimated/useVideo.js.map +1 -1
- package/lib/commonjs/renderer/components/Mask.js +3 -9
- package/lib/commonjs/renderer/components/Mask.js.map +1 -1
- package/lib/commonjs/skia/types/JsiInstance.d.ts +1 -0
- package/lib/commonjs/skia/types/JsiInstance.js.map +1 -1
- package/lib/commonjs/skia/types/Matrix4.js +7 -2
- package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
- package/lib/commonjs/skia/types/Skia.d.ts +1 -6
- package/lib/commonjs/skia/types/Skia.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkCanvas.js +4 -4
- package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkImage.js +6 -3
- package/lib/commonjs/skia/web/JsiSkImage.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPathBuilder.d.ts +1 -1
- package/lib/commonjs/skia/web/JsiSkPathBuilder.js +2 -2
- package/lib/commonjs/skia/web/JsiSkPathBuilder.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkTextStyle.js +5 -5
- package/lib/commonjs/skia/web/JsiSkTextStyle.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +0 -3
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkottieAnimation.js +8 -8
- package/lib/commonjs/skia/web/JsiSkottieAnimation.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js +15 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Visitor.js +6 -1
- package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js +12 -9
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js +15 -1
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.web.js +247 -57
- package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Rect.js +5 -1
- package/lib/module/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/module/external/reanimated/useVideo.js +8 -2
- package/lib/module/external/reanimated/useVideo.js.map +1 -1
- package/lib/module/renderer/components/Mask.js +3 -9
- package/lib/module/renderer/components/Mask.js.map +1 -1
- package/lib/module/skia/types/JsiInstance.d.ts +1 -0
- package/lib/module/skia/types/JsiInstance.js.map +1 -1
- package/lib/module/skia/types/Matrix4.js +7 -2
- package/lib/module/skia/types/Matrix4.js.map +1 -1
- package/lib/module/skia/types/Skia.d.ts +1 -6
- package/lib/module/skia/types/Skia.js.map +1 -1
- package/lib/module/skia/web/JsiSkCanvas.js +4 -4
- package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/module/skia/web/JsiSkImage.js +6 -3
- package/lib/module/skia/web/JsiSkImage.js.map +1 -1
- package/lib/module/skia/web/JsiSkPathBuilder.d.ts +1 -1
- package/lib/module/skia/web/JsiSkPathBuilder.js +2 -2
- package/lib/module/skia/web/JsiSkPathBuilder.js.map +1 -1
- package/lib/module/skia/web/JsiSkTextStyle.js +5 -5
- package/lib/module/skia/web/JsiSkTextStyle.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +0 -3
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/skia/web/JsiSkottieAnimation.js +8 -8
- package/lib/module/skia/web/JsiSkottieAnimation.js.map +1 -1
- package/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/module/sksg/Recorder/DrawingContext.js +15 -0
- package/lib/module/sksg/Recorder/DrawingContext.js.map +1 -1
- package/lib/module/sksg/Recorder/Player.js +1 -1
- package/lib/module/sksg/Recorder/Player.js.map +1 -1
- package/lib/module/sksg/Recorder/Visitor.js +6 -1
- package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Drawing.js +12 -9
- package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/ImageFilters.js +15 -1
- package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/module/views/SkiaPictureView.web.js +247 -57
- package/lib/module/views/SkiaPictureView.web.js.map +1 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkPathBuilder.d.ts +1 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +0 -1
- package/lib/typescript/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/typescript/lib/module/skia/Skia.web.d.ts +0 -1
- package/lib/typescript/lib/module/skia/web/JsiSkPathBuilder.d.ts +1 -1
- package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +0 -1
- package/lib/typescript/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/typescript/react-native.config.d.ts +3 -0
- package/lib/typescript/src/skia/types/JsiInstance.d.ts +1 -0
- package/lib/typescript/src/skia/types/Skia.d.ts +1 -6
- package/lib/typescript/src/skia/web/JsiSkPathBuilder.d.ts +1 -1
- package/lib/typescript/src/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/package.json +13 -10
- package/react-native.config.js +5 -0
- package/src/dom/nodes/datatypes/Rect.ts +6 -1
- package/src/external/reanimated/useVideo.ts +7 -2
- package/src/renderer/components/Mask.tsx +10 -3
- package/src/skia/types/JsiInstance.ts +2 -0
- package/src/skia/types/Matrix4.ts +6 -2
- package/src/skia/types/Skia.ts +1 -7
- package/src/skia/web/JsiSkCanvas.ts +11 -6
- package/src/skia/web/JsiSkImage.ts +6 -3
- package/src/skia/web/JsiSkPathBuilder.ts +2 -2
- package/src/skia/web/JsiSkTextStyle.ts +20 -15
- package/src/skia/web/JsiSkia.ts +0 -4
- package/src/skia/web/JsiSkottieAnimation.ts +8 -8
- package/src/sksg/Recorder/DrawingContext.ts +15 -0
- package/src/sksg/Recorder/Player.ts +1 -1
- package/src/sksg/Recorder/Visitor.ts +9 -6
- package/src/sksg/Recorder/commands/Drawing.ts +12 -9
- package/src/sksg/Recorder/commands/ImageFilters.ts +20 -1
- package/src/sksg/Recorder/commands/Shaders.ts +1 -1
- package/src/views/SkiaPictureView.web.tsx +245 -57
- package/cpp/api/JsiSkiaContext.h +0 -94
- package/cpp/dawn/include/dawn/dawn_proc.h +0 -53
- package/cpp/dawn/include/dawn/dawn_proc_table.h +0 -330
- package/cpp/dawn/include/dawn/dawn_thread_dispatch_proc.h +0 -47
- package/cpp/dawn/include/dawn/dawn_version.h +0 -41
- package/cpp/dawn/include/dawn/native/D3D11Backend.h +0 -65
- package/cpp/dawn/include/dawn/native/D3D12Backend.h +0 -103
- package/cpp/dawn/include/dawn/native/D3DBackend.h +0 -56
- package/cpp/dawn/include/dawn/native/DawnNative.h +0 -368
- package/cpp/dawn/include/dawn/native/MetalBackend.h +0 -56
- package/cpp/dawn/include/dawn/native/NullBackend.h +0 -39
- package/cpp/dawn/include/dawn/native/OpenGLBackend.h +0 -89
- package/cpp/dawn/include/dawn/native/VulkanBackend.h +0 -183
- package/cpp/dawn/include/dawn/native/WebGPUBackend.h +0 -49
- package/cpp/dawn/include/dawn/native/dawn_native_export.h +0 -49
- package/cpp/dawn/include/dawn/platform/DawnPlatform.h +0 -207
- package/cpp/dawn/include/dawn/platform/dawn_platform_export.h +0 -49
- package/cpp/dawn/include/dawn/replay/Replay.h +0 -99
- package/cpp/dawn/include/dawn/replay/dawn_replay_export.h +0 -49
- package/cpp/dawn/include/dawn/webgpu_cpp_print.h +0 -2856
- package/cpp/dawn/include/tint/tint.h +0 -91
- package/cpp/dawn/include/webgpu/webgpu.h +0 -5029
- package/cpp/dawn/include/webgpu/webgpu_cpp.h +0 -10353
- package/cpp/dawn/include/webgpu/webgpu_cpp_chained_struct.h +0 -57
- package/cpp/dawn/include/webgpu/webgpu_enum_class_bitmasks.h +0 -162
- package/cpp/dawn/include/webgpu/webgpu_glfw.h +0 -88
- package/cpp/jsi/RuntimeAwareCache.cpp +0 -7
- package/cpp/jsi/RuntimeAwareCache.h +0 -117
- package/cpp/jsi/RuntimeLifecycleMonitor.cpp +0 -72
- package/cpp/jsi/RuntimeLifecycleMonitor.h +0 -32
- package/cpp/skia/src/gpu/graphite/ContextOptionsPriv.h +0 -45
- package/cpp/skia/src/gpu/graphite/ResourceTypes.h +0 -360
- package/cpp/skia/src/gpu/graphite/TextureProxyView.h +0 -105
- package/libs/.graphite +0 -1
|
@@ -31,7 +31,10 @@ const createDrawingContext = (Skia, paintPool, canvas) => {
|
|
|
31
31
|
if (paintPool.length === 0) {
|
|
32
32
|
paintPool.push(Skia.Paint());
|
|
33
33
|
} else {
|
|
34
|
+
// reset() produces an anti-alias false paint, unlike the Skia.Paint()
|
|
35
|
+
// factory: restore the default so reused pools render like the first frame.
|
|
34
36
|
paintPool[0].reset();
|
|
37
|
+
paintPool[0].setAntiAlias(true);
|
|
35
38
|
}
|
|
36
39
|
paints.push(paintPool[0]);
|
|
37
40
|
opacities.push(1);
|
|
@@ -48,6 +51,17 @@ const createDrawingContext = (Skia, paintPool, canvas) => {
|
|
|
48
51
|
opacities.push(opacities[opacities.length - 1]);
|
|
49
52
|
nextPaintIndex++;
|
|
50
53
|
};
|
|
54
|
+
|
|
55
|
+
// Pushes an externally owned paint (the `paint` prop) onto the stack. It
|
|
56
|
+
// pushes a frame-scoped copy, like the C++ DrawingCtx: materializePaint()
|
|
57
|
+
// mutates the top of the stack, and those mutations must not leak into the
|
|
58
|
+
// user-owned paint. It must also push an opacity alongside it: restorePaint()
|
|
59
|
+
// pops both, so pushing only the paint would underflow the opacity stack and
|
|
60
|
+
// leak the enclosing group's opacity onto everything drawn afterwards.
|
|
61
|
+
const pushPaint = paint => {
|
|
62
|
+
paints.push(track(paint.copy()));
|
|
63
|
+
opacities.push(opacities[opacities.length - 1]);
|
|
64
|
+
};
|
|
51
65
|
const getOpacity = () => {
|
|
52
66
|
return opacities[opacities.length - 1];
|
|
53
67
|
};
|
|
@@ -119,6 +133,7 @@ const createDrawingContext = (Skia, paintPool, canvas) => {
|
|
|
119
133
|
paintPool,
|
|
120
134
|
// Public methods
|
|
121
135
|
savePaint,
|
|
136
|
+
pushPaint,
|
|
122
137
|
saveBackdropFilter,
|
|
123
138
|
get paint() {
|
|
124
139
|
return paints[paints.length - 1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_FrameScope","require","createDrawingContext","Skia","paintPool","canvas","frameSkia","track","dispose","createFrameScope","paints","colorFilters","shaders","imageFilters","pathEffects","paintDeclarations","opacities","nextPaintIndex","length","push","Paint","reset","savePaint","nextPaint","assign","getCurrentPaint","getOpacity","setOpacity","newOpacity","Math","max","min","saveBackdropFilter","imageFilter","imgf","pop","cf","ImageFilter","MakeColorFilter","saveLayer","undefined","restore","restorePaint","materializePaint","setColorFilter","reduceRight","inner","outer","ColorFilter","MakeCompose","setShader","setImageFilter","setPathEffect","PathEffect","
|
|
1
|
+
{"version":3,"names":["_FrameScope","require","createDrawingContext","Skia","paintPool","canvas","frameSkia","track","dispose","createFrameScope","paints","colorFilters","shaders","imageFilters","pathEffects","paintDeclarations","opacities","nextPaintIndex","length","push","Paint","reset","setAntiAlias","savePaint","nextPaint","assign","getCurrentPaint","pushPaint","paint","copy","getOpacity","setOpacity","newOpacity","Math","max","min","saveBackdropFilter","imageFilter","imgf","pop","cf","ImageFilter","MakeColorFilter","saveLayer","undefined","restore","restorePaint","materializePaint","setColorFilter","reduceRight","inner","outer","ColorFilter","MakeCompose","setShader","setImageFilter","setPathEffect","PathEffect","exports"],"sources":["DrawingContext.ts"],"sourcesContent":["import type {\n Skia,\n SkCanvas,\n SkColorFilter,\n SkPaint,\n SkShader,\n SkImageFilter,\n SkPathEffect,\n} from \"../../skia/types\";\n\nimport { createFrameScope } from \"./FrameScope\";\n\nexport const createDrawingContext = (\n Skia: Skia,\n paintPool: SkPaint[],\n canvas: SkCanvas\n) => {\n \"worklet\";\n\n // Everything the renderer creates through frameSkia is frame-scoped and\n // deleted by dispose() once the frame has been recorded. The paint pool is\n // recording-scoped and deliberately allocated with the raw Skia instance.\n const { Skia: frameSkia, track, dispose } = createFrameScope(Skia);\n\n // State (formerly class fields)\n const paints: SkPaint[] = [];\n const colorFilters: SkColorFilter[] = [];\n const shaders: SkShader[] = [];\n const imageFilters: SkImageFilter[] = [];\n const pathEffects: SkPathEffect[] = [];\n const paintDeclarations: SkPaint[] = [];\n const opacities: number[] = [];\n\n let nextPaintIndex = 1;\n\n // Initialize first paint and opacity\n if (paintPool.length === 0) {\n paintPool.push(Skia.Paint());\n } else {\n // reset() produces an anti-alias false paint, unlike the Skia.Paint()\n // factory: restore the default so reused pools render like the first frame.\n paintPool[0].reset();\n paintPool[0].setAntiAlias(true);\n }\n paints.push(paintPool[0]);\n opacities.push(1);\n\n // Methods (formerly class methods)\n const savePaint = () => {\n // Get next available paint from pool or create new one if needed\n if (nextPaintIndex >= paintPool.length) {\n paintPool.push(Skia.Paint());\n }\n\n const nextPaint = paintPool[nextPaintIndex];\n nextPaint.assign(getCurrentPaint()); // Reuse allocation by copying properties\n paints.push(nextPaint);\n opacities.push(opacities[opacities.length - 1]);\n nextPaintIndex++;\n };\n\n // Pushes an externally owned paint (the `paint` prop) onto the stack. It\n // pushes a frame-scoped copy, like the C++ DrawingCtx: materializePaint()\n // mutates the top of the stack, and those mutations must not leak into the\n // user-owned paint. It must also push an opacity alongside it: restorePaint()\n // pops both, so pushing only the paint would underflow the opacity stack and\n // leak the enclosing group's opacity onto everything drawn afterwards.\n const pushPaint = (paint: SkPaint) => {\n paints.push(track(paint.copy()));\n opacities.push(opacities[opacities.length - 1]);\n };\n\n const getOpacity = () => {\n return opacities[opacities.length - 1];\n };\n\n const setOpacity = (newOpacity: number) => {\n opacities[opacities.length - 1] = Math.max(0, Math.min(1, newOpacity));\n };\n\n const saveBackdropFilter = () => {\n let imageFilter: SkImageFilter | null = null;\n const imgf = imageFilters.pop();\n if (imgf) {\n imageFilter = imgf;\n } else {\n const cf = colorFilters.pop();\n if (cf) {\n imageFilter = frameSkia.ImageFilter.MakeColorFilter(cf, null);\n }\n }\n canvas.saveLayer(undefined, null, imageFilter);\n canvas.restore();\n };\n\n // Equivalent to the `get paint()` getter in the original class\n const getCurrentPaint = () => {\n return paints[paints.length - 1];\n };\n\n const restorePaint = () => {\n opacities.pop();\n return paints.pop();\n };\n\n const materializePaint = () => {\n // Color Filters\n if (colorFilters.length > 0) {\n getCurrentPaint().setColorFilter(\n colorFilters.reduceRight((inner, outer) =>\n inner ? frameSkia.ColorFilter.MakeCompose(outer, inner) : outer\n )\n );\n }\n // Shaders\n if (shaders.length > 0) {\n getCurrentPaint().setShader(shaders[shaders.length - 1]);\n }\n // Image Filters\n if (imageFilters.length > 0) {\n getCurrentPaint().setImageFilter(\n imageFilters.reduceRight((inner, outer) =>\n inner ? frameSkia.ImageFilter.MakeCompose(outer, inner) : outer\n )\n );\n }\n\n // Path Effects\n if (pathEffects.length > 0) {\n getCurrentPaint().setPathEffect(\n pathEffects.reduceRight((inner, outer) =>\n inner ? frameSkia.PathEffect.MakeCompose(outer, inner) : outer\n )\n );\n }\n\n // Clear arrays\n colorFilters.length = 0;\n shaders.length = 0;\n imageFilters.length = 0;\n pathEffects.length = 0;\n };\n\n // Return an object containing the Skia reference, the canvas, and the methods\n return {\n // Public fields\n Skia: frameSkia,\n canvas,\n track,\n dispose,\n paints,\n colorFilters,\n shaders,\n imageFilters,\n pathEffects,\n paintDeclarations,\n paintPool,\n\n // Public methods\n savePaint,\n pushPaint,\n saveBackdropFilter,\n get paint() {\n return paints[paints.length - 1];\n }, // the \"getter\" for the current paint\n restorePaint,\n materializePaint,\n getOpacity,\n setOpacity,\n };\n};\n\nexport type DrawingContext = ReturnType<typeof createDrawingContext>;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -71,7 +71,7 @@ const play = (ctx, _command) => {
|
|
|
71
71
|
ctx.canvas.saveLayer(paint);
|
|
72
72
|
} else if ((0, _Core.isDrawCommand)(command, _Core.CommandType.SavePaint)) {
|
|
73
73
|
if (command.props.paint) {
|
|
74
|
-
ctx.
|
|
74
|
+
ctx.pushPaint(command.props.paint);
|
|
75
75
|
} else {
|
|
76
76
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
77
77
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Drawing","require","_Box","_ColorFilters","_CTM","_ImageFilters","_Paint","_PathEffects","_Shaders","_Core","getZIndex","command","_materialized$props","materialized","materializeCommand","zIndex","props","Number","isNaN","flushPendingGroups","ctx","pendingGroups","playFn","length","sort","a","b","order","forEach","playGroup","group","pending","children","child","isGroup","push","play","_command","isCommand","CommandType","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","isDrawCommand","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","setPaintProperties","RestorePaint","restorePaint","ComposeColorFilter","composeColorFilters","RestorePaintDeclaration","Error","MaterializePaint","isPushColorFilter","pushColorFilter","isPushShader","pushShader","isPushImageFilter","pushImageFilter","isPushPathEffect","pushPathEffect","ComposePathEffect","composePathEffects","ComposeImageFilter","composeImageFilters","PushBlurMaskFilter","setBlurMaskFilter","SaveCTM","saveCTM","RestoreCTM","restore","track","copy","setAlphaf","getAlphaf","getOpacity","p","isBoxCommand","drawBox","DrawPaint","drawPaint","DrawImage","drawImage","DrawCircle","drawCircle","DrawPoints","drawPoints","DrawPath","drawPath","DrawRect","drawRect","DrawRRect","drawRRect","DrawOval","drawOval","DrawLine","drawLine","DrawPatch","drawPatch","DrawVertices","drawVertices","DrawDiffRect","drawDiffRect","DrawText","drawText","DrawTextPath","drawTextPath","DrawTextBlob","drawTextBlob","DrawGlyphs","drawGlyphs","DrawPicture","drawPicture","DrawImageSVG","drawImageSVG","DrawParagraph","drawParagraph","DrawAtlas","drawAtlas","DrawSkottie","drawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst flushPendingGroups = (\n ctx: DrawingContext,\n pendingGroups: PendingGroup[],\n playFn: (ctx: DrawingContext, cmd: Command) => void\n) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n playFn(ctx, command);\n });\n pendingGroups.length = 0;\n};\n\nconst playGroup = (\n ctx: DrawingContext,\n group: GroupCommand,\n playFn: (ctx: DrawingContext, cmd: Command) => void\n) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending, playFn);\n playFn(ctx, child);\n });\n flushPendingGroups(ctx, pending, playFn);\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n if (isGroup(_command)) {\n playGroup(ctx, _command, play);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // apply opacity to the current paint.\n const paint = ctx.track(ctx.paint.copy());\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_Drawing","require","_Box","_ColorFilters","_CTM","_ImageFilters","_Paint","_PathEffects","_Shaders","_Core","getZIndex","command","_materialized$props","materialized","materializeCommand","zIndex","props","Number","isNaN","flushPendingGroups","ctx","pendingGroups","playFn","length","sort","a","b","order","forEach","playGroup","group","pending","children","child","isGroup","push","play","_command","isCommand","CommandType","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","isDrawCommand","SavePaint","pushPaint","standalone","savePaint","freshPaint","Skia","Paint","assign","setPaintProperties","RestorePaint","restorePaint","ComposeColorFilter","composeColorFilters","RestorePaintDeclaration","Error","MaterializePaint","isPushColorFilter","pushColorFilter","isPushShader","pushShader","isPushImageFilter","pushImageFilter","isPushPathEffect","pushPathEffect","ComposePathEffect","composePathEffects","ComposeImageFilter","composeImageFilters","PushBlurMaskFilter","setBlurMaskFilter","SaveCTM","saveCTM","RestoreCTM","restore","track","copy","setAlphaf","getAlphaf","getOpacity","paints","p","isBoxCommand","drawBox","DrawPaint","drawPaint","DrawImage","drawImage","DrawCircle","drawCircle","DrawPoints","drawPoints","DrawPath","drawPath","DrawRect","drawRect","DrawRRect","drawRRect","DrawOval","drawOval","DrawLine","drawLine","DrawPatch","drawPatch","DrawVertices","drawVertices","DrawDiffRect","drawDiffRect","DrawText","drawText","DrawTextPath","drawTextPath","DrawTextBlob","drawTextBlob","DrawGlyphs","drawGlyphs","DrawPicture","drawPicture","DrawImageSVG","drawImageSVG","DrawParagraph","drawParagraph","DrawAtlas","drawAtlas","DrawSkottie","drawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst flushPendingGroups = (\n ctx: DrawingContext,\n pendingGroups: PendingGroup[],\n playFn: (ctx: DrawingContext, cmd: Command) => void\n) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n playFn(ctx, command);\n });\n pendingGroups.length = 0;\n};\n\nconst playGroup = (\n ctx: DrawingContext,\n group: GroupCommand,\n playFn: (ctx: DrawingContext, cmd: Command) => void\n) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending, playFn);\n playFn(ctx, child);\n });\n flushPendingGroups(ctx, pending, playFn);\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n if (isGroup(_command)) {\n playGroup(ctx, _command, play);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.pushPaint(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // apply opacity to the current paint.\n const paint = ctx.track(ctx.paint.copy());\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -88,7 +88,12 @@ const processCTM = ({
|
|
|
88
88
|
if (layer) {
|
|
89
89
|
ctm.layer = layer;
|
|
90
90
|
}
|
|
91
|
-
|
|
91
|
+
// Only record a CTM command when saveCTM() will actually save the canvas.
|
|
92
|
+
// saveCTM() saves on transform/matrix, clip or layer; restoreCTM() always
|
|
93
|
+
// restores, so recording a CTM that saves nothing - `origin` with no
|
|
94
|
+
// transform, `clip={false}` from a conditional, a bare `invertClip` - pops
|
|
95
|
+
// an enclosing save that belongs to an ancestor.
|
|
96
|
+
if (ctm.clip !== undefined || ctm.transform !== undefined || ctm.matrix !== undefined || ctm.layer !== undefined) {
|
|
92
97
|
return ctm;
|
|
93
98
|
}
|
|
94
99
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_Node","processPaint","opacity","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","paint","paintRef","undefined","exports","processCTM","clip","invertClip","transform","origin","matrix","layer","ctm","pushColorFilters","recorder","colorFilters","forEach","colorFilter","children","length","pushColorFilter","type","props","needsComposition","NodeType","LerpColorFilter","composeColorFilter","pushPathEffects","pathEffects","pathEffect","pushPathEffect","SumPathEffect","composePathEffect","pushImageFilters","imageFilters","imageFilter","isImageFilter","pushImageFilter","isShader","pushShader","BlendImageFilter","composeImageFilter","pushShaders","shaders","shader","pushMaskFilters","maskFilters","pushBlurMaskFilter","pushPaints","paints","savePaint","sortNodeChildren","restorePaintDeclaration","getStackingContextProps","zIndex","visitNode","node","stackingContextProps","saveGroup","drawings","shouldPushPaint","BackdropFilter","saveBackdropFilter","materializePaint","Layer","saveLayer","shouldRestore","saveCTM","Box","shadows","filter","n","BoxShadow","map","drawBox","Fill","drawPaint","Image","drawImage","Circle","drawCircle","Points","drawPoints","Path","drawPath","Rect","drawRect","RRect","drawRRect","Oval","drawOval","Line","drawLine","Patch","drawPatch","Vertices","drawVertices","DiffRect","drawDiffRect","Text","drawText","TextPath","drawTextPath","TextBlob","drawTextBlob","Glyphs","drawGlyphs","Picture","drawPicture","ImageSVG","drawImageSVG","Paragraph","drawParagraph","Skottie","drawSkottie","Atlas","drawAtlas","drawing","restorePaint","restoreCTM","restoreGroup","visit","root"],"sources":["Visitor.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n CTMProps,\n DrawingNodeProps,\n BoxShadowProps,\n} from \"../../dom/types\";\nimport { NodeType } from \"../../dom/types\";\nimport type { BaseRecorder } from \"../../skia/types/Recorder\";\nimport type { Node } from \"../Node\";\nimport { isImageFilter, isShader, sortNodeChildren } from \"../Node\";\nimport type { AnimatedProps } from \"../../renderer\";\n\nexport const processPaint = ({\n opacity,\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n paint: paintRef,\n}: DrawingNodeProps) => {\n const paint: DrawingNodeProps = {};\n if (opacity !== undefined) {\n paint.opacity = opacity;\n }\n if (color !== undefined) {\n paint.color = color;\n }\n if (strokeWidth !== undefined) {\n paint.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n paint.blendMode = blendMode;\n }\n if (style !== undefined) {\n paint.style = style;\n }\n if (strokeJoin !== undefined) {\n paint.strokeJoin = strokeJoin;\n }\n if (strokeCap !== undefined) {\n paint.strokeCap = strokeCap;\n }\n if (strokeMiter !== undefined) {\n paint.strokeMiter = strokeMiter;\n }\n if (antiAlias !== undefined) {\n paint.antiAlias = antiAlias;\n }\n if (dither !== undefined) {\n paint.dither = dither;\n }\n\n if (paintRef !== undefined) {\n paint.paint = paintRef;\n }\n\n if (\n opacity !== undefined ||\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n antiAlias !== undefined ||\n dither !== undefined ||\n paintRef !== undefined\n ) {\n return paint;\n }\n return null;\n};\n\nconst processCTM = ({\n clip,\n invertClip,\n transform,\n origin,\n matrix,\n layer,\n}: CTMProps) => {\n const ctm: CTMProps = {};\n if (clip) {\n ctm.clip = clip;\n }\n if (invertClip) {\n ctm.invertClip = invertClip;\n }\n if (transform) {\n ctm.transform = transform;\n }\n if (origin) {\n ctm.origin = origin;\n }\n if (matrix) {\n ctm.matrix = matrix;\n }\n if (layer) {\n ctm.layer = layer;\n }\n if (\n clip !== undefined ||\n invertClip !== undefined ||\n transform !== undefined ||\n origin !== undefined ||\n matrix !== undefined ||\n layer !== undefined\n ) {\n return ctm;\n }\n return null;\n};\n\nconst pushColorFilters = (\n recorder: BaseRecorder,\n colorFilters: Node<any>[]\n) => {\n colorFilters.forEach((colorFilter) => {\n if (colorFilter.children.length > 0) {\n pushColorFilters(recorder, colorFilter.children);\n }\n recorder.pushColorFilter(colorFilter.type, colorFilter.props);\n const needsComposition =\n colorFilter.type !== NodeType.LerpColorFilter &&\n colorFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeColorFilter();\n }\n });\n};\n\nconst pushPathEffects = (recorder: BaseRecorder, pathEffects: Node<any>[]) => {\n pathEffects.forEach((pathEffect) => {\n if (pathEffect.children.length > 0) {\n pushPathEffects(recorder, pathEffect.children);\n }\n recorder.pushPathEffect(pathEffect.type, pathEffect.props);\n const needsComposition =\n pathEffect.type !== NodeType.SumPathEffect &&\n pathEffect.children.length > 0;\n if (needsComposition) {\n recorder.composePathEffect();\n }\n });\n};\n\nconst pushImageFilters = (\n recorder: BaseRecorder,\n imageFilters: Node<any>[]\n) => {\n imageFilters.forEach((imageFilter) => {\n if (imageFilter.children.length > 0) {\n pushImageFilters(recorder, imageFilter.children);\n }\n if (isImageFilter(imageFilter.type)) {\n recorder.pushImageFilter(imageFilter.type, imageFilter.props);\n } else if (isShader(imageFilter.type)) {\n recorder.pushShader(imageFilter.type, imageFilter.props, 0);\n }\n const needsComposition =\n imageFilter.type !== NodeType.BlendImageFilter &&\n imageFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeImageFilter();\n }\n });\n};\n\nconst pushShaders = (recorder: BaseRecorder, shaders: Node<any>[]) => {\n shaders.forEach((shader) => {\n if (shader.children.length > 0) {\n pushShaders(recorder, shader.children);\n }\n recorder.pushShader(shader.type, shader.props, shader.children.length);\n });\n};\n\nconst pushMaskFilters = (recorder: BaseRecorder, maskFilters: Node<any>[]) => {\n if (maskFilters.length > 0) {\n recorder.pushBlurMaskFilter(maskFilters[maskFilters.length - 1].props);\n }\n};\n\nconst pushPaints = (recorder: BaseRecorder, paints: Node<any>[]) => {\n paints.forEach((paint) => {\n recorder.savePaint(paint.props, true);\n const { colorFilters, maskFilters, shaders, imageFilters, pathEffects } =\n sortNodeChildren(paint);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n recorder.restorePaintDeclaration();\n });\n};\n\ntype StackingContextProps = Pick<DrawingNodeProps, \"zIndex\">;\n\nconst getStackingContextProps = (\n props: AnimatedProps<DrawingNodeProps>\n): AnimatedProps<StackingContextProps> | undefined => {\n const { zIndex } = props;\n if (zIndex === undefined) {\n return undefined;\n }\n return { zIndex };\n};\n\nconst visitNode = (recorder: BaseRecorder, node: Node<any>) => {\n const { props } = node;\n const stackingContextProps = getStackingContextProps(\n props as AnimatedProps<DrawingNodeProps>\n );\n recorder.saveGroup(stackingContextProps);\n const {\n colorFilters,\n maskFilters,\n drawings,\n shaders,\n imageFilters,\n pathEffects,\n paints,\n } = sortNodeChildren(node);\n const paint = processPaint(props);\n const shouldPushPaint =\n paint ||\n colorFilters.length > 0 ||\n maskFilters.length > 0 ||\n imageFilters.length > 0 ||\n pathEffects.length > 0 ||\n shaders.length > 0;\n if (shouldPushPaint) {\n recorder.savePaint(paint ?? {}, false);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n // For mixed nodes like BackdropFilters we don't materialize the paint\n if (node.type === NodeType.BackdropFilter) {\n recorder.saveBackdropFilter();\n } else {\n recorder.materializePaint();\n }\n }\n pushPaints(recorder, paints);\n if (node.type === NodeType.Layer) {\n recorder.saveLayer();\n }\n const ctm = processCTM(props);\n const shouldRestore = !!ctm || node.type === NodeType.Layer;\n if (ctm) {\n recorder.saveCTM(ctm);\n }\n switch (node.type) {\n case NodeType.Box:\n const shadows = node.children\n .filter((n) => n.type === NodeType.BoxShadow)\n // eslint-disable-next-line @typescript-eslint/no-shadow\n .map(({ props }) => ({ props }) as { props: BoxShadowProps });\n recorder.drawBox(props, shadows);\n break;\n case NodeType.Fill:\n recorder.drawPaint();\n break;\n case NodeType.Image:\n recorder.drawImage(props);\n break;\n case NodeType.Circle:\n recorder.drawCircle(props);\n break;\n case NodeType.Points:\n recorder.drawPoints(props);\n break;\n case NodeType.Path:\n recorder.drawPath(props);\n break;\n case NodeType.Rect:\n recorder.drawRect(props);\n break;\n case NodeType.RRect:\n recorder.drawRRect(props);\n break;\n case NodeType.Oval:\n recorder.drawOval(props);\n break;\n case NodeType.Line:\n recorder.drawLine(props);\n break;\n case NodeType.Patch:\n recorder.drawPatch(props);\n break;\n case NodeType.Vertices:\n recorder.drawVertices(props);\n break;\n case NodeType.DiffRect:\n recorder.drawDiffRect(props);\n break;\n case NodeType.Text:\n recorder.drawText(props);\n break;\n case NodeType.TextPath:\n recorder.drawTextPath(props);\n break;\n case NodeType.TextBlob:\n recorder.drawTextBlob(props);\n break;\n case NodeType.Glyphs:\n recorder.drawGlyphs(props);\n break;\n case NodeType.Picture:\n recorder.drawPicture(props);\n break;\n case NodeType.ImageSVG:\n recorder.drawImageSVG(props);\n break;\n case NodeType.Paragraph:\n recorder.drawParagraph(props);\n break;\n case NodeType.Skottie:\n recorder.drawSkottie(props);\n break;\n case NodeType.Atlas:\n recorder.drawAtlas(props);\n break;\n }\n drawings.forEach((drawing) => {\n visitNode(recorder, drawing);\n });\n if (shouldPushPaint) {\n recorder.restorePaint();\n }\n if (shouldRestore) {\n recorder.restoreCTM();\n }\n recorder.restoreGroup();\n};\n\nexport const visit = (recorder: BaseRecorder, root: Node[]) => {\n root.forEach((node) => {\n visitNode(recorder, node);\n });\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_types","require","_Node","processPaint","opacity","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","paint","paintRef","undefined","exports","processCTM","clip","invertClip","transform","origin","matrix","layer","ctm","pushColorFilters","recorder","colorFilters","forEach","colorFilter","children","length","pushColorFilter","type","props","needsComposition","NodeType","LerpColorFilter","composeColorFilter","pushPathEffects","pathEffects","pathEffect","pushPathEffect","SumPathEffect","composePathEffect","pushImageFilters","imageFilters","imageFilter","isImageFilter","pushImageFilter","isShader","pushShader","BlendImageFilter","composeImageFilter","pushShaders","shaders","shader","pushMaskFilters","maskFilters","pushBlurMaskFilter","pushPaints","paints","savePaint","sortNodeChildren","restorePaintDeclaration","getStackingContextProps","zIndex","visitNode","node","stackingContextProps","saveGroup","drawings","shouldPushPaint","BackdropFilter","saveBackdropFilter","materializePaint","Layer","saveLayer","shouldRestore","saveCTM","Box","shadows","filter","n","BoxShadow","map","drawBox","Fill","drawPaint","Image","drawImage","Circle","drawCircle","Points","drawPoints","Path","drawPath","Rect","drawRect","RRect","drawRRect","Oval","drawOval","Line","drawLine","Patch","drawPatch","Vertices","drawVertices","DiffRect","drawDiffRect","Text","drawText","TextPath","drawTextPath","TextBlob","drawTextBlob","Glyphs","drawGlyphs","Picture","drawPicture","ImageSVG","drawImageSVG","Paragraph","drawParagraph","Skottie","drawSkottie","Atlas","drawAtlas","drawing","restorePaint","restoreCTM","restoreGroup","visit","root"],"sources":["Visitor.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n CTMProps,\n DrawingNodeProps,\n BoxShadowProps,\n} from \"../../dom/types\";\nimport { NodeType } from \"../../dom/types\";\nimport type { BaseRecorder } from \"../../skia/types/Recorder\";\nimport type { Node } from \"../Node\";\nimport { isImageFilter, isShader, sortNodeChildren } from \"../Node\";\nimport type { AnimatedProps } from \"../../renderer\";\n\nexport const processPaint = ({\n opacity,\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n paint: paintRef,\n}: DrawingNodeProps) => {\n const paint: DrawingNodeProps = {};\n if (opacity !== undefined) {\n paint.opacity = opacity;\n }\n if (color !== undefined) {\n paint.color = color;\n }\n if (strokeWidth !== undefined) {\n paint.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n paint.blendMode = blendMode;\n }\n if (style !== undefined) {\n paint.style = style;\n }\n if (strokeJoin !== undefined) {\n paint.strokeJoin = strokeJoin;\n }\n if (strokeCap !== undefined) {\n paint.strokeCap = strokeCap;\n }\n if (strokeMiter !== undefined) {\n paint.strokeMiter = strokeMiter;\n }\n if (antiAlias !== undefined) {\n paint.antiAlias = antiAlias;\n }\n if (dither !== undefined) {\n paint.dither = dither;\n }\n\n if (paintRef !== undefined) {\n paint.paint = paintRef;\n }\n\n if (\n opacity !== undefined ||\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n antiAlias !== undefined ||\n dither !== undefined ||\n paintRef !== undefined\n ) {\n return paint;\n }\n return null;\n};\n\nconst processCTM = ({\n clip,\n invertClip,\n transform,\n origin,\n matrix,\n layer,\n}: CTMProps) => {\n const ctm: CTMProps = {};\n if (clip) {\n ctm.clip = clip;\n }\n if (invertClip) {\n ctm.invertClip = invertClip;\n }\n if (transform) {\n ctm.transform = transform;\n }\n if (origin) {\n ctm.origin = origin;\n }\n if (matrix) {\n ctm.matrix = matrix;\n }\n if (layer) {\n ctm.layer = layer;\n }\n // Only record a CTM command when saveCTM() will actually save the canvas.\n // saveCTM() saves on transform/matrix, clip or layer; restoreCTM() always\n // restores, so recording a CTM that saves nothing - `origin` with no\n // transform, `clip={false}` from a conditional, a bare `invertClip` - pops\n // an enclosing save that belongs to an ancestor.\n if (\n ctm.clip !== undefined ||\n ctm.transform !== undefined ||\n ctm.matrix !== undefined ||\n ctm.layer !== undefined\n ) {\n return ctm;\n }\n return null;\n};\n\nconst pushColorFilters = (\n recorder: BaseRecorder,\n colorFilters: Node<any>[]\n) => {\n colorFilters.forEach((colorFilter) => {\n if (colorFilter.children.length > 0) {\n pushColorFilters(recorder, colorFilter.children);\n }\n recorder.pushColorFilter(colorFilter.type, colorFilter.props);\n const needsComposition =\n colorFilter.type !== NodeType.LerpColorFilter &&\n colorFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeColorFilter();\n }\n });\n};\n\nconst pushPathEffects = (recorder: BaseRecorder, pathEffects: Node<any>[]) => {\n pathEffects.forEach((pathEffect) => {\n if (pathEffect.children.length > 0) {\n pushPathEffects(recorder, pathEffect.children);\n }\n recorder.pushPathEffect(pathEffect.type, pathEffect.props);\n const needsComposition =\n pathEffect.type !== NodeType.SumPathEffect &&\n pathEffect.children.length > 0;\n if (needsComposition) {\n recorder.composePathEffect();\n }\n });\n};\n\nconst pushImageFilters = (\n recorder: BaseRecorder,\n imageFilters: Node<any>[]\n) => {\n imageFilters.forEach((imageFilter) => {\n if (imageFilter.children.length > 0) {\n pushImageFilters(recorder, imageFilter.children);\n }\n if (isImageFilter(imageFilter.type)) {\n recorder.pushImageFilter(imageFilter.type, imageFilter.props);\n } else if (isShader(imageFilter.type)) {\n recorder.pushShader(imageFilter.type, imageFilter.props, 0);\n }\n const needsComposition =\n imageFilter.type !== NodeType.BlendImageFilter &&\n imageFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeImageFilter();\n }\n });\n};\n\nconst pushShaders = (recorder: BaseRecorder, shaders: Node<any>[]) => {\n shaders.forEach((shader) => {\n if (shader.children.length > 0) {\n pushShaders(recorder, shader.children);\n }\n recorder.pushShader(shader.type, shader.props, shader.children.length);\n });\n};\n\nconst pushMaskFilters = (recorder: BaseRecorder, maskFilters: Node<any>[]) => {\n if (maskFilters.length > 0) {\n recorder.pushBlurMaskFilter(maskFilters[maskFilters.length - 1].props);\n }\n};\n\nconst pushPaints = (recorder: BaseRecorder, paints: Node<any>[]) => {\n paints.forEach((paint) => {\n recorder.savePaint(paint.props, true);\n const { colorFilters, maskFilters, shaders, imageFilters, pathEffects } =\n sortNodeChildren(paint);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n recorder.restorePaintDeclaration();\n });\n};\n\ntype StackingContextProps = Pick<DrawingNodeProps, \"zIndex\">;\n\nconst getStackingContextProps = (\n props: AnimatedProps<DrawingNodeProps>\n): AnimatedProps<StackingContextProps> | undefined => {\n const { zIndex } = props;\n if (zIndex === undefined) {\n return undefined;\n }\n return { zIndex };\n};\n\nconst visitNode = (recorder: BaseRecorder, node: Node<any>) => {\n const { props } = node;\n const stackingContextProps = getStackingContextProps(\n props as AnimatedProps<DrawingNodeProps>\n );\n recorder.saveGroup(stackingContextProps);\n const {\n colorFilters,\n maskFilters,\n drawings,\n shaders,\n imageFilters,\n pathEffects,\n paints,\n } = sortNodeChildren(node);\n const paint = processPaint(props);\n const shouldPushPaint =\n paint ||\n colorFilters.length > 0 ||\n maskFilters.length > 0 ||\n imageFilters.length > 0 ||\n pathEffects.length > 0 ||\n shaders.length > 0;\n if (shouldPushPaint) {\n recorder.savePaint(paint ?? {}, false);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n // For mixed nodes like BackdropFilters we don't materialize the paint\n if (node.type === NodeType.BackdropFilter) {\n recorder.saveBackdropFilter();\n } else {\n recorder.materializePaint();\n }\n }\n pushPaints(recorder, paints);\n if (node.type === NodeType.Layer) {\n recorder.saveLayer();\n }\n const ctm = processCTM(props);\n const shouldRestore = !!ctm || node.type === NodeType.Layer;\n if (ctm) {\n recorder.saveCTM(ctm);\n }\n switch (node.type) {\n case NodeType.Box:\n const shadows = node.children\n .filter((n) => n.type === NodeType.BoxShadow)\n // eslint-disable-next-line @typescript-eslint/no-shadow\n .map(({ props }) => ({ props }) as { props: BoxShadowProps });\n recorder.drawBox(props, shadows);\n break;\n case NodeType.Fill:\n recorder.drawPaint();\n break;\n case NodeType.Image:\n recorder.drawImage(props);\n break;\n case NodeType.Circle:\n recorder.drawCircle(props);\n break;\n case NodeType.Points:\n recorder.drawPoints(props);\n break;\n case NodeType.Path:\n recorder.drawPath(props);\n break;\n case NodeType.Rect:\n recorder.drawRect(props);\n break;\n case NodeType.RRect:\n recorder.drawRRect(props);\n break;\n case NodeType.Oval:\n recorder.drawOval(props);\n break;\n case NodeType.Line:\n recorder.drawLine(props);\n break;\n case NodeType.Patch:\n recorder.drawPatch(props);\n break;\n case NodeType.Vertices:\n recorder.drawVertices(props);\n break;\n case NodeType.DiffRect:\n recorder.drawDiffRect(props);\n break;\n case NodeType.Text:\n recorder.drawText(props);\n break;\n case NodeType.TextPath:\n recorder.drawTextPath(props);\n break;\n case NodeType.TextBlob:\n recorder.drawTextBlob(props);\n break;\n case NodeType.Glyphs:\n recorder.drawGlyphs(props);\n break;\n case NodeType.Picture:\n recorder.drawPicture(props);\n break;\n case NodeType.ImageSVG:\n recorder.drawImageSVG(props);\n break;\n case NodeType.Paragraph:\n recorder.drawParagraph(props);\n break;\n case NodeType.Skottie:\n recorder.drawSkottie(props);\n break;\n case NodeType.Atlas:\n recorder.drawAtlas(props);\n break;\n }\n drawings.forEach((drawing) => {\n visitNode(recorder, drawing);\n });\n if (shouldPushPaint) {\n recorder.restorePaint();\n }\n if (shouldRestore) {\n recorder.restoreCTM();\n }\n recorder.restoreGroup();\n};\n\nexport const visit = (recorder: BaseRecorder, root: Node[]) => {\n root.forEach((node) => {\n visitNode(recorder, node);\n });\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -188,6 +188,16 @@ const drawPath = (ctx, props) => {
|
|
|
188
188
|
const hasFillType = !!fillType;
|
|
189
189
|
let path = (0, _nodes.processPath)(ctx.Skia, pathProps.path);
|
|
190
190
|
|
|
191
|
+
// Trim runs first, so start/end address the path the caller drew. Stroking
|
|
192
|
+
// first would replace it with its outline and leave the offsets walking that
|
|
193
|
+
// outline's perimeter instead. The native recorder orders these the same way.
|
|
194
|
+
if (hasStartOffset || hasEndOffset) {
|
|
195
|
+
const trimmed = ctx.Skia.Path.Trim(path, start, end, false);
|
|
196
|
+
if (trimmed) {
|
|
197
|
+
path = trimmed;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
191
201
|
// Apply fill type using PathBuilder
|
|
192
202
|
if (hasFillType) {
|
|
193
203
|
const builder = ctx.Skia.PathBuilder.MakeFromPath(path);
|
|
@@ -202,14 +212,6 @@ const drawPath = (ctx, props) => {
|
|
|
202
212
|
path = stroked;
|
|
203
213
|
}
|
|
204
214
|
}
|
|
205
|
-
|
|
206
|
-
// Apply trim using static Path.Trim
|
|
207
|
-
if (hasStartOffset || hasEndOffset) {
|
|
208
|
-
const trimmed = ctx.Skia.Path.Trim(path, start, end, false);
|
|
209
|
-
if (trimmed) {
|
|
210
|
-
path = trimmed;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
215
|
ctx.canvas.drawPath(path, ctx.paint);
|
|
214
216
|
};
|
|
215
217
|
exports.drawPath = drawPath;
|
|
@@ -291,7 +293,8 @@ const drawImageSVG = (ctx, props) => {
|
|
|
291
293
|
return;
|
|
292
294
|
}
|
|
293
295
|
canvas.save();
|
|
294
|
-
|
|
296
|
+
// An offset of 0 is a valid position, so it must not be read as "unset".
|
|
297
|
+
if (x !== undefined && y !== undefined) {
|
|
295
298
|
canvas.translate(x, y);
|
|
296
299
|
}
|
|
297
300
|
canvas.drawSvg(svg, width, height);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_nodes","require","_processors","_types","drawLine","ctx","props","p1","p2","canvas","x","y","paint","exports","drawOval","rect","processRect","Skia","drawImage","image","sampling","_props$fit","fit","src","dst","fitRects","width","height","isCubicSampling","drawImageRectCubic","B","C","_sampling$filter","_sampling$mipmap","drawImageRectOptions","filter","FilterMode","Linear","mipmap","MipmapMode","None","drawPoints","points","mode","PointMode","enumKey","drawVertices","textures","colors","indices","blendMode","vertexMode","VertexMode","Triangles","vertices","MakeVertices","map","c","processColor","undefined","defaultBlendMode","BlendMode","DstOver","SrcOver","blend","drawDiffRect","outer","inner","drawDRRect","drawTextPath","path","processPath","font","initialOffset","text","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","track","next","dist","i","length","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","derived","TextBlob","MakeFromRSXform","drawTextBlob","drawText","drawPatch","texture","patch","pos","c2","c1","drawPath","start","trimStart","end","trimEnd","fillType","stroke","pathProps","Math","fround","saturate","hasStartOffset","hasEndOffset","hasStrokeOptions","hasFillType","builder","PathBuilder","MakeFromPath","setFillType","FillType","build","stroked","Path","Stroke","trimmed","Trim","drawRect","drawRRect","processRRect","blob","drawGlyphs","glyphs","reduce","acc","glyph","id","positions","drawImageSVG","svg","save","translate","drawSvg","restore","drawParagraph","paragraph","layout","drawPicture","picture","drawAtlas","sprites","transforms","colorBlendMode","drawCircle","processCircle","r","drawSkottie","animation","frame","seekFrame","render"],"sources":["Drawing.ts"],"sourcesContent":["import {\n enumKey,\n fitRects,\n processCircle,\n processColor,\n processPath,\n processRect,\n processRRect,\n} from \"../../../dom/nodes\";\nimport type {\n AtlasProps,\n CircleProps,\n DiffRectProps,\n GlyphsProps,\n ImageProps,\n ImageSVGProps,\n LineProps,\n OvalProps,\n ParagraphProps,\n PatchProps,\n PathProps,\n PictureProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n SkottieProps,\n TextBlobProps,\n TextPathProps,\n TextProps,\n VerticesProps,\n} from \"../../../dom/types\";\nimport { saturate } from \"../../../renderer/processors\";\nimport type { SkPoint, SkRSXform } from \"../../../skia/types\";\nimport {\n BlendMode,\n FillType,\n FilterMode,\n isCubicSampling,\n MipmapMode,\n PointMode,\n VertexMode,\n} from \"../../../skia/types\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport const drawLine = (ctx: DrawingContext, props: LineProps) => {\n \"worklet\";\n const { p1, p2 } = props;\n ctx.canvas.drawLine(p1.x, p1.y, p2.x, p2.y, ctx.paint);\n};\n\nexport const drawOval = (ctx: DrawingContext, props: OvalProps) => {\n \"worklet\";\n const rect = processRect(ctx.Skia, props);\n ctx.canvas.drawOval(rect, ctx.paint);\n};\n\nexport const drawImage = (ctx: DrawingContext, props: ImageProps) => {\n \"worklet\";\n const { image, sampling } = props;\n if (image) {\n const fit = props.fit ?? \"contain\";\n const rect = processRect(ctx.Skia, props);\n const { src, dst } = fitRects(\n fit,\n {\n x: 0,\n y: 0,\n width: image.width(),\n height: image.height(),\n },\n rect\n );\n if (sampling && isCubicSampling(sampling)) {\n ctx.canvas.drawImageRectCubic(\n image,\n src,\n dst,\n sampling.B,\n sampling.C,\n ctx.paint\n );\n } else {\n ctx.canvas.drawImageRectOptions(\n image,\n src,\n dst,\n sampling?.filter ?? FilterMode.Linear,\n sampling?.mipmap ?? MipmapMode.None,\n ctx.paint\n );\n }\n }\n};\n\nexport const drawPoints = (ctx: DrawingContext, props: PointsProps) => {\n \"worklet\";\n const { points, mode } = props;\n ctx.canvas.drawPoints(PointMode[enumKey(mode)], points, ctx.paint);\n};\n\nexport const drawVertices = (ctx: DrawingContext, props: VerticesProps) => {\n \"worklet\";\n const { mode, textures, colors, indices, blendMode } = props;\n const vertexMode = mode ? VertexMode[enumKey(mode)] : VertexMode.Triangles;\n const vertices = ctx.Skia.MakeVertices(\n vertexMode,\n props.vertices,\n textures,\n colors ? colors.map((c) => processColor(ctx.Skia, c)) : undefined,\n indices\n );\n const defaultBlendMode = colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n\n ctx.canvas.drawVertices(vertices, blend, ctx.paint);\n};\n\nexport const drawDiffRect = (ctx: DrawingContext, props: DiffRectProps) => {\n \"worklet\";\n const { outer, inner } = props;\n ctx.canvas.drawDRRect(outer, inner, ctx.paint);\n};\n\nexport const drawTextPath = (ctx: DrawingContext, props: TextPathProps) => {\n \"worklet\";\n const path = processPath(ctx.Skia, props.path);\n const { font, initialOffset } = props;\n if (font) {\n let { text } = props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = ctx.Skia.ContourMeasureIter(path, false, 1);\n let cont = ctx.track(meas.next());\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = ctx.track(meas.next());\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(ctx.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n const derived = ctx.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n ctx.canvas.drawTextBlob(derived, 0, 0, ctx.paint);\n }\n};\n\nexport const drawText = (ctx: DrawingContext, props: TextProps) => {\n \"worklet\";\n const { text, x, y, font } = props;\n if (font != null) {\n ctx.canvas.drawText(text, x, y, ctx.paint, font);\n }\n};\n\nexport const drawPatch = (ctx: DrawingContext, props: PatchProps) => {\n \"worklet\";\n const { texture, blendMode, patch } = props;\n const defaultBlendMode = props.colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const mode = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n // Patch requires a path with the following constraints:\n // M tl\n // C c1 c2 br\n // C c1 c2 bl\n // C c1 c2 tl (the redundant point in the last command is removed)\n\n const points = [\n patch[0].pos,\n patch[0].c2,\n patch[1].c1,\n patch[1].pos,\n patch[1].c2,\n patch[2].c1,\n patch[2].pos,\n patch[2].c2,\n patch[3].c1,\n patch[3].pos,\n patch[3].c2,\n patch[0].c1,\n ];\n const colors = props.colors\n ? props.colors.map((c) => processColor(ctx.Skia, c))\n : undefined;\n ctx.canvas.drawPatch(points, colors, texture, mode, ctx.paint);\n};\n\nexport const drawPath = (ctx: DrawingContext, props: PathProps) => {\n \"worklet\";\n const {\n start: trimStart,\n end: trimEnd,\n fillType,\n stroke,\n ...pathProps\n } = props;\n const start = Math.fround(saturate(trimStart));\n const end = Math.fround(saturate(trimEnd));\n const hasStartOffset = start !== 0;\n const hasEndOffset = end !== 1;\n const hasStrokeOptions = stroke !== undefined;\n const hasFillType = !!fillType;\n\n let path = processPath(ctx.Skia, pathProps.path);\n\n // Apply fill type using PathBuilder\n if (hasFillType) {\n const builder = ctx.Skia.PathBuilder.MakeFromPath(path);\n builder.setFillType(FillType[enumKey(fillType)]);\n path = ctx.track(builder.build());\n }\n\n // Apply stroke using static Path.Stroke\n if (hasStrokeOptions) {\n const stroked = ctx.Skia.Path.Stroke(path, stroke);\n if (stroked) {\n path = stroked;\n }\n }\n\n // Apply trim using static Path.Trim\n if (hasStartOffset || hasEndOffset) {\n const trimmed = ctx.Skia.Path.Trim(path, start, end, false);\n if (trimmed) {\n path = trimmed;\n }\n }\n\n ctx.canvas.drawPath(path, ctx.paint);\n};\n\nexport const drawRect = (ctx: DrawingContext, props: RectProps) => {\n \"worklet\";\n const derived = processRect(ctx.Skia, props);\n ctx.canvas.drawRect(derived, ctx.paint);\n};\n\nexport const drawRRect = (ctx: DrawingContext, props: RoundedRectProps) => {\n \"worklet\";\n const derived = processRRect(ctx.Skia, props);\n ctx.canvas.drawRRect(derived, ctx.paint);\n};\n\nexport const drawTextBlob = (ctx: DrawingContext, props: TextBlobProps) => {\n \"worklet\";\n const { blob, x, y } = props;\n ctx.canvas.drawTextBlob(blob, x, y, ctx.paint);\n};\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport const drawGlyphs = (ctx: DrawingContext, props: GlyphsProps) => {\n \"worklet\";\n const derived = props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n const { glyphs, positions } = derived;\n const { x, y, font } = props;\n if (font) {\n ctx.canvas.drawGlyphs(glyphs, positions, x, y, font, ctx.paint);\n }\n};\n\nexport const drawImageSVG = (ctx: DrawingContext, props: ImageSVGProps) => {\n \"worklet\";\n const { canvas } = ctx;\n const { svg } = props;\n const { x, y, width, height } = props.rect\n ? props.rect\n : { x: props.x, y: props.y, width: props.width, height: props.height };\n if (svg === null) {\n return;\n }\n canvas.save();\n if (x && y) {\n canvas.translate(x, y);\n }\n canvas.drawSvg(svg, width, height);\n canvas.restore();\n};\n\nexport const drawParagraph = (ctx: DrawingContext, props: ParagraphProps) => {\n \"worklet\";\n const { paragraph, x, y, width } = props;\n if (paragraph) {\n paragraph.layout(width);\n paragraph.paint(ctx.canvas, x, y);\n }\n};\n\nexport const drawPicture = (ctx: DrawingContext, props: PictureProps) => {\n \"worklet\";\n const { picture } = props;\n ctx.canvas.drawPicture(picture);\n};\n\nexport const drawAtlas = (ctx: DrawingContext, props: AtlasProps) => {\n \"worklet\";\n const { image, sprites, transforms, colors, colorBlendMode, sampling } =\n props;\n const blend = colorBlendMode ? BlendMode[enumKey(colorBlendMode)] : undefined;\n if (image) {\n ctx.canvas.drawAtlas(\n image,\n sprites,\n transforms,\n ctx.paint,\n blend,\n colors,\n sampling\n );\n }\n};\n\nexport const drawCircle = (ctx: DrawingContext, props: CircleProps) => {\n \"worklet\";\n const { c } = processCircle(props);\n const { r } = props;\n ctx.canvas.drawCircle(c.x, c.y, r, ctx.paint);\n};\n\nexport const drawSkottie = (ctx: DrawingContext, props: SkottieProps) => {\n \"worklet\";\n const { animation, frame } = props;\n if (animation) {\n props.animation.seekFrame(frame);\n props.animation.render(ctx.canvas);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_nodes","require","_processors","_types","drawLine","ctx","props","p1","p2","canvas","x","y","paint","exports","drawOval","rect","processRect","Skia","drawImage","image","sampling","_props$fit","fit","src","dst","fitRects","width","height","isCubicSampling","drawImageRectCubic","B","C","_sampling$filter","_sampling$mipmap","drawImageRectOptions","filter","FilterMode","Linear","mipmap","MipmapMode","None","drawPoints","points","mode","PointMode","enumKey","drawVertices","textures","colors","indices","blendMode","vertexMode","VertexMode","Triangles","vertices","MakeVertices","map","c","processColor","undefined","defaultBlendMode","BlendMode","DstOver","SrcOver","blend","drawDiffRect","outer","inner","drawDRRect","drawTextPath","path","processPath","font","initialOffset","text","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","track","next","dist","i","length","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","derived","TextBlob","MakeFromRSXform","drawTextBlob","drawText","drawPatch","texture","patch","pos","c2","c1","drawPath","start","trimStart","end","trimEnd","fillType","stroke","pathProps","Math","fround","saturate","hasStartOffset","hasEndOffset","hasStrokeOptions","hasFillType","trimmed","Path","Trim","builder","PathBuilder","MakeFromPath","setFillType","FillType","build","stroked","Stroke","drawRect","drawRRect","processRRect","blob","drawGlyphs","glyphs","reduce","acc","glyph","id","positions","drawImageSVG","svg","save","translate","drawSvg","restore","drawParagraph","paragraph","layout","drawPicture","picture","drawAtlas","sprites","transforms","colorBlendMode","drawCircle","processCircle","r","drawSkottie","animation","frame","seekFrame","render"],"sources":["Drawing.ts"],"sourcesContent":["import {\n enumKey,\n fitRects,\n processCircle,\n processColor,\n processPath,\n processRect,\n processRRect,\n} from \"../../../dom/nodes\";\nimport type {\n AtlasProps,\n CircleProps,\n DiffRectProps,\n GlyphsProps,\n ImageProps,\n ImageSVGProps,\n LineProps,\n OvalProps,\n ParagraphProps,\n PatchProps,\n PathProps,\n PictureProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n SkottieProps,\n TextBlobProps,\n TextPathProps,\n TextProps,\n VerticesProps,\n} from \"../../../dom/types\";\nimport { saturate } from \"../../../renderer/processors\";\nimport type { SkPoint, SkRSXform } from \"../../../skia/types\";\nimport {\n BlendMode,\n FillType,\n FilterMode,\n isCubicSampling,\n MipmapMode,\n PointMode,\n VertexMode,\n} from \"../../../skia/types\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport const drawLine = (ctx: DrawingContext, props: LineProps) => {\n \"worklet\";\n const { p1, p2 } = props;\n ctx.canvas.drawLine(p1.x, p1.y, p2.x, p2.y, ctx.paint);\n};\n\nexport const drawOval = (ctx: DrawingContext, props: OvalProps) => {\n \"worklet\";\n const rect = processRect(ctx.Skia, props);\n ctx.canvas.drawOval(rect, ctx.paint);\n};\n\nexport const drawImage = (ctx: DrawingContext, props: ImageProps) => {\n \"worklet\";\n const { image, sampling } = props;\n if (image) {\n const fit = props.fit ?? \"contain\";\n const rect = processRect(ctx.Skia, props);\n const { src, dst } = fitRects(\n fit,\n {\n x: 0,\n y: 0,\n width: image.width(),\n height: image.height(),\n },\n rect\n );\n if (sampling && isCubicSampling(sampling)) {\n ctx.canvas.drawImageRectCubic(\n image,\n src,\n dst,\n sampling.B,\n sampling.C,\n ctx.paint\n );\n } else {\n ctx.canvas.drawImageRectOptions(\n image,\n src,\n dst,\n sampling?.filter ?? FilterMode.Linear,\n sampling?.mipmap ?? MipmapMode.None,\n ctx.paint\n );\n }\n }\n};\n\nexport const drawPoints = (ctx: DrawingContext, props: PointsProps) => {\n \"worklet\";\n const { points, mode } = props;\n ctx.canvas.drawPoints(PointMode[enumKey(mode)], points, ctx.paint);\n};\n\nexport const drawVertices = (ctx: DrawingContext, props: VerticesProps) => {\n \"worklet\";\n const { mode, textures, colors, indices, blendMode } = props;\n const vertexMode = mode ? VertexMode[enumKey(mode)] : VertexMode.Triangles;\n const vertices = ctx.Skia.MakeVertices(\n vertexMode,\n props.vertices,\n textures,\n colors ? colors.map((c) => processColor(ctx.Skia, c)) : undefined,\n indices\n );\n const defaultBlendMode = colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n\n ctx.canvas.drawVertices(vertices, blend, ctx.paint);\n};\n\nexport const drawDiffRect = (ctx: DrawingContext, props: DiffRectProps) => {\n \"worklet\";\n const { outer, inner } = props;\n ctx.canvas.drawDRRect(outer, inner, ctx.paint);\n};\n\nexport const drawTextPath = (ctx: DrawingContext, props: TextPathProps) => {\n \"worklet\";\n const path = processPath(ctx.Skia, props.path);\n const { font, initialOffset } = props;\n if (font) {\n let { text } = props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = ctx.Skia.ContourMeasureIter(path, false, 1);\n let cont = ctx.track(meas.next());\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = ctx.track(meas.next());\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(ctx.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n const derived = ctx.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n ctx.canvas.drawTextBlob(derived, 0, 0, ctx.paint);\n }\n};\n\nexport const drawText = (ctx: DrawingContext, props: TextProps) => {\n \"worklet\";\n const { text, x, y, font } = props;\n if (font != null) {\n ctx.canvas.drawText(text, x, y, ctx.paint, font);\n }\n};\n\nexport const drawPatch = (ctx: DrawingContext, props: PatchProps) => {\n \"worklet\";\n const { texture, blendMode, patch } = props;\n const defaultBlendMode = props.colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const mode = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n // Patch requires a path with the following constraints:\n // M tl\n // C c1 c2 br\n // C c1 c2 bl\n // C c1 c2 tl (the redundant point in the last command is removed)\n\n const points = [\n patch[0].pos,\n patch[0].c2,\n patch[1].c1,\n patch[1].pos,\n patch[1].c2,\n patch[2].c1,\n patch[2].pos,\n patch[2].c2,\n patch[3].c1,\n patch[3].pos,\n patch[3].c2,\n patch[0].c1,\n ];\n const colors = props.colors\n ? props.colors.map((c) => processColor(ctx.Skia, c))\n : undefined;\n ctx.canvas.drawPatch(points, colors, texture, mode, ctx.paint);\n};\n\nexport const drawPath = (ctx: DrawingContext, props: PathProps) => {\n \"worklet\";\n const {\n start: trimStart,\n end: trimEnd,\n fillType,\n stroke,\n ...pathProps\n } = props;\n const start = Math.fround(saturate(trimStart));\n const end = Math.fround(saturate(trimEnd));\n const hasStartOffset = start !== 0;\n const hasEndOffset = end !== 1;\n const hasStrokeOptions = stroke !== undefined;\n const hasFillType = !!fillType;\n\n let path = processPath(ctx.Skia, pathProps.path);\n\n // Trim runs first, so start/end address the path the caller drew. Stroking\n // first would replace it with its outline and leave the offsets walking that\n // outline's perimeter instead. The native recorder orders these the same way.\n if (hasStartOffset || hasEndOffset) {\n const trimmed = ctx.Skia.Path.Trim(path, start, end, false);\n if (trimmed) {\n path = trimmed;\n }\n }\n\n // Apply fill type using PathBuilder\n if (hasFillType) {\n const builder = ctx.Skia.PathBuilder.MakeFromPath(path);\n builder.setFillType(FillType[enumKey(fillType)]);\n path = ctx.track(builder.build());\n }\n\n // Apply stroke using static Path.Stroke\n if (hasStrokeOptions) {\n const stroked = ctx.Skia.Path.Stroke(path, stroke);\n if (stroked) {\n path = stroked;\n }\n }\n\n ctx.canvas.drawPath(path, ctx.paint);\n};\n\nexport const drawRect = (ctx: DrawingContext, props: RectProps) => {\n \"worklet\";\n const derived = processRect(ctx.Skia, props);\n ctx.canvas.drawRect(derived, ctx.paint);\n};\n\nexport const drawRRect = (ctx: DrawingContext, props: RoundedRectProps) => {\n \"worklet\";\n const derived = processRRect(ctx.Skia, props);\n ctx.canvas.drawRRect(derived, ctx.paint);\n};\n\nexport const drawTextBlob = (ctx: DrawingContext, props: TextBlobProps) => {\n \"worklet\";\n const { blob, x, y } = props;\n ctx.canvas.drawTextBlob(blob, x, y, ctx.paint);\n};\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport const drawGlyphs = (ctx: DrawingContext, props: GlyphsProps) => {\n \"worklet\";\n const derived = props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n const { glyphs, positions } = derived;\n const { x, y, font } = props;\n if (font) {\n ctx.canvas.drawGlyphs(glyphs, positions, x, y, font, ctx.paint);\n }\n};\n\nexport const drawImageSVG = (ctx: DrawingContext, props: ImageSVGProps) => {\n \"worklet\";\n const { canvas } = ctx;\n const { svg } = props;\n const { x, y, width, height } = props.rect\n ? props.rect\n : { x: props.x, y: props.y, width: props.width, height: props.height };\n if (svg === null) {\n return;\n }\n canvas.save();\n // An offset of 0 is a valid position, so it must not be read as \"unset\".\n if (x !== undefined && y !== undefined) {\n canvas.translate(x, y);\n }\n canvas.drawSvg(svg, width, height);\n canvas.restore();\n};\n\nexport const drawParagraph = (ctx: DrawingContext, props: ParagraphProps) => {\n \"worklet\";\n const { paragraph, x, y, width } = props;\n if (paragraph) {\n paragraph.layout(width);\n paragraph.paint(ctx.canvas, x, y);\n }\n};\n\nexport const drawPicture = (ctx: DrawingContext, props: PictureProps) => {\n \"worklet\";\n const { picture } = props;\n ctx.canvas.drawPicture(picture);\n};\n\nexport const drawAtlas = (ctx: DrawingContext, props: AtlasProps) => {\n \"worklet\";\n const { image, sprites, transforms, colors, colorBlendMode, sampling } =\n props;\n const blend = colorBlendMode ? BlendMode[enumKey(colorBlendMode)] : undefined;\n if (image) {\n ctx.canvas.drawAtlas(\n image,\n sprites,\n transforms,\n ctx.paint,\n blend,\n colors,\n sampling\n );\n }\n};\n\nexport const drawCircle = (ctx: DrawingContext, props: CircleProps) => {\n \"worklet\";\n const { c } = processCircle(props);\n const { r } = props;\n ctx.canvas.drawCircle(c.x, c.y, r, ctx.paint);\n};\n\nexport const drawSkottie = (ctx: DrawingContext, props: SkottieProps) => {\n \"worklet\";\n const { animation, frame } = props;\n if (animation) {\n props.animation.seekFrame(frame);\n props.animation.render(ctx.canvas);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,12 +15,26 @@ let MorphologyOperator = exports.MorphologyOperator = /*#__PURE__*/function (Mor
|
|
|
15
15
|
return MorphologyOperator;
|
|
16
16
|
}({});
|
|
17
17
|
const Black = Float32Array.of(0, 0, 0, 1);
|
|
18
|
+
|
|
19
|
+
// Turns the source graphic into a hard silhouette: alpha is multiplied by 255
|
|
20
|
+
// and clamped, so any pixel the shape covers at all becomes fully opaque, and
|
|
21
|
+
// the colour channels are dropped. 255 is the saturation point of an 8-bit
|
|
22
|
+
// alpha channel, so one unit of coverage is enough to reach 1.
|
|
23
|
+
const AlphaSaturate = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0];
|
|
18
24
|
const MakeInnerShadow = (Skia, shadowOnly, dx, dy, sigmaX, sigmaY, color, input) => {
|
|
19
25
|
"worklet";
|
|
20
26
|
|
|
21
27
|
const sourceGraphic = Skia.ImageFilter.MakeColorFilter(Skia.ColorFilter.MakeBlend(Black, _types2.BlendMode.Dst), null);
|
|
22
28
|
const sourceAlpha = Skia.ImageFilter.MakeColorFilter(Skia.ColorFilter.MakeBlend(Black, _types2.BlendMode.SrcIn), null);
|
|
23
|
-
|
|
29
|
+
// The shadow is generated outside the shape and then clipped back into it, so
|
|
30
|
+
// "outside" has to be the complement of the shape's silhouette. Taking SrcOut
|
|
31
|
+
// against the source graphic itself makes it the complement of the source's
|
|
32
|
+
// *alpha*: inside a translucent shape 1 - alpha is non-zero, so the shadow is
|
|
33
|
+
// generated across the whole interior and tints it, no matter how small the
|
|
34
|
+
// blur and the offset are (issue #2990). Saturating alpha first keeps the
|
|
35
|
+
// shadow tied to the shape's outline instead of to its opacity.
|
|
36
|
+
const coverage = Skia.ImageFilter.MakeColorFilter(Skia.ColorFilter.MakeMatrix(AlphaSaturate), null);
|
|
37
|
+
const f1 = Skia.ImageFilter.MakeColorFilter(Skia.ColorFilter.MakeBlend(color, _types2.BlendMode.SrcOut), coverage);
|
|
24
38
|
const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);
|
|
25
39
|
const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, _types2.TileMode.Decal, f2);
|
|
26
40
|
const f4 = Skia.ImageFilter.MakeBlend(_types2.BlendMode.SrcIn, sourceAlpha, f3);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_nodes","require","_types","_types2","_utils","_Core","MorphologyOperator","exports","Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","declareBlurImageFilter","ctx","props","mode","blur","sigma","processRadius","imgf","x","y","enumKey","imageFilters","push","declareMorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","declareOffsetImageFilter","declareDropShadowImageFilter","cl","inner","processColor","factory","bind","MakeDropShadowOnly","MakeDropShadow","declareBlendImageFilter","blend","splice","length","composer","composeDeclarations","declareDisplacementMapImageFilter","channelX","channelY","scale","shader","shaders","pop","Error","map","MakeShader","MakeDisplacementMap","ColorChannel","declareRuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader","declareImageFilter","filter","composeImageFilters","outer","setBlurMaskFilter","style","respectCTM","mf","MaskFilter","BlurStyle","paint","setMaskFilter","isPushImageFilter","command","type","CommandType","PushImageFilter","isImageFilter","imageFilterType","pushImageFilter","NodeType","BlurImageFilter","MorphologyImageFilter","BlendImageFilter","DisplacementMapImageFilter","DropShadowImageFilter","OffsetImageFilter","RuntimeShaderImageFilter"],"sources":["ImageFilters.ts"],"sourcesContent":["import { enumKey, processColor, processRadius } from \"../../../dom/nodes\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n BlurMaskFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n ImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../../dom/types\";\nimport { NodeType } from \"../../../dom/types\";\nimport type { SkColor, SkImageFilter, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport { composeDeclarations } from \"../../utils\";\nimport type { Command } from \"../Core\";\nimport { CommandType } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n \"worklet\";\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nconst declareBlurImageFilter = (\n ctx: DrawingContext,\n props: BlurImageFilterProps\n) => {\n \"worklet\";\n const { mode, blur } = props;\n const sigma = processRadius(ctx.Skia, blur);\n const imgf = ctx.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareMorphologyImageFilter = (\n ctx: DrawingContext,\n props: MorphologyImageFilterProps\n) => {\n \"worklet\";\n const { operator } = props;\n const r = processRadius(ctx.Skia, props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = ctx.Skia.ImageFilter.MakeErode(r.x, r.y, null);\n } else {\n imgf = ctx.Skia.ImageFilter.MakeDilate(r.x, r.y, null);\n }\n ctx.imageFilters.push(imgf);\n};\n\nconst declareOffsetImageFilter = (\n ctx: DrawingContext,\n props: OffsetImageFilterProps\n) => {\n \"worklet\";\n const { x, y } = props;\n const imgf = ctx.Skia.ImageFilter.MakeOffset(x, y, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareDropShadowImageFilter = (\n ctx: DrawingContext,\n props: DropShadowImageFilterProps\n) => {\n \"worklet\";\n const { dx, dy, blur, shadowOnly, color: cl, inner } = props;\n const color = processColor(ctx.Skia, cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, ctx.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? ctx.Skia.ImageFilter.MakeDropShadowOnly.bind(ctx.Skia.ImageFilter)\n : ctx.Skia.ImageFilter.MakeDropShadow.bind(ctx.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareBlendImageFilter = (\n ctx: DrawingContext,\n props: BlendImageFilterProps\n) => {\n \"worklet\";\n const blend = BlendMode[enumKey(props.mode)];\n // Blend ImageFilters\n const imageFilters = ctx.imageFilters.splice(0, ctx.imageFilters.length);\n const composer = ctx.Skia.ImageFilter.MakeBlend.bind(\n ctx.Skia.ImageFilter,\n blend\n );\n ctx.imageFilters.push(composeDeclarations(imageFilters, composer));\n};\n\nconst declareDisplacementMapImageFilter = (\n ctx: DrawingContext,\n props: DisplacementMapImageFilterProps\n) => {\n \"worklet\";\n const { channelX, channelY, scale } = props;\n const shader = ctx.shaders.pop();\n if (!shader) {\n throw new Error(\"DisplacementMap expects a shader as child\");\n }\n const map = ctx.Skia.ImageFilter.MakeShader(shader);\n const imgf = ctx.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n map,\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareRuntimeShaderImageFilter = (\n ctx: DrawingContext,\n props: RuntimeShaderImageFilterProps\n) => {\n \"worklet\";\n const { source, uniforms } = props;\n const rtb = ctx.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = ctx.Skia.ImageFilter.MakeRuntimeShader(rtb, null, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareImageFilter = (ctx: DrawingContext, props: ImageFilterProps) => {\n \"worklet\";\n const { filter } = props;\n ctx.imageFilters.push(filter);\n};\n\nexport const composeImageFilters = (ctx: DrawingContext) => {\n \"worklet\";\n if (ctx.imageFilters.length > 1) {\n const outer = ctx.imageFilters.pop()!;\n const inner = ctx.imageFilters.pop()!;\n ctx.imageFilters.push(ctx.Skia.ImageFilter.MakeCompose(outer, inner));\n }\n};\n\nexport const setBlurMaskFilter = (\n ctx: DrawingContext,\n props: BlurMaskFilterProps\n) => {\n \"worklet\";\n const { blur, style, respectCTM } = props;\n const mf = ctx.Skia.MaskFilter.MakeBlur(\n BlurStyle[enumKey(style)],\n blur,\n respectCTM\n );\n ctx.paint.setMaskFilter(mf);\n};\n\nexport const isPushImageFilter = (\n command: Command\n): command is Command<CommandType.PushImageFilter> => {\n \"worklet\";\n return command.type === CommandType.PushImageFilter;\n};\n\ntype Props = {\n [NodeType.ImageFilter]: ImageFilterProps;\n [NodeType.OffsetImageFilter]: OffsetImageFilterProps;\n [NodeType.DisplacementMapImageFilter]: DisplacementMapImageFilterProps;\n [NodeType.BlurImageFilter]: BlurImageFilterProps;\n [NodeType.DropShadowImageFilter]: DropShadowImageFilterProps;\n [NodeType.MorphologyImageFilter]: MorphologyImageFilterProps;\n [NodeType.BlendImageFilter]: BlendImageFilterProps;\n [NodeType.RuntimeShaderImageFilter]: RuntimeShaderImageFilterProps;\n};\n\ninterface PushImageFilter<\n T extends keyof Props,\n> extends Command<CommandType.PushImageFilter> {\n imageFilterType: T;\n props: Props[T];\n}\n\nconst isImageFilter = <T extends keyof Props>(\n command: Command<CommandType.PushImageFilter>,\n type: T\n): command is PushImageFilter<T> => {\n \"worklet\";\n return command.imageFilterType === type;\n};\n\nexport const pushImageFilter = (\n ctx: DrawingContext,\n command: Command<CommandType.PushImageFilter>\n) => {\n \"worklet\";\n if (isImageFilter(command, NodeType.ImageFilter)) {\n declareImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlurImageFilter)) {\n declareBlurImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.MorphologyImageFilter)) {\n declareMorphologyImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlendImageFilter)) {\n declareBlendImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DisplacementMapImageFilter)) {\n declareDisplacementMapImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DropShadowImageFilter)) {\n declareDropShadowImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.OffsetImageFilter)) {\n declareOffsetImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.RuntimeShaderImageFilter)) {\n declareRuntimeShaderImageFilter(ctx, command.props);\n } else {\n throw new Error(\"Invalid image filter type: \" + command.imageFilterType);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_nodes","require","_types","_types2","_utils","_Core","MorphologyOperator","exports","Black","Float32Array","of","AlphaSaturate","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","coverage","MakeMatrix","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","declareBlurImageFilter","ctx","props","mode","blur","sigma","processRadius","imgf","x","y","enumKey","imageFilters","push","declareMorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","declareOffsetImageFilter","declareDropShadowImageFilter","cl","inner","processColor","factory","bind","MakeDropShadowOnly","MakeDropShadow","declareBlendImageFilter","blend","splice","length","composer","composeDeclarations","declareDisplacementMapImageFilter","channelX","channelY","scale","shader","shaders","pop","Error","map","MakeShader","MakeDisplacementMap","ColorChannel","declareRuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader","declareImageFilter","filter","composeImageFilters","outer","setBlurMaskFilter","style","respectCTM","mf","MaskFilter","BlurStyle","paint","setMaskFilter","isPushImageFilter","command","type","CommandType","PushImageFilter","isImageFilter","imageFilterType","pushImageFilter","NodeType","BlurImageFilter","MorphologyImageFilter","BlendImageFilter","DisplacementMapImageFilter","DropShadowImageFilter","OffsetImageFilter","RuntimeShaderImageFilter"],"sources":["ImageFilters.ts"],"sourcesContent":["import { enumKey, processColor, processRadius } from \"../../../dom/nodes\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n BlurMaskFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n ImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../../dom/types\";\nimport { NodeType } from \"../../../dom/types\";\nimport type { SkColor, SkImageFilter, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport { composeDeclarations } from \"../../utils\";\nimport type { Command } from \"../Core\";\nimport { CommandType } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\n// Turns the source graphic into a hard silhouette: alpha is multiplied by 255\n// and clamped, so any pixel the shape covers at all becomes fully opaque, and\n// the colour channels are dropped. 255 is the saturation point of an 8-bit\n// alpha channel, so one unit of coverage is enough to reach 1.\nconst AlphaSaturate = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0,\n];\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n \"worklet\";\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n // The shadow is generated outside the shape and then clipped back into it, so\n // \"outside\" has to be the complement of the shape's silhouette. Taking SrcOut\n // against the source graphic itself makes it the complement of the source's\n // *alpha*: inside a translucent shape 1 - alpha is non-zero, so the shadow is\n // generated across the whole interior and tints it, no matter how small the\n // blur and the offset are (issue #2990). Saturating alpha first keeps the\n // shadow tied to the shape's outline instead of to its opacity.\n const coverage = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeMatrix(AlphaSaturate),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n coverage\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nconst declareBlurImageFilter = (\n ctx: DrawingContext,\n props: BlurImageFilterProps\n) => {\n \"worklet\";\n const { mode, blur } = props;\n const sigma = processRadius(ctx.Skia, blur);\n const imgf = ctx.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareMorphologyImageFilter = (\n ctx: DrawingContext,\n props: MorphologyImageFilterProps\n) => {\n \"worklet\";\n const { operator } = props;\n const r = processRadius(ctx.Skia, props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = ctx.Skia.ImageFilter.MakeErode(r.x, r.y, null);\n } else {\n imgf = ctx.Skia.ImageFilter.MakeDilate(r.x, r.y, null);\n }\n ctx.imageFilters.push(imgf);\n};\n\nconst declareOffsetImageFilter = (\n ctx: DrawingContext,\n props: OffsetImageFilterProps\n) => {\n \"worklet\";\n const { x, y } = props;\n const imgf = ctx.Skia.ImageFilter.MakeOffset(x, y, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareDropShadowImageFilter = (\n ctx: DrawingContext,\n props: DropShadowImageFilterProps\n) => {\n \"worklet\";\n const { dx, dy, blur, shadowOnly, color: cl, inner } = props;\n const color = processColor(ctx.Skia, cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, ctx.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? ctx.Skia.ImageFilter.MakeDropShadowOnly.bind(ctx.Skia.ImageFilter)\n : ctx.Skia.ImageFilter.MakeDropShadow.bind(ctx.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareBlendImageFilter = (\n ctx: DrawingContext,\n props: BlendImageFilterProps\n) => {\n \"worklet\";\n const blend = BlendMode[enumKey(props.mode)];\n // Blend ImageFilters\n const imageFilters = ctx.imageFilters.splice(0, ctx.imageFilters.length);\n const composer = ctx.Skia.ImageFilter.MakeBlend.bind(\n ctx.Skia.ImageFilter,\n blend\n );\n ctx.imageFilters.push(composeDeclarations(imageFilters, composer));\n};\n\nconst declareDisplacementMapImageFilter = (\n ctx: DrawingContext,\n props: DisplacementMapImageFilterProps\n) => {\n \"worklet\";\n const { channelX, channelY, scale } = props;\n const shader = ctx.shaders.pop();\n if (!shader) {\n throw new Error(\"DisplacementMap expects a shader as child\");\n }\n const map = ctx.Skia.ImageFilter.MakeShader(shader);\n const imgf = ctx.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n map,\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareRuntimeShaderImageFilter = (\n ctx: DrawingContext,\n props: RuntimeShaderImageFilterProps\n) => {\n \"worklet\";\n const { source, uniforms } = props;\n const rtb = ctx.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = ctx.Skia.ImageFilter.MakeRuntimeShader(rtb, null, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareImageFilter = (ctx: DrawingContext, props: ImageFilterProps) => {\n \"worklet\";\n const { filter } = props;\n ctx.imageFilters.push(filter);\n};\n\nexport const composeImageFilters = (ctx: DrawingContext) => {\n \"worklet\";\n if (ctx.imageFilters.length > 1) {\n const outer = ctx.imageFilters.pop()!;\n const inner = ctx.imageFilters.pop()!;\n ctx.imageFilters.push(ctx.Skia.ImageFilter.MakeCompose(outer, inner));\n }\n};\n\nexport const setBlurMaskFilter = (\n ctx: DrawingContext,\n props: BlurMaskFilterProps\n) => {\n \"worklet\";\n const { blur, style, respectCTM } = props;\n const mf = ctx.Skia.MaskFilter.MakeBlur(\n BlurStyle[enumKey(style)],\n blur,\n respectCTM\n );\n ctx.paint.setMaskFilter(mf);\n};\n\nexport const isPushImageFilter = (\n command: Command\n): command is Command<CommandType.PushImageFilter> => {\n \"worklet\";\n return command.type === CommandType.PushImageFilter;\n};\n\ntype Props = {\n [NodeType.ImageFilter]: ImageFilterProps;\n [NodeType.OffsetImageFilter]: OffsetImageFilterProps;\n [NodeType.DisplacementMapImageFilter]: DisplacementMapImageFilterProps;\n [NodeType.BlurImageFilter]: BlurImageFilterProps;\n [NodeType.DropShadowImageFilter]: DropShadowImageFilterProps;\n [NodeType.MorphologyImageFilter]: MorphologyImageFilterProps;\n [NodeType.BlendImageFilter]: BlendImageFilterProps;\n [NodeType.RuntimeShaderImageFilter]: RuntimeShaderImageFilterProps;\n};\n\ninterface PushImageFilter<\n T extends keyof Props,\n> extends Command<CommandType.PushImageFilter> {\n imageFilterType: T;\n props: Props[T];\n}\n\nconst isImageFilter = <T extends keyof Props>(\n command: Command<CommandType.PushImageFilter>,\n type: T\n): command is PushImageFilter<T> => {\n \"worklet\";\n return command.imageFilterType === type;\n};\n\nexport const pushImageFilter = (\n ctx: DrawingContext,\n command: Command<CommandType.PushImageFilter>\n) => {\n \"worklet\";\n if (isImageFilter(command, NodeType.ImageFilter)) {\n declareImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlurImageFilter)) {\n declareBlurImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.MorphologyImageFilter)) {\n declareMorphologyImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlendImageFilter)) {\n declareBlendImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DisplacementMapImageFilter)) {\n declareDisplacementMapImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DropShadowImageFilter)) {\n declareDropShadowImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.OffsetImageFilter)) {\n declareOffsetImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.RuntimeShaderImageFilter)) {\n declareRuntimeShaderImageFilter(ctx, command.props);\n } else {\n throw new Error(\"Invalid image filter type: \" + command.imageFilterType);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|