@shopify/react-native-skia 1.8.0 → 1.8.1
Sign up to get free protection for your applications and to get access to all the features.
- package/cpp/api/JsiSkPaint.h +8 -1
- package/lib/commonjs/dom/types/Common.d.ts +6 -4
- package/lib/commonjs/dom/types/Common.js.map +1 -1
- package/lib/commonjs/dom/types/ImageFilters.d.ts +1 -1
- package/lib/commonjs/dom/types/ImageFilters.js.map +1 -1
- package/lib/commonjs/dom/types/Node.d.ts +0 -2
- package/lib/commonjs/dom/types/Node.js.map +1 -1
- package/lib/commonjs/external/reanimated/index.d.ts +0 -1
- package/lib/commonjs/external/reanimated/index.js +0 -11
- package/lib/commonjs/external/reanimated/index.js.map +1 -1
- package/lib/commonjs/external/reanimated/renderHelpers.d.ts +0 -1
- package/lib/commonjs/external/reanimated/renderHelpers.js +5 -43
- package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/commonjs/skia/types/Paint/Paint.d.ts +1 -0
- package/lib/commonjs/skia/types/Paint/Paint.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPaint.d.ts +1 -0
- package/lib/commonjs/skia/web/JsiSkPaint.js +3 -0
- package/lib/commonjs/skia/web/JsiSkPaint.js.map +1 -1
- package/lib/commonjs/sksg/Container.d.ts +3 -2
- package/lib/commonjs/sksg/Container.js +32 -26
- package/lib/commonjs/sksg/Container.js.map +1 -1
- package/lib/commonjs/sksg/HostConfig.d.ts +2 -2
- package/lib/commonjs/sksg/HostConfig.js +7 -25
- package/lib/commonjs/sksg/HostConfig.js.map +1 -1
- package/lib/commonjs/sksg/Node.d.ts +19 -0
- package/lib/commonjs/sksg/Node.js +78 -0
- package/lib/commonjs/sksg/Node.js.map +1 -0
- package/lib/commonjs/sksg/Reconciler.d.ts +1 -1
- package/lib/commonjs/sksg/Recorder/Core.d.ts +79 -0
- package/lib/commonjs/sksg/Recorder/Core.js +110 -0
- package/lib/commonjs/sksg/Recorder/Core.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +18 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js +105 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/Player.d.ts +3 -0
- package/lib/commonjs/sksg/Recorder/Player.js +127 -0
- package/lib/commonjs/sksg/Recorder/Player.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/Recorder.d.ts +50 -0
- package/lib/commonjs/sksg/Recorder/Recorder.js +288 -0
- package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/Recording.d.ts +7 -0
- package/lib/commonjs/sksg/Recorder/Recording.js +12 -0
- package/lib/commonjs/sksg/Recorder/Recording.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/Visitor.d.ts +5 -0
- package/lib/commonjs/sksg/Recorder/Visitor.js +293 -0
- package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/commands/Box.d.ts +13 -0
- package/lib/commonjs/sksg/Recorder/commands/Box.js +71 -0
- package/lib/commonjs/sksg/Recorder/commands/Box.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/commands/CTM.d.ts +3 -0
- package/lib/commonjs/sksg/Recorder/commands/CTM.js +79 -0
- package/lib/commonjs/sksg/Recorder/commands/CTM.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/commands/ColorFilters.d.ts +6 -0
- package/lib/commonjs/sksg/Recorder/commands/ColorFilters.js +76 -0
- package/lib/commonjs/sksg/Recorder/commands/ColorFilters.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/commands/Drawing.d.ts +24 -0
- package/lib/commonjs/sksg/{nodes/drawings.js → Recorder/commands/Drawing.js} +5 -5
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.d.ts +12 -0
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js +183 -0
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/commands/Paint.d.ts +4 -0
- package/lib/commonjs/sksg/Recorder/commands/Paint.js +70 -0
- package/lib/commonjs/sksg/Recorder/commands/Paint.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/commands/PathEffects.d.ts +6 -0
- package/lib/commonjs/sksg/Recorder/commands/PathEffects.js +137 -0
- package/lib/commonjs/sksg/Recorder/commands/PathEffects.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/commands/Shaders.d.ts +5 -0
- package/lib/commonjs/sksg/{nodes/shaders.js → Recorder/commands/Shaders.js} +58 -15
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -0
- package/lib/commonjs/sksg/{nodes/utils.d.ts → utils.d.ts} +3 -0
- package/lib/commonjs/sksg/{nodes/utils.js → utils.js} +12 -2
- package/lib/commonjs/sksg/utils.js.map +1 -0
- package/lib/module/dom/types/Common.d.ts +6 -4
- package/lib/module/dom/types/Common.js.map +1 -1
- package/lib/module/dom/types/ImageFilters.d.ts +1 -1
- package/lib/module/dom/types/ImageFilters.js.map +1 -1
- package/lib/module/dom/types/Node.d.ts +0 -2
- package/lib/module/dom/types/Node.js.map +1 -1
- package/lib/module/external/reanimated/index.d.ts +0 -1
- package/lib/module/external/reanimated/index.js +0 -1
- package/lib/module/external/reanimated/index.js.map +1 -1
- package/lib/module/external/reanimated/renderHelpers.d.ts +0 -1
- package/lib/module/external/reanimated/renderHelpers.js +4 -42
- package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/module/skia/types/Paint/Paint.d.ts +1 -0
- package/lib/module/skia/types/Paint/Paint.js.map +1 -1
- package/lib/module/skia/web/JsiSkPaint.d.ts +1 -0
- package/lib/module/skia/web/JsiSkPaint.js +3 -0
- package/lib/module/skia/web/JsiSkPaint.js.map +1 -1
- package/lib/module/sksg/Container.d.ts +3 -2
- package/lib/module/sksg/Container.js +30 -24
- package/lib/module/sksg/Container.js.map +1 -1
- package/lib/module/sksg/HostConfig.d.ts +2 -2
- package/lib/module/sksg/HostConfig.js +7 -25
- package/lib/module/sksg/HostConfig.js.map +1 -1
- package/lib/module/sksg/Node.d.ts +19 -0
- package/lib/module/sksg/Node.js +67 -0
- package/lib/module/sksg/Node.js.map +1 -0
- package/lib/module/sksg/Reconciler.d.ts +1 -1
- package/lib/module/sksg/Recorder/Core.d.ts +79 -0
- package/lib/module/sksg/Recorder/Core.js +101 -0
- package/lib/module/sksg/Recorder/Core.js.map +1 -0
- package/lib/module/sksg/Recorder/DrawingContext.d.ts +18 -0
- package/lib/module/sksg/Recorder/DrawingContext.js +98 -0
- package/lib/module/sksg/Recorder/DrawingContext.js.map +1 -0
- package/lib/module/sksg/Recorder/Player.d.ts +3 -0
- package/lib/module/sksg/Recorder/Player.js +120 -0
- package/lib/module/sksg/Recorder/Player.js.map +1 -0
- package/lib/module/sksg/Recorder/Recorder.d.ts +50 -0
- package/lib/module/sksg/Recorder/Recorder.js +281 -0
- package/lib/module/sksg/Recorder/Recorder.js.map +1 -0
- package/lib/module/sksg/Recorder/Recording.d.ts +7 -0
- package/lib/module/sksg/Recorder/Recording.js +5 -0
- package/lib/module/sksg/Recorder/Recording.js.map +1 -0
- package/lib/module/sksg/Recorder/Visitor.d.ts +5 -0
- package/lib/module/sksg/Recorder/Visitor.js +285 -0
- package/lib/module/sksg/Recorder/Visitor.js.map +1 -0
- package/lib/module/sksg/Recorder/commands/Box.d.ts +13 -0
- package/lib/module/sksg/Recorder/commands/Box.js +63 -0
- package/lib/module/sksg/Recorder/commands/Box.js.map +1 -0
- package/lib/module/sksg/Recorder/commands/CTM.d.ts +3 -0
- package/lib/module/sksg/Recorder/commands/CTM.js +72 -0
- package/lib/module/sksg/Recorder/commands/CTM.js.map +1 -0
- package/lib/module/sksg/Recorder/commands/ColorFilters.d.ts +6 -0
- package/lib/module/sksg/Recorder/commands/ColorFilters.js +67 -0
- package/lib/module/sksg/Recorder/commands/ColorFilters.js.map +1 -0
- package/lib/module/sksg/Recorder/commands/Drawing.d.ts +24 -0
- package/lib/module/sksg/{nodes/drawings.js → Recorder/commands/Drawing.js} +5 -5
- package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -0
- package/lib/module/sksg/Recorder/commands/ImageFilters.d.ts +12 -0
- package/lib/module/sksg/{nodes/imageFilters.js → Recorder/commands/ImageFilters.js} +87 -95
- package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -0
- package/lib/module/sksg/Recorder/commands/Paint.d.ts +4 -0
- package/lib/module/sksg/Recorder/commands/Paint.js +62 -0
- package/lib/module/sksg/Recorder/commands/Paint.js.map +1 -0
- package/lib/module/sksg/Recorder/commands/PathEffects.d.ts +6 -0
- package/lib/module/sksg/Recorder/commands/PathEffects.js +128 -0
- package/lib/module/sksg/Recorder/commands/PathEffects.js.map +1 -0
- package/lib/module/sksg/Recorder/commands/Shaders.d.ts +5 -0
- package/lib/module/sksg/{nodes/shaders.js → Recorder/commands/Shaders.js} +63 -13
- package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -0
- package/lib/module/sksg/{nodes/utils.d.ts → utils.d.ts} +3 -0
- package/lib/module/sksg/{nodes/utils.js → utils.js} +10 -1
- package/lib/module/sksg/utils.js.map +1 -0
- package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +0 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkPaint.d.ts +1 -0
- package/lib/typescript/lib/commonjs/sksg/Container.d.ts +4 -0
- package/lib/typescript/lib/commonjs/sksg/HostConfig.d.ts +1 -3
- package/lib/typescript/lib/commonjs/sksg/Node.d.ts +14 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/Core.d.ts +5 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +17 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/Player.d.ts +2 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +45 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/Recording.d.ts +5 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/Visitor.d.ts +27 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/commands/Box.d.ts +3 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/commands/CTM.d.ts +2 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/commands/ColorFilters.d.ts +4 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/commands/ImageFilters.d.ts +6 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/commands/Paint.d.ts +14 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/commands/PathEffects.d.ts +4 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/commands/Shaders.d.ts +3 -0
- package/lib/typescript/lib/commonjs/sksg/{nodes/utils.d.ts → utils.d.ts} +1 -0
- package/lib/typescript/lib/module/external/reanimated/index.d.ts +0 -1
- package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +0 -1
- package/lib/typescript/lib/module/skia/web/JsiSkPaint.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/Container.d.ts +4 -0
- package/lib/typescript/lib/module/sksg/HostConfig.d.ts +1 -3
- package/lib/typescript/lib/module/sksg/Node.d.ts +13 -0
- package/lib/typescript/lib/module/sksg/Recorder/Core.d.ts +4 -0
- package/lib/typescript/lib/module/sksg/Recorder/DrawingContext.d.ts +16 -0
- package/lib/typescript/lib/module/sksg/Recorder/Player.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +44 -0
- package/lib/typescript/lib/module/sksg/Recorder/Recording.d.ts +4 -0
- package/lib/typescript/lib/module/sksg/Recorder/Visitor.d.ts +26 -0
- package/lib/typescript/lib/module/sksg/Recorder/commands/Box.d.ts +2 -0
- package/lib/typescript/lib/module/sksg/Recorder/commands/CTM.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/Recorder/commands/ColorFilters.d.ts +3 -0
- package/lib/typescript/lib/module/sksg/Recorder/commands/ImageFilters.d.ts +5 -0
- package/lib/typescript/lib/module/sksg/Recorder/commands/Paint.d.ts +13 -0
- package/lib/typescript/lib/module/sksg/Recorder/commands/PathEffects.d.ts +3 -0
- package/lib/typescript/lib/module/sksg/Recorder/commands/Shaders.d.ts +2 -0
- package/lib/typescript/lib/module/sksg/{nodes/utils.d.ts → utils.d.ts} +1 -0
- package/lib/typescript/src/dom/types/Common.d.ts +6 -4
- package/lib/typescript/src/dom/types/ImageFilters.d.ts +1 -1
- package/lib/typescript/src/dom/types/Node.d.ts +0 -2
- package/lib/typescript/src/external/reanimated/index.d.ts +0 -1
- package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +0 -1
- package/lib/typescript/src/skia/types/Paint/Paint.d.ts +1 -0
- package/lib/typescript/src/skia/web/JsiSkPaint.d.ts +1 -0
- package/lib/typescript/src/sksg/Container.d.ts +3 -2
- package/lib/typescript/src/sksg/HostConfig.d.ts +2 -2
- package/lib/typescript/src/sksg/Node.d.ts +19 -0
- package/lib/typescript/src/sksg/Reconciler.d.ts +1 -1
- package/lib/typescript/src/sksg/Recorder/Core.d.ts +79 -0
- package/lib/typescript/src/sksg/Recorder/DrawingContext.d.ts +18 -0
- package/lib/typescript/src/sksg/Recorder/Player.d.ts +3 -0
- package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +50 -0
- package/lib/typescript/src/sksg/Recorder/Recording.d.ts +7 -0
- package/lib/typescript/src/sksg/Recorder/Visitor.d.ts +5 -0
- package/lib/typescript/src/sksg/Recorder/commands/Box.d.ts +13 -0
- package/lib/typescript/src/sksg/Recorder/commands/CTM.d.ts +3 -0
- package/lib/typescript/src/sksg/Recorder/commands/ColorFilters.d.ts +6 -0
- package/lib/typescript/src/sksg/Recorder/commands/Drawing.d.ts +24 -0
- package/lib/typescript/src/sksg/Recorder/commands/ImageFilters.d.ts +12 -0
- package/lib/typescript/src/sksg/Recorder/commands/Paint.d.ts +4 -0
- package/lib/typescript/src/sksg/Recorder/commands/PathEffects.d.ts +6 -0
- package/lib/typescript/src/sksg/Recorder/commands/Shaders.d.ts +5 -0
- package/lib/typescript/src/sksg/{nodes/utils.d.ts → utils.d.ts} +3 -0
- package/package.json +1 -1
- package/src/__tests__/snapshots/image-filter/test-shadow.png +0 -0
- package/src/dom/types/Common.ts +7 -5
- package/src/dom/types/ImageFilters.ts +2 -1
- package/src/dom/types/Node.ts +0 -4
- package/src/external/reanimated/index.ts +0 -1
- package/src/external/reanimated/renderHelpers.ts +4 -44
- package/src/renderer/__tests__/e2e/ColorFilters.spec.tsx +15 -0
- package/src/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.tsx +23 -2
- package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +91 -2
- package/src/renderer/__tests__/setup.tsx +1 -1
- package/src/skia/types/Paint/Paint.ts +2 -0
- package/src/skia/web/JsiSkPaint.ts +4 -0
- package/src/sksg/Container.ts +35 -29
- package/src/sksg/HostConfig.ts +5 -50
- package/src/sksg/Node.ts +105 -0
- package/src/sksg/Recorder/Core.ts +171 -0
- package/src/sksg/Recorder/DrawingContext.ts +130 -0
- package/src/sksg/Recorder/Player.ts +160 -0
- package/src/sksg/Recorder/Recorder.ts +259 -0
- package/src/sksg/Recorder/Recording.ts +13 -0
- package/src/sksg/Recorder/Visitor.ts +324 -0
- package/src/sksg/Recorder/commands/Box.ts +63 -0
- package/src/sksg/Recorder/commands/CTM.ts +72 -0
- package/src/sksg/Recorder/commands/ColorFilters.ts +87 -0
- package/src/sksg/{nodes/drawings.ts → Recorder/commands/Drawing.ts} +29 -65
- package/src/sksg/Recorder/commands/ImageFilters.ts +255 -0
- package/src/sksg/Recorder/commands/Paint.ts +77 -0
- package/src/sksg/Recorder/commands/PathEffects.ts +169 -0
- package/src/sksg/{nodes/shaders.ts → Recorder/commands/Shaders.ts} +100 -26
- package/src/sksg/{nodes/utils.ts → utils.ts} +14 -1
- package/lib/commonjs/external/reanimated/useDerivedValueOnJS.d.ts +0 -1
- package/lib/commonjs/external/reanimated/useDerivedValueOnJS.js +0 -24
- package/lib/commonjs/external/reanimated/useDerivedValueOnJS.js.map +0 -1
- package/lib/commonjs/sksg/DeclarationContext.d.ts +0 -56
- package/lib/commonjs/sksg/DeclarationContext.js +0 -77
- package/lib/commonjs/sksg/DeclarationContext.js.map +0 -1
- package/lib/commonjs/sksg/DrawingContext.d.ts +0 -13
- package/lib/commonjs/sksg/DrawingContext.js +0 -172
- package/lib/commonjs/sksg/DrawingContext.js.map +0 -1
- package/lib/commonjs/sksg/__tests__/Declarations.spec.d.ts +0 -1
- package/lib/commonjs/sksg/__tests__/MockDeclaration.d.ts +0 -57
- package/lib/commonjs/sksg/nodes/Node.d.ts +0 -7
- package/lib/commonjs/sksg/nodes/Node.js +0 -6
- package/lib/commonjs/sksg/nodes/Node.js.map +0 -1
- package/lib/commonjs/sksg/nodes/colorFilters.d.ts +0 -10
- package/lib/commonjs/sksg/nodes/colorFilters.js +0 -79
- package/lib/commonjs/sksg/nodes/colorFilters.js.map +0 -1
- package/lib/commonjs/sksg/nodes/context.d.ts +0 -3
- package/lib/commonjs/sksg/nodes/context.js +0 -394
- package/lib/commonjs/sksg/nodes/context.js.map +0 -1
- package/lib/commonjs/sksg/nodes/drawings.d.ts +0 -30
- package/lib/commonjs/sksg/nodes/drawings.js.map +0 -1
- package/lib/commonjs/sksg/nodes/imageFilters.d.ts +0 -17
- package/lib/commonjs/sksg/nodes/imageFilters.js +0 -197
- package/lib/commonjs/sksg/nodes/imageFilters.js.map +0 -1
- package/lib/commonjs/sksg/nodes/index.d.ts +0 -3
- package/lib/commonjs/sksg/nodes/index.js +0 -39
- package/lib/commonjs/sksg/nodes/index.js.map +0 -1
- package/lib/commonjs/sksg/nodes/paint.d.ts +0 -3
- package/lib/commonjs/sksg/nodes/paint.js +0 -81
- package/lib/commonjs/sksg/nodes/paint.js.map +0 -1
- package/lib/commonjs/sksg/nodes/pathEffects.d.ts +0 -11
- package/lib/commonjs/sksg/nodes/pathEffects.js +0 -111
- package/lib/commonjs/sksg/nodes/pathEffects.js.map +0 -1
- package/lib/commonjs/sksg/nodes/shaders.d.ts +0 -11
- package/lib/commonjs/sksg/nodes/shaders.js.map +0 -1
- package/lib/commonjs/sksg/nodes/utils.js.map +0 -1
- package/lib/module/external/reanimated/useDerivedValueOnJS.d.ts +0 -1
- package/lib/module/external/reanimated/useDerivedValueOnJS.js +0 -16
- package/lib/module/external/reanimated/useDerivedValueOnJS.js.map +0 -1
- package/lib/module/sksg/DeclarationContext.d.ts +0 -56
- package/lib/module/sksg/DeclarationContext.js +0 -69
- package/lib/module/sksg/DeclarationContext.js.map +0 -1
- package/lib/module/sksg/DrawingContext.d.ts +0 -13
- package/lib/module/sksg/DrawingContext.js +0 -165
- package/lib/module/sksg/DrawingContext.js.map +0 -1
- package/lib/module/sksg/__tests__/Declarations.spec.d.ts +0 -1
- package/lib/module/sksg/__tests__/MockDeclaration.d.ts +0 -57
- package/lib/module/sksg/nodes/Node.d.ts +0 -7
- package/lib/module/sksg/nodes/Node.js +0 -2
- package/lib/module/sksg/nodes/Node.js.map +0 -1
- package/lib/module/sksg/nodes/colorFilters.d.ts +0 -10
- package/lib/module/sksg/nodes/colorFilters.js +0 -66
- package/lib/module/sksg/nodes/colorFilters.js.map +0 -1
- package/lib/module/sksg/nodes/context.d.ts +0 -3
- package/lib/module/sksg/nodes/context.js +0 -387
- package/lib/module/sksg/nodes/context.js.map +0 -1
- package/lib/module/sksg/nodes/drawings.d.ts +0 -30
- package/lib/module/sksg/nodes/drawings.js.map +0 -1
- package/lib/module/sksg/nodes/imageFilters.d.ts +0 -17
- package/lib/module/sksg/nodes/imageFilters.js.map +0 -1
- package/lib/module/sksg/nodes/index.d.ts +0 -3
- package/lib/module/sksg/nodes/index.js +0 -4
- package/lib/module/sksg/nodes/index.js.map +0 -1
- package/lib/module/sksg/nodes/paint.d.ts +0 -3
- package/lib/module/sksg/nodes/paint.js +0 -74
- package/lib/module/sksg/nodes/paint.js.map +0 -1
- package/lib/module/sksg/nodes/pathEffects.d.ts +0 -11
- package/lib/module/sksg/nodes/pathEffects.js +0 -97
- package/lib/module/sksg/nodes/pathEffects.js.map +0 -1
- package/lib/module/sksg/nodes/shaders.d.ts +0 -11
- package/lib/module/sksg/nodes/shaders.js.map +0 -1
- package/lib/module/sksg/nodes/utils.js.map +0 -1
- package/lib/typescript/lib/commonjs/external/reanimated/useDerivedValueOnJS.d.ts +0 -2
- package/lib/typescript/lib/commonjs/sksg/DeclarationContext.d.ts +0 -53
- package/lib/typescript/lib/commonjs/sksg/DrawingContext.d.ts +0 -22
- package/lib/typescript/lib/commonjs/sksg/nodes/Node.d.ts +0 -1
- package/lib/typescript/lib/commonjs/sksg/nodes/colorFilters.d.ts +0 -8
- package/lib/typescript/lib/commonjs/sksg/nodes/context.d.ts +0 -2
- package/lib/typescript/lib/commonjs/sksg/nodes/imageFilters.d.ts +0 -12
- package/lib/typescript/lib/commonjs/sksg/nodes/index.d.ts +0 -1
- package/lib/typescript/lib/commonjs/sksg/nodes/paint.d.ts +0 -2
- package/lib/typescript/lib/commonjs/sksg/nodes/pathEffects.d.ts +0 -9
- package/lib/typescript/lib/commonjs/sksg/nodes/shaders.d.ts +0 -10
- package/lib/typescript/lib/module/external/reanimated/useDerivedValueOnJS.d.ts +0 -1
- package/lib/typescript/lib/module/sksg/DeclarationContext.d.ts +0 -52
- package/lib/typescript/lib/module/sksg/DrawingContext.d.ts +0 -21
- package/lib/typescript/lib/module/sksg/nodes/Node.d.ts +0 -1
- package/lib/typescript/lib/module/sksg/nodes/colorFilters.d.ts +0 -7
- package/lib/typescript/lib/module/sksg/nodes/context.d.ts +0 -1
- package/lib/typescript/lib/module/sksg/nodes/imageFilters.d.ts +0 -11
- package/lib/typescript/lib/module/sksg/nodes/index.d.ts +0 -3
- package/lib/typescript/lib/module/sksg/nodes/paint.d.ts +0 -1
- package/lib/typescript/lib/module/sksg/nodes/pathEffects.d.ts +0 -8
- package/lib/typescript/lib/module/sksg/nodes/shaders.d.ts +0 -9
- package/lib/typescript/src/external/reanimated/useDerivedValueOnJS.d.ts +0 -1
- package/lib/typescript/src/sksg/DeclarationContext.d.ts +0 -56
- package/lib/typescript/src/sksg/DrawingContext.d.ts +0 -13
- package/lib/typescript/src/sksg/__tests__/Declarations.spec.d.ts +0 -1
- package/lib/typescript/src/sksg/__tests__/MockDeclaration.d.ts +0 -57
- package/lib/typescript/src/sksg/nodes/Node.d.ts +0 -7
- package/lib/typescript/src/sksg/nodes/colorFilters.d.ts +0 -10
- package/lib/typescript/src/sksg/nodes/context.d.ts +0 -3
- package/lib/typescript/src/sksg/nodes/drawings.d.ts +0 -30
- package/lib/typescript/src/sksg/nodes/imageFilters.d.ts +0 -17
- package/lib/typescript/src/sksg/nodes/index.d.ts +0 -3
- package/lib/typescript/src/sksg/nodes/paint.d.ts +0 -3
- package/lib/typescript/src/sksg/nodes/pathEffects.d.ts +0 -11
- package/lib/typescript/src/sksg/nodes/shaders.d.ts +0 -11
- package/src/external/reanimated/useDerivedValueOnJS.ts +0 -20
- package/src/sksg/DeclarationContext.ts +0 -85
- package/src/sksg/DrawingContext.ts +0 -226
- package/src/sksg/__tests__/Declarations.spec.tsx +0 -235
- package/src/sksg/__tests__/MockDeclaration.ts +0 -138
- package/src/sksg/nodes/Node.ts +0 -8
- package/src/sksg/nodes/colorFilters.ts +0 -79
- package/src/sksg/nodes/context.ts +0 -412
- package/src/sksg/nodes/imageFilters.ts +0 -235
- package/src/sksg/nodes/index.ts +0 -3
- package/src/sksg/nodes/paint.ts +0 -75
- package/src/sksg/nodes/pathEffects.ts +0 -118
- /package/lib/typescript/lib/commonjs/sksg/{nodes/drawings.d.ts → Recorder/commands/Drawing.d.ts} +0 -0
- /package/lib/typescript/lib/module/sksg/{nodes/drawings.d.ts → Recorder/commands/Drawing.d.ts} +0 -0
@@ -7,12 +7,20 @@ import {
|
|
7
7
|
height as wHeight,
|
8
8
|
} from "../../setup";
|
9
9
|
import {
|
10
|
+
BlendColor,
|
11
|
+
Circle,
|
10
12
|
ColorMatrix,
|
13
|
+
Group,
|
11
14
|
Image,
|
12
15
|
Lerp,
|
13
16
|
LinearToSRGBGamma,
|
17
|
+
SRGBToLinearGamma,
|
14
18
|
} from "../../../components";
|
15
|
-
import {
|
19
|
+
import {
|
20
|
+
checkImage,
|
21
|
+
docPath,
|
22
|
+
processResult,
|
23
|
+
} from "../../../../__tests__/setup";
|
16
24
|
import { setupSkia } from "../../../../skia/__tests__/setup";
|
17
25
|
import { fitRects } from "../../../../dom/nodes";
|
18
26
|
|
@@ -60,7 +68,6 @@ describe("Color Filter Composition", () => {
|
|
60
68
|
"snapshots/color-filter/color-filter-composition.png"
|
61
69
|
);
|
62
70
|
});
|
63
|
-
// TODO: a bug should be reported here
|
64
71
|
it("should apply a color matrix to an image", async () => {
|
65
72
|
const { oslo } = images;
|
66
73
|
const { width, height } = surface;
|
@@ -78,4 +85,18 @@ describe("Color Filter Composition", () => {
|
|
78
85
|
);
|
79
86
|
checkImage(image, "snapshots/color-filter/color-filter-composition.png");
|
80
87
|
});
|
88
|
+
it("should use composition", async () => {
|
89
|
+
const { width } = surface;
|
90
|
+
const r = width / 2;
|
91
|
+
const img = await surface.draw(
|
92
|
+
<Group>
|
93
|
+
<SRGBToLinearGamma>
|
94
|
+
<BlendColor color="lightblue" mode="srcIn" />
|
95
|
+
</SRGBToLinearGamma>
|
96
|
+
<Circle cx={r} cy={r} r={r} />
|
97
|
+
<Circle cx={2 * r} cy={r} r={r} color="red" />
|
98
|
+
</Group>
|
99
|
+
);
|
100
|
+
checkImage(img, docPath("color-filters/composition.png"));
|
101
|
+
});
|
81
102
|
});
|
@@ -6,8 +6,15 @@ import {
|
|
6
6
|
itRunsNodeOnly,
|
7
7
|
itRunsE2eOnly,
|
8
8
|
CI,
|
9
|
+
processResult,
|
9
10
|
} from "../../../__tests__/setup";
|
10
|
-
import {
|
11
|
+
import {
|
12
|
+
fonts,
|
13
|
+
images,
|
14
|
+
surface,
|
15
|
+
width as wWidth,
|
16
|
+
height as wHeight,
|
17
|
+
} from "../setup";
|
11
18
|
import {
|
12
19
|
Fill,
|
13
20
|
Image,
|
@@ -20,6 +27,51 @@ import {
|
|
20
27
|
DisplacementMap,
|
21
28
|
Turbulence,
|
22
29
|
} from "../../components";
|
30
|
+
import { setupSkia } from "../../../skia/__tests__/setup";
|
31
|
+
import {
|
32
|
+
BlendMode,
|
33
|
+
TileMode,
|
34
|
+
type SkColor,
|
35
|
+
type Skia,
|
36
|
+
type SkImageFilter,
|
37
|
+
} from "../../../skia/types";
|
38
|
+
|
39
|
+
const Black = Float32Array.of(0, 0, 0, 1);
|
40
|
+
|
41
|
+
const MakeInnerShadow = (
|
42
|
+
Skia: Skia,
|
43
|
+
shadowOnly: boolean | undefined,
|
44
|
+
dx: number,
|
45
|
+
dy: number,
|
46
|
+
sigmaX: number,
|
47
|
+
sigmaY: number,
|
48
|
+
color: SkColor,
|
49
|
+
input: SkImageFilter | null
|
50
|
+
) => {
|
51
|
+
"worklet";
|
52
|
+
const sourceGraphic = Skia.ImageFilter.MakeColorFilter(
|
53
|
+
Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),
|
54
|
+
null
|
55
|
+
);
|
56
|
+
const sourceAlpha = Skia.ImageFilter.MakeColorFilter(
|
57
|
+
Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),
|
58
|
+
null
|
59
|
+
);
|
60
|
+
const f1 = Skia.ImageFilter.MakeColorFilter(
|
61
|
+
Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),
|
62
|
+
null
|
63
|
+
);
|
64
|
+
const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);
|
65
|
+
const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);
|
66
|
+
const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);
|
67
|
+
if (shadowOnly) {
|
68
|
+
return f4;
|
69
|
+
}
|
70
|
+
return Skia.ImageFilter.MakeCompose(
|
71
|
+
input,
|
72
|
+
Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)
|
73
|
+
);
|
74
|
+
};
|
23
75
|
|
24
76
|
describe("Test Image Filters", () => {
|
25
77
|
itRunsNodeOnly(
|
@@ -191,6 +243,41 @@ describe("Test Image Filters", () => {
|
|
191
243
|
threshold: 0.05,
|
192
244
|
});
|
193
245
|
});
|
246
|
+
it("should build reference result outer and inner shadows on text", () => {
|
247
|
+
const { surface: ckSurface, canvas, Skia } = setupSkia(wWidth, wHeight);
|
248
|
+
const path = Skia.Path.MakeFromSVGString(
|
249
|
+
// eslint-disable-next-line max-len
|
250
|
+
"M62.477 2.273V75h-8.522L14.324 17.898h-.71V75H4.807V2.273h8.522l39.773 57.244h.71V2.273h8.665ZM78.963 75V20.454h8.381V75h-8.38Zm4.262-63.636c-1.634 0-3.042-.557-4.226-1.67-1.16-1.112-1.74-2.45-1.74-4.012 0-1.563.58-2.9 1.74-4.013C80.183.556 81.59 0 83.225 0c1.633 0 3.03.556 4.19 1.669 1.184 1.113 1.776 2.45 1.776 4.013 0 1.562-.592 2.9-1.776 4.013-1.16 1.112-2.557 1.669-4.19 1.669ZM124.853 76.136c-5.114 0-9.517-1.207-13.21-3.622-3.693-2.415-6.534-5.74-8.523-9.978-1.989-4.238-2.983-9.08-2.983-14.525 0-5.54 1.018-10.428 3.054-14.666 2.06-4.261 4.924-7.587 8.594-9.979 3.693-2.414 8.002-3.622 12.926-3.622 3.835 0 7.292.71 10.369 2.131 3.078 1.42 5.599 3.41 7.564 5.966 1.965 2.557 3.184 5.54 3.658 8.949h-8.381c-.639-2.486-2.059-4.688-4.261-6.605-2.178-1.942-5.114-2.912-8.807-2.912-3.267 0-6.132.852-8.594 2.556-2.438 1.681-4.344 4.06-5.717 7.138-1.35 3.054-2.024 6.641-2.024 10.76 0 4.214.663 7.884 1.988 11.009 1.35 3.125 3.244 5.551 5.682 7.28 2.462 1.728 5.351 2.592 8.665 2.592 2.178 0 4.155-.379 5.93-1.136a12.23 12.23 0 0 0 4.51-3.267c1.231-1.42 2.107-3.125 2.628-5.114h8.381c-.474 3.22-1.646 6.12-3.516 8.7-1.846 2.557-4.297 4.593-7.351 6.108-3.03 1.492-6.557 2.237-10.582 2.237ZM181.423 76.136c-5.256 0-9.79-1.16-13.601-3.48-3.788-2.344-6.712-5.61-8.772-9.8-2.036-4.215-3.054-9.116-3.054-14.703s1.018-10.511 3.054-14.772c2.06-4.285 4.925-7.623 8.594-10.015 3.693-2.414 8.002-3.622 12.926-3.622 2.841 0 5.647.474 8.417 1.42 2.769.948 5.291 2.487 7.563 4.617 2.273 2.107 4.084 4.9 5.434 8.38 1.349 3.481 2.024 7.766 2.024 12.856v3.551h-42.046v-7.244h33.523c0-3.078-.615-5.824-1.847-8.239-1.207-2.415-2.935-4.32-5.184-5.717-2.226-1.397-4.853-2.095-7.884-2.095-3.338 0-6.226.828-8.664 2.486a16.35 16.35 0 0 0-5.576 6.392c-1.302 2.627-1.953 5.445-1.953 8.451v4.83c0 4.12.71 7.611 2.131 10.476 1.444 2.84 3.444 5.007 6.001 6.498 2.557 1.468 5.528 2.202 8.914 2.202 2.201 0 4.19-.308 5.965-.923 1.8-.64 3.35-1.587 4.652-2.841 1.303-1.279 2.309-2.865 3.019-4.759l8.097 2.273a17.965 17.965 0 0 1-4.297 7.244c-2.013 2.06-4.498 3.67-7.458 4.83-2.959 1.136-6.285 1.704-9.978 1.704ZM32.648 123.273h8.806v51.988c0 4.641-.852 8.582-2.556 11.826-1.705 3.243-4.108 5.705-7.21 7.386-3.1 1.681-6.758 2.521-10.972 2.521-3.977 0-7.517-.722-10.618-2.166-3.101-1.468-5.54-3.551-7.315-6.25-1.776-2.699-2.664-5.907-2.664-9.623h8.665c0 2.059.51 3.858 1.527 5.397 1.042 1.515 2.462 2.699 4.261 3.551 1.8.853 3.848 1.279 6.144 1.279 2.533 0 4.687-.533 6.463-1.598 1.776-1.066 3.125-2.628 4.048-4.688.947-2.083 1.42-4.628 1.42-7.635v-51.988ZM80.126 197.136c-4.924 0-9.244-1.172-12.961-3.515-3.693-2.344-6.582-5.623-8.665-9.837-2.06-4.214-3.09-9.138-3.09-14.773 0-5.681 1.03-10.641 3.09-14.879 2.083-4.238 4.972-7.528 8.665-9.872 3.717-2.344 8.037-3.516 12.961-3.516 4.925 0 9.233 1.172 12.927 3.516 3.716 2.344 6.605 5.634 8.664 9.872 2.084 4.238 3.125 9.198 3.125 14.879 0 5.635-1.041 10.559-3.125 14.773-2.06 4.214-4.948 7.493-8.664 9.837-3.694 2.343-8.002 3.515-12.927 3.515Zm0-7.528c3.741 0 6.819-.959 9.233-2.876 2.415-1.918 4.203-4.439 5.363-7.564 1.16-3.125 1.74-6.511 1.74-10.157 0-3.645-.58-7.043-1.74-10.191-1.16-3.149-2.948-5.694-5.363-7.635-2.414-1.942-5.492-2.912-9.233-2.912-3.74 0-6.818.97-9.233 2.912-2.414 1.941-4.202 4.486-5.362 7.635-1.16 3.148-1.74 6.546-1.74 10.191 0 3.646.58 7.032 1.74 10.157 1.16 3.125 2.948 5.646 5.362 7.564 2.415 1.917 5.493 2.876 9.233 2.876ZM118.772 196v-72.727h8.38v26.846h.711c.615-.947 1.467-2.154 2.556-3.622 1.113-1.491 2.699-2.817 4.759-3.977 2.083-1.184 4.9-1.776 8.452-1.776 4.592 0 8.641 1.149 12.145 3.445 3.503 2.296 6.238 5.552 8.203 9.766 1.965 4.214 2.947 9.185 2.947 14.914 0 5.777-.982 10.784-2.947 15.022-1.965 4.214-4.688 7.481-8.168 9.801-3.48 2.296-7.493 3.444-12.038 3.444-3.504 0-6.31-.58-8.417-1.74-2.107-1.183-3.728-2.521-4.865-4.012-1.136-1.516-2.012-2.77-2.627-3.765h-.995V196h-8.096Zm8.238-27.273c0 4.12.604 7.754 1.811 10.902 1.208 3.125 2.971 5.576 5.292 7.351 2.32 1.752 5.161 2.628 8.522 2.628 3.504 0 6.428-.923 8.772-2.77 2.367-1.87 4.143-4.38 5.326-7.528 1.208-3.173 1.811-6.7 1.811-10.583 0-3.835-.591-7.291-1.775-10.369-1.16-3.101-2.924-5.552-5.291-7.351-2.344-1.823-5.292-2.734-8.843-2.734-3.409 0-6.273.864-8.593 2.592-2.321 1.705-4.072 4.096-5.256 7.173-1.184 3.054-1.776 6.617-1.776 10.689ZM190.824 123.273l-.71 52.272h-8.239l-.71-52.272h9.659Zm-4.829 73.295c-1.752 0-3.256-.627-4.51-1.882-1.255-1.255-1.882-2.758-1.882-4.51 0-1.752.627-3.255 1.882-4.51 1.254-1.255 2.758-1.882 4.51-1.882 1.752 0 3.255.627 4.51 1.882 1.254 1.255 1.882 2.758 1.882 4.51a6.02 6.02 0 0 1-.888 3.196 6.634 6.634 0 0 1-2.308 2.344c-.947.568-2.013.852-3.196.852Z"
|
251
|
+
)!;
|
252
|
+
|
253
|
+
const paint = Skia.Paint();
|
254
|
+
paint.setColor(Skia.Color("#add8e6"));
|
255
|
+
canvas.drawPaint(paint);
|
256
|
+
paint.setColor(Skia.Color("red"));
|
257
|
+
const img1 = MakeInnerShadow(
|
258
|
+
Skia,
|
259
|
+
false,
|
260
|
+
0,
|
261
|
+
4,
|
262
|
+
1,
|
263
|
+
1,
|
264
|
+
Skia.Color("#00FF00"),
|
265
|
+
null
|
266
|
+
);
|
267
|
+
const img2 = Skia.ImageFilter.MakeDropShadow(
|
268
|
+
0,
|
269
|
+
4,
|
270
|
+
0,
|
271
|
+
0,
|
272
|
+
Skia.Color("#0000ff"),
|
273
|
+
null
|
274
|
+
);
|
275
|
+
paint.setImageFilter(Skia.ImageFilter.MakeCompose(img1, img2));
|
276
|
+
canvas.scale(3, 3);
|
277
|
+
canvas.drawPath(path, paint);
|
278
|
+
canvas.restore();
|
279
|
+
processResult(ckSurface, "snapshots/image-filter/test-shadow.png");
|
280
|
+
});
|
194
281
|
it("should show outer and inner shadows on text", async () => {
|
195
282
|
const path =
|
196
283
|
// eslint-disable-next-line max-len
|
@@ -205,7 +292,9 @@ describe("Test Image Filters", () => {
|
|
205
292
|
</Path>
|
206
293
|
</>
|
207
294
|
);
|
208
|
-
checkImage(img, "snapshots/image-filter/test-shadow.png"
|
295
|
+
checkImage(img, "snapshots/image-filter/test-shadow.png", {
|
296
|
+
maxPixelDiff: 1500,
|
297
|
+
});
|
209
298
|
});
|
210
299
|
itRunsE2eOnly("use the displacement map as documented", async () => {
|
211
300
|
const { oslo } = images;
|
@@ -14,7 +14,7 @@ import { isPath } from "../../skia/types";
|
|
14
14
|
import { E2E } from "../../__tests__/setup";
|
15
15
|
import { LoadSkiaWeb } from "../../web/LoadSkiaWeb";
|
16
16
|
import { SkiaSGRoot } from "../../sksg/Reconciler";
|
17
|
-
import type { Node } from "../../sksg/
|
17
|
+
import type { Node } from "../../sksg/Node";
|
18
18
|
|
19
19
|
import { SkiaObject } from "./e2e/setup";
|
20
20
|
|
@@ -45,6 +45,8 @@ export interface SkPaint extends SkJSIInstance<"Paint"> {
|
|
45
45
|
*/
|
46
46
|
reset(): void;
|
47
47
|
|
48
|
+
assign(paint: SkPaint): void;
|
49
|
+
|
48
50
|
/**
|
49
51
|
* Retrieves the alpha and RGB unpremultiplied. RGB are extended sRGB values
|
50
52
|
* (sRGB gamut, and encoded with the sRGB transfer function).
|
@@ -34,6 +34,10 @@ export class JsiSkPaint extends HostObject<Paint, "Paint"> implements SkPaint {
|
|
34
34
|
return new JsiSkPaint(this.CanvasKit, this.ref.copy());
|
35
35
|
}
|
36
36
|
|
37
|
+
assign(paint: JsiSkPaint) {
|
38
|
+
this.ref = paint.ref.copy();
|
39
|
+
}
|
40
|
+
|
37
41
|
reset() {
|
38
42
|
this.ref = new this.CanvasKit.Paint();
|
39
43
|
}
|
package/src/sksg/Container.ts
CHANGED
@@ -2,31 +2,34 @@ import { type SharedValue } from "react-native-reanimated";
|
|
2
2
|
|
3
3
|
import Rea from "../external/reanimated/ReanimatedProxy";
|
4
4
|
import type { Skia, SkCanvas } from "../skia/types";
|
5
|
-
import {
|
6
|
-
HAS_REANIMATED,
|
7
|
-
HAS_REANIMATED_3,
|
8
|
-
} from "../external/reanimated/renderHelpers";
|
9
5
|
|
10
|
-
import {
|
11
|
-
import
|
12
|
-
import {
|
6
|
+
import type { Node } from "./Node";
|
7
|
+
import { isSharedValue } from "./utils";
|
8
|
+
import { Recorder } from "./Recorder/Recorder";
|
9
|
+
import { visit } from "./Recorder/Visitor";
|
10
|
+
import { replay } from "./Recorder/Player";
|
11
|
+
import { createDrawingContext } from "./Recorder/DrawingContext";
|
12
|
+
import { createRecording, type Recording } from "./Recorder/Recording";
|
13
13
|
|
14
|
-
const drawOnscreen = (Skia: Skia, nativeId: number,
|
14
|
+
const drawOnscreen = (Skia: Skia, nativeId: number, recording: Recording) => {
|
15
15
|
"worklet";
|
16
16
|
const rec = Skia.PictureRecorder();
|
17
17
|
const canvas = rec.beginRecording();
|
18
|
-
//
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
// const start = performance.now();
|
19
|
+
|
20
|
+
// TODO: because the pool is not a shared value here, it is copied on every frame
|
21
|
+
const ctx = createDrawingContext(Skia, recording.paintPool, canvas);
|
22
|
+
//console.log(recording.commands);
|
23
|
+
replay(ctx, recording.commands);
|
24
24
|
const picture = rec.finishRecordingAsPicture();
|
25
|
+
//const end = performance.now();
|
26
|
+
//console.log("Recording time: ", end - start);
|
25
27
|
SkiaViewApi.setJsiProperty(nativeId, "picture", picture);
|
26
28
|
};
|
27
29
|
|
28
30
|
export class Container {
|
29
|
-
|
31
|
+
private _root: Node[] = [];
|
32
|
+
private _recording: Recording | null = null;
|
30
33
|
public unmounted = false;
|
31
34
|
|
32
35
|
private values = new Set<SharedValue<unknown>>();
|
@@ -40,20 +43,20 @@ export class Container {
|
|
40
43
|
|
41
44
|
set root(root: Node[]) {
|
42
45
|
const isOnscreen = this.nativeId !== -1;
|
43
|
-
if (HAS_REANIMATED && !HAS_REANIMATED_3) {
|
44
|
-
throw new Error("React Native Skia only supports Reanimated 3 and above");
|
45
|
-
}
|
46
46
|
if (isOnscreen) {
|
47
47
|
if (this.mapperId !== null) {
|
48
48
|
Rea.stopMapper(this.mapperId);
|
49
49
|
}
|
50
|
-
const { nativeId, Skia } = this;
|
50
|
+
const { nativeId, Skia, _recording } = this;
|
51
51
|
this.mapperId = Rea.startMapper(() => {
|
52
52
|
"worklet";
|
53
|
-
drawOnscreen(Skia, nativeId,
|
53
|
+
drawOnscreen(Skia, nativeId, _recording!);
|
54
54
|
}, Array.from(this.values));
|
55
55
|
}
|
56
56
|
this._root = root;
|
57
|
+
const recorder = new Recorder();
|
58
|
+
visit(recorder, root);
|
59
|
+
this._recording = createRecording(recorder.commands);
|
57
60
|
}
|
58
61
|
|
59
62
|
clear() {
|
@@ -62,13 +65,10 @@ export class Container {
|
|
62
65
|
|
63
66
|
redraw() {
|
64
67
|
const isOnscreen = this.nativeId !== -1;
|
65
|
-
if (HAS_REANIMATED && !HAS_REANIMATED_3) {
|
66
|
-
throw new Error("React Native Skia only supports Reanimated 3 and above");
|
67
|
-
}
|
68
68
|
if (isOnscreen) {
|
69
|
-
const { nativeId, Skia,
|
69
|
+
const { nativeId, Skia, _recording } = this;
|
70
70
|
Rea.runOnUI(() => {
|
71
|
-
drawOnscreen(Skia, nativeId,
|
71
|
+
drawOnscreen(Skia, nativeId, _recording!);
|
72
72
|
})();
|
73
73
|
}
|
74
74
|
}
|
@@ -94,9 +94,15 @@ export class Container {
|
|
94
94
|
}
|
95
95
|
|
96
96
|
drawOnCanvas(canvas: SkCanvas) {
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
if (!this._recording) {
|
98
|
+
throw new Error("No recording to draw");
|
99
|
+
}
|
100
|
+
const ctx = createDrawingContext(
|
101
|
+
this.Skia,
|
102
|
+
this._recording.paintPool,
|
103
|
+
canvas
|
104
|
+
);
|
105
|
+
//console.log(this._recording);
|
106
|
+
replay(ctx, this._recording.commands);
|
101
107
|
}
|
102
108
|
}
|
package/src/sksg/HostConfig.ts
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
import type { Fiber, HostConfig } from "react-reconciler";
|
3
3
|
import { DefaultEventPriority } from "react-reconciler/constants";
|
4
4
|
|
5
|
-
import { NodeType } from "../dom/types";
|
5
|
+
import type { NodeType } from "../dom/types";
|
6
6
|
import { shallowEq } from "../renderer/typeddash";
|
7
7
|
|
8
|
-
import type { Node } from "./
|
8
|
+
import type { Node } from "./Node";
|
9
9
|
import type { Container } from "./Container";
|
10
10
|
|
11
11
|
const DEBUG = false;
|
@@ -15,51 +15,6 @@ export const debug = (...args: Parameters<typeof console.log>) => {
|
|
15
15
|
}
|
16
16
|
};
|
17
17
|
|
18
|
-
const isDeclaration = (type: NodeType) => {
|
19
|
-
"worklet";
|
20
|
-
return (
|
21
|
-
// BlurMaskFilters
|
22
|
-
type === NodeType.BlurMaskFilter ||
|
23
|
-
// ImageFilters
|
24
|
-
type === NodeType.BlendImageFilter ||
|
25
|
-
type === NodeType.BlurImageFilter ||
|
26
|
-
type === NodeType.OffsetImageFilter ||
|
27
|
-
type === NodeType.DropShadowImageFilter ||
|
28
|
-
type === NodeType.MorphologyImageFilter ||
|
29
|
-
type === NodeType.DisplacementMapImageFilter ||
|
30
|
-
type === NodeType.RuntimeShaderImageFilter ||
|
31
|
-
// ColorFilters
|
32
|
-
type === NodeType.MatrixColorFilter ||
|
33
|
-
type === NodeType.BlendColorFilter ||
|
34
|
-
type === NodeType.LumaColorFilter ||
|
35
|
-
type === NodeType.LinearToSRGBGammaColorFilter ||
|
36
|
-
type === NodeType.SRGBToLinearGammaColorFilter ||
|
37
|
-
type === NodeType.LerpColorFilter ||
|
38
|
-
// Shaders
|
39
|
-
type === NodeType.Shader ||
|
40
|
-
type === NodeType.ImageShader ||
|
41
|
-
type === NodeType.ColorShader ||
|
42
|
-
type === NodeType.Turbulence ||
|
43
|
-
type === NodeType.FractalNoise ||
|
44
|
-
type === NodeType.LinearGradient ||
|
45
|
-
type === NodeType.RadialGradient ||
|
46
|
-
type === NodeType.SweepGradient ||
|
47
|
-
type === NodeType.TwoPointConicalGradient ||
|
48
|
-
// Path Effects
|
49
|
-
type === NodeType.CornerPathEffect ||
|
50
|
-
type === NodeType.DiscretePathEffect ||
|
51
|
-
type === NodeType.DashPathEffect ||
|
52
|
-
type === NodeType.Path1DPathEffect ||
|
53
|
-
type === NodeType.Path2DPathEffect ||
|
54
|
-
type === NodeType.SumPathEffect ||
|
55
|
-
type === NodeType.Line2DPathEffect ||
|
56
|
-
// Mixed
|
57
|
-
type === NodeType.Blend ||
|
58
|
-
// Paint
|
59
|
-
type === NodeType.Paint
|
60
|
-
);
|
61
|
-
};
|
62
|
-
|
63
18
|
type Instance = Node;
|
64
19
|
|
65
20
|
type Props = object;
|
@@ -129,16 +84,17 @@ export const sksgHostConfig: SkiaHostConfig = {
|
|
129
84
|
|
130
85
|
createInstance(
|
131
86
|
type,
|
132
|
-
|
87
|
+
propsWithChildren,
|
133
88
|
container,
|
134
89
|
_hostContext,
|
135
90
|
_internalInstanceHandle
|
136
91
|
) {
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
93
|
+
const { children, ...props } = propsWithChildren as any;
|
137
94
|
debug("createInstance", type);
|
138
95
|
container.registerValues(props);
|
139
96
|
const instance = {
|
140
97
|
type,
|
141
|
-
isDeclaration: isDeclaration(type),
|
142
98
|
props,
|
143
99
|
children: [],
|
144
100
|
};
|
@@ -231,7 +187,6 @@ export const sksgHostConfig: SkiaHostConfig = {
|
|
231
187
|
type: instance.type,
|
232
188
|
props: newProps,
|
233
189
|
children: keepChildren ? [...instance.children] : [],
|
234
|
-
isDeclaration: instance.isDeclaration,
|
235
190
|
};
|
236
191
|
},
|
237
192
|
|
package/src/sksg/Node.ts
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
import { NodeType } from "../dom/types";
|
2
|
+
|
3
|
+
export interface Node<Props = unknown> {
|
4
|
+
type: NodeType;
|
5
|
+
props: Props;
|
6
|
+
children: Node[];
|
7
|
+
}
|
8
|
+
|
9
|
+
export const isColorFilter = (type: NodeType) => {
|
10
|
+
"worklet";
|
11
|
+
return (
|
12
|
+
type === NodeType.BlendColorFilter ||
|
13
|
+
type === NodeType.MatrixColorFilter ||
|
14
|
+
type === NodeType.LerpColorFilter ||
|
15
|
+
type === NodeType.LumaColorFilter ||
|
16
|
+
type === NodeType.SRGBToLinearGammaColorFilter ||
|
17
|
+
type === NodeType.LinearToSRGBGammaColorFilter
|
18
|
+
);
|
19
|
+
};
|
20
|
+
|
21
|
+
export const isPathEffect = (type: NodeType) => {
|
22
|
+
"worklet";
|
23
|
+
return (
|
24
|
+
type === NodeType.DiscretePathEffect ||
|
25
|
+
type === NodeType.DashPathEffect ||
|
26
|
+
type === NodeType.Path1DPathEffect ||
|
27
|
+
type === NodeType.Path2DPathEffect ||
|
28
|
+
type === NodeType.CornerPathEffect ||
|
29
|
+
type === NodeType.SumPathEffect ||
|
30
|
+
type === NodeType.Line2DPathEffect
|
31
|
+
);
|
32
|
+
};
|
33
|
+
|
34
|
+
export const isImageFilter = (type: NodeType) => {
|
35
|
+
"worklet";
|
36
|
+
return (
|
37
|
+
type === NodeType.OffsetImageFilter ||
|
38
|
+
type === NodeType.DisplacementMapImageFilter ||
|
39
|
+
type === NodeType.BlurImageFilter ||
|
40
|
+
type === NodeType.DropShadowImageFilter ||
|
41
|
+
type === NodeType.MorphologyImageFilter ||
|
42
|
+
type === NodeType.BlendImageFilter ||
|
43
|
+
type === NodeType.RuntimeShaderImageFilter
|
44
|
+
);
|
45
|
+
};
|
46
|
+
|
47
|
+
export const isShader = (type: NodeType) => {
|
48
|
+
"worklet";
|
49
|
+
return (
|
50
|
+
type === NodeType.Shader ||
|
51
|
+
type === NodeType.ImageShader ||
|
52
|
+
type === NodeType.ColorShader ||
|
53
|
+
type === NodeType.Turbulence ||
|
54
|
+
type === NodeType.FractalNoise ||
|
55
|
+
type === NodeType.LinearGradient ||
|
56
|
+
type === NodeType.RadialGradient ||
|
57
|
+
type === NodeType.SweepGradient ||
|
58
|
+
type === NodeType.TwoPointConicalGradient
|
59
|
+
);
|
60
|
+
};
|
61
|
+
|
62
|
+
export const sortNodeChildren = (parent: Node) => {
|
63
|
+
"worklet";
|
64
|
+
const maskFilters: Node[] = [];
|
65
|
+
const colorFilters: Node[] = [];
|
66
|
+
const shaders: Node[] = [];
|
67
|
+
const imageFilters: Node[] = [];
|
68
|
+
const pathEffects: Node[] = [];
|
69
|
+
const drawings: Node[] = [];
|
70
|
+
const paints: Node[] = [];
|
71
|
+
parent.children.forEach((node) => {
|
72
|
+
if (isColorFilter(node.type)) {
|
73
|
+
colorFilters.push(node);
|
74
|
+
} else if (node.type === NodeType.BlurMaskFilter) {
|
75
|
+
maskFilters.push(node);
|
76
|
+
} else if (isPathEffect(node.type)) {
|
77
|
+
pathEffects.push(node);
|
78
|
+
} else if (isImageFilter(node.type)) {
|
79
|
+
imageFilters.push(node);
|
80
|
+
} else if (isShader(node.type)) {
|
81
|
+
shaders.push(node);
|
82
|
+
} else if (node.type === NodeType.Paint) {
|
83
|
+
paints.push(node);
|
84
|
+
} else if (node.type === NodeType.Blend) {
|
85
|
+
if (node.children[0] && isImageFilter(node.children[0].type)) {
|
86
|
+
node.type = NodeType.BlendImageFilter;
|
87
|
+
imageFilters.push(node);
|
88
|
+
} else {
|
89
|
+
node.type = NodeType.Blend;
|
90
|
+
shaders.push(node);
|
91
|
+
}
|
92
|
+
} else {
|
93
|
+
drawings.push(node);
|
94
|
+
}
|
95
|
+
});
|
96
|
+
return {
|
97
|
+
colorFilters,
|
98
|
+
drawings,
|
99
|
+
maskFilters,
|
100
|
+
shaders,
|
101
|
+
pathEffects,
|
102
|
+
imageFilters,
|
103
|
+
paints,
|
104
|
+
};
|
105
|
+
};
|
@@ -0,0 +1,171 @@
|
|
1
|
+
import type { SharedValue } from "react-native-reanimated";
|
2
|
+
|
3
|
+
import type {
|
4
|
+
BlurMaskFilterProps,
|
5
|
+
CircleProps,
|
6
|
+
CTMProps,
|
7
|
+
ImageProps,
|
8
|
+
PointsProps,
|
9
|
+
PathProps,
|
10
|
+
RectProps,
|
11
|
+
RoundedRectProps,
|
12
|
+
OvalProps,
|
13
|
+
LineProps,
|
14
|
+
PatchProps,
|
15
|
+
VerticesProps,
|
16
|
+
DiffRectProps,
|
17
|
+
TextProps,
|
18
|
+
TextPathProps,
|
19
|
+
TextBlobProps,
|
20
|
+
GlyphsProps,
|
21
|
+
PictureProps,
|
22
|
+
ImageSVGProps,
|
23
|
+
ParagraphProps,
|
24
|
+
AtlasProps,
|
25
|
+
DrawingNodeProps,
|
26
|
+
} from "../../dom/types";
|
27
|
+
|
28
|
+
// export enum CommandType {
|
29
|
+
// // Context
|
30
|
+
// SavePaint = "SavePaint",
|
31
|
+
// RestorePaint = "RestorePaint",
|
32
|
+
// SaveCTM = "SaveCTM",
|
33
|
+
// RestoreCTM = "RestoreCTM",
|
34
|
+
// PushColorFilter = "PushColorFilter",
|
35
|
+
// PushBlurMaskFilter = "PushBlurMaskFilter",
|
36
|
+
// PushImageFilter = "PushImageFilter",
|
37
|
+
// PushPathEffect = "PushPathEffect",
|
38
|
+
// PushShader = "PushShader",
|
39
|
+
// ComposeColorFilter = "ComposeColorFilter",
|
40
|
+
// ComposeImageFilter = "ComposeImageFilter",
|
41
|
+
// ComposePathEffect = "ComposePathEffect",
|
42
|
+
// MaterializePaint = "MaterializePaint",
|
43
|
+
// SaveBackdropFilter = "SaveBackdropFilter",
|
44
|
+
// SaveLayer = "SaveLayer",
|
45
|
+
// RestorePaintDeclaration = "RestorePaintDeclaration",
|
46
|
+
// // Drawing
|
47
|
+
// DrawBox = "DrawBox",
|
48
|
+
// DrawImage = "DrawImage",
|
49
|
+
// DrawCircle = "DrawCircle",
|
50
|
+
// DrawPaint = "DrawPaint",
|
51
|
+
// DrawPoints = "DrawPoints",
|
52
|
+
// DrawPath = "DrawPath",
|
53
|
+
// DrawRect = "DrawRect",
|
54
|
+
// DrawRRect = "DrawRRect",
|
55
|
+
// DrawOval = "DrawOval",
|
56
|
+
// DrawLine = "DrawLine",
|
57
|
+
// DrawPatch = "DrawPatch",
|
58
|
+
// DrawVertices = "DrawVertices",
|
59
|
+
// DrawDiffRect = "DrawDiffRect",
|
60
|
+
// DrawText = "DrawText",
|
61
|
+
// DrawTextPath = "DrawTextPath",
|
62
|
+
// DrawTextBlob = "DrawTextBlob",
|
63
|
+
// DrawGlyphs = "DrawGlyphs",
|
64
|
+
// DrawPicture = "DrawPicture",
|
65
|
+
// DrawImageSVG = "DrawImageSVG",
|
66
|
+
// DrawParagraph = "DrawParagraph",
|
67
|
+
// DrawAtlas = "DrawAtlas",
|
68
|
+
// }
|
69
|
+
export enum CommandType {
|
70
|
+
// Context
|
71
|
+
SavePaint,
|
72
|
+
RestorePaint,
|
73
|
+
SaveCTM,
|
74
|
+
RestoreCTM,
|
75
|
+
PushColorFilter,
|
76
|
+
PushBlurMaskFilter,
|
77
|
+
PushImageFilter,
|
78
|
+
PushPathEffect,
|
79
|
+
PushShader,
|
80
|
+
ComposeColorFilter,
|
81
|
+
ComposeImageFilter,
|
82
|
+
ComposePathEffect,
|
83
|
+
MaterializePaint,
|
84
|
+
SaveBackdropFilter,
|
85
|
+
SaveLayer,
|
86
|
+
RestorePaintDeclaration,
|
87
|
+
// Drawing
|
88
|
+
DrawBox,
|
89
|
+
DrawImage,
|
90
|
+
DrawCircle,
|
91
|
+
DrawPaint,
|
92
|
+
DrawPoints,
|
93
|
+
DrawPath,
|
94
|
+
DrawRect,
|
95
|
+
DrawRRect,
|
96
|
+
DrawOval,
|
97
|
+
DrawLine,
|
98
|
+
DrawPatch,
|
99
|
+
DrawVertices,
|
100
|
+
DrawDiffRect,
|
101
|
+
DrawText,
|
102
|
+
DrawTextPath,
|
103
|
+
DrawTextBlob,
|
104
|
+
DrawGlyphs,
|
105
|
+
DrawPicture,
|
106
|
+
DrawImageSVG,
|
107
|
+
DrawParagraph,
|
108
|
+
DrawAtlas,
|
109
|
+
}
|
110
|
+
|
111
|
+
export type Command<T extends CommandType = CommandType> = {
|
112
|
+
type: T;
|
113
|
+
[key: string]: unknown;
|
114
|
+
};
|
115
|
+
|
116
|
+
export const materializeProps = (command: {
|
117
|
+
props: Record<string, unknown>;
|
118
|
+
animatedProps?: Record<string, SharedValue<unknown>>;
|
119
|
+
}) => {
|
120
|
+
"worklet";
|
121
|
+
if (command.animatedProps) {
|
122
|
+
for (const key in command.animatedProps) {
|
123
|
+
command.props[key] = command.animatedProps[key].value;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
};
|
127
|
+
|
128
|
+
export const isCommand = <T extends CommandType>(
|
129
|
+
command: Command,
|
130
|
+
type: T
|
131
|
+
): command is Command<T> => {
|
132
|
+
"worklet";
|
133
|
+
return command.type === type;
|
134
|
+
};
|
135
|
+
|
136
|
+
interface Props {
|
137
|
+
[CommandType.DrawImage]: ImageProps;
|
138
|
+
[CommandType.DrawCircle]: CircleProps;
|
139
|
+
[CommandType.SaveCTM]: CTMProps;
|
140
|
+
[CommandType.SavePaint]: DrawingNodeProps;
|
141
|
+
[CommandType.PushBlurMaskFilter]: BlurMaskFilterProps;
|
142
|
+
[CommandType.DrawPoints]: PointsProps;
|
143
|
+
[CommandType.DrawPath]: PathProps;
|
144
|
+
[CommandType.DrawRect]: RectProps;
|
145
|
+
[CommandType.DrawRRect]: RoundedRectProps;
|
146
|
+
[CommandType.DrawOval]: OvalProps;
|
147
|
+
[CommandType.DrawLine]: LineProps;
|
148
|
+
[CommandType.DrawPatch]: PatchProps;
|
149
|
+
[CommandType.DrawVertices]: VerticesProps;
|
150
|
+
[CommandType.DrawDiffRect]: DiffRectProps;
|
151
|
+
[CommandType.DrawText]: TextProps;
|
152
|
+
[CommandType.DrawTextPath]: TextPathProps;
|
153
|
+
[CommandType.DrawTextBlob]: TextBlobProps;
|
154
|
+
[CommandType.DrawGlyphs]: GlyphsProps;
|
155
|
+
[CommandType.DrawPicture]: PictureProps;
|
156
|
+
[CommandType.DrawImageSVG]: ImageSVGProps;
|
157
|
+
[CommandType.DrawParagraph]: ParagraphProps;
|
158
|
+
[CommandType.DrawAtlas]: AtlasProps;
|
159
|
+
}
|
160
|
+
|
161
|
+
interface DrawCommand<T extends CommandType> extends Command<T> {
|
162
|
+
props: T extends keyof Props ? Props[T] : never;
|
163
|
+
}
|
164
|
+
|
165
|
+
export const isDrawCommand = <T extends keyof Props>(
|
166
|
+
command: Command,
|
167
|
+
type: T
|
168
|
+
): command is DrawCommand<T> => {
|
169
|
+
"worklet";
|
170
|
+
return command.type === type;
|
171
|
+
};
|