@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,235 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
|
+
import { NodeType } from "../../dom/types";
|
3
|
+
import type { Node } from "../nodes";
|
4
|
+
|
5
|
+
import type { SkColorFilter } from "./MockDeclaration";
|
6
|
+
import {
|
7
|
+
compose,
|
8
|
+
DeclarationContext,
|
9
|
+
DeclarationType,
|
10
|
+
} from "./MockDeclaration";
|
11
|
+
|
12
|
+
const makeSRGBToLinearGammaColorFilter = () => ({
|
13
|
+
type: DeclarationType.ColorFilter as const,
|
14
|
+
tag: "SRGBToLinearGamma",
|
15
|
+
});
|
16
|
+
|
17
|
+
const makeBlendColorFilter = () => ({
|
18
|
+
type: DeclarationType.ColorFilter as const,
|
19
|
+
tag: "Blend",
|
20
|
+
});
|
21
|
+
|
22
|
+
const makeMatrixColorFilter = () => ({
|
23
|
+
type: DeclarationType.ColorFilter as const,
|
24
|
+
tag: "Matrix",
|
25
|
+
});
|
26
|
+
|
27
|
+
const makeLerpColorFilter = (children: SkColorFilter[]) => ({
|
28
|
+
type: DeclarationType.ColorFilter as const,
|
29
|
+
tag: `Lerp(0.5, ${children[0].tag}, ${children[1].tag})`,
|
30
|
+
});
|
31
|
+
|
32
|
+
const composeColorFilters = (
|
33
|
+
ctx: DeclarationContext,
|
34
|
+
node: Node<any>,
|
35
|
+
cf: SkColorFilter
|
36
|
+
) => {
|
37
|
+
ctx.save();
|
38
|
+
node.children.forEach((child) => processContext(ctx, child));
|
39
|
+
const cf1 = ctx.colorFilters.popAllAsOne();
|
40
|
+
ctx.restore();
|
41
|
+
ctx.colorFilters.push(cf1 ? compose(cf, cf1) : cf);
|
42
|
+
};
|
43
|
+
|
44
|
+
const processContext = (ctx: DeclarationContext, node: Node<any>) => {
|
45
|
+
switch (node.type) {
|
46
|
+
case NodeType.Group:
|
47
|
+
node.children.forEach((child) => processContext(ctx, child));
|
48
|
+
break;
|
49
|
+
case NodeType.SRGBToLinearGammaColorFilter: {
|
50
|
+
const cf = makeSRGBToLinearGammaColorFilter();
|
51
|
+
composeColorFilters(ctx, node, cf);
|
52
|
+
break;
|
53
|
+
}
|
54
|
+
case NodeType.BlendColorFilter: {
|
55
|
+
const cf = makeBlendColorFilter();
|
56
|
+
composeColorFilters(ctx, node, cf);
|
57
|
+
break;
|
58
|
+
}
|
59
|
+
case NodeType.MatrixColorFilter: {
|
60
|
+
const cf = makeMatrixColorFilter();
|
61
|
+
composeColorFilters(ctx, node, cf);
|
62
|
+
break;
|
63
|
+
}
|
64
|
+
case NodeType.LerpColorFilter: {
|
65
|
+
node.children.forEach((child) => processContext(ctx, child));
|
66
|
+
const cf = makeLerpColorFilter(ctx.colorFilters.popAll());
|
67
|
+
ctx.colorFilters.push(cf);
|
68
|
+
break;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
};
|
72
|
+
|
73
|
+
describe("Declarations", () => {
|
74
|
+
it("should create a filter from a tree 1", () => {
|
75
|
+
const tree: Node = {
|
76
|
+
type: NodeType.Group,
|
77
|
+
isDeclaration: false,
|
78
|
+
props: {},
|
79
|
+
children: [
|
80
|
+
{
|
81
|
+
type: NodeType.SRGBToLinearGammaColorFilter,
|
82
|
+
isDeclaration: true,
|
83
|
+
props: {},
|
84
|
+
children: [
|
85
|
+
{
|
86
|
+
type: NodeType.BlendColorFilter,
|
87
|
+
isDeclaration: true,
|
88
|
+
props: {
|
89
|
+
color: "lightblue",
|
90
|
+
mode: "srcIn",
|
91
|
+
},
|
92
|
+
children: [],
|
93
|
+
},
|
94
|
+
],
|
95
|
+
},
|
96
|
+
],
|
97
|
+
};
|
98
|
+
const ctx = new DeclarationContext();
|
99
|
+
processContext(ctx, tree);
|
100
|
+
const cf = ctx.colorFilters.popAllAsOne();
|
101
|
+
expect(cf).toBeDefined();
|
102
|
+
expect(cf!.tag).toBe("Compose(SRGBToLinearGamma, Blend)");
|
103
|
+
});
|
104
|
+
|
105
|
+
it("should create a filter from a tree 2", () => {
|
106
|
+
const tree: Node = {
|
107
|
+
type: NodeType.Group,
|
108
|
+
isDeclaration: false,
|
109
|
+
props: {},
|
110
|
+
children: [
|
111
|
+
{
|
112
|
+
type: NodeType.LerpColorFilter,
|
113
|
+
isDeclaration: true,
|
114
|
+
props: {
|
115
|
+
t: 0.5,
|
116
|
+
},
|
117
|
+
children: [
|
118
|
+
{
|
119
|
+
type: NodeType.MatrixColorFilter,
|
120
|
+
isDeclaration: true,
|
121
|
+
props: {
|
122
|
+
values: [],
|
123
|
+
},
|
124
|
+
children: [],
|
125
|
+
},
|
126
|
+
{
|
127
|
+
type: NodeType.MatrixColorFilter,
|
128
|
+
isDeclaration: true,
|
129
|
+
props: {
|
130
|
+
values: [],
|
131
|
+
},
|
132
|
+
children: [],
|
133
|
+
},
|
134
|
+
],
|
135
|
+
},
|
136
|
+
],
|
137
|
+
};
|
138
|
+
|
139
|
+
const ctx = new DeclarationContext();
|
140
|
+
processContext(ctx, tree);
|
141
|
+
const cf = ctx.colorFilters.popAllAsOne();
|
142
|
+
expect(cf).toBeDefined();
|
143
|
+
expect(cf!.tag).toBe("Lerp(0.5, Matrix, Matrix)");
|
144
|
+
});
|
145
|
+
|
146
|
+
it("should create a filter from a tree 3", () => {
|
147
|
+
const tree: Node = {
|
148
|
+
type: NodeType.Group,
|
149
|
+
isDeclaration: false,
|
150
|
+
props: {},
|
151
|
+
children: [
|
152
|
+
{
|
153
|
+
type: NodeType.MatrixColorFilter,
|
154
|
+
isDeclaration: true,
|
155
|
+
props: {
|
156
|
+
value: [],
|
157
|
+
},
|
158
|
+
children: [],
|
159
|
+
},
|
160
|
+
{
|
161
|
+
type: NodeType.SRGBToLinearGammaColorFilter,
|
162
|
+
isDeclaration: true,
|
163
|
+
props: {},
|
164
|
+
children: [
|
165
|
+
{
|
166
|
+
type: NodeType.LerpColorFilter,
|
167
|
+
isDeclaration: true,
|
168
|
+
props: {
|
169
|
+
t: 0.5,
|
170
|
+
},
|
171
|
+
children: [
|
172
|
+
{
|
173
|
+
type: NodeType.MatrixColorFilter,
|
174
|
+
isDeclaration: true,
|
175
|
+
props: {
|
176
|
+
values: [],
|
177
|
+
},
|
178
|
+
children: [],
|
179
|
+
},
|
180
|
+
{
|
181
|
+
type: NodeType.MatrixColorFilter,
|
182
|
+
isDeclaration: true,
|
183
|
+
props: {
|
184
|
+
values: [],
|
185
|
+
},
|
186
|
+
children: [],
|
187
|
+
},
|
188
|
+
],
|
189
|
+
},
|
190
|
+
],
|
191
|
+
},
|
192
|
+
],
|
193
|
+
};
|
194
|
+
|
195
|
+
const ctx = new DeclarationContext();
|
196
|
+
processContext(ctx, tree);
|
197
|
+
const cf = ctx.colorFilters.popAllAsOne();
|
198
|
+
expect(cf).toBeDefined();
|
199
|
+
expect(cf!.tag).toBe(
|
200
|
+
"Compose(Matrix, Compose(SRGBToLinearGamma, Lerp(0.5, Matrix, Matrix)))"
|
201
|
+
);
|
202
|
+
});
|
203
|
+
|
204
|
+
it("should create a filter from a tree 4", () => {
|
205
|
+
const tree: Node = {
|
206
|
+
type: NodeType.Group,
|
207
|
+
isDeclaration: false,
|
208
|
+
props: {},
|
209
|
+
children: [
|
210
|
+
{
|
211
|
+
type: NodeType.MatrixColorFilter,
|
212
|
+
isDeclaration: true,
|
213
|
+
props: {
|
214
|
+
value: [],
|
215
|
+
},
|
216
|
+
children: [
|
217
|
+
{
|
218
|
+
type: NodeType.MatrixColorFilter,
|
219
|
+
isDeclaration: true,
|
220
|
+
props: {
|
221
|
+
value: [],
|
222
|
+
},
|
223
|
+
children: [],
|
224
|
+
},
|
225
|
+
],
|
226
|
+
},
|
227
|
+
],
|
228
|
+
};
|
229
|
+
const ctx = new DeclarationContext();
|
230
|
+
processContext(ctx, tree);
|
231
|
+
const cf = ctx.colorFilters.popAllAsOne();
|
232
|
+
expect(cf).toBeDefined();
|
233
|
+
expect(cf!.tag).toBe("Compose(Matrix, Matrix)");
|
234
|
+
});
|
235
|
+
});
|
@@ -0,0 +1,140 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
|
+
"worklet";
|
3
|
+
|
4
|
+
export enum DeclarationType {
|
5
|
+
ColorFilter,
|
6
|
+
ImageFilter,
|
7
|
+
Shader,
|
8
|
+
MaskFilter,
|
9
|
+
PathEffect,
|
10
|
+
Paint,
|
11
|
+
}
|
12
|
+
|
13
|
+
interface Filter {
|
14
|
+
tag: string;
|
15
|
+
}
|
16
|
+
|
17
|
+
export interface SkColorFilter extends Filter {
|
18
|
+
type: DeclarationType.ColorFilter;
|
19
|
+
}
|
20
|
+
|
21
|
+
interface SkImageFilter extends Filter {
|
22
|
+
type: DeclarationType.ImageFilter;
|
23
|
+
}
|
24
|
+
|
25
|
+
interface SkShader extends Filter {
|
26
|
+
type: DeclarationType.Shader;
|
27
|
+
}
|
28
|
+
|
29
|
+
interface SkMaskFilter extends Filter {
|
30
|
+
type: DeclarationType.MaskFilter;
|
31
|
+
}
|
32
|
+
|
33
|
+
interface SkPathEffect extends Filter {
|
34
|
+
type: DeclarationType.PathEffect;
|
35
|
+
}
|
36
|
+
|
37
|
+
interface SkPaint extends Filter {
|
38
|
+
type: DeclarationType.Paint;
|
39
|
+
}
|
40
|
+
|
41
|
+
type Composer<T> = (outer: T, inner: T) => T;
|
42
|
+
export const compose: any = <T extends Filter>(outer: T, inner: T) => ({
|
43
|
+
tag: `Compose(${outer.tag}, ${inner.tag})`,
|
44
|
+
});
|
45
|
+
|
46
|
+
export const composeDeclarations = <T>(filters: T[], composer: Composer<T>) => {
|
47
|
+
if (filters.length <= 1) {
|
48
|
+
return filters[0];
|
49
|
+
}
|
50
|
+
return filters.reverse().reduce((inner, outer) => {
|
51
|
+
if (!inner) {
|
52
|
+
return outer;
|
53
|
+
}
|
54
|
+
return composer(outer, inner);
|
55
|
+
});
|
56
|
+
};
|
57
|
+
|
58
|
+
class Declaration<T extends Filter> {
|
59
|
+
public decls: T[] = [];
|
60
|
+
public indexes = [0];
|
61
|
+
public composer?: Composer<T>;
|
62
|
+
|
63
|
+
constructor(composer?: Composer<T>) {
|
64
|
+
this.composer = composer;
|
65
|
+
}
|
66
|
+
|
67
|
+
private get index() {
|
68
|
+
return this.indexes[this.indexes.length - 1];
|
69
|
+
}
|
70
|
+
|
71
|
+
save() {
|
72
|
+
this.indexes.push(this.decls.length);
|
73
|
+
}
|
74
|
+
|
75
|
+
restore() {
|
76
|
+
this.indexes.pop();
|
77
|
+
}
|
78
|
+
|
79
|
+
pop() {
|
80
|
+
return this.decls.pop();
|
81
|
+
}
|
82
|
+
|
83
|
+
push(decl: T) {
|
84
|
+
this.decls.push(decl);
|
85
|
+
}
|
86
|
+
|
87
|
+
popAll() {
|
88
|
+
return this.decls.splice(this.index, this.decls.length - this.index);
|
89
|
+
}
|
90
|
+
|
91
|
+
popAllAsOne() {
|
92
|
+
if (this.decls.length === 0) {
|
93
|
+
return undefined;
|
94
|
+
}
|
95
|
+
if (!this.composer) {
|
96
|
+
throw new Error("No composer for this type of declaration");
|
97
|
+
}
|
98
|
+
const decls = this.popAll();
|
99
|
+
return composeDeclarations(decls, this.composer!);
|
100
|
+
}
|
101
|
+
}
|
102
|
+
|
103
|
+
export class DeclarationContext {
|
104
|
+
readonly paints: Declaration<SkPaint>;
|
105
|
+
readonly maskFilters: Declaration<SkMaskFilter>;
|
106
|
+
readonly shaders: Declaration<SkShader>;
|
107
|
+
readonly pathEffects: Declaration<SkPathEffect>;
|
108
|
+
readonly imageFilters: Declaration<SkImageFilter>;
|
109
|
+
readonly colorFilters: Declaration<SkColorFilter>;
|
110
|
+
|
111
|
+
constructor() {
|
112
|
+
const peComp: Composer<SkPathEffect> = compose;
|
113
|
+
const ifComp: Composer<SkImageFilter> = compose;
|
114
|
+
const cfComp: Composer<SkColorFilter> = compose;
|
115
|
+
this.paints = new Declaration<SkPaint>();
|
116
|
+
this.maskFilters = new Declaration<SkMaskFilter>();
|
117
|
+
this.shaders = new Declaration<SkShader>();
|
118
|
+
this.pathEffects = new Declaration<SkPathEffect>(peComp);
|
119
|
+
this.imageFilters = new Declaration<SkImageFilter>(ifComp);
|
120
|
+
this.colorFilters = new Declaration<SkColorFilter>(cfComp);
|
121
|
+
}
|
122
|
+
|
123
|
+
save() {
|
124
|
+
this.paints.save();
|
125
|
+
this.maskFilters.save();
|
126
|
+
this.shaders.save();
|
127
|
+
this.pathEffects.save();
|
128
|
+
this.imageFilters.save();
|
129
|
+
this.colorFilters.save();
|
130
|
+
}
|
131
|
+
|
132
|
+
restore() {
|
133
|
+
this.paints.restore();
|
134
|
+
this.maskFilters.restore();
|
135
|
+
this.shaders.restore();
|
136
|
+
this.pathEffects.restore();
|
137
|
+
this.imageFilters.restore();
|
138
|
+
this.colorFilters.restore();
|
139
|
+
}
|
140
|
+
}
|
@@ -0,0 +1,148 @@
|
|
1
|
+
import React from "react";
|
2
|
+
|
3
|
+
import { importSkia } from "../../renderer/__tests__/setup";
|
4
|
+
import { SkiaSGRoot } from "../Reconciler";
|
5
|
+
import { checkImage } from "../../__tests__/setup";
|
6
|
+
import { mix, polar2Canvas } from "../../renderer";
|
7
|
+
|
8
|
+
interface RingProps {
|
9
|
+
index: number;
|
10
|
+
progress: number;
|
11
|
+
width: number;
|
12
|
+
height: number;
|
13
|
+
center: { x: number; y: number };
|
14
|
+
}
|
15
|
+
|
16
|
+
const Ring = ({ index, progress, width, center }: RingProps) => {
|
17
|
+
const c1 = "#61bea2";
|
18
|
+
const c2 = "#529ca0";
|
19
|
+
const R = width / 4;
|
20
|
+
const theta = (index * (2 * Math.PI)) / 6;
|
21
|
+
const transform = (() => {
|
22
|
+
const { x, y } = polar2Canvas(
|
23
|
+
{ theta, radius: progress * R },
|
24
|
+
{ x: 0, y: 0 }
|
25
|
+
);
|
26
|
+
const scale = mix(progress, 0.3, 1);
|
27
|
+
return [{ translateX: x }, { translateY: y }, { scale }];
|
28
|
+
})();
|
29
|
+
|
30
|
+
return (
|
31
|
+
<skCircle
|
32
|
+
c={center}
|
33
|
+
r={R}
|
34
|
+
color={index % 2 ? c1 : c2}
|
35
|
+
origin={center}
|
36
|
+
transform={transform}
|
37
|
+
/>
|
38
|
+
);
|
39
|
+
};
|
40
|
+
|
41
|
+
describe("Simple", () => {
|
42
|
+
it("should have a simple render (1)", () => {
|
43
|
+
const { Skia } = importSkia();
|
44
|
+
const root = new SkiaSGRoot(Skia);
|
45
|
+
root.render(<skCircle r={128} color="cyan" />);
|
46
|
+
const surface = Skia.Surface.Make(768, 768)!;
|
47
|
+
expect(surface).toBeDefined();
|
48
|
+
const canvas = surface.getCanvas();
|
49
|
+
root.drawOnCanvas(canvas);
|
50
|
+
surface.flush();
|
51
|
+
const image = surface.makeImageSnapshot();
|
52
|
+
expect(image).toBeDefined();
|
53
|
+
checkImage(image, "snapshots/sksg/simple.png");
|
54
|
+
});
|
55
|
+
it("should have a simple render (2)", () => {
|
56
|
+
const { Skia } = importSkia();
|
57
|
+
const root = new SkiaSGRoot(Skia);
|
58
|
+
root.render(
|
59
|
+
<>
|
60
|
+
<skFill color="magenta" />
|
61
|
+
<skCircle r={128} cx={768 / 2} cy={768 / 2} color="cyan" />
|
62
|
+
</>
|
63
|
+
);
|
64
|
+
const surface = Skia.Surface.Make(768, 768)!;
|
65
|
+
expect(surface).toBeDefined();
|
66
|
+
const canvas = surface.getCanvas();
|
67
|
+
root.drawOnCanvas(canvas);
|
68
|
+
surface.flush();
|
69
|
+
const image = surface.makeImageSnapshot();
|
70
|
+
expect(image).toBeDefined();
|
71
|
+
checkImage(image, "snapshots/sksg/simple2.png");
|
72
|
+
});
|
73
|
+
it("simple demo", () => {
|
74
|
+
const { Skia } = importSkia();
|
75
|
+
const root = new SkiaSGRoot(Skia);
|
76
|
+
const width = 768;
|
77
|
+
const height = 768;
|
78
|
+
const center = { x: width / 2, y: height / 2 };
|
79
|
+
const progress = 0.5;
|
80
|
+
const transform = (() => [{ rotate: mix(progress, -Math.PI, 0) }])();
|
81
|
+
root.render(
|
82
|
+
<>
|
83
|
+
<skFill color="rgb(36,43,56)" />
|
84
|
+
<skGroup blendMode="screen" origin={center} transform={transform}>
|
85
|
+
<skBlurMaskFilter style="solid" blur={40} respectCTM={true} />
|
86
|
+
{new Array(6).fill(0).map((_, index) => {
|
87
|
+
return (
|
88
|
+
<Ring
|
89
|
+
key={index}
|
90
|
+
index={index}
|
91
|
+
progress={progress}
|
92
|
+
center={center}
|
93
|
+
width={width}
|
94
|
+
height={height}
|
95
|
+
/>
|
96
|
+
);
|
97
|
+
})}
|
98
|
+
</skGroup>
|
99
|
+
</>
|
100
|
+
);
|
101
|
+
const surface = Skia.Surface.Make(width, height)!;
|
102
|
+
expect(surface).toBeDefined();
|
103
|
+
const canvas = surface.getCanvas();
|
104
|
+
root.drawOnCanvas(canvas);
|
105
|
+
surface.flush();
|
106
|
+
const image = surface.makeImageSnapshot();
|
107
|
+
expect(image).toBeDefined();
|
108
|
+
checkImage(image, "snapshots/sksg/breathe.png");
|
109
|
+
});
|
110
|
+
|
111
|
+
it("simple demo (2)", () => {
|
112
|
+
const { Skia } = importSkia();
|
113
|
+
const root = new SkiaSGRoot(Skia);
|
114
|
+
const width = 768;
|
115
|
+
const height = 768;
|
116
|
+
const center = { x: width / 2, y: height / 2 };
|
117
|
+
const progress = 0;
|
118
|
+
const transform = (() => [{ rotate: mix(progress, -Math.PI, 0) }])();
|
119
|
+
root.render(
|
120
|
+
<>
|
121
|
+
<skFill color="rgb(36,43,56)" />
|
122
|
+
<skGroup blendMode="screen" origin={center} transform={transform}>
|
123
|
+
<skBlurMaskFilter style="solid" blur={40} respectCTM={true} />
|
124
|
+
{new Array(6).fill(0).map((_, index) => {
|
125
|
+
return (
|
126
|
+
<Ring
|
127
|
+
key={index}
|
128
|
+
index={index}
|
129
|
+
progress={progress}
|
130
|
+
center={center}
|
131
|
+
width={width}
|
132
|
+
height={height}
|
133
|
+
/>
|
134
|
+
);
|
135
|
+
})}
|
136
|
+
</skGroup>
|
137
|
+
</>
|
138
|
+
);
|
139
|
+
const surface = Skia.Surface.Make(width, height)!;
|
140
|
+
expect(surface).toBeDefined();
|
141
|
+
const canvas = surface.getCanvas();
|
142
|
+
root.drawOnCanvas(canvas);
|
143
|
+
surface.flush();
|
144
|
+
const image = surface.makeImageSnapshot();
|
145
|
+
expect(image).toBeDefined();
|
146
|
+
checkImage(image, "snapshots/sksg/breathe-0.png");
|
147
|
+
});
|
148
|
+
});
|
@@ -0,0 +1,60 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
3
|
+
import { enumKey } from "../../dom/nodes";
|
4
|
+
import type {
|
5
|
+
BlendColorFilterProps,
|
6
|
+
DeclarationContext,
|
7
|
+
LerpColorFilterProps,
|
8
|
+
MatrixColorFilterProps,
|
9
|
+
} from "../../dom/types";
|
10
|
+
import { BlendMode } from "../../skia/types";
|
11
|
+
|
12
|
+
export const makeBlendColorFilter = (
|
13
|
+
ctx: DeclarationContext,
|
14
|
+
props: BlendColorFilterProps
|
15
|
+
) => {
|
16
|
+
const { mode } = props;
|
17
|
+
const color = ctx.Skia.Color(props.color);
|
18
|
+
const cf = ctx.Skia.ColorFilter.MakeBlend(color, BlendMode[enumKey(mode)]);
|
19
|
+
return cf;
|
20
|
+
};
|
21
|
+
|
22
|
+
export const makeSRGBToLinearGammaColorFilter = (ctx: DeclarationContext) => {
|
23
|
+
const cf = ctx.Skia.ColorFilter.MakeSRGBToLinearGamma();
|
24
|
+
return cf;
|
25
|
+
};
|
26
|
+
|
27
|
+
export const makeLinearToSRGBGammaColorFilter = (ctx: DeclarationContext) => {
|
28
|
+
const cf = ctx.Skia.ColorFilter.MakeLinearToSRGBGamma();
|
29
|
+
return cf;
|
30
|
+
};
|
31
|
+
|
32
|
+
export const declareLerpColorFilter = (
|
33
|
+
ctx: DeclarationContext,
|
34
|
+
props: LerpColorFilterProps
|
35
|
+
) => {
|
36
|
+
const { t } = props;
|
37
|
+
const second = ctx.colorFilters.pop();
|
38
|
+
const first = ctx.colorFilters.pop();
|
39
|
+
if (!first || !second) {
|
40
|
+
throw new Error(
|
41
|
+
"LerpColorFilterNode: missing two color filters as children"
|
42
|
+
);
|
43
|
+
}
|
44
|
+
const cf = ctx.Skia.ColorFilter.MakeLerp(t, first, second);
|
45
|
+
ctx.colorFilters.push(cf);
|
46
|
+
};
|
47
|
+
|
48
|
+
export const makeMatrixColorFilter = (
|
49
|
+
ctx: DeclarationContext,
|
50
|
+
props: MatrixColorFilterProps
|
51
|
+
) => {
|
52
|
+
const { matrix } = props;
|
53
|
+
const cf = ctx.Skia.ColorFilter.MakeMatrix(matrix);
|
54
|
+
return cf;
|
55
|
+
};
|
56
|
+
|
57
|
+
export const makeLumaColorFilter = (ctx: DeclarationContext) => {
|
58
|
+
const cf = ctx.Skia.ColorFilter.MakeLumaColorFilter();
|
59
|
+
return cf;
|
60
|
+
};
|