@shopify/react-native-skia 1.3.12 → 1.3.13
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/commonjs/__tests__/globalSetup.d.ts +9 -0
- package/lib/commonjs/__tests__/globalTeardown.d.ts +2 -0
- package/lib/commonjs/__tests__/setup.d.ts +18 -0
- package/lib/commonjs/dom/__tests__/Compose.spec.d.ts +1 -0
- package/lib/commonjs/dom/__tests__/Demos.spec.d.ts +1 -0
- package/lib/commonjs/dom/__tests__/DrawingContext.spec.d.ts +1 -0
- package/lib/commonjs/dom/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/commonjs/dom/__tests__/Group.spec.d.ts +1 -0
- package/lib/commonjs/dom/__tests__/Paint.spec.d.ts +1 -0
- package/lib/commonjs/dom/__tests__/RenderNodes.spec.d.ts +1 -0
- package/lib/commonjs/dom/__tests__/Shaders.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Data.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/FitBox.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Glyphs.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Image.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Paths.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Picture.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Simple.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/SkiaDOM.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Surfaces.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Text.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/TouchHandler.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/Transform.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/documentation/Group.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/documentation/paint/Overview.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/documentation/shapes/Box.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Atlas.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Blending.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Blur.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Box.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/ColorFilters.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/CoonPatch.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/DataEncoding.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Drawings.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/FontMgr.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Gradient.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Group.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Image.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/ImageFilters.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Mask.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Matrix4.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Offscreen.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Opacity.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Paint.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Paragraphs.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/PathEffects.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Paths.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Picture.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Point.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Rect.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/SDF.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/SVG.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Shader.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Snapshot.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Surfaces.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Text.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/TextPath.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Transforms.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Vertices.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/Video.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/e2e/setup/Paragraph.d.ts +19 -0
- package/lib/commonjs/renderer/__tests__/e2e/setup/SVG.d.ts +12 -0
- package/lib/commonjs/renderer/__tests__/e2e/setup/SkiaObject.d.ts +11 -0
- package/lib/commonjs/renderer/__tests__/e2e/setup/index.d.ts +3 -0
- package/lib/commonjs/renderer/__tests__/examples/BlendModes.spec.d.ts +1 -0
- package/lib/commonjs/renderer/__tests__/setup.d.ts +66 -0
- package/lib/commonjs/skia/__tests__/ColorFilter.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Data.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Enums.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Geometry.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/ImageFilter.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Mock.spec.d.ts +0 -0
- package/lib/commonjs/skia/__tests__/Paint.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Path.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/RuntimeEffect.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Shader.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Text.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Transform.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/Vertices.spec.d.ts +1 -0
- package/lib/commonjs/skia/__tests__/setup.d.ts +19 -0
- package/lib/module/__tests__/globalSetup.d.ts +9 -0
- package/lib/module/__tests__/globalTeardown.d.ts +2 -0
- package/lib/module/__tests__/setup.d.ts +18 -0
- package/lib/module/dom/__tests__/Compose.spec.d.ts +1 -0
- package/lib/module/dom/__tests__/Demos.spec.d.ts +1 -0
- package/lib/module/dom/__tests__/DrawingContext.spec.d.ts +1 -0
- package/lib/module/dom/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/module/dom/__tests__/Group.spec.d.ts +1 -0
- package/lib/module/dom/__tests__/Paint.spec.d.ts +1 -0
- package/lib/module/dom/__tests__/RenderNodes.spec.d.ts +1 -0
- package/lib/module/dom/__tests__/Shaders.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Data.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/FitBox.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Glyphs.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Image.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Paths.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Picture.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Simple.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/SkiaDOM.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Surfaces.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Text.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/TouchHandler.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/Transform.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/documentation/Group.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/documentation/paint/Overview.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/documentation/shapes/Box.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Atlas.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Blending.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Blur.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Box.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/ColorFilters.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/CoonPatch.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/DataEncoding.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Drawings.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/FontMgr.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Gradient.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Group.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Image.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/ImageFilters.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Mask.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Matrix4.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Offscreen.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Opacity.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Paint.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Paragraphs.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/PathEffects.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Paths.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Picture.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Point.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Rect.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/SDF.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/SVG.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Shader.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Snapshot.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Surfaces.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Text.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/TextPath.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Transforms.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Vertices.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/Video.d.ts +1 -0
- package/lib/module/renderer/__tests__/e2e/setup/Paragraph.d.ts +19 -0
- package/lib/module/renderer/__tests__/e2e/setup/SVG.d.ts +12 -0
- package/lib/module/renderer/__tests__/e2e/setup/SkiaObject.d.ts +11 -0
- package/lib/module/renderer/__tests__/e2e/setup/index.d.ts +3 -0
- package/lib/module/renderer/__tests__/examples/BlendModes.spec.d.ts +1 -0
- package/lib/module/renderer/__tests__/setup.d.ts +66 -0
- package/lib/module/skia/__tests__/ColorFilter.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Data.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Enums.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Geometry.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/ImageFilter.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Mock.spec.d.ts +0 -0
- package/lib/module/skia/__tests__/Paint.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Path.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/RuntimeEffect.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Shader.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Text.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Transform.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/Vertices.spec.d.ts +1 -0
- package/lib/module/skia/__tests__/setup.d.ts +19 -0
- package/lib/typescript/src/__tests__/globalSetup.d.ts +9 -0
- package/lib/typescript/src/__tests__/globalTeardown.d.ts +2 -0
- package/lib/typescript/src/__tests__/setup.d.ts +18 -0
- package/lib/typescript/src/dom/__tests__/Compose.spec.d.ts +1 -0
- package/lib/typescript/src/dom/__tests__/Demos.spec.d.ts +1 -0
- package/lib/typescript/src/dom/__tests__/DrawingContext.spec.d.ts +1 -0
- package/lib/typescript/src/dom/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/typescript/src/dom/__tests__/Group.spec.d.ts +1 -0
- package/lib/typescript/src/dom/__tests__/Paint.spec.d.ts +1 -0
- package/lib/typescript/src/dom/__tests__/RenderNodes.spec.d.ts +1 -0
- package/lib/typescript/src/dom/__tests__/Shaders.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Data.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/FitBox.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Glyphs.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Image.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Paths.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Picture.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Simple.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/SkiaDOM.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Surfaces.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Text.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/TouchHandler.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/Transform.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/documentation/Group.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/documentation/paint/Overview.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/documentation/shapes/Box.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Atlas.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Blending.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Blur.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Box.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/ColorFilters.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/CoonPatch.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/DataEncoding.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Drawings.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/FontMgr.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Gradient.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Group.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Image.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/ImageFilters.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Mask.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Matrix4.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Offscreen.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Opacity.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Paint.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Paragraphs.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/PathEffects.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Paths.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Picture.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Point.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Rect.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/SDF.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/SVG.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Shader.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Snapshot.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Surfaces.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Text.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/TextPath.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Transforms.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Vertices.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/Video.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/e2e/setup/Paragraph.d.ts +19 -0
- package/lib/typescript/src/renderer/__tests__/e2e/setup/SVG.d.ts +12 -0
- package/lib/typescript/src/renderer/__tests__/e2e/setup/SkiaObject.d.ts +11 -0
- package/lib/typescript/src/renderer/__tests__/e2e/setup/index.d.ts +3 -0
- package/lib/typescript/src/renderer/__tests__/examples/BlendModes.spec.d.ts +1 -0
- package/lib/typescript/src/renderer/__tests__/setup.d.ts +66 -0
- package/lib/typescript/src/skia/__tests__/ColorFilter.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Data.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Drawings.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Enums.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Geometry.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/ImageFilter.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Mock.spec.d.ts +0 -0
- package/lib/typescript/src/skia/__tests__/Paint.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Path.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/RuntimeEffect.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Shader.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Text.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Transform.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/Vertices.spec.d.ts +1 -0
- package/lib/typescript/src/skia/__tests__/setup.d.ts +19 -0
- package/libs/ios/libskia.xcframework/Info.plist +46 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskottie.xcframework/Info.plist +46 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/ios/libskparagraph.xcframework/Info.plist +46 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/ios/libsksg.xcframework/Info.plist +46 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/ios/libskshaper.xcframework/Info.plist +46 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libskunicode.xcframework/Info.plist +46 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
- package/libs/ios/libsvg.xcframework/Info.plist +46 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +11 -14
- package/src/__tests__/globalSetup.ts +51 -0
- package/src/__tests__/globalTeardown.ts +11 -0
- package/src/__tests__/setup.ts +129 -0
- package/src/__tests__/snapshots/animated-images/bird.png +0 -0
- package/src/__tests__/snapshots/animations/green.png +0 -0
- package/src/__tests__/snapshots/animations/lightblue.png +0 -0
- package/src/__tests__/snapshots/animations/quarter-lightblue.png +0 -0
- package/src/__tests__/snapshots/animations/red.png +0 -0
- package/src/__tests__/snapshots/atlas/identity.png +0 -0
- package/src/__tests__/snapshots/atlas/rsxform.png +0 -0
- package/src/__tests__/snapshots/atlas/rsxform1.png +0 -0
- package/src/__tests__/snapshots/atlas/simple.png +0 -0
- package/src/__tests__/snapshots/atlas/simple2.png +0 -0
- package/src/__tests__/snapshots/box/box-shadow.png +0 -0
- package/src/__tests__/snapshots/box/box-shadow2.png +0 -0
- package/src/__tests__/snapshots/box/box-shadow3.png +0 -0
- package/src/__tests__/snapshots/box/box-stroke.png +0 -0
- package/src/__tests__/snapshots/color-filter/color-filter-composition.png +0 -0
- package/src/__tests__/snapshots/color-filter/matrix1.png +0 -0
- package/src/__tests__/snapshots/color-filter/matrix3.png +0 -0
- package/src/__tests__/snapshots/color-filter/zurich-sepia.png +0 -0
- package/src/__tests__/snapshots/coons-patch/patch-with-opacity.png +0 -0
- package/src/__tests__/snapshots/coons-patch/simple.png +0 -0
- package/src/__tests__/snapshots/cyan-buffer.png +0 -0
- package/src/__tests__/snapshots/data/oslo.png +0 -0
- package/src/__tests__/snapshots/data/red.png +0 -0
- package/src/__tests__/snapshots/data/zurich.png +0 -0
- package/src/__tests__/snapshots/demos/apple-breathe.png +0 -0
- package/src/__tests__/snapshots/demos/apple-breathe1.png +0 -0
- package/src/__tests__/snapshots/demos/breathe.png +0 -0
- package/src/__tests__/snapshots/demos/breathe2.png +0 -0
- package/src/__tests__/snapshots/demos/product.png +0 -0
- package/src/__tests__/snapshots/demos/product2.png +0 -0
- package/src/__tests__/snapshots/demos/skia-neon.png +0 -0
- package/src/__tests__/snapshots/demos/skia-neon1.png +0 -0
- package/src/__tests__/snapshots/drawings/arc.png +0 -0
- package/src/__tests__/snapshots/drawings/blend-mode-multiply.png +0 -0
- package/src/__tests__/snapshots/drawings/blend-modes.png +0 -0
- package/src/__tests__/snapshots/drawings/blur-node.png +0 -0
- package/src/__tests__/snapshots/drawings/blur.png +0 -0
- package/src/__tests__/snapshots/drawings/blur2.png +0 -0
- package/src/__tests__/snapshots/drawings/custom-drawing.png +0 -0
- package/src/__tests__/snapshots/drawings/cyan-circle.png +0 -0
- package/src/__tests__/snapshots/drawings/cyan.png +0 -0
- package/src/__tests__/snapshots/drawings/default-props.png +0 -0
- package/src/__tests__/snapshots/drawings/hello-world.png +0 -0
- package/src/__tests__/snapshots/drawings/image-default-props.png +0 -0
- package/src/__tests__/snapshots/drawings/lightblue-quarter-circle.png +0 -0
- package/src/__tests__/snapshots/drawings/lightblue-rect.png +0 -0
- package/src/__tests__/snapshots/drawings/line.png +0 -0
- package/src/__tests__/snapshots/drawings/multiple-paints.png +0 -0
- package/src/__tests__/snapshots/drawings/nested-shader.png +0 -0
- package/src/__tests__/snapshots/drawings/nested-shader2.png +0 -0
- package/src/__tests__/snapshots/drawings/opacity-image.png +0 -0
- package/src/__tests__/snapshots/drawings/opacity-multiplication.png +0 -0
- package/src/__tests__/snapshots/drawings/opacity-multiplication2.png +0 -0
- package/src/__tests__/snapshots/drawings/points.png +0 -0
- package/src/__tests__/snapshots/drawings/purple.png +0 -0
- package/src/__tests__/snapshots/drawings/rotated-image.png +0 -0
- package/src/__tests__/snapshots/drawings/rotated-scaled-image.png +0 -0
- package/src/__tests__/snapshots/drawings/rrect-aa.png +0 -0
- package/src/__tests__/snapshots/drawings/rrect-no-aa.png +0 -0
- package/src/__tests__/snapshots/drawings/scaled-image.png +0 -0
- package/src/__tests__/snapshots/drawings/scaled-image2.png +0 -0
- package/src/__tests__/snapshots/drawings/shader-opacity-reference.png +0 -0
- package/src/__tests__/snapshots/drawings/skew-transform.png +0 -0
- package/src/__tests__/snapshots/drawings/skew-transform2.png +0 -0
- package/src/__tests__/snapshots/drawings/small-lightblue-rect.png +0 -0
- package/src/__tests__/snapshots/drawings/stroke.png +0 -0
- package/src/__tests__/snapshots/drawings/transform-origin.png +0 -0
- package/src/__tests__/snapshots/drawings/transparent.png +0 -0
- package/src/__tests__/snapshots/drawings/violet.png +0 -0
- package/src/__tests__/snapshots/font/green.png +0 -0
- package/src/__tests__/snapshots/font/red.png +0 -0
- package/src/__tests__/snapshots/glyphs/simple.png +0 -0
- package/src/__tests__/snapshots/gradient/linear-with-opacity.png +0 -0
- package/src/__tests__/snapshots/gradient/linear.png +0 -0
- package/src/__tests__/snapshots/green.png +0 -0
- package/src/__tests__/snapshots/image-filter/blur.png +0 -0
- package/src/__tests__/snapshots/image-filter/test-shadow.png +0 -0
- package/src/__tests__/snapshots/images/bundle-android.png +0 -0
- package/src/__tests__/snapshots/images/bundle-ios.png +0 -0
- package/src/__tests__/snapshots/images/bundle-node.png +0 -0
- package/src/__tests__/snapshots/images/bundle.png +0 -0
- package/src/__tests__/snapshots/images/filter.png +0 -0
- package/src/__tests__/snapshots/leak.png +0 -0
- package/src/__tests__/snapshots/matrix4/perspective.png +0 -0
- package/src/__tests__/snapshots/paint/blend-mode.png +0 -0
- package/src/__tests__/snapshots/paint/circle.png +0 -0
- package/src/__tests__/snapshots/paint/colors.png +0 -0
- package/src/__tests__/snapshots/paint/dither.png +0 -0
- package/src/__tests__/snapshots/paint/path-paint.png +0 -0
- package/src/__tests__/snapshots/paint/without-dither.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-auto-linebreaks-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-auto-linebreaks-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-node.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-ellipse-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-ellipse-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-linebreaks-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-linebreaks-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-center-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-center-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-justify-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-justify-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-left-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-left-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-right-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-right-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-rtl-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-align-rtl-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-colors-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-colors-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-decoration-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-decoration-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-shadow-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-shadow-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-android-box.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-ios-box.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-in-paragraph-style-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/paragraph-text-style-in-paragraph-style-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/simple-paragraph-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/simple-paragraph-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-android.png +0 -0
- package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-ios.png +0 -0
- package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-node.png +0 -0
- package/src/__tests__/snapshots/path/interpolate.png +0 -0
- package/src/__tests__/snapshots/path/logo.png +0 -0
- package/src/__tests__/snapshots/path-effects/discrete.png +0 -0
- package/src/__tests__/snapshots/path-effects/sum.png +0 -0
- package/src/__tests__/snapshots/path-effects/sum2.png +0 -0
- package/src/__tests__/snapshots/paths/arc.png +0 -0
- package/src/__tests__/snapshots/paths/emptyPath.png +0 -0
- package/src/__tests__/snapshots/paths/interpolation1.png +0 -0
- package/src/__tests__/snapshots/paths/oval.png +0 -0
- package/src/__tests__/snapshots/paths/pattern.png +0 -0
- package/src/__tests__/snapshots/paths/poly.png +0 -0
- package/src/__tests__/snapshots/paths/rrect.png +0 -0
- package/src/__tests__/snapshots/paths/skia-trimmed.png +0 -0
- package/src/__tests__/snapshots/paths/skia.png +0 -0
- package/src/__tests__/snapshots/pictures/create-picture.png +0 -0
- package/src/__tests__/snapshots/pictures/green.png +0 -0
- package/src/__tests__/snapshots/pictures/hello-world.png +0 -0
- package/src/__tests__/snapshots/pictures/red.png +0 -0
- package/src/__tests__/snapshots/pictures/simple-picture.png +0 -0
- package/src/__tests__/snapshots/platform-buffer-bgra.png +0 -0
- package/src/__tests__/snapshots/platform-buffer.png +0 -0
- package/src/__tests__/snapshots/points/points.png +0 -0
- package/src/__tests__/snapshots/points/points2.png +0 -0
- package/src/__tests__/snapshots/render-nodes/simple.png +0 -0
- package/src/__tests__/snapshots/render-nodes/simple2.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/blend-color-burn.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/blend-color-burn2.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/blend-color-burn3.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/blend-color-dodge.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/blend-multiply.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/int-uniform.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/linear-gradient.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/linear-gradient2.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/small-spiral.png +0 -0
- package/src/__tests__/snapshots/runtime-effects/spiral.png +0 -0
- package/src/__tests__/snapshots/runtime-shader/scaled-circle.png +0 -0
- package/src/__tests__/snapshots/runtime-shader/scaled-circle2.png +0 -0
- package/src/__tests__/snapshots/runtime-shader/simple.png +0 -0
- package/src/__tests__/snapshots/runtime-shader/spiral.png +0 -0
- package/src/__tests__/snapshots/runtime-shader/unscaled-image.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot1-android-ci.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot1-android.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot1-ios.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot2-android-ci.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot2-android.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot2-ios.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot3-android-ci.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot3-android.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot3-ios.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot4-android-ci.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot4-android.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot4-ios.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot5-android.png +0 -0
- package/src/__tests__/snapshots/screens/snapshot5-ios.png +0 -0
- package/src/__tests__/snapshots/sdf/circle.png +0 -0
- package/src/__tests__/snapshots/sdf/heart.png +0 -0
- package/src/__tests__/snapshots/sdf/line.png +0 -0
- package/src/__tests__/snapshots/sdf/rectangle.png +0 -0
- package/src/__tests__/snapshots/shader/bilinear-interpolation.png +0 -0
- package/src/__tests__/snapshots/shader/hue.png +0 -0
- package/src/__tests__/snapshots/shader/hue2.png +0 -0
- package/src/__tests__/snapshots/shader/shader1.png +0 -0
- package/src/__tests__/snapshots/shader/shader2.png +0 -0
- package/src/__tests__/snapshots/shader/sweep-gradient.png +0 -0
- package/src/__tests__/snapshots/text/text-bounds-android.png +0 -0
- package/src/__tests__/snapshots/text/text-bounds-ios.png +0 -0
- package/src/__tests__/snapshots/text/text-default-font-android.png +0 -0
- package/src/__tests__/snapshots/text/text-default-font-ios.png +0 -0
- package/src/__tests__/snapshots/text/text-path-bug-android.png +0 -0
- package/src/__tests__/snapshots/text/text-path-bug-ios.png +0 -0
- package/src/__tests__/snapshots/text/text-path-bug-node.png +0 -0
- package/src/__tests__/snapshots/text/text-path1-android.png +0 -0
- package/src/__tests__/snapshots/text/text-path1-ios.png +0 -0
- package/src/__tests__/snapshots/text/text-path1-node.png +0 -0
- package/src/__tests__/snapshots/text/text-path2-android.png +0 -0
- package/src/__tests__/snapshots/text/text-path2-ios.png +0 -0
- package/src/__tests__/snapshots/text/text-path2-node.png +0 -0
- package/src/__tests__/snapshots/transform/rectangles.png +0 -0
- package/src/__tests__/snapshots/transform/rotate-radiants.png +0 -0
- package/src/__tests__/snapshots/transform/rotate.png +0 -0
- package/src/__tests__/snapshots/transform/scale-origin.png +0 -0
- package/src/__tests__/snapshots/transform/scale.png +0 -0
- package/src/__tests__/snapshots/transform/skew.png +0 -0
- package/src/__tests__/snapshots/transparent.png +0 -0
- package/src/__tests__/snapshots/vertices/billinear-gradient.png +0 -0
- package/src/__tests__/snapshots/vertices/strip.png +0 -0
- package/src/__tests__/snapshots/vertices/vertices.png +0 -0
- package/src/dom/__tests__/Compose.spec.tsx +42 -0
- package/src/dom/__tests__/Demos.spec.tsx +145 -0
- package/src/dom/__tests__/DrawingContext.spec.tsx +99 -0
- package/src/dom/__tests__/Drawings.spec.tsx +95 -0
- package/src/dom/__tests__/Group.spec.tsx +132 -0
- package/src/dom/__tests__/Paint.spec.tsx +100 -0
- package/src/dom/__tests__/RenderNodes.spec.tsx +44 -0
- package/src/dom/__tests__/Shaders.spec.tsx +123 -0
- package/src/renderer/__tests__/Data.spec.tsx +67 -0
- package/src/renderer/__tests__/Drawings.spec.tsx +96 -0
- package/src/renderer/__tests__/FitBox.spec.tsx +126 -0
- package/src/renderer/__tests__/Glyphs.spec.tsx +46 -0
- package/src/renderer/__tests__/Image.spec.tsx +45 -0
- package/src/renderer/__tests__/Paths.spec.tsx +75 -0
- package/src/renderer/__tests__/Picture.spec.tsx +82 -0
- package/src/renderer/__tests__/Simple.spec.tsx +81 -0
- package/src/renderer/__tests__/SkiaDOM.spec.tsx +46 -0
- package/src/renderer/__tests__/Surfaces.spec.tsx +73 -0
- package/src/renderer/__tests__/Text.spec.tsx +134 -0
- package/src/renderer/__tests__/TouchHandler.spec.tsx +113 -0
- package/src/renderer/__tests__/Transform.spec.tsx +72 -0
- package/src/renderer/__tests__/documentation/Group.spec.tsx +171 -0
- package/src/renderer/__tests__/documentation/getting-started/HelloWorld.spec.tsx +51 -0
- package/src/renderer/__tests__/documentation/paint/Overview.spec.tsx +84 -0
- package/src/renderer/__tests__/documentation/shapes/Box.spec.tsx +46 -0
- package/src/renderer/__tests__/e2e/AnimatedImages.spec.tsx +88 -0
- package/src/renderer/__tests__/e2e/Atlas.spec.tsx +358 -0
- package/src/renderer/__tests__/e2e/BackdropFilters.spec.tsx +141 -0
- package/src/renderer/__tests__/e2e/Blending.spec.tsx +115 -0
- package/src/renderer/__tests__/e2e/Blur.spec.tsx +56 -0
- package/src/renderer/__tests__/e2e/Box.spec.tsx +83 -0
- package/src/renderer/__tests__/e2e/ColorFilters.spec.tsx +212 -0
- package/src/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.tsx +81 -0
- package/src/renderer/__tests__/e2e/CoonPatch.spec.tsx +74 -0
- package/src/renderer/__tests__/e2e/DataEncoding.spec.tsx +75 -0
- package/src/renderer/__tests__/e2e/Drawings.spec.tsx +209 -0
- package/src/renderer/__tests__/e2e/FontMgr.spec.tsx +150 -0
- package/src/renderer/__tests__/e2e/Gradient.spec.tsx +40 -0
- package/src/renderer/__tests__/e2e/Group.spec.tsx +129 -0
- package/src/renderer/__tests__/e2e/Image.spec.tsx +139 -0
- package/src/renderer/__tests__/e2e/ImageEncoding.spec.tsx +255 -0
- package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +230 -0
- package/src/renderer/__tests__/e2e/Mask.spec.tsx +85 -0
- package/src/renderer/__tests__/e2e/Matrix4.spec.tsx +275 -0
- package/src/renderer/__tests__/e2e/NativeBuffer.spec.tsx +156 -0
- package/src/renderer/__tests__/e2e/Offscreen.spec.tsx +109 -0
- package/src/renderer/__tests__/e2e/Opacity.spec.tsx +278 -0
- package/src/renderer/__tests__/e2e/Paint.spec.tsx +170 -0
- package/src/renderer/__tests__/e2e/ParagraphPaint.spec.tsx +262 -0
- package/src/renderer/__tests__/e2e/Paragraphs.spec.tsx +615 -0
- package/src/renderer/__tests__/e2e/PathEffects.spec.tsx +73 -0
- package/src/renderer/__tests__/e2e/Paths.spec.tsx +390 -0
- package/src/renderer/__tests__/e2e/Picture.spec.tsx +134 -0
- package/src/renderer/__tests__/e2e/Point.spec.tsx +35 -0
- package/src/renderer/__tests__/e2e/Rect.spec.tsx +139 -0
- package/src/renderer/__tests__/e2e/RuntimeShader.spec.tsx +324 -0
- package/src/renderer/__tests__/e2e/SDF.spec.tsx +148 -0
- package/src/renderer/__tests__/e2e/SVG.spec.tsx +191 -0
- package/src/renderer/__tests__/e2e/Shader.spec.tsx +260 -0
- package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +29 -0
- package/src/renderer/__tests__/e2e/Surfaces.spec.tsx +17 -0
- package/src/renderer/__tests__/e2e/Text.spec.tsx +109 -0
- package/src/renderer/__tests__/e2e/TextPath.spec.tsx +45 -0
- package/src/renderer/__tests__/e2e/Transforms.spec.tsx +63 -0
- package/src/renderer/__tests__/e2e/Vertices.spec.tsx +30 -0
- package/src/renderer/__tests__/e2e/Video.ts +69 -0
- package/src/renderer/__tests__/e2e/setup/Paragraph.ts +56 -0
- package/src/renderer/__tests__/e2e/setup/SVG.ts +27 -0
- package/src/renderer/__tests__/e2e/setup/SkiaObject.ts +31 -0
- package/src/renderer/__tests__/e2e/setup/index.ts +3 -0
- package/src/renderer/__tests__/examples/BlendModes.spec.tsx +123 -0
- package/src/renderer/__tests__/setup.tsx +489 -0
- package/src/skia/__tests__/ColorFilter.spec.ts +67 -0
- package/src/skia/__tests__/Data.spec.ts +29 -0
- package/src/skia/__tests__/Drawings.spec.ts +119 -0
- package/src/skia/__tests__/Enums.spec.ts +114 -0
- package/src/skia/__tests__/Geometry.spec.ts +39 -0
- package/src/skia/__tests__/ImageFilter.spec.ts +19 -0
- package/src/skia/__tests__/Mock.spec.ts +7 -0
- package/src/skia/__tests__/Paint.spec.ts +25 -0
- package/src/skia/__tests__/Path.spec.ts +386 -0
- package/src/skia/__tests__/RuntimeEffect.spec.ts +66 -0
- package/src/skia/__tests__/Shader.spec.ts +96 -0
- package/src/skia/__tests__/Text.spec.ts +32 -0
- package/src/skia/__tests__/Transform.spec.ts +89 -0
- package/src/skia/__tests__/Vertices.spec.ts +40 -0
- package/src/skia/__tests__/assets/DIN-Medium.ttf +0 -0
- package/src/skia/__tests__/assets/NotoColorEmoji.ttf +0 -0
- package/src/skia/__tests__/assets/NotoSansSC-Regular.otf +0 -0
- package/src/skia/__tests__/assets/Pacifico-Regular.ttf +0 -0
- package/src/skia/__tests__/assets/Roboto-BlackItalic.ttf +0 -0
- package/src/skia/__tests__/assets/Roboto-Bold.ttf +0 -0
- package/src/skia/__tests__/assets/Roboto-Italic.ttf +0 -0
- package/src/skia/__tests__/assets/Roboto-Medium.ttf +0 -0
- package/src/skia/__tests__/assets/Roboto-Regular.ttf +0 -0
- package/src/skia/__tests__/assets/UberMove-Medium_mono.ttf +0 -0
- package/src/skia/__tests__/assets/bird.gif +0 -0
- package/src/skia/__tests__/assets/box.png +0 -0
- package/src/skia/__tests__/assets/box2.png +0 -0
- package/src/skia/__tests__/assets/card.png +0 -0
- package/src/skia/__tests__/assets/mask.png +0 -0
- package/src/skia/__tests__/assets/oslo.jpg +0 -0
- package/src/skia/__tests__/assets/product.png +0 -0
- package/src/skia/__tests__/assets/skia_logo.png +0 -0
- package/src/skia/__tests__/assets/skia_logo_jpeg.jpg +0 -0
- package/src/skia/__tests__/assets/tiger.svg +724 -0
- package/src/skia/__tests__/assets/zurich.jpg +0 -0
- package/src/skia/__tests__/setup.ts +77 -0
@@ -0,0 +1,489 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
|
+
import fs from "fs";
|
3
|
+
import path from "path";
|
4
|
+
|
5
|
+
import React from "react";
|
6
|
+
import type { ReactNode } from "react";
|
7
|
+
import type { Server, WebSocket } from "ws";
|
8
|
+
|
9
|
+
import type * as SkiaExports from "../../index";
|
10
|
+
import { JsiSkApi } from "../../skia/web/JsiSkia";
|
11
|
+
import type { Node } from "../../dom/nodes";
|
12
|
+
import { JsiSkDOM } from "../../dom/nodes";
|
13
|
+
import { Group } from "../components";
|
14
|
+
import type { SkImage, SkFont, Skia, SkCanvas } from "../../skia/types";
|
15
|
+
import { isPath } from "../../skia/types";
|
16
|
+
import { E2E } from "../../__tests__/setup";
|
17
|
+
import { SkiaRoot } from "../Reconciler";
|
18
|
+
import { JsiDrawingContext } from "../../dom/types/DrawingContext";
|
19
|
+
import { LoadSkiaWeb } from "../../web/LoadSkiaWeb";
|
20
|
+
|
21
|
+
import { SkiaObject } from "./e2e/setup";
|
22
|
+
|
23
|
+
jest.setTimeout(180 * 1000);
|
24
|
+
|
25
|
+
type TestOS = "ios" | "android" | "web" | "node";
|
26
|
+
|
27
|
+
declare global {
|
28
|
+
var testServer: Server;
|
29
|
+
var testClient: WebSocket;
|
30
|
+
var testOS: TestOS;
|
31
|
+
}
|
32
|
+
export let surface: TestingSurface;
|
33
|
+
const assets = new Map<SkImage | SkFont, string>();
|
34
|
+
export let images: {
|
35
|
+
oslo: SkImage;
|
36
|
+
skiaLogoPng: SkImage;
|
37
|
+
skiaLogoJpeg: SkImage;
|
38
|
+
mask: SkImage;
|
39
|
+
};
|
40
|
+
export let fonts: {
|
41
|
+
RobotoMedium: SkFont;
|
42
|
+
NotoColorEmoji: SkFont;
|
43
|
+
NotoSansSCRegular: SkFont;
|
44
|
+
UberMoveMediumMono: SkFont;
|
45
|
+
DinMedium: SkFont;
|
46
|
+
};
|
47
|
+
|
48
|
+
beforeAll(async () => {
|
49
|
+
await LoadSkiaWeb();
|
50
|
+
const Skia = JsiSkApi(global.CanvasKit);
|
51
|
+
global.SkiaApi = Skia;
|
52
|
+
surface = E2E ? new RemoteSurface() : new LocalSurface();
|
53
|
+
const { fontSize } = surface;
|
54
|
+
const NotoSansSCRegular = loadFont(
|
55
|
+
"skia/__tests__/assets/NotoSansSC-Regular.otf",
|
56
|
+
fontSize
|
57
|
+
);
|
58
|
+
const NotoColorEmoji = loadFont(
|
59
|
+
"skia/__tests__/assets/NotoColorEmoji.ttf",
|
60
|
+
fontSize
|
61
|
+
);
|
62
|
+
const RobotoMedium = loadFont(
|
63
|
+
"skia/__tests__/assets/Roboto-Medium.ttf",
|
64
|
+
fontSize
|
65
|
+
);
|
66
|
+
const UberMoveMediumMono = loadFont(
|
67
|
+
"skia/__tests__/assets/UberMove-Medium_mono.ttf",
|
68
|
+
fontSize
|
69
|
+
);
|
70
|
+
const DinMedium = loadFont("skia/__tests__/assets/DIN-Medium.ttf", fontSize);
|
71
|
+
const oslo = loadImage("skia/__tests__/assets/oslo.jpg");
|
72
|
+
const skiaLogoPng = loadImage("skia/__tests__/assets/skia_logo.png");
|
73
|
+
const skiaLogoJpeg = loadImage("skia/__tests__/assets/skia_logo_jpeg.jpg");
|
74
|
+
const mask = loadImage("skia/__tests__/assets/mask.png");
|
75
|
+
images = { oslo, skiaLogoPng, skiaLogoJpeg, mask };
|
76
|
+
fonts = {
|
77
|
+
RobotoMedium,
|
78
|
+
NotoColorEmoji,
|
79
|
+
NotoSansSCRegular,
|
80
|
+
UberMoveMediumMono,
|
81
|
+
DinMedium,
|
82
|
+
};
|
83
|
+
assets.set(mask, "mask");
|
84
|
+
assets.set(oslo, "oslo");
|
85
|
+
assets.set(RobotoMedium, "RobotoMedium");
|
86
|
+
assets.set(NotoColorEmoji, "NotoColorEmoji");
|
87
|
+
assets.set(NotoSansSCRegular, "NotoSansSCRegular");
|
88
|
+
assets.set(UberMoveMediumMono, "UberMoveMediumMono");
|
89
|
+
assets.set(DinMedium, "DinMedium");
|
90
|
+
assets.set(skiaLogoPng, "skiaLogoPng");
|
91
|
+
assets.set(skiaLogoJpeg, "skiaLogoJpeg");
|
92
|
+
});
|
93
|
+
|
94
|
+
export const wait = (ms: number) =>
|
95
|
+
new Promise((resolve) => setTimeout(resolve, ms));
|
96
|
+
|
97
|
+
export const resolveFile = (uri: string) =>
|
98
|
+
fs.readFileSync(path.resolve(__dirname, `../../${uri}`));
|
99
|
+
|
100
|
+
export const resolveFont = (uri: string) =>
|
101
|
+
Array.from(fs.readFileSync(path.resolve(__dirname, `../../${uri}`)));
|
102
|
+
|
103
|
+
(global as any).fetch = jest.fn((uri: string) =>
|
104
|
+
Promise.resolve({
|
105
|
+
arrayBuffer: () => Promise.resolve(resolveFile(uri)),
|
106
|
+
})
|
107
|
+
);
|
108
|
+
|
109
|
+
export const testingFonts = {
|
110
|
+
// Noto: [resolveFont("skia/__tests__/assets/NotoSansSC-Regular.otf")],
|
111
|
+
Roboto: [
|
112
|
+
resolveFont("skia/__tests__/assets/Roboto-Regular.ttf"),
|
113
|
+
resolveFont("skia/__tests__/assets/Roboto-BlackItalic.ttf"),
|
114
|
+
],
|
115
|
+
// NotoColorEmoji: [resolveFont("skia/__tests__/assets/NotoColorEmoji.ttf")],
|
116
|
+
};
|
117
|
+
|
118
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
119
|
+
export interface EmptyProps {}
|
120
|
+
|
121
|
+
jest.mock("react-native", () => ({
|
122
|
+
PixelRatio: {
|
123
|
+
get(): number {
|
124
|
+
return 1;
|
125
|
+
},
|
126
|
+
},
|
127
|
+
Platform: { OS: "web" },
|
128
|
+
Image: {
|
129
|
+
resolveAssetSource: jest.fn,
|
130
|
+
},
|
131
|
+
// requireNativeComponent: jest.fn,
|
132
|
+
// TurboModuleRegistry: {
|
133
|
+
// getEnforcing: jest.fn,
|
134
|
+
// },
|
135
|
+
}));
|
136
|
+
//jest.mock("react-native/Libraries/Utilities/codegenNativeComponent", jest.fn);
|
137
|
+
|
138
|
+
export const BirdGIF = resolveFile("skia/__tests__/assets/bird.gif").toString(
|
139
|
+
"base64"
|
140
|
+
);
|
141
|
+
|
142
|
+
export const loadImage = (uri: string) => {
|
143
|
+
const Skia = global.SkiaApi;
|
144
|
+
const image = Skia.Image.MakeImageFromEncoded(
|
145
|
+
Skia.Data.fromBytes(resolveFile(uri))
|
146
|
+
);
|
147
|
+
expect(image).toBeTruthy();
|
148
|
+
return image!;
|
149
|
+
};
|
150
|
+
|
151
|
+
export const loadFont = (uri: string, ftSize?: number) => {
|
152
|
+
const Skia = global.SkiaApi;
|
153
|
+
const tf = Skia.Typeface.MakeFreeTypeFaceFromData(
|
154
|
+
Skia.Data.fromBytes(resolveFile(uri))
|
155
|
+
);
|
156
|
+
expect(tf).toBeTruthy();
|
157
|
+
return Skia.Font(tf!, ftSize ?? fontSize);
|
158
|
+
};
|
159
|
+
|
160
|
+
export const importSkia = (): typeof SkiaExports => {
|
161
|
+
//const core = require("../../skia/core");
|
162
|
+
const skia = require("../../skia");
|
163
|
+
const renderer = require("../../renderer");
|
164
|
+
const offscreen = require("../Offscreen");
|
165
|
+
// TODO: to remove
|
166
|
+
const animation = require("../../animation");
|
167
|
+
const useTouchHandler = require("../../views/useTouchHandler");
|
168
|
+
return {
|
169
|
+
...skia,
|
170
|
+
...renderer,
|
171
|
+
...animation,
|
172
|
+
...offscreen,
|
173
|
+
...useTouchHandler,
|
174
|
+
};
|
175
|
+
};
|
176
|
+
|
177
|
+
export const getSkDOM = () => {
|
178
|
+
const { Skia } = importSkia();
|
179
|
+
return new JsiSkDOM({ Skia }, false);
|
180
|
+
};
|
181
|
+
|
182
|
+
export const PIXEL_RATIO = 3;
|
183
|
+
export const fontSize = 32 * PIXEL_RATIO;
|
184
|
+
export const width = 256 * PIXEL_RATIO;
|
185
|
+
export const height = 256 * PIXEL_RATIO;
|
186
|
+
export const center = { x: width / 2, y: height / 2 };
|
187
|
+
|
188
|
+
export const drawOnNode = (element: ReactNode) => {
|
189
|
+
const { surface: ckSurface, draw, root } = mountCanvas(element);
|
190
|
+
draw();
|
191
|
+
root.unmount();
|
192
|
+
return ckSurface;
|
193
|
+
};
|
194
|
+
|
195
|
+
export const mountCanvas = (element: ReactNode) => {
|
196
|
+
const Skia = global.SkiaApi;
|
197
|
+
expect(Skia).toBeDefined();
|
198
|
+
const ckSurface = Skia.Surface.MakeOffscreen(width, height)!;
|
199
|
+
expect(ckSurface).toBeDefined();
|
200
|
+
const canvas = ckSurface.getCanvas();
|
201
|
+
|
202
|
+
const root = new SkiaRoot(Skia, false);
|
203
|
+
root.render(element);
|
204
|
+
return {
|
205
|
+
surface: ckSurface,
|
206
|
+
root,
|
207
|
+
draw: () => {
|
208
|
+
const ctx = new JsiDrawingContext(Skia, canvas);
|
209
|
+
root.dom.render(ctx);
|
210
|
+
},
|
211
|
+
};
|
212
|
+
};
|
213
|
+
|
214
|
+
export const serialize = (element: ReactNode) => {
|
215
|
+
const { root } = mountCanvas(element);
|
216
|
+
const serialized = serializeNode(root.dom);
|
217
|
+
return JSON.stringify(serialized);
|
218
|
+
};
|
219
|
+
|
220
|
+
interface SerializedProps {
|
221
|
+
[key: string]: any;
|
222
|
+
}
|
223
|
+
|
224
|
+
interface SerializedNode {
|
225
|
+
type: string;
|
226
|
+
props: SerializedProps;
|
227
|
+
children: SerializedNode[];
|
228
|
+
}
|
229
|
+
|
230
|
+
const serializeSkOjects = (obj: any): any => {
|
231
|
+
if (typeof obj === "function") {
|
232
|
+
return { __typename__: "Function", source: `${obj.toString()}` };
|
233
|
+
} else if (Array.isArray(obj)) {
|
234
|
+
return obj.map((item) => serializeSkOjects(item));
|
235
|
+
} else if (obj && typeof obj === "object" && "__typename__" in obj) {
|
236
|
+
if (obj instanceof SkiaObject) {
|
237
|
+
const skObj: SkiaObject<EvalContext, any> = obj;
|
238
|
+
return {
|
239
|
+
__typename__: "SkiaObject",
|
240
|
+
source: skObj.source,
|
241
|
+
context: skObj.context,
|
242
|
+
};
|
243
|
+
} else if (obj.__typename__ === "Point") {
|
244
|
+
return { __typename__: "Point", x: obj.x, y: obj.y };
|
245
|
+
} else if (obj.__typename__ === "Paint") {
|
246
|
+
return { __typename__: "Paint", color: Array.from(obj.getColor()) };
|
247
|
+
} else if (obj.__typename__ === "Rect") {
|
248
|
+
return {
|
249
|
+
__typename__: "Rect",
|
250
|
+
x: obj.x,
|
251
|
+
y: obj.y,
|
252
|
+
width: obj.width,
|
253
|
+
height: obj.height,
|
254
|
+
};
|
255
|
+
} else if (obj.__typename__ === "RRect") {
|
256
|
+
return {
|
257
|
+
__typename__: "RRect",
|
258
|
+
x: obj.rect.x,
|
259
|
+
y: obj.rect.y,
|
260
|
+
width: obj.rect.width,
|
261
|
+
height: obj.rect.height,
|
262
|
+
rx: obj.rx,
|
263
|
+
ry: obj.ry,
|
264
|
+
};
|
265
|
+
} else if (isPath(obj)) {
|
266
|
+
return {
|
267
|
+
__typename__: "Path",
|
268
|
+
cmds: obj.toCmds(),
|
269
|
+
};
|
270
|
+
} else if (obj.__typename__ === "Image") {
|
271
|
+
const asset = assets.get(obj)!;
|
272
|
+
if (!asset) {
|
273
|
+
return {
|
274
|
+
__typename__: "RawImage",
|
275
|
+
data: obj.encodeToBase64(),
|
276
|
+
};
|
277
|
+
}
|
278
|
+
return {
|
279
|
+
__typename__: "Image",
|
280
|
+
name: asset,
|
281
|
+
};
|
282
|
+
} else if (obj.__typename__ === "Font") {
|
283
|
+
return {
|
284
|
+
__typename__: "Font",
|
285
|
+
size: obj.getSize(),
|
286
|
+
name: assets.get(obj)!,
|
287
|
+
};
|
288
|
+
} else if (obj.__typename__ === "RuntimeEffect") {
|
289
|
+
return {
|
290
|
+
__typename__: "RuntimeEffect",
|
291
|
+
source: obj.source(),
|
292
|
+
};
|
293
|
+
} else if (obj.__typename__ === "SVG") {
|
294
|
+
return {
|
295
|
+
__typename__: "SVG",
|
296
|
+
source: obj.source(),
|
297
|
+
};
|
298
|
+
} else if (obj.__typename__ === "RSXform") {
|
299
|
+
return {
|
300
|
+
__typename__: "RSXform",
|
301
|
+
scos: obj.scos,
|
302
|
+
ssin: obj.ssin,
|
303
|
+
tx: obj.tx,
|
304
|
+
ty: obj.ty,
|
305
|
+
};
|
306
|
+
}
|
307
|
+
}
|
308
|
+
return obj;
|
309
|
+
};
|
310
|
+
|
311
|
+
const serializeNode = (node: Node<any>): SerializedNode => {
|
312
|
+
const props: any = {};
|
313
|
+
const ogProps = node.getProps();
|
314
|
+
if (ogProps) {
|
315
|
+
Object.keys(ogProps)
|
316
|
+
.filter((key) => key !== "children")
|
317
|
+
.forEach((key) => {
|
318
|
+
props[key] = serializeSkOjects(ogProps[key]);
|
319
|
+
});
|
320
|
+
}
|
321
|
+
return {
|
322
|
+
type: node.type,
|
323
|
+
props,
|
324
|
+
children: node.children().map((child) => serializeNode(child)),
|
325
|
+
};
|
326
|
+
};
|
327
|
+
|
328
|
+
export type EvalContext = Record<string, any>;
|
329
|
+
|
330
|
+
interface TestingSurface {
|
331
|
+
eval<Ctx extends EvalContext = EvalContext, R = any>(
|
332
|
+
fn: (Skia: Skia, ctx: Ctx) => R,
|
333
|
+
ctx?: Ctx
|
334
|
+
): Promise<R>;
|
335
|
+
drawOffscreen<Ctx extends EvalContext, R>(
|
336
|
+
fn: (Skia: Skia, canvas: SkCanvas, ctx: Ctx) => R,
|
337
|
+
ctx?: Ctx
|
338
|
+
): Promise<SkImage>;
|
339
|
+
draw(node: ReactNode): Promise<SkImage>;
|
340
|
+
screen(name: string): Promise<SkImage>;
|
341
|
+
width: number;
|
342
|
+
height: number;
|
343
|
+
fontSize: number;
|
344
|
+
OS: TestOS;
|
345
|
+
arch: "paper" | "fabric";
|
346
|
+
}
|
347
|
+
|
348
|
+
class LocalSurface implements TestingSurface {
|
349
|
+
readonly width = 256;
|
350
|
+
readonly height = 256;
|
351
|
+
readonly fontSize = 32;
|
352
|
+
readonly OS = "node";
|
353
|
+
readonly arch = "paper";
|
354
|
+
|
355
|
+
eval<Ctx extends EvalContext, R>(
|
356
|
+
fn: (Skia: Skia, ctx: Ctx) => R,
|
357
|
+
ctx?: Ctx
|
358
|
+
): Promise<R> {
|
359
|
+
return Promise.resolve(fn(global.SkiaApi, ctx ?? ({} as any)));
|
360
|
+
}
|
361
|
+
|
362
|
+
drawOffscreen<Ctx extends EvalContext>(
|
363
|
+
fn: (Skia: Skia, canvas: SkCanvas, ctx: Ctx) => void,
|
364
|
+
ctx?: Ctx
|
365
|
+
): Promise<SkImage> {
|
366
|
+
const ckSurface = global.SkiaApi.Surface.MakeOffscreen(
|
367
|
+
this.width * PIXEL_RATIO,
|
368
|
+
this.height * PIXEL_RATIO
|
369
|
+
);
|
370
|
+
if (!ckSurface) {
|
371
|
+
throw new Error("Unable to create offscreen surface");
|
372
|
+
}
|
373
|
+
const canvas = ckSurface.getCanvas();
|
374
|
+
canvas.save();
|
375
|
+
canvas.scale(PIXEL_RATIO, PIXEL_RATIO);
|
376
|
+
fn(global.SkiaApi, canvas, ctx ?? ({} as any));
|
377
|
+
canvas.restore();
|
378
|
+
ckSurface.flush();
|
379
|
+
return Promise.resolve(ckSurface.makeImageSnapshot());
|
380
|
+
}
|
381
|
+
|
382
|
+
draw(node: ReactNode): Promise<SkImage> {
|
383
|
+
const { surface: ckSurface, draw } = mountCanvas(
|
384
|
+
<Group transform={[{ scale: PIXEL_RATIO }]}>{node}</Group>
|
385
|
+
);
|
386
|
+
draw();
|
387
|
+
return Promise.resolve(ckSurface.makeImageSnapshot());
|
388
|
+
}
|
389
|
+
|
390
|
+
screen(_name: string): Promise<SkImage> {
|
391
|
+
throw new Error("screen() is not implemented on node");
|
392
|
+
}
|
393
|
+
}
|
394
|
+
|
395
|
+
class RemoteSurface implements TestingSurface {
|
396
|
+
readonly width = 256;
|
397
|
+
readonly height = 256;
|
398
|
+
readonly fontSize = 32;
|
399
|
+
readonly OS = global.testOS;
|
400
|
+
readonly arch = global.testArch;
|
401
|
+
|
402
|
+
eval<Ctx extends EvalContext, R>(
|
403
|
+
fn: (Skia: Skia, ctx: Ctx) => any,
|
404
|
+
context?: Ctx
|
405
|
+
): Promise<R> {
|
406
|
+
const ctx = this.prepareContext(context);
|
407
|
+
const body = { code: fn.toString(), ctx };
|
408
|
+
return this.handleImageResponse<R>(JSON.stringify(body), true);
|
409
|
+
}
|
410
|
+
|
411
|
+
async drawOffscreen<Ctx extends EvalContext>(
|
412
|
+
fn: (Skia: Skia, canvas: SkCanvas, ctx: Ctx) => void,
|
413
|
+
context?: Ctx
|
414
|
+
) {
|
415
|
+
const ctx = this.prepareContext(context);
|
416
|
+
const code = `(Skia, ctx, size, scale) => {
|
417
|
+
const surface = Skia.Surface.MakeOffscreen(size, size);
|
418
|
+
if (!surface) {
|
419
|
+
throw new Error("Unable to create offscreen surface");
|
420
|
+
}
|
421
|
+
const canvas = surface.getCanvas();
|
422
|
+
canvas.save();
|
423
|
+
canvas.scale(scale, scale);
|
424
|
+
(${fn.toString()})(Skia, canvas, ctx);
|
425
|
+
canvas.restore();
|
426
|
+
surface.flush();
|
427
|
+
return surface.makeImageSnapshot().encodeToBase64();
|
428
|
+
}`;
|
429
|
+
const body = { code, ctx };
|
430
|
+
const base64 = await this.handleImageResponse<string>(
|
431
|
+
JSON.stringify(body),
|
432
|
+
true
|
433
|
+
);
|
434
|
+
const Skia = global.SkiaApi;
|
435
|
+
const data = Skia.Data.fromBase64(base64);
|
436
|
+
const image = Skia.Image.MakeImageFromEncoded(data);
|
437
|
+
if (image === null) {
|
438
|
+
throw new Error("Unable to decode image");
|
439
|
+
}
|
440
|
+
return image;
|
441
|
+
}
|
442
|
+
|
443
|
+
draw(node: ReactNode) {
|
444
|
+
return this.handleImageResponse(serialize(node));
|
445
|
+
}
|
446
|
+
|
447
|
+
screen(screen: string) {
|
448
|
+
return this.handleImageResponse(JSON.stringify({ screen }));
|
449
|
+
}
|
450
|
+
|
451
|
+
private get client() {
|
452
|
+
if (global.testClient === null) {
|
453
|
+
throw new Error("Client is not connected. Did you call init?");
|
454
|
+
}
|
455
|
+
return global.testClient!;
|
456
|
+
}
|
457
|
+
|
458
|
+
private prepareContext<Ctx extends EvalContext>(context?: Ctx): EvalContext {
|
459
|
+
const ctx: EvalContext = {};
|
460
|
+
if (context) {
|
461
|
+
Object.keys(context).forEach((key) => {
|
462
|
+
ctx[key] = serializeSkOjects(context[key]);
|
463
|
+
});
|
464
|
+
}
|
465
|
+
return ctx;
|
466
|
+
}
|
467
|
+
|
468
|
+
private handleImageResponse<R = SkImage>(
|
469
|
+
body: string,
|
470
|
+
json?: boolean
|
471
|
+
): Promise<R> {
|
472
|
+
return new Promise((resolve) => {
|
473
|
+
this.client.once("message", (raw: Buffer) => {
|
474
|
+
resolve(json ? JSON.parse(raw.toString()) : this.decodeImage(raw));
|
475
|
+
});
|
476
|
+
this.client.send(body);
|
477
|
+
});
|
478
|
+
}
|
479
|
+
|
480
|
+
private decodeImage(raw: Buffer) {
|
481
|
+
const Skia = global.SkiaApi;
|
482
|
+
const data = Skia.Data.fromBytes(new Uint8Array(raw));
|
483
|
+
const image = Skia.Image.MakeImageFromEncoded(data);
|
484
|
+
if (image === null) {
|
485
|
+
throw new Error("Unable to decode image");
|
486
|
+
}
|
487
|
+
return image;
|
488
|
+
}
|
489
|
+
}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import fs from "fs";
|
2
|
+
import path from "path";
|
3
|
+
|
4
|
+
import { processResult } from "../../__tests__/setup";
|
5
|
+
import type { SkColorFilter } from "../types/ColorFilter/ColorFilter";
|
6
|
+
|
7
|
+
import { setupSkia } from "./setup";
|
8
|
+
|
9
|
+
describe("Color Filters", () => {
|
10
|
+
it("Duotone Color Matrix", () => {
|
11
|
+
const ctx = setupSkia();
|
12
|
+
const { Skia } = ctx;
|
13
|
+
testColorFilter(
|
14
|
+
ctx,
|
15
|
+
Skia.ColorFilter.MakeMatrix([
|
16
|
+
-0.578, 0.99, 0.588, 0, 0, 0.469, 0.535, -0.003, 0, 0, 0.015, 1.69,
|
17
|
+
-0.703, 0, 0, 0, 0, 0, 1, 0,
|
18
|
+
]),
|
19
|
+
"snapshots/color-filter/matrix1.png"
|
20
|
+
);
|
21
|
+
});
|
22
|
+
it("Sepia Color Matrix", () => {
|
23
|
+
const ctx = setupSkia();
|
24
|
+
const { Skia } = ctx;
|
25
|
+
testColorFilter(
|
26
|
+
ctx,
|
27
|
+
Skia.ColorFilter.MakeMatrix([
|
28
|
+
0.393, 0.768, 0.188, 0, 0, 0.349, 0.685, 0.167, 0, 0, 0.272, 0.533,
|
29
|
+
0.13, 0, 0, 0, 0, 0, 1, 0,
|
30
|
+
]),
|
31
|
+
"snapshots/color-filter/zurich-sepia.png"
|
32
|
+
);
|
33
|
+
});
|
34
|
+
it("Exposure Color Matrix", () => {
|
35
|
+
const ctx = setupSkia();
|
36
|
+
const { Skia } = ctx;
|
37
|
+
testColorFilter(
|
38
|
+
ctx,
|
39
|
+
Skia.ColorFilter.MakeMatrix([
|
40
|
+
1, 0, 0, 0, 0.262, 0, 1, 0, 0, 0.262, 0, 0, 1, 0, 0.262, 0, 0, 0, 1, 0,
|
41
|
+
]),
|
42
|
+
"snapshots/color-filter/matrix3.png"
|
43
|
+
);
|
44
|
+
});
|
45
|
+
});
|
46
|
+
|
47
|
+
const testColorFilter = (
|
48
|
+
{ Skia, canvas, surface, width, height }: ReturnType<typeof setupSkia>,
|
49
|
+
colorFilter: SkColorFilter,
|
50
|
+
result: string
|
51
|
+
) => {
|
52
|
+
const image = Skia.Image.MakeImageFromEncoded(
|
53
|
+
Skia.Data.fromBytes(
|
54
|
+
fs.readFileSync(path.resolve(__dirname, "./assets/zurich.jpg"))
|
55
|
+
)
|
56
|
+
)!;
|
57
|
+
const imgRect = Skia.XYWHRect(0, 0, image.width(), image.height());
|
58
|
+
const paint = Skia.Paint();
|
59
|
+
paint.setColorFilter(colorFilter);
|
60
|
+
canvas.drawImageRect(
|
61
|
+
image,
|
62
|
+
imgRect,
|
63
|
+
Skia.XYWHRect(0, 0, width, height),
|
64
|
+
paint
|
65
|
+
);
|
66
|
+
processResult(surface, result);
|
67
|
+
};
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import type { JsiSkData } from "../web/JsiSkData";
|
2
|
+
import { importSkia, resolveFile } from "../../renderer/__tests__/setup";
|
3
|
+
|
4
|
+
import { setupSkia } from "./setup";
|
5
|
+
|
6
|
+
describe("Data", () => {
|
7
|
+
it("Should create a SkData instance from a base64 string", () => {
|
8
|
+
const { Skia } = setupSkia();
|
9
|
+
const data = Skia.Data.fromBase64("aGVsbG8=") as JsiSkData;
|
10
|
+
const ref = Uint8Array.of(
|
11
|
+
"h".charCodeAt(0),
|
12
|
+
"e".charCodeAt(0),
|
13
|
+
"l".charCodeAt(0),
|
14
|
+
"l".charCodeAt(0),
|
15
|
+
"o".charCodeAt(0)
|
16
|
+
);
|
17
|
+
expect(data.ref).toEqual(ref);
|
18
|
+
});
|
19
|
+
it("Should create a SkData instance from a uri", async () => {
|
20
|
+
const zurich = resolveFile("skia/__tests__/assets/zurich.jpg");
|
21
|
+
const oslo = resolveFile("skia/__tests__/assets/oslo.jpg");
|
22
|
+
const { Skia } = importSkia();
|
23
|
+
const data = (await Skia.Data.fromURI(
|
24
|
+
"skia/__tests__/assets/zurich.jpg"
|
25
|
+
)) as JsiSkData;
|
26
|
+
expect(data.ref.byteLength).toEqual(zurich.byteLength);
|
27
|
+
expect(data.ref.byteLength).not.toEqual(oslo.byteLength);
|
28
|
+
});
|
29
|
+
});
|
@@ -0,0 +1,119 @@
|
|
1
|
+
import { processResult } from "../../__tests__/setup";
|
2
|
+
import { BlendMode, PaintStyle, StrokeCap } from "../types";
|
3
|
+
|
4
|
+
import { setupSkia } from "./setup";
|
5
|
+
|
6
|
+
describe("Drawings", () => {
|
7
|
+
it("Lightblue rectangle", () => {
|
8
|
+
const { surface, canvas, Skia } = setupSkia();
|
9
|
+
const paint = Skia.Paint();
|
10
|
+
paint.setColor(Skia.Color("lightblue"));
|
11
|
+
const rct = Skia.XYWHRect(64, 64, 128, 128);
|
12
|
+
canvas.drawRect(rct, paint);
|
13
|
+
processResult(surface, "snapshots/drawings/small-lightblue-rect.png");
|
14
|
+
});
|
15
|
+
|
16
|
+
it("Multiply blend mode", () => {
|
17
|
+
const { surface, canvas, width, height, Skia } = setupSkia();
|
18
|
+
const r = 0.37 * width;
|
19
|
+
|
20
|
+
const paint = Skia.Paint();
|
21
|
+
paint.setAntiAlias(true);
|
22
|
+
paint.setBlendMode(BlendMode.Multiply);
|
23
|
+
|
24
|
+
const cyan = paint.copy();
|
25
|
+
cyan.setColor(Skia.Color("cyan"));
|
26
|
+
canvas.drawCircle(r, r, r, cyan);
|
27
|
+
// Magenta Circle
|
28
|
+
const magenta = paint.copy();
|
29
|
+
magenta.setColor(Skia.Color("magenta"));
|
30
|
+
canvas.drawCircle(width - r, r, r, magenta);
|
31
|
+
// Yellow Circle
|
32
|
+
const yellow = paint.copy();
|
33
|
+
yellow.setColor(Skia.Color("yellow"));
|
34
|
+
canvas.drawCircle(width / 2, height - r, r, yellow);
|
35
|
+
|
36
|
+
processResult(surface, "snapshots/drawings/blend-modes.png");
|
37
|
+
});
|
38
|
+
|
39
|
+
it("Cyan Circle", () => {
|
40
|
+
const { surface, canvas, Skia } = setupSkia();
|
41
|
+
|
42
|
+
const r = 128;
|
43
|
+
|
44
|
+
const paint = Skia.Paint();
|
45
|
+
paint.setAntiAlias(true);
|
46
|
+
|
47
|
+
paint.setColor(Skia.Color("cyan"));
|
48
|
+
canvas.drawCircle(r, r, r, paint);
|
49
|
+
|
50
|
+
processResult(surface, "snapshots/drawings/cyan-circle.png");
|
51
|
+
});
|
52
|
+
|
53
|
+
it("Rectangle Stroke", () => {
|
54
|
+
const { surface, canvas, Skia } = setupSkia();
|
55
|
+
|
56
|
+
const paint = Skia.Paint();
|
57
|
+
paint.setAntiAlias(true);
|
58
|
+
|
59
|
+
paint.setColor(Skia.Color("cyan"));
|
60
|
+
paint.setStyle(PaintStyle.Stroke);
|
61
|
+
paint.setStrokeWidth(10);
|
62
|
+
const rect = Skia.XYWHRect(64, 64, 128, 128);
|
63
|
+
canvas.drawRect(rect, paint);
|
64
|
+
|
65
|
+
processResult(surface, "snapshots/drawings/stroke.png");
|
66
|
+
});
|
67
|
+
|
68
|
+
it("Cyan line with rounded stroke cap", () => {
|
69
|
+
const { surface, canvas, width, height, Skia } = setupSkia();
|
70
|
+
|
71
|
+
const paint = Skia.Paint();
|
72
|
+
paint.setAntiAlias(true);
|
73
|
+
|
74
|
+
paint.setColor(Skia.Color("cyan"));
|
75
|
+
paint.setStyle(PaintStyle.Stroke);
|
76
|
+
paint.setStrokeWidth(10);
|
77
|
+
paint.setStrokeCap(StrokeCap.Round);
|
78
|
+
canvas.drawLine(32, 32, width - 32, height - 32, paint);
|
79
|
+
|
80
|
+
processResult(surface, "snapshots/drawings/line.png");
|
81
|
+
});
|
82
|
+
|
83
|
+
it("Purple", () => {
|
84
|
+
const { surface, canvas, Skia } = setupSkia();
|
85
|
+
canvas.drawColor(Skia.Color("purple"));
|
86
|
+
processResult(surface, "snapshots/drawings/purple.png");
|
87
|
+
});
|
88
|
+
|
89
|
+
it("Should accept object implementation of SkRect", () => {
|
90
|
+
const { surface, canvas, Skia } = setupSkia();
|
91
|
+
const paint = Skia.Paint();
|
92
|
+
paint.setColor(Skia.Color("lightblue"));
|
93
|
+
canvas.drawRect({ x: 64, y: 64, width: 128, height: 128 }, paint);
|
94
|
+
processResult(surface, "snapshots/drawings/small-lightblue-rect.png");
|
95
|
+
});
|
96
|
+
|
97
|
+
it("Should draw an arc", () => {
|
98
|
+
const { surface, canvas, Skia } = setupSkia();
|
99
|
+
const paint = Skia.Paint();
|
100
|
+
paint.setColor(Skia.Color("lightblue"));
|
101
|
+
canvas.drawArc(
|
102
|
+
{ x: 64, y: 64, width: 128, height: 128 },
|
103
|
+
0,
|
104
|
+
180,
|
105
|
+
true,
|
106
|
+
paint
|
107
|
+
);
|
108
|
+
processResult(surface, "snapshots/drawings/arc.png");
|
109
|
+
});
|
110
|
+
|
111
|
+
it("Transparent Circle", () => {
|
112
|
+
const { surface, canvas, Skia } = setupSkia(100, 100);
|
113
|
+
const paint = Skia.Paint();
|
114
|
+
const rct = Skia.XYWHRect(0, 0, 100, 100);
|
115
|
+
paint.setColor(Float32Array.of(1, 0, 0, 0));
|
116
|
+
canvas.drawRect(rct, paint);
|
117
|
+
processResult(surface, "snapshots/drawings/transparent.png");
|
118
|
+
});
|
119
|
+
});
|