@shopify/react-native-skia 1.7.5 → 1.7.7
Sign up to get free protection for your applications and to get access to all the features.
- package/android/cpp/rnskia-android/OpenGLWindowContext.h +8 -1
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +4 -4
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +2 -2
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +13 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaTextureView.java +24 -1
- package/cpp/rnskia/RNSkJsiViewApi.h +0 -3
- package/cpp/rnskia/RNSkView.h +6 -6
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +2 -2
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +2 -2
- package/lib/commonjs/dom/nodes/JsiSkDOM.js +2 -2
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Circle.d.ts +2 -3
- package/lib/commonjs/dom/nodes/datatypes/Circle.js +11 -6
- package/lib/commonjs/dom/nodes/datatypes/Circle.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Enum.js +1 -0
- package/lib/commonjs/dom/nodes/datatypes/Enum.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Fitting.js +1 -10
- package/lib/commonjs/dom/nodes/datatypes/Fitting.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Gradient.js +3 -2
- package/lib/commonjs/dom/nodes/datatypes/Gradient.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Path.js +4 -1
- package/lib/commonjs/dom/nodes/datatypes/Path.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Radius.js +1 -0
- package/lib/commonjs/dom/nodes/datatypes/Radius.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Rect.d.ts +3 -1
- package/lib/commonjs/dom/nodes/datatypes/Rect.js +17 -7
- package/lib/commonjs/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Transform.d.ts +2 -1
- package/lib/commonjs/dom/nodes/datatypes/Transform.js +32 -1
- package/lib/commonjs/dom/nodes/datatypes/Transform.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/Box.js +4 -5
- package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/CircleNode.js +1 -1
- package/lib/commonjs/dom/nodes/drawings/CircleNode.js.map +1 -1
- package/lib/commonjs/dom/types/DeclarationContext.d.ts +4 -4
- package/lib/commonjs/dom/types/DeclarationContext.js +8 -2
- package/lib/commonjs/dom/types/DeclarationContext.js.map +1 -1
- package/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/commonjs/external/reanimated/renderHelpers.js +11 -6
- package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/commonjs/renderer/HostConfig.js +8 -4
- package/lib/commonjs/renderer/HostConfig.js.map +1 -1
- package/lib/commonjs/renderer/__tests__/setup.d.ts +2 -3
- package/lib/commonjs/renderer/processors/Animations/Animations.d.ts +1 -2
- package/lib/commonjs/renderer/processors/Animations/Animations.js.map +1 -1
- package/lib/commonjs/renderer/typeddash.js +5 -1
- package/lib/commonjs/renderer/typeddash.js.map +1 -1
- package/lib/commonjs/skia/__tests__/setup.d.ts +0 -3
- package/lib/commonjs/skia/types/Path/Path.js +5 -1
- package/lib/commonjs/skia/types/Path/Path.js.map +1 -1
- package/lib/commonjs/skia/types/RRect.d.ts +1 -1
- package/lib/commonjs/skia/types/RRect.js +7 -3
- package/lib/commonjs/skia/types/RRect.js.map +1 -1
- package/lib/commonjs/skia/types/Shader/Shader.js +8 -6
- package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.js +1 -1
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.js.map +1 -1
- package/lib/commonjs/sksg/Container.d.ts +19 -0
- package/lib/commonjs/sksg/Container.js +102 -0
- package/lib/commonjs/sksg/Container.js.map +1 -0
- package/lib/commonjs/sksg/DrawingContext.d.ts +16 -0
- package/lib/commonjs/sksg/DrawingContext.js +186 -0
- package/lib/commonjs/sksg/DrawingContext.js.map +1 -0
- package/lib/commonjs/sksg/HostConfig.d.ts +19 -0
- package/lib/commonjs/sksg/HostConfig.js +168 -0
- package/lib/commonjs/sksg/HostConfig.js.map +1 -0
- package/lib/commonjs/sksg/Reconciler.d.ts +17 -0
- package/lib/commonjs/sksg/Reconciler.js +54 -0
- package/lib/commonjs/sksg/Reconciler.js.map +1 -0
- package/lib/commonjs/sksg/__tests__/MockDeclaration.d.ts +57 -0
- package/lib/commonjs/sksg/nodes/Node.d.ts +7 -0
- package/lib/commonjs/sksg/nodes/Node.js +6 -0
- package/lib/commonjs/sksg/nodes/Node.js.map +1 -0
- package/lib/commonjs/sksg/nodes/colorFilters.d.ts +7 -0
- package/lib/commonjs/sksg/nodes/colorFilters.js +55 -0
- package/lib/commonjs/sksg/nodes/colorFilters.js.map +1 -0
- package/lib/commonjs/sksg/nodes/context.d.ts +3 -0
- package/lib/commonjs/sksg/nodes/context.js +448 -0
- package/lib/commonjs/sksg/nodes/context.js.map +1 -0
- package/lib/commonjs/sksg/nodes/drawings.d.ts +31 -0
- package/lib/commonjs/sksg/nodes/drawings.js +361 -0
- package/lib/commonjs/sksg/nodes/drawings.js.map +1 -0
- package/lib/commonjs/sksg/nodes/imageFilters.d.ts +14 -0
- package/lib/commonjs/sksg/nodes/imageFilters.js +135 -0
- package/lib/commonjs/sksg/nodes/imageFilters.js.map +1 -0
- package/lib/commonjs/sksg/nodes/index.d.ts +3 -0
- package/lib/commonjs/sksg/nodes/index.js +39 -0
- package/lib/commonjs/sksg/nodes/index.js.map +1 -0
- package/lib/commonjs/sksg/nodes/paint.d.ts +2 -0
- package/lib/commonjs/sksg/nodes/paint.js +80 -0
- package/lib/commonjs/sksg/nodes/paint.js.map +1 -0
- package/lib/commonjs/sksg/nodes/pathEffects.d.ts +8 -0
- package/lib/commonjs/sksg/nodes/pathEffects.js +84 -0
- package/lib/commonjs/sksg/nodes/pathEffects.js.map +1 -0
- package/lib/commonjs/sksg/nodes/shaders.d.ts +10 -0
- package/lib/commonjs/sksg/nodes/shaders.js +156 -0
- package/lib/commonjs/sksg/nodes/shaders.js.map +1 -0
- package/lib/commonjs/sksg/nodes/utils.d.ts +3 -0
- package/lib/commonjs/sksg/nodes/utils.js +25 -0
- package/lib/commonjs/sksg/nodes/utils.js.map +1 -0
- package/lib/commonjs/views/SkiaDomView.js +3 -1
- package/lib/commonjs/views/SkiaDomView.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.js +0 -2
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/types.d.ts +2 -2
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.js +2 -2
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Circle.d.ts +2 -3
- package/lib/module/dom/nodes/datatypes/Circle.js +12 -6
- package/lib/module/dom/nodes/datatypes/Circle.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Enum.js +2 -0
- package/lib/module/dom/nodes/datatypes/Enum.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Fitting.js +2 -10
- package/lib/module/dom/nodes/datatypes/Fitting.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Gradient.js +4 -2
- package/lib/module/dom/nodes/datatypes/Gradient.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Path.js +5 -1
- package/lib/module/dom/nodes/datatypes/Path.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Radius.js +2 -0
- package/lib/module/dom/nodes/datatypes/Radius.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Rect.d.ts +3 -1
- package/lib/module/dom/nodes/datatypes/Rect.js +14 -5
- package/lib/module/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Transform.d.ts +2 -1
- package/lib/module/dom/nodes/datatypes/Transform.js +31 -0
- package/lib/module/dom/nodes/datatypes/Transform.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Box.js +1 -2
- package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/module/dom/nodes/drawings/CircleNode.js +1 -1
- package/lib/module/dom/nodes/drawings/CircleNode.js.map +1 -1
- package/lib/module/dom/types/DeclarationContext.d.ts +4 -4
- package/lib/module/dom/types/DeclarationContext.js +9 -2
- package/lib/module/dom/types/DeclarationContext.js.map +1 -1
- package/lib/module/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/module/external/reanimated/renderHelpers.js +8 -4
- package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/module/renderer/HostConfig.js +8 -4
- package/lib/module/renderer/HostConfig.js.map +1 -1
- package/lib/module/renderer/__tests__/setup.d.ts +2 -3
- package/lib/module/renderer/processors/Animations/Animations.d.ts +1 -2
- package/lib/module/renderer/processors/Animations/Animations.js.map +1 -1
- package/lib/module/renderer/typeddash.js +5 -1
- package/lib/module/renderer/typeddash.js.map +1 -1
- package/lib/module/skia/__tests__/setup.d.ts +0 -3
- package/lib/module/skia/types/Path/Path.js +5 -1
- package/lib/module/skia/types/Path/Path.js.map +1 -1
- package/lib/module/skia/types/RRect.d.ts +1 -1
- package/lib/module/skia/types/RRect.js +7 -3
- package/lib/module/skia/types/RRect.js.map +1 -1
- package/lib/module/skia/types/Shader/Shader.js +9 -6
- package/lib/module/skia/types/Shader/Shader.js.map +1 -1
- package/lib/module/skia/web/JsiSkParagraphStyle.js +1 -1
- package/lib/module/skia/web/JsiSkParagraphStyle.js.map +1 -1
- package/lib/module/sksg/Container.d.ts +19 -0
- package/lib/module/sksg/Container.js +94 -0
- package/lib/module/sksg/Container.js.map +1 -0
- package/lib/module/sksg/DrawingContext.d.ts +16 -0
- package/lib/module/sksg/DrawingContext.js +180 -0
- package/lib/module/sksg/DrawingContext.js.map +1 -0
- package/lib/module/sksg/HostConfig.d.ts +19 -0
- package/lib/module/sksg/HostConfig.js +161 -0
- package/lib/module/sksg/HostConfig.js.map +1 -0
- package/lib/module/sksg/Reconciler.d.ts +17 -0
- package/lib/module/sksg/Reconciler.js +46 -0
- package/lib/module/sksg/Reconciler.js.map +1 -0
- package/lib/module/sksg/__tests__/MockDeclaration.d.ts +57 -0
- package/lib/module/sksg/nodes/Node.d.ts +7 -0
- package/lib/module/sksg/nodes/Node.js +2 -0
- package/lib/module/sksg/nodes/Node.js.map +1 -0
- package/lib/module/sksg/nodes/colorFilters.d.ts +7 -0
- package/lib/module/sksg/nodes/colorFilters.js +44 -0
- package/lib/module/sksg/nodes/colorFilters.js.map +1 -0
- package/lib/module/sksg/nodes/context.d.ts +3 -0
- package/lib/module/sksg/nodes/context.js +443 -0
- package/lib/module/sksg/nodes/context.js.map +1 -0
- package/lib/module/sksg/nodes/drawings.d.ts +31 -0
- package/lib/module/sksg/nodes/drawings.js +334 -0
- package/lib/module/sksg/nodes/drawings.js.map +1 -0
- package/lib/module/sksg/nodes/imageFilters.d.ts +14 -0
- package/lib/module/sksg/nodes/imageFilters.js +122 -0
- package/lib/module/sksg/nodes/imageFilters.js.map +1 -0
- package/lib/module/sksg/nodes/index.d.ts +3 -0
- package/lib/module/sksg/nodes/index.js +4 -0
- package/lib/module/sksg/nodes/index.js.map +1 -0
- package/lib/module/sksg/nodes/paint.d.ts +2 -0
- package/lib/module/sksg/nodes/paint.js +74 -0
- package/lib/module/sksg/nodes/paint.js.map +1 -0
- package/lib/module/sksg/nodes/pathEffects.d.ts +8 -0
- package/lib/module/sksg/nodes/pathEffects.js +72 -0
- package/lib/module/sksg/nodes/pathEffects.js.map +1 -0
- package/lib/module/sksg/nodes/shaders.d.ts +10 -0
- package/lib/module/sksg/nodes/shaders.js +142 -0
- package/lib/module/sksg/nodes/shaders.js.map +1 -0
- package/lib/module/sksg/nodes/utils.d.ts +3 -0
- package/lib/module/sksg/nodes/utils.js +18 -0
- package/lib/module/sksg/nodes/utils.js.map +1 -0
- package/lib/module/views/SkiaDomView.js +3 -1
- package/lib/module/views/SkiaDomView.js.map +1 -1
- package/lib/module/views/SkiaPictureView.js +0 -2
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/types.d.ts +2 -2
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Circle.d.ts +1 -1
- package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Rect.d.ts +2 -0
- package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Transform.d.ts +1 -0
- package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/typescript/lib/commonjs/renderer/HostConfig.d.ts +3 -1
- package/lib/typescript/lib/commonjs/sksg/Container.d.ts +16 -0
- package/lib/typescript/lib/commonjs/sksg/DrawingContext.d.ts +26 -0
- package/lib/typescript/lib/commonjs/sksg/HostConfig.d.ts +50 -0
- package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +16 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/Node.d.ts +1 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/colorFilters.d.ts +7 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/context.d.ts +2 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/drawings.d.ts +23 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/imageFilters.d.ts +10 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/index.d.ts +1 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/paint.d.ts +2 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/pathEffects.d.ts +8 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/shaders.d.ts +10 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/utils.d.ts +3 -0
- package/lib/typescript/lib/module/dom/nodes/datatypes/Circle.d.ts +1 -1
- package/lib/typescript/lib/module/dom/nodes/datatypes/Rect.d.ts +2 -0
- package/lib/typescript/lib/module/dom/nodes/datatypes/Transform.d.ts +1 -0
- package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/typescript/lib/module/mock/index.d.ts +4 -1
- package/lib/typescript/lib/module/renderer/HostConfig.d.ts +3 -1
- package/lib/typescript/lib/module/sksg/Container.d.ts +15 -0
- package/lib/typescript/lib/module/sksg/DrawingContext.d.ts +26 -0
- package/lib/typescript/lib/module/sksg/HostConfig.d.ts +49 -0
- package/lib/typescript/lib/module/sksg/Reconciler.d.ts +15 -0
- package/lib/typescript/lib/module/sksg/nodes/colorFilters.d.ts +6 -0
- package/lib/typescript/lib/module/sksg/nodes/context.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/nodes/drawings.d.ts +22 -0
- package/lib/typescript/lib/module/sksg/nodes/imageFilters.d.ts +9 -0
- package/lib/typescript/lib/module/sksg/nodes/index.d.ts +3 -0
- package/lib/typescript/lib/module/sksg/nodes/paint.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/nodes/pathEffects.d.ts +7 -0
- package/lib/typescript/lib/module/sksg/nodes/shaders.d.ts +9 -0
- package/lib/typescript/lib/module/sksg/nodes/utils.d.ts +2 -0
- package/lib/typescript/src/dom/nodes/datatypes/Circle.d.ts +2 -3
- package/lib/typescript/src/dom/nodes/datatypes/Rect.d.ts +3 -1
- package/lib/typescript/src/dom/nodes/datatypes/Transform.d.ts +2 -1
- package/lib/typescript/src/dom/types/DeclarationContext.d.ts +4 -4
- package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/typescript/src/renderer/__tests__/setup.d.ts +2 -3
- package/lib/typescript/src/renderer/processors/Animations/Animations.d.ts +1 -2
- package/lib/typescript/src/skia/__tests__/setup.d.ts +0 -3
- package/lib/typescript/src/skia/types/RRect.d.ts +1 -1
- package/lib/typescript/src/sksg/Container.d.ts +19 -0
- package/lib/typescript/src/sksg/DrawingContext.d.ts +16 -0
- package/lib/typescript/src/sksg/HostConfig.d.ts +19 -0
- package/lib/typescript/src/sksg/Reconciler.d.ts +17 -0
- package/lib/typescript/src/sksg/__tests__/MockDeclaration.d.ts +57 -0
- package/lib/typescript/src/sksg/nodes/Node.d.ts +7 -0
- package/lib/typescript/src/sksg/nodes/colorFilters.d.ts +7 -0
- package/lib/typescript/src/sksg/nodes/context.d.ts +3 -0
- package/lib/typescript/src/sksg/nodes/drawings.d.ts +31 -0
- package/lib/typescript/src/sksg/nodes/imageFilters.d.ts +14 -0
- package/lib/typescript/src/sksg/nodes/index.d.ts +3 -0
- package/lib/typescript/src/sksg/nodes/paint.d.ts +2 -0
- package/lib/typescript/src/sksg/nodes/pathEffects.d.ts +8 -0
- package/lib/typescript/src/sksg/nodes/shaders.d.ts +10 -0
- package/lib/typescript/src/sksg/nodes/utils.d.ts +3 -0
- package/lib/typescript/src/views/types.d.ts +2 -2
- package/libs/{ios → apple}/libskia.xcframework/Info.plist +15 -0
- package/libs/{ios → apple}/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/{ios → apple}/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/apple/libskia.xcframework/macos-arm64_x86_64/libskia.a +0 -0
- package/libs/{ios → apple}/libskottie.xcframework/Info.plist +20 -5
- package/libs/{ios → apple}/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/{ios → apple}/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/apple/libskottie.xcframework/macos-arm64_x86_64/libskottie.a +0 -0
- package/libs/{ios → apple}/libskparagraph.xcframework/Info.plist +20 -5
- package/libs/{ios → apple}/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/{ios → apple}/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/apple/libskparagraph.xcframework/macos-arm64_x86_64/libskparagraph.a +0 -0
- package/libs/{ios → apple}/libsksg.xcframework/Info.plist +15 -0
- package/libs/{ios → apple}/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/{ios → apple}/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/apple/libsksg.xcframework/macos-arm64_x86_64/libsksg.a +0 -0
- package/libs/{ios → apple}/libskshaper.xcframework/Info.plist +20 -5
- package/libs/{ios → apple}/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/{ios → apple}/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/apple/libskshaper.xcframework/macos-arm64_x86_64/libskshaper.a +0 -0
- package/libs/{ios → apple}/libskunicode_core.xcframework/Info.plist +18 -3
- package/libs/{ios → apple}/libskunicode_core.xcframework/ios-arm64_arm64e/libskunicode_core.a +0 -0
- package/libs/{ios → apple}/libskunicode_core.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
- package/libs/apple/libskunicode_core.xcframework/macos-arm64_x86_64/libskunicode_core.a +0 -0
- package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/Info.plist +15 -0
- package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
- package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
- package/libs/apple/libskunicode_libgrapheme.xcframework/macos-arm64_x86_64/libskunicode_libgrapheme.a +0 -0
- package/libs/{ios → apple}/libsvg.xcframework/Info.plist +15 -0
- package/libs/{ios → apple}/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/{ios → apple}/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/libs/apple/libsvg.xcframework/macos-arm64_x86_64/libsvg.a +0 -0
- package/package.json +3 -3
- package/react-native-skia.podspec +9 -9
- package/src/__tests__/setup.ts +1 -1
- package/src/__tests__/snapshots/sksg/breathe-0.png +0 -0
- package/src/__tests__/snapshots/sksg/breathe.png +0 -0
- package/src/__tests__/snapshots/sksg/simple.png +0 -0
- package/src/__tests__/snapshots/sksg/simple2.png +0 -0
- package/src/dom/nodes/JsiSkDOM.ts +2 -4
- package/src/dom/nodes/datatypes/Circle.ts +7 -5
- package/src/dom/nodes/datatypes/Enum.ts +2 -0
- package/src/dom/nodes/datatypes/Fitting.ts +2 -5
- package/src/dom/nodes/datatypes/Gradient.ts +4 -7
- package/src/dom/nodes/datatypes/Path.ts +5 -2
- package/src/dom/nodes/datatypes/Radius.ts +2 -0
- package/src/dom/nodes/datatypes/Rect.ts +40 -6
- package/src/dom/nodes/datatypes/Transform.ts +29 -1
- package/src/dom/nodes/drawings/Box.ts +1 -29
- package/src/dom/nodes/drawings/CircleNode.ts +1 -1
- package/src/dom/types/DeclarationContext.ts +12 -2
- package/src/external/reanimated/renderHelpers.ts +8 -4
- package/src/renderer/HostConfig.ts +10 -4
- package/src/renderer/__tests__/documentation/shapes/Box.spec.tsx +2 -2
- package/src/renderer/__tests__/setup.tsx +17 -15
- package/src/renderer/processors/Animations/Animations.ts +1 -5
- package/src/renderer/typeddash.ts +4 -2
- package/src/skia/__tests__/setup.ts +1 -51
- package/src/skia/types/Path/Path.ts +4 -2
- package/src/skia/types/RRect.ts +9 -3
- package/src/skia/types/Shader/Shader.ts +7 -4
- package/src/skia/web/JsiSkParagraphStyle.ts +1 -3
- package/src/sksg/Container.ts +102 -0
- package/src/sksg/DrawingContext.ts +221 -0
- package/src/sksg/HostConfig.ts +287 -0
- package/src/sksg/Reconciler.ts +59 -0
- package/src/sksg/__tests__/Declarations.spec.tsx +235 -0
- package/src/sksg/__tests__/MockDeclaration.ts +140 -0
- package/src/sksg/__tests__/Simple.spec.tsx +148 -0
- package/src/sksg/nodes/Node.ts +8 -0
- package/src/sksg/nodes/colorFilters.ts +60 -0
- package/src/sksg/nodes/context.ts +489 -0
- package/src/sksg/nodes/drawings.ts +393 -0
- package/src/sksg/nodes/imageFilters.ts +183 -0
- package/src/sksg/nodes/index.ts +3 -0
- package/src/sksg/nodes/paint.ts +75 -0
- package/src/sksg/nodes/pathEffects.ts +95 -0
- package/src/sksg/nodes/shaders.ts +203 -0
- package/src/sksg/nodes/utils.ts +23 -0
- package/src/views/SkiaDomView.tsx +3 -1
- package/src/views/SkiaPictureView.tsx +0 -2
- package/src/views/types.ts +2 -2
- package/lib/commonjs/dom/__tests__/Shaders.spec.d.ts +0 -1
- package/lib/commonjs/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Compose.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Demos.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/DrawingContext.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Drawings.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Group.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Paint.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/RenderNodes.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Shaders.spec.d.ts +0 -1
- package/lib/module/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Compose.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Demos.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/DrawingContext.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Drawings.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Group.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Paint.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/RenderNodes.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Shaders.spec.d.ts +0 -1
- package/lib/typescript/src/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
- package/src/dom/__tests__/Compose.spec.tsx +0 -42
- package/src/dom/__tests__/Demos.spec.tsx +0 -145
- package/src/dom/__tests__/DrawingContext.spec.tsx +0 -99
- package/src/dom/__tests__/Drawings.spec.tsx +0 -95
- package/src/dom/__tests__/Group.spec.tsx +0 -132
- package/src/dom/__tests__/Paint.spec.tsx +0 -100
- package/src/dom/__tests__/RenderNodes.spec.tsx +0 -44
- package/src/dom/__tests__/Shaders.spec.tsx +0 -123
- package/src/renderer/__tests__/SkiaDOM.spec.tsx +0 -46
- /package/lib/commonjs/{dom/__tests__/Compose.spec.d.ts → sksg/__tests__/Declarations.spec.d.ts} +0 -0
- /package/lib/commonjs/{dom/__tests__/Demos.spec.d.ts → sksg/__tests__/Simple.spec.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/DrawingContext.spec.d.ts → module/sksg/__tests__/Declarations.spec.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/Drawings.spec.d.ts → module/sksg/__tests__/Simple.spec.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/Group.spec.d.ts → typescript/lib/module/sksg/nodes/Node.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/Paint.spec.d.ts → typescript/src/sksg/__tests__/Declarations.spec.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/RenderNodes.spec.d.ts → typescript/src/sksg/__tests__/Simple.spec.d.ts} +0 -0
@@ -0,0 +1,489 @@
|
|
1
|
+
"worklet";
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
3
|
+
import { composeDeclarations, NodeType } from "../../dom/types";
|
4
|
+
import type {
|
5
|
+
BlendProps,
|
6
|
+
DeclarationContext,
|
7
|
+
DrawingNodeProps,
|
8
|
+
} from "../../dom/types";
|
9
|
+
import type { DrawingContext } from "../DrawingContext";
|
10
|
+
import { BlendMode } from "../../skia/types";
|
11
|
+
import type {
|
12
|
+
SkPathEffect,
|
13
|
+
SkColorFilter,
|
14
|
+
SkImageFilter,
|
15
|
+
} from "../../skia/types";
|
16
|
+
import { enumKey } from "../../dom/nodes";
|
17
|
+
|
18
|
+
import type { Node } from "./Node";
|
19
|
+
import {
|
20
|
+
drawAtlas,
|
21
|
+
drawBox,
|
22
|
+
drawBoxShadow,
|
23
|
+
drawCircle,
|
24
|
+
drawDiffRect,
|
25
|
+
drawFill,
|
26
|
+
drawGlyphs,
|
27
|
+
drawImage,
|
28
|
+
drawImageSVG,
|
29
|
+
drawLine,
|
30
|
+
drawOval,
|
31
|
+
drawParagraph,
|
32
|
+
drawPatch,
|
33
|
+
drawPath,
|
34
|
+
drawPicture,
|
35
|
+
drawPoints,
|
36
|
+
drawRect,
|
37
|
+
drawRRect,
|
38
|
+
drawText,
|
39
|
+
drawTextBlob,
|
40
|
+
drawTextPath,
|
41
|
+
drawVertices,
|
42
|
+
} from "./drawings";
|
43
|
+
import {
|
44
|
+
declareLerpColorFilter,
|
45
|
+
makeBlendColorFilter,
|
46
|
+
makeLinearToSRGBGammaColorFilter,
|
47
|
+
makeLumaColorFilter,
|
48
|
+
makeMatrixColorFilter,
|
49
|
+
makeSRGBToLinearGammaColorFilter,
|
50
|
+
} from "./colorFilters";
|
51
|
+
import {
|
52
|
+
declareBlendImageFilter,
|
53
|
+
declareBlurMaskFilter,
|
54
|
+
declareDisplacementMapImageFilter,
|
55
|
+
makeBlurImageFilter,
|
56
|
+
makeDropShadowImageFilter,
|
57
|
+
makeMorphologyImageFilter,
|
58
|
+
makeOffsetImageFilter,
|
59
|
+
makeRuntimeShaderImageFilter,
|
60
|
+
} from "./imageFilters";
|
61
|
+
import { materialize } from "./utils";
|
62
|
+
import {
|
63
|
+
declareColorShader,
|
64
|
+
declareFractalNoiseShader,
|
65
|
+
declareImageShader,
|
66
|
+
declareLinearGradientShader,
|
67
|
+
declareRadialGradientShader,
|
68
|
+
declareShader,
|
69
|
+
declareSweepGradientShader,
|
70
|
+
declareTurbulenceShader,
|
71
|
+
declareTwoPointConicalGradientShader,
|
72
|
+
} from "./shaders";
|
73
|
+
import { declarePaint } from "./paint";
|
74
|
+
import {
|
75
|
+
declareSumPathEffect,
|
76
|
+
makeCornerPathEffect,
|
77
|
+
makeDashPathEffect,
|
78
|
+
makeDiscretePathEffect,
|
79
|
+
makeLine2DPathEffect,
|
80
|
+
makePath1DPathEffect,
|
81
|
+
makePath2DPathEffect,
|
82
|
+
} from "./pathEffects";
|
83
|
+
|
84
|
+
interface ContextProcessingResult {
|
85
|
+
shouldRestoreMatrix: boolean;
|
86
|
+
shouldRestorePaint: boolean;
|
87
|
+
}
|
88
|
+
|
89
|
+
function composeColorFilters(
|
90
|
+
ctx: DeclarationContext,
|
91
|
+
cf: SkColorFilter,
|
92
|
+
processChildren: () => void
|
93
|
+
) {
|
94
|
+
const { Skia } = ctx;
|
95
|
+
ctx.save();
|
96
|
+
processChildren();
|
97
|
+
const cf1 = ctx.colorFilters.popAllAsOne();
|
98
|
+
ctx.restore();
|
99
|
+
ctx.colorFilters.push(cf1 ? Skia.ColorFilter.MakeCompose(cf, cf1) : cf);
|
100
|
+
}
|
101
|
+
|
102
|
+
function composePathEffects(
|
103
|
+
ctx: DeclarationContext,
|
104
|
+
pe: SkPathEffect,
|
105
|
+
processChildren: () => void
|
106
|
+
) {
|
107
|
+
const { Skia } = ctx;
|
108
|
+
ctx.save();
|
109
|
+
processChildren();
|
110
|
+
const pe1 = ctx.pathEffects.popAllAsOne();
|
111
|
+
ctx.restore();
|
112
|
+
ctx.pathEffects.push(pe1 ? Skia.PathEffect.MakeCompose(pe, pe1) : pe);
|
113
|
+
}
|
114
|
+
|
115
|
+
function composeImageFilters(
|
116
|
+
ctx: DeclarationContext,
|
117
|
+
imgf1: SkImageFilter,
|
118
|
+
processChildren: () => void
|
119
|
+
) {
|
120
|
+
const { Skia } = ctx;
|
121
|
+
ctx.save();
|
122
|
+
processChildren();
|
123
|
+
let imgf2 = ctx.imageFilters.popAllAsOne();
|
124
|
+
const cf = ctx.colorFilters.popAllAsOne();
|
125
|
+
ctx.restore();
|
126
|
+
if (cf) {
|
127
|
+
imgf2 = Skia.ImageFilter.MakeCompose(
|
128
|
+
imgf2 ?? null,
|
129
|
+
Skia.ImageFilter.MakeColorFilter(cf, null)
|
130
|
+
);
|
131
|
+
}
|
132
|
+
const imgf = imgf2 ? Skia.ImageFilter.MakeCompose(imgf1, imgf2) : imgf1;
|
133
|
+
ctx.imageFilters.push(imgf);
|
134
|
+
}
|
135
|
+
|
136
|
+
function processDeclarations(ctx: DeclarationContext, node: Node<any>) {
|
137
|
+
const processChildren = () =>
|
138
|
+
node.children.forEach((child) => processDeclarations(ctx, child));
|
139
|
+
const { type } = node;
|
140
|
+
const props = materialize(node.props);
|
141
|
+
switch (type) {
|
142
|
+
// Mask Filter
|
143
|
+
case NodeType.BlurMaskFilter: {
|
144
|
+
declareBlurMaskFilter(ctx, props);
|
145
|
+
break;
|
146
|
+
}
|
147
|
+
// Color Filters
|
148
|
+
case NodeType.LerpColorFilter: {
|
149
|
+
node.children.forEach((child) => processDeclarations(ctx, child));
|
150
|
+
declareLerpColorFilter(ctx, props);
|
151
|
+
break;
|
152
|
+
}
|
153
|
+
case NodeType.Blend: {
|
154
|
+
node.children.forEach((child) => processDeclarations(ctx, child));
|
155
|
+
const { Skia } = ctx;
|
156
|
+
const blend = BlendMode[enumKey(props.mode as BlendProps["mode"])];
|
157
|
+
// Blend ImageFilters
|
158
|
+
const imageFilters = ctx.imageFilters.popAll();
|
159
|
+
if (imageFilters.length > 0) {
|
160
|
+
const composer = Skia.ImageFilter.MakeBlend.bind(
|
161
|
+
Skia.ImageFilter,
|
162
|
+
blend
|
163
|
+
);
|
164
|
+
ctx.imageFilters.push(composeDeclarations(imageFilters, composer));
|
165
|
+
}
|
166
|
+
// Blend Shaders
|
167
|
+
const shaders = ctx.shaders.popAll();
|
168
|
+
if (shaders.length > 0) {
|
169
|
+
const composer = Skia.Shader.MakeBlend.bind(Skia.Shader, blend);
|
170
|
+
ctx.shaders.push(composeDeclarations(shaders, composer));
|
171
|
+
}
|
172
|
+
break;
|
173
|
+
}
|
174
|
+
case NodeType.BlendColorFilter: {
|
175
|
+
const cf = makeBlendColorFilter(ctx, props);
|
176
|
+
composeColorFilters(ctx, cf, processChildren);
|
177
|
+
break;
|
178
|
+
}
|
179
|
+
case NodeType.SRGBToLinearGammaColorFilter: {
|
180
|
+
const cf = makeSRGBToLinearGammaColorFilter(ctx);
|
181
|
+
composeColorFilters(ctx, cf, processChildren);
|
182
|
+
break;
|
183
|
+
}
|
184
|
+
case NodeType.LinearToSRGBGammaColorFilter: {
|
185
|
+
const cf = makeLinearToSRGBGammaColorFilter(ctx);
|
186
|
+
composeColorFilters(ctx, cf, processChildren);
|
187
|
+
break;
|
188
|
+
}
|
189
|
+
case NodeType.MatrixColorFilter: {
|
190
|
+
const cf = makeMatrixColorFilter(ctx, props);
|
191
|
+
composeColorFilters(ctx, cf, processChildren);
|
192
|
+
break;
|
193
|
+
}
|
194
|
+
case NodeType.LumaColorFilter: {
|
195
|
+
const cf = makeLumaColorFilter(ctx);
|
196
|
+
composeColorFilters(ctx, cf, processChildren);
|
197
|
+
break;
|
198
|
+
}
|
199
|
+
// Shaders
|
200
|
+
case NodeType.Shader: {
|
201
|
+
node.children.forEach((child) => processDeclarations(ctx, child));
|
202
|
+
declareShader(ctx, props);
|
203
|
+
break;
|
204
|
+
}
|
205
|
+
case NodeType.ImageShader: {
|
206
|
+
declareImageShader(ctx, props);
|
207
|
+
break;
|
208
|
+
}
|
209
|
+
case NodeType.ColorShader: {
|
210
|
+
declareColorShader(ctx, props);
|
211
|
+
break;
|
212
|
+
}
|
213
|
+
case NodeType.Turbulence: {
|
214
|
+
declareTurbulenceShader(ctx, props);
|
215
|
+
break;
|
216
|
+
}
|
217
|
+
case NodeType.FractalNoise: {
|
218
|
+
declareFractalNoiseShader(ctx, props);
|
219
|
+
break;
|
220
|
+
}
|
221
|
+
case NodeType.LinearGradient: {
|
222
|
+
declareLinearGradientShader(ctx, props);
|
223
|
+
break;
|
224
|
+
}
|
225
|
+
case NodeType.RadialGradient: {
|
226
|
+
declareRadialGradientShader(ctx, props);
|
227
|
+
break;
|
228
|
+
}
|
229
|
+
case NodeType.SweepGradient: {
|
230
|
+
declareSweepGradientShader(ctx, props);
|
231
|
+
break;
|
232
|
+
}
|
233
|
+
case NodeType.TwoPointConicalGradient: {
|
234
|
+
declareTwoPointConicalGradientShader(ctx, props);
|
235
|
+
break;
|
236
|
+
}
|
237
|
+
// Image Filters
|
238
|
+
case NodeType.BlurImageFilter: {
|
239
|
+
const imgf = makeBlurImageFilter(ctx, props);
|
240
|
+
composeImageFilters(ctx, imgf, processChildren);
|
241
|
+
break;
|
242
|
+
}
|
243
|
+
case NodeType.OffsetImageFilter: {
|
244
|
+
const imgf = makeOffsetImageFilter(ctx, props);
|
245
|
+
composeImageFilters(ctx, imgf, processChildren);
|
246
|
+
break;
|
247
|
+
}
|
248
|
+
case NodeType.DisplacementMapImageFilter: {
|
249
|
+
node.children.forEach((child) => processDeclarations(ctx, child));
|
250
|
+
declareDisplacementMapImageFilter(ctx, props);
|
251
|
+
break;
|
252
|
+
}
|
253
|
+
case NodeType.DropShadowImageFilter: {
|
254
|
+
const imgf = makeDropShadowImageFilter(ctx, props);
|
255
|
+
composeImageFilters(ctx, imgf, processChildren);
|
256
|
+
break;
|
257
|
+
}
|
258
|
+
case NodeType.MorphologyImageFilter: {
|
259
|
+
const imgf = makeMorphologyImageFilter(ctx, props);
|
260
|
+
composeImageFilters(ctx, imgf, processChildren);
|
261
|
+
break;
|
262
|
+
}
|
263
|
+
case NodeType.BlendImageFilter: {
|
264
|
+
node.children.forEach((child) => processDeclarations(ctx, child));
|
265
|
+
declareBlendImageFilter(ctx, props);
|
266
|
+
break;
|
267
|
+
}
|
268
|
+
case NodeType.RuntimeShaderImageFilter: {
|
269
|
+
const imgf = makeRuntimeShaderImageFilter(ctx, props);
|
270
|
+
composeImageFilters(ctx, imgf, processChildren);
|
271
|
+
break;
|
272
|
+
}
|
273
|
+
// Path Effects
|
274
|
+
case NodeType.SumPathEffect: {
|
275
|
+
node.children.forEach((child) => processDeclarations(ctx, child));
|
276
|
+
declareSumPathEffect(ctx);
|
277
|
+
break;
|
278
|
+
}
|
279
|
+
case NodeType.CornerPathEffect: {
|
280
|
+
const pf = makeCornerPathEffect(ctx, props);
|
281
|
+
composePathEffects(ctx, pf, processChildren);
|
282
|
+
break;
|
283
|
+
}
|
284
|
+
case NodeType.Path1DPathEffect: {
|
285
|
+
const pf = makePath1DPathEffect(ctx, props);
|
286
|
+
composePathEffects(ctx, pf, processChildren);
|
287
|
+
break;
|
288
|
+
}
|
289
|
+
case NodeType.Path2DPathEffect: {
|
290
|
+
const pf = makePath2DPathEffect(ctx, props);
|
291
|
+
composePathEffects(ctx, pf, processChildren);
|
292
|
+
break;
|
293
|
+
}
|
294
|
+
case NodeType.Line2DPathEffect: {
|
295
|
+
const pf = makeLine2DPathEffect(ctx, props);
|
296
|
+
composePathEffects(ctx, pf, processChildren);
|
297
|
+
break;
|
298
|
+
}
|
299
|
+
case NodeType.DashPathEffect: {
|
300
|
+
const pf = makeDashPathEffect(ctx, props);
|
301
|
+
composePathEffects(ctx, pf, processChildren);
|
302
|
+
break;
|
303
|
+
}
|
304
|
+
case NodeType.DiscretePathEffect: {
|
305
|
+
const pf = makeDiscretePathEffect(ctx, props);
|
306
|
+
composePathEffects(ctx, pf, processChildren);
|
307
|
+
break;
|
308
|
+
}
|
309
|
+
// Paint
|
310
|
+
case NodeType.Paint:
|
311
|
+
node.children.forEach((child) => processDeclarations(ctx, child));
|
312
|
+
declarePaint(ctx, props);
|
313
|
+
break;
|
314
|
+
default:
|
315
|
+
console.log("Unknown declaration node: ", type);
|
316
|
+
}
|
317
|
+
}
|
318
|
+
|
319
|
+
const preProcessContext = (
|
320
|
+
ctx: DrawingContext,
|
321
|
+
props: DrawingNodeProps,
|
322
|
+
node: Node<any>
|
323
|
+
) => {
|
324
|
+
const shouldRestoreMatrix = ctx.processMatrixAndClipping(props, props.layer);
|
325
|
+
ctx.declCtx.save();
|
326
|
+
node.children.forEach((child) => {
|
327
|
+
if (child.isDeclaration) {
|
328
|
+
processDeclarations(ctx.declCtx, child);
|
329
|
+
}
|
330
|
+
});
|
331
|
+
const shouldRestorePaint = ctx.processPaint(props);
|
332
|
+
ctx.declCtx.restore();
|
333
|
+
return { shouldRestoreMatrix, shouldRestorePaint };
|
334
|
+
};
|
335
|
+
|
336
|
+
const postProcessContext = (
|
337
|
+
ctx: DrawingContext,
|
338
|
+
{ shouldRestoreMatrix, shouldRestorePaint }: ContextProcessingResult
|
339
|
+
) => {
|
340
|
+
if (shouldRestoreMatrix) {
|
341
|
+
ctx.canvas.restore();
|
342
|
+
}
|
343
|
+
if (shouldRestorePaint) {
|
344
|
+
ctx.restore();
|
345
|
+
}
|
346
|
+
};
|
347
|
+
|
348
|
+
const drawBackdropFilter = (ctx: DrawingContext, node: Node) => {
|
349
|
+
const { canvas, Skia } = ctx;
|
350
|
+
const child = node.children[0];
|
351
|
+
let imageFilter: SkImageFilter | null = null;
|
352
|
+
if (child.isDeclaration) {
|
353
|
+
ctx.declCtx.save();
|
354
|
+
processDeclarations(ctx.declCtx, child);
|
355
|
+
const imgf = ctx.declCtx.imageFilters.pop();
|
356
|
+
if (imgf) {
|
357
|
+
imageFilter = imgf;
|
358
|
+
} else {
|
359
|
+
const cf = ctx.declCtx.colorFilters.pop();
|
360
|
+
if (cf) {
|
361
|
+
imageFilter = Skia.ImageFilter.MakeColorFilter(cf, null);
|
362
|
+
}
|
363
|
+
}
|
364
|
+
ctx.declCtx.restore();
|
365
|
+
}
|
366
|
+
canvas.saveLayer(undefined, null, imageFilter);
|
367
|
+
canvas.restore();
|
368
|
+
};
|
369
|
+
|
370
|
+
export function draw(ctx: DrawingContext, node: Node<any>) {
|
371
|
+
// Special mixed nodes
|
372
|
+
if (node.type === NodeType.BackdropFilter) {
|
373
|
+
drawBackdropFilter(ctx, node);
|
374
|
+
return;
|
375
|
+
}
|
376
|
+
if (node.type === NodeType.Layer) {
|
377
|
+
let hasLayer = false;
|
378
|
+
const [layer, ...children] = node.children;
|
379
|
+
if (layer.isDeclaration) {
|
380
|
+
const { declCtx } = ctx;
|
381
|
+
declCtx.save();
|
382
|
+
processDeclarations(ctx.declCtx, layer);
|
383
|
+
const paint = declCtx.paints.pop();
|
384
|
+
declCtx.restore();
|
385
|
+
if (paint) {
|
386
|
+
hasLayer = true;
|
387
|
+
ctx.canvas.saveLayer(paint);
|
388
|
+
}
|
389
|
+
}
|
390
|
+
children.map((child) => {
|
391
|
+
if (!child.isDeclaration) {
|
392
|
+
draw(ctx, child);
|
393
|
+
}
|
394
|
+
});
|
395
|
+
if (hasLayer) {
|
396
|
+
ctx.canvas.restore();
|
397
|
+
}
|
398
|
+
return;
|
399
|
+
}
|
400
|
+
const { type, props: rawProps, children } = node;
|
401
|
+
// Regular nodes
|
402
|
+
const props = materialize(rawProps);
|
403
|
+
const result = preProcessContext(ctx, props, node);
|
404
|
+
const paints = ctx.getLocalPaints();
|
405
|
+
paints.forEach((paint) => {
|
406
|
+
const lctx = { paint, Skia: ctx.Skia, canvas: ctx.canvas };
|
407
|
+
switch (type) {
|
408
|
+
case NodeType.Box:
|
409
|
+
drawBox(lctx, props, node.children);
|
410
|
+
break;
|
411
|
+
case NodeType.BoxShadow:
|
412
|
+
drawBoxShadow(lctx, props);
|
413
|
+
break;
|
414
|
+
case NodeType.Image:
|
415
|
+
drawImage(lctx, props);
|
416
|
+
break;
|
417
|
+
case NodeType.Points:
|
418
|
+
drawPoints(lctx, props);
|
419
|
+
break;
|
420
|
+
case NodeType.Path:
|
421
|
+
drawPath(lctx, props);
|
422
|
+
break;
|
423
|
+
case NodeType.Rect:
|
424
|
+
drawRect(lctx, props);
|
425
|
+
break;
|
426
|
+
case NodeType.RRect:
|
427
|
+
drawRRect(lctx, props);
|
428
|
+
break;
|
429
|
+
case NodeType.Oval:
|
430
|
+
drawOval(lctx, props);
|
431
|
+
break;
|
432
|
+
case NodeType.Line:
|
433
|
+
drawLine(lctx, props);
|
434
|
+
break;
|
435
|
+
case NodeType.Patch:
|
436
|
+
drawPatch(lctx, props);
|
437
|
+
break;
|
438
|
+
case NodeType.Vertices:
|
439
|
+
drawVertices(lctx, props);
|
440
|
+
break;
|
441
|
+
case NodeType.DiffRect:
|
442
|
+
drawDiffRect(lctx, props);
|
443
|
+
break;
|
444
|
+
case NodeType.Text:
|
445
|
+
drawText(lctx, props);
|
446
|
+
break;
|
447
|
+
case NodeType.TextPath:
|
448
|
+
drawTextPath(lctx, props);
|
449
|
+
break;
|
450
|
+
case NodeType.TextBlob:
|
451
|
+
drawTextBlob(lctx, props);
|
452
|
+
break;
|
453
|
+
case NodeType.Glyphs:
|
454
|
+
drawGlyphs(lctx, props);
|
455
|
+
break;
|
456
|
+
case NodeType.Picture:
|
457
|
+
drawPicture(lctx, props);
|
458
|
+
break;
|
459
|
+
case NodeType.ImageSVG:
|
460
|
+
drawImageSVG(lctx, props);
|
461
|
+
break;
|
462
|
+
case NodeType.Paragraph:
|
463
|
+
drawParagraph(lctx, props);
|
464
|
+
break;
|
465
|
+
case NodeType.Atlas:
|
466
|
+
drawAtlas(lctx, props);
|
467
|
+
break;
|
468
|
+
case NodeType.Circle:
|
469
|
+
drawCircle(lctx, props);
|
470
|
+
break;
|
471
|
+
case NodeType.Fill:
|
472
|
+
drawFill(lctx, props);
|
473
|
+
break;
|
474
|
+
case NodeType.Group:
|
475
|
+
// TODO: do nothing
|
476
|
+
break;
|
477
|
+
default:
|
478
|
+
if (!node.isDeclaration) {
|
479
|
+
console.warn(`Unsupported node type: ${type}`);
|
480
|
+
}
|
481
|
+
}
|
482
|
+
});
|
483
|
+
children.forEach((child) => {
|
484
|
+
if (!child.isDeclaration) {
|
485
|
+
draw(ctx, child);
|
486
|
+
}
|
487
|
+
});
|
488
|
+
postProcessContext(ctx, result);
|
489
|
+
}
|