@shopify/react-native-skia 2.11.0 → 2.11.1
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/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 +2 -8
- package/cpp/api/JsiSkMatrix.h +4 -2
- 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 +5 -2
- package/cpp/rnskia/RNSkPlatformContext.h +0 -3
- package/lib/commonjs/renderer/components/Mask.js +3 -9
- package/lib/commonjs/renderer/components/Mask.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/JsiSkia.js +0 -3
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js +10 -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 +10 -8
- 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/module/renderer/components/Mask.js +3 -9
- package/lib/module/renderer/components/Mask.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/JsiSkia.js +0 -3
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/module/sksg/Recorder/DrawingContext.js +10 -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 +10 -8
- 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/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/JsiSkia.d.ts +0 -1
- package/lib/typescript/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/typescript/src/skia/types/Skia.d.ts +1 -6
- package/lib/typescript/src/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/package.json +1 -1
- package/src/renderer/components/Mask.tsx +10 -3
- package/src/skia/types/Matrix4.ts +6 -2
- package/src/skia/types/Skia.ts +1 -7
- package/src/skia/web/JsiSkia.ts +0 -4
- package/src/sksg/Recorder/DrawingContext.ts +10 -0
- package/src/sksg/Recorder/Player.ts +1 -1
- package/src/sksg/Recorder/Visitor.ts +9 -6
- package/src/sksg/Recorder/commands/Drawing.ts +10 -8
- package/src/sksg/Recorder/commands/ImageFilters.ts +20 -1
- package/src/sksg/Recorder/commands/Shaders.ts +1 -1
- package/cpp/api/JsiSkiaContext.h +0 -94
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_JsiSkPoint","require","_JsiSkPaint","_JsiSkRect","_JsiSkColor","_JsiSkSurfaceFactory","_JsiSkRRect","_JsiSkRSXform","_JsiSkContourMeasureIter","_JsiSkPictureRecorder","_JsiSkPictureFactory","_JsiSkPathFactory","_JsiSkPathBuilderFactory","_JsiSkMatrix","_JsiSkColorFilterFactory","_JsiSkTypefaceFactory","_JsiSkMaskFilterFactory","_JsiSkRuntimeEffectFactory","_JsiSkImageFilterFactory","_JsiSkShaderFactory","_JsiSkPathEffectFactory","_JsiSkDataFactory","_JsiSkImageFactory","_JsiSkSVGFactory","_JsiSkTextBlobFactory","_JsiSkFont","_JsiSkVerticesFactory","_JsiSkPath","_JsiSkTypeface","_JsiSkTypefaceFontProviderFactory","_JsiSkFontMgrFactory","_JsiSkAnimatedImageFactory","_JsiSkParagraphBuilderFactory","_JsiSkNativeBufferFactory","_JsiVideo","_Host","_JsiSkottieFactory","JsiSkApi","CanvasKit","Point","x","y","JsiSkPoint","Float32Array","of","RuntimeShaderBuilder","_","throwNotImplementedOnRNWeb","RRectXY","rect","rx","ry","JsiSkRRect","RSXform","scos","ssin","tx","ty","JsiSkRSXform","RSXformFromRadians","scale","r","px","py","s","Math","sin","c","cos","Color","ContourMeasureIter","path","forceClosed","resScale","p","JsiSkPath","pathFromValue","iter","JsiSkContourMeasureIter","delete","Paint","paint","JsiSkPaint","setAntiAlias","PictureRecorder","JsiSkPictureRecorder","Picture","JsiSkPictureFactory","Path","JsiSkPathFactory","PathBuilder","JsiSkPathBuilderFactory","Matrix","matrix","JsiSkMatrix","identity","ColorFilter","JsiSkColorFilterFactory","Font","typeface","size","JsiSkFont","undefined","JsiSkTypeface","fromValue","Typeface","JsiSkTypefaceFactory","MaskFilter","JsiSkMaskFilterFactory","RuntimeEffect","JsiSkRuntimeEffectFactory","ImageFilter","JsiSkImageFilterFactory","Shader","JsiSkShaderFactory","PathEffect","JsiSkPathEffectFactory","MakeVertices","bind","Data","JsiSkDataFactory","Image","JsiSkImageFactory","AnimatedImage","JsiSkAnimatedImageFactory","SVG","JsiSkSVGFactory","TextBlob","JsiSkTextBlobFactory","XYWHRect","width","height","JsiSkRect","Surface","JsiSkSurfaceFactory","TypefaceFontProvider","JsiSkTypefaceFontProviderFactory","FontMgr","JsiSkFontMgrFactory","ParagraphBuilder","JsiSkParagraphBuilderFactory","NativeBuffer","JsiSkNativeBufferFactory","Skottie","JsiSkottieFactory","Video","createVideo","Context","_surface","_width","_height","Recorder","getNativeDevice","exports"],"sources":["JsiSkia.ts"],"sourcesContent":["import type { CanvasKit } from \"canvaskit-wasm\";\n\nimport type {\n JsiRecorder,\n SkContourMeasureIter,\n Skia,\n SkiaContext,\n SkPath,\n SkRect,\n SkRuntimeEffect,\n SkRuntimeShaderBuilder,\n SkTypeface,\n} from \"../types\";\n\nimport { JsiSkPoint } from \"./JsiSkPoint\";\nimport { JsiSkPaint } from \"./JsiSkPaint\";\nimport { JsiSkRect } from \"./JsiSkRect\";\nimport { Color } from \"./JsiSkColor\";\nimport { JsiSkSurfaceFactory } from \"./JsiSkSurfaceFactory\";\nimport { JsiSkRRect } from \"./JsiSkRRect\";\nimport { JsiSkRSXform } from \"./JsiSkRSXform\";\nimport { JsiSkContourMeasureIter } from \"./JsiSkContourMeasureIter\";\nimport { JsiSkPictureRecorder } from \"./JsiSkPictureRecorder\";\nimport { JsiSkPictureFactory } from \"./JsiSkPictureFactory\";\nimport { JsiSkPathFactory } from \"./JsiSkPathFactory\";\nimport { JsiSkPathBuilderFactory } from \"./JsiSkPathBuilderFactory\";\nimport { JsiSkMatrix } from \"./JsiSkMatrix\";\nimport { JsiSkColorFilterFactory } from \"./JsiSkColorFilterFactory\";\nimport { JsiSkTypefaceFactory } from \"./JsiSkTypefaceFactory\";\nimport { JsiSkMaskFilterFactory } from \"./JsiSkMaskFilterFactory\";\nimport { JsiSkRuntimeEffectFactory } from \"./JsiSkRuntimeEffectFactory\";\nimport { JsiSkImageFilterFactory } from \"./JsiSkImageFilterFactory\";\nimport { JsiSkShaderFactory } from \"./JsiSkShaderFactory\";\nimport { JsiSkPathEffectFactory } from \"./JsiSkPathEffectFactory\";\nimport { JsiSkDataFactory } from \"./JsiSkDataFactory\";\nimport { JsiSkImageFactory } from \"./JsiSkImageFactory\";\nimport { JsiSkSVGFactory } from \"./JsiSkSVGFactory\";\nimport { JsiSkTextBlobFactory } from \"./JsiSkTextBlobFactory\";\nimport { JsiSkFont } from \"./JsiSkFont\";\nimport { MakeVertices } from \"./JsiSkVerticesFactory\";\nimport { JsiSkPath } from \"./JsiSkPath\";\nimport { JsiSkTypeface } from \"./JsiSkTypeface\";\nimport { JsiSkTypefaceFontProviderFactory } from \"./JsiSkTypefaceFontProviderFactory\";\nimport { JsiSkFontMgrFactory } from \"./JsiSkFontMgrFactory\";\nimport { JsiSkAnimatedImageFactory } from \"./JsiSkAnimatedImageFactory\";\nimport { JsiSkParagraphBuilderFactory } from \"./JsiSkParagraphBuilderFactory\";\nimport { JsiSkNativeBufferFactory } from \"./JsiSkNativeBufferFactory\";\nimport { createVideo } from \"./JsiVideo\";\nimport { throwNotImplementedOnRNWeb } from \"./Host\";\nimport { JsiSkottieFactory } from \"./JsiSkottieFactory\";\n\nexport const JsiSkApi = (CanvasKit: CanvasKit): Skia => ({\n Point: (x: number, y: number) =>\n new JsiSkPoint(CanvasKit, Float32Array.of(x, y)),\n RuntimeShaderBuilder: (_: SkRuntimeEffect) => {\n return throwNotImplementedOnRNWeb<SkRuntimeShaderBuilder>();\n },\n RRectXY: (rect: SkRect, rx: number, ry: number) =>\n new JsiSkRRect(CanvasKit, rect, rx, ry),\n RSXform: (scos: number, ssin: number, tx: number, ty: number) =>\n new JsiSkRSXform(CanvasKit, Float32Array.of(scos, ssin, tx, ty)),\n RSXformFromRadians: (\n scale: number,\n r: number,\n tx: number,\n ty: number,\n px: number,\n py: number\n ) => {\n const s = Math.sin(r) * scale;\n const c = Math.cos(r) * scale;\n return new JsiSkRSXform(\n CanvasKit,\n Float32Array.of(c, s, tx - c * px + s * py, ty - s * px - c * py)\n );\n },\n Color,\n ContourMeasureIter: (\n path: SkPath,\n forceClosed: boolean,\n resScale: number\n ): SkContourMeasureIter =>\n (() => {\n const p = JsiSkPath.pathFromValue(path);\n const iter = new JsiSkContourMeasureIter(\n CanvasKit,\n new CanvasKit.ContourMeasureIter(p, forceClosed, resScale)\n );\n p.delete();\n return iter;\n })(),\n Paint: () => {\n const paint = new JsiSkPaint(CanvasKit, new CanvasKit.Paint());\n paint.setAntiAlias(true);\n return paint;\n },\n PictureRecorder: () =>\n new JsiSkPictureRecorder(CanvasKit, new CanvasKit.PictureRecorder()),\n Picture: new JsiSkPictureFactory(CanvasKit),\n Path: new JsiSkPathFactory(CanvasKit),\n PathBuilder: new JsiSkPathBuilderFactory(CanvasKit),\n Matrix: (matrix?: readonly number[]) =>\n new JsiSkMatrix(\n CanvasKit,\n matrix\n ? Float32Array.of(...matrix)\n : Float32Array.of(...CanvasKit.Matrix.identity())\n ),\n ColorFilter: new JsiSkColorFilterFactory(CanvasKit),\n Font: (typeface?: SkTypeface, size?: number) =>\n new JsiSkFont(\n CanvasKit,\n new CanvasKit.Font(\n typeface === undefined ? null : JsiSkTypeface.fromValue(typeface),\n size\n )\n ),\n Typeface: new JsiSkTypefaceFactory(CanvasKit),\n MaskFilter: new JsiSkMaskFilterFactory(CanvasKit),\n RuntimeEffect: new JsiSkRuntimeEffectFactory(CanvasKit),\n ImageFilter: new JsiSkImageFilterFactory(CanvasKit),\n Shader: new JsiSkShaderFactory(CanvasKit),\n PathEffect: new JsiSkPathEffectFactory(CanvasKit),\n MakeVertices: MakeVertices.bind(null, CanvasKit),\n Data: new JsiSkDataFactory(CanvasKit),\n Image: new JsiSkImageFactory(CanvasKit),\n AnimatedImage: new JsiSkAnimatedImageFactory(CanvasKit),\n SVG: new JsiSkSVGFactory(CanvasKit),\n TextBlob: new JsiSkTextBlobFactory(CanvasKit),\n XYWHRect: (x: number, y: number, width: number, height: number) => {\n return new JsiSkRect(CanvasKit, CanvasKit.XYWHRect(x, y, width, height));\n },\n Surface: new JsiSkSurfaceFactory(CanvasKit),\n TypefaceFontProvider: new JsiSkTypefaceFontProviderFactory(CanvasKit),\n FontMgr: new JsiSkFontMgrFactory(CanvasKit),\n ParagraphBuilder: new JsiSkParagraphBuilderFactory(CanvasKit),\n NativeBuffer: new JsiSkNativeBufferFactory(CanvasKit),\n Skottie: new JsiSkottieFactory(CanvasKit),\n Video: createVideo.bind(null, CanvasKit),\n Context: (_surface: bigint, _width: number, _height: number) => {\n return throwNotImplementedOnRNWeb<SkiaContext>();\n },\n Recorder: () => {\n return throwNotImplementedOnRNWeb<JsiRecorder>();\n },\n getNativeDevice: () => {\n return throwNotImplementedOnRNWeb<bigint>();\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_JsiSkPoint","require","_JsiSkPaint","_JsiSkRect","_JsiSkColor","_JsiSkSurfaceFactory","_JsiSkRRect","_JsiSkRSXform","_JsiSkContourMeasureIter","_JsiSkPictureRecorder","_JsiSkPictureFactory","_JsiSkPathFactory","_JsiSkPathBuilderFactory","_JsiSkMatrix","_JsiSkColorFilterFactory","_JsiSkTypefaceFactory","_JsiSkMaskFilterFactory","_JsiSkRuntimeEffectFactory","_JsiSkImageFilterFactory","_JsiSkShaderFactory","_JsiSkPathEffectFactory","_JsiSkDataFactory","_JsiSkImageFactory","_JsiSkSVGFactory","_JsiSkTextBlobFactory","_JsiSkFont","_JsiSkVerticesFactory","_JsiSkPath","_JsiSkTypeface","_JsiSkTypefaceFontProviderFactory","_JsiSkFontMgrFactory","_JsiSkAnimatedImageFactory","_JsiSkParagraphBuilderFactory","_JsiSkNativeBufferFactory","_JsiVideo","_Host","_JsiSkottieFactory","JsiSkApi","CanvasKit","Point","x","y","JsiSkPoint","Float32Array","of","RuntimeShaderBuilder","_","throwNotImplementedOnRNWeb","RRectXY","rect","rx","ry","JsiSkRRect","RSXform","scos","ssin","tx","ty","JsiSkRSXform","RSXformFromRadians","scale","r","px","py","s","Math","sin","c","cos","Color","ContourMeasureIter","path","forceClosed","resScale","p","JsiSkPath","pathFromValue","iter","JsiSkContourMeasureIter","delete","Paint","paint","JsiSkPaint","setAntiAlias","PictureRecorder","JsiSkPictureRecorder","Picture","JsiSkPictureFactory","Path","JsiSkPathFactory","PathBuilder","JsiSkPathBuilderFactory","Matrix","matrix","JsiSkMatrix","identity","ColorFilter","JsiSkColorFilterFactory","Font","typeface","size","JsiSkFont","undefined","JsiSkTypeface","fromValue","Typeface","JsiSkTypefaceFactory","MaskFilter","JsiSkMaskFilterFactory","RuntimeEffect","JsiSkRuntimeEffectFactory","ImageFilter","JsiSkImageFilterFactory","Shader","JsiSkShaderFactory","PathEffect","JsiSkPathEffectFactory","MakeVertices","bind","Data","JsiSkDataFactory","Image","JsiSkImageFactory","AnimatedImage","JsiSkAnimatedImageFactory","SVG","JsiSkSVGFactory","TextBlob","JsiSkTextBlobFactory","XYWHRect","width","height","JsiSkRect","Surface","JsiSkSurfaceFactory","TypefaceFontProvider","JsiSkTypefaceFontProviderFactory","FontMgr","JsiSkFontMgrFactory","ParagraphBuilder","JsiSkParagraphBuilderFactory","NativeBuffer","JsiSkNativeBufferFactory","Skottie","JsiSkottieFactory","Video","createVideo","Recorder","getNativeDevice","exports"],"sources":["JsiSkia.ts"],"sourcesContent":["import type { CanvasKit } from \"canvaskit-wasm\";\n\nimport type {\n JsiRecorder,\n SkContourMeasureIter,\n Skia,\n SkPath,\n SkRect,\n SkRuntimeEffect,\n SkRuntimeShaderBuilder,\n SkTypeface,\n} from \"../types\";\n\nimport { JsiSkPoint } from \"./JsiSkPoint\";\nimport { JsiSkPaint } from \"./JsiSkPaint\";\nimport { JsiSkRect } from \"./JsiSkRect\";\nimport { Color } from \"./JsiSkColor\";\nimport { JsiSkSurfaceFactory } from \"./JsiSkSurfaceFactory\";\nimport { JsiSkRRect } from \"./JsiSkRRect\";\nimport { JsiSkRSXform } from \"./JsiSkRSXform\";\nimport { JsiSkContourMeasureIter } from \"./JsiSkContourMeasureIter\";\nimport { JsiSkPictureRecorder } from \"./JsiSkPictureRecorder\";\nimport { JsiSkPictureFactory } from \"./JsiSkPictureFactory\";\nimport { JsiSkPathFactory } from \"./JsiSkPathFactory\";\nimport { JsiSkPathBuilderFactory } from \"./JsiSkPathBuilderFactory\";\nimport { JsiSkMatrix } from \"./JsiSkMatrix\";\nimport { JsiSkColorFilterFactory } from \"./JsiSkColorFilterFactory\";\nimport { JsiSkTypefaceFactory } from \"./JsiSkTypefaceFactory\";\nimport { JsiSkMaskFilterFactory } from \"./JsiSkMaskFilterFactory\";\nimport { JsiSkRuntimeEffectFactory } from \"./JsiSkRuntimeEffectFactory\";\nimport { JsiSkImageFilterFactory } from \"./JsiSkImageFilterFactory\";\nimport { JsiSkShaderFactory } from \"./JsiSkShaderFactory\";\nimport { JsiSkPathEffectFactory } from \"./JsiSkPathEffectFactory\";\nimport { JsiSkDataFactory } from \"./JsiSkDataFactory\";\nimport { JsiSkImageFactory } from \"./JsiSkImageFactory\";\nimport { JsiSkSVGFactory } from \"./JsiSkSVGFactory\";\nimport { JsiSkTextBlobFactory } from \"./JsiSkTextBlobFactory\";\nimport { JsiSkFont } from \"./JsiSkFont\";\nimport { MakeVertices } from \"./JsiSkVerticesFactory\";\nimport { JsiSkPath } from \"./JsiSkPath\";\nimport { JsiSkTypeface } from \"./JsiSkTypeface\";\nimport { JsiSkTypefaceFontProviderFactory } from \"./JsiSkTypefaceFontProviderFactory\";\nimport { JsiSkFontMgrFactory } from \"./JsiSkFontMgrFactory\";\nimport { JsiSkAnimatedImageFactory } from \"./JsiSkAnimatedImageFactory\";\nimport { JsiSkParagraphBuilderFactory } from \"./JsiSkParagraphBuilderFactory\";\nimport { JsiSkNativeBufferFactory } from \"./JsiSkNativeBufferFactory\";\nimport { createVideo } from \"./JsiVideo\";\nimport { throwNotImplementedOnRNWeb } from \"./Host\";\nimport { JsiSkottieFactory } from \"./JsiSkottieFactory\";\n\nexport const JsiSkApi = (CanvasKit: CanvasKit): Skia => ({\n Point: (x: number, y: number) =>\n new JsiSkPoint(CanvasKit, Float32Array.of(x, y)),\n RuntimeShaderBuilder: (_: SkRuntimeEffect) => {\n return throwNotImplementedOnRNWeb<SkRuntimeShaderBuilder>();\n },\n RRectXY: (rect: SkRect, rx: number, ry: number) =>\n new JsiSkRRect(CanvasKit, rect, rx, ry),\n RSXform: (scos: number, ssin: number, tx: number, ty: number) =>\n new JsiSkRSXform(CanvasKit, Float32Array.of(scos, ssin, tx, ty)),\n RSXformFromRadians: (\n scale: number,\n r: number,\n tx: number,\n ty: number,\n px: number,\n py: number\n ) => {\n const s = Math.sin(r) * scale;\n const c = Math.cos(r) * scale;\n return new JsiSkRSXform(\n CanvasKit,\n Float32Array.of(c, s, tx - c * px + s * py, ty - s * px - c * py)\n );\n },\n Color,\n ContourMeasureIter: (\n path: SkPath,\n forceClosed: boolean,\n resScale: number\n ): SkContourMeasureIter =>\n (() => {\n const p = JsiSkPath.pathFromValue(path);\n const iter = new JsiSkContourMeasureIter(\n CanvasKit,\n new CanvasKit.ContourMeasureIter(p, forceClosed, resScale)\n );\n p.delete();\n return iter;\n })(),\n Paint: () => {\n const paint = new JsiSkPaint(CanvasKit, new CanvasKit.Paint());\n paint.setAntiAlias(true);\n return paint;\n },\n PictureRecorder: () =>\n new JsiSkPictureRecorder(CanvasKit, new CanvasKit.PictureRecorder()),\n Picture: new JsiSkPictureFactory(CanvasKit),\n Path: new JsiSkPathFactory(CanvasKit),\n PathBuilder: new JsiSkPathBuilderFactory(CanvasKit),\n Matrix: (matrix?: readonly number[]) =>\n new JsiSkMatrix(\n CanvasKit,\n matrix\n ? Float32Array.of(...matrix)\n : Float32Array.of(...CanvasKit.Matrix.identity())\n ),\n ColorFilter: new JsiSkColorFilterFactory(CanvasKit),\n Font: (typeface?: SkTypeface, size?: number) =>\n new JsiSkFont(\n CanvasKit,\n new CanvasKit.Font(\n typeface === undefined ? null : JsiSkTypeface.fromValue(typeface),\n size\n )\n ),\n Typeface: new JsiSkTypefaceFactory(CanvasKit),\n MaskFilter: new JsiSkMaskFilterFactory(CanvasKit),\n RuntimeEffect: new JsiSkRuntimeEffectFactory(CanvasKit),\n ImageFilter: new JsiSkImageFilterFactory(CanvasKit),\n Shader: new JsiSkShaderFactory(CanvasKit),\n PathEffect: new JsiSkPathEffectFactory(CanvasKit),\n MakeVertices: MakeVertices.bind(null, CanvasKit),\n Data: new JsiSkDataFactory(CanvasKit),\n Image: new JsiSkImageFactory(CanvasKit),\n AnimatedImage: new JsiSkAnimatedImageFactory(CanvasKit),\n SVG: new JsiSkSVGFactory(CanvasKit),\n TextBlob: new JsiSkTextBlobFactory(CanvasKit),\n XYWHRect: (x: number, y: number, width: number, height: number) => {\n return new JsiSkRect(CanvasKit, CanvasKit.XYWHRect(x, y, width, height));\n },\n Surface: new JsiSkSurfaceFactory(CanvasKit),\n TypefaceFontProvider: new JsiSkTypefaceFontProviderFactory(CanvasKit),\n FontMgr: new JsiSkFontMgrFactory(CanvasKit),\n ParagraphBuilder: new JsiSkParagraphBuilderFactory(CanvasKit),\n NativeBuffer: new JsiSkNativeBufferFactory(CanvasKit),\n Skottie: new JsiSkottieFactory(CanvasKit),\n Video: createVideo.bind(null, CanvasKit),\n Recorder: () => {\n return throwNotImplementedOnRNWeb<JsiRecorder>();\n },\n getNativeDevice: () => {\n return throwNotImplementedOnRNWeb<bigint>();\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ export declare const createDrawingContext: (Skia: Skia, paintPool: SkPaint[], ca
|
|
|
12
12
|
paintDeclarations: SkPaint[];
|
|
13
13
|
paintPool: SkPaint[];
|
|
14
14
|
savePaint: () => void;
|
|
15
|
+
pushPaint: (paint: SkPaint) => void;
|
|
15
16
|
saveBackdropFilter: () => void;
|
|
16
17
|
readonly paint: SkPaint;
|
|
17
18
|
restorePaint: () => SkPaint | undefined;
|
|
@@ -48,6 +48,15 @@ const createDrawingContext = (Skia, paintPool, canvas) => {
|
|
|
48
48
|
opacities.push(opacities[opacities.length - 1]);
|
|
49
49
|
nextPaintIndex++;
|
|
50
50
|
};
|
|
51
|
+
|
|
52
|
+
// Pushes an externally owned paint (the `paint` prop) onto the stack. It must
|
|
53
|
+
// push an opacity alongside it: restorePaint() pops both, so pushing only the
|
|
54
|
+
// paint would underflow the opacity stack and leak the enclosing group's
|
|
55
|
+
// opacity onto everything drawn afterwards.
|
|
56
|
+
const pushPaint = paint => {
|
|
57
|
+
paints.push(paint);
|
|
58
|
+
opacities.push(opacities[opacities.length - 1]);
|
|
59
|
+
};
|
|
51
60
|
const getOpacity = () => {
|
|
52
61
|
return opacities[opacities.length - 1];
|
|
53
62
|
};
|
|
@@ -119,6 +128,7 @@ const createDrawingContext = (Skia, paintPool, canvas) => {
|
|
|
119
128
|
paintPool,
|
|
120
129
|
// Public methods
|
|
121
130
|
savePaint,
|
|
131
|
+
pushPaint,
|
|
122
132
|
saveBackdropFilter,
|
|
123
133
|
get paint() {
|
|
124
134
|
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","savePaint","nextPaint","assign","getCurrentPaint","pushPaint","paint","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 paintPool[0].reset();\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 must\n // push an opacity alongside it: restorePaint() pops both, so pushing only the\n // paint would underflow the opacity stack and leak the enclosing group's\n // opacity onto everything drawn afterwards.\n const pushPaint = (paint: SkPaint) => {\n paints.push(paint);\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;
|
|
@@ -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 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":[]}
|
|
@@ -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);
|