@shopify/react-native-skia 0.1.172 → 0.1.174
Sign up to get free protection for your applications and to get access to all the features.
- package/android/CMakeLists.txt +1 -0
- package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +5 -0
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +106 -5
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +3 -1
- package/cpp/api/JsiSkSurface.h +7 -1
- package/cpp/api/JsiSkSurfaceFactory.h +15 -2
- package/cpp/rnskia/RNSkDomView.cpp +2 -4
- package/cpp/rnskia/RNSkJsView.cpp +3 -0
- package/cpp/rnskia/RNSkPictureView.h +3 -0
- package/cpp/rnskia/RNSkPlatformContext.h +9 -0
- package/cpp/rnskia/dom/JsiDomApi.h +1 -0
- package/cpp/rnskia/dom/base/ConcatablePaint.cpp +117 -0
- package/cpp/rnskia/dom/base/ConcatablePaint.h +49 -0
- package/cpp/rnskia/dom/base/Declaration.h +88 -0
- package/cpp/rnskia/dom/base/DeclarationContext.h +79 -0
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +25 -9
- package/cpp/rnskia/dom/base/DrawingContext.cpp +32 -186
- package/cpp/rnskia/dom/base/DrawingContext.h +45 -64
- package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +35 -106
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +28 -9
- package/cpp/rnskia/dom/base/JsiDomNode.h +46 -17
- package/cpp/rnskia/dom/base/JsiDomRenderNode.h +81 -67
- package/cpp/rnskia/dom/base/NodeProp.h +12 -2
- package/cpp/rnskia/dom/base/NodePropsContainer.h +15 -16
- package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +22 -11
- package/cpp/rnskia/dom/nodes/JsiBlendNode.h +43 -59
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +16 -17
- package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +6 -5
- package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +45 -69
- package/cpp/rnskia/dom/nodes/JsiGroupNode.h +1 -1
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +121 -161
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +1 -0
- package/cpp/rnskia/dom/nodes/JsiLayerNode.h +28 -18
- package/cpp/rnskia/dom/nodes/JsiPaintNode.h +82 -45
- package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +68 -101
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +3 -2
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +150 -207
- package/cpp/rnskia/dom/props/BezierProps.h +4 -2
- package/cpp/rnskia/dom/props/BlendModeProp.h +4 -2
- package/cpp/rnskia/dom/props/BoxShadowProps.h +8 -10
- package/cpp/rnskia/dom/props/CircleProp.h +6 -5
- package/cpp/rnskia/dom/props/ClipProp.h +6 -4
- package/cpp/rnskia/dom/props/ColorProp.h +8 -4
- package/cpp/rnskia/dom/props/DrawingProp.h +5 -3
- package/cpp/rnskia/dom/props/FontProp.h +4 -2
- package/cpp/rnskia/dom/props/GlyphsProp.h +4 -2
- package/cpp/rnskia/dom/props/ImageProps.h +9 -6
- package/cpp/rnskia/dom/props/LayerProp.h +6 -4
- package/cpp/rnskia/dom/props/MatrixProp.h +4 -2
- package/cpp/rnskia/dom/props/NumbersProp.h +8 -4
- package/cpp/rnskia/dom/props/PaintProps.h +55 -92
- package/cpp/rnskia/dom/props/PathProp.h +4 -2
- package/cpp/rnskia/dom/props/PictureProp.h +4 -2
- package/cpp/rnskia/dom/props/PointProp.h +4 -2
- package/cpp/rnskia/dom/props/PointsProp.h +8 -4
- package/cpp/rnskia/dom/props/RRectProp.h +23 -16
- package/cpp/rnskia/dom/props/RadiusProp.h +4 -2
- package/cpp/rnskia/dom/props/RectProp.h +18 -12
- package/cpp/rnskia/dom/props/StrokeProps.h +8 -4
- package/cpp/rnskia/dom/props/SvgProp.h +4 -2
- package/cpp/rnskia/dom/props/TextBlobProp.h +10 -8
- package/cpp/rnskia/dom/props/TileModeProp.h +4 -2
- package/cpp/rnskia/dom/props/TransformProp.h +4 -2
- package/cpp/rnskia/dom/props/TransformsProps.h +5 -7
- package/cpp/rnskia/dom/props/UniformsProp.h +4 -2
- package/cpp/rnskia/dom/props/VertexModeProp.h +4 -2
- package/cpp/rnskia/dom/props/VerticesProps.h +7 -11
- package/ios/RNSkia-iOS/DisplayLink.mm +22 -24
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +53 -50
- package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +2 -0
- package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +56 -25
- package/ios/RNSkia-iOS/SkiaDomViewManager.mm +17 -17
- package/ios/RNSkia-iOS/SkiaDrawViewManager.mm +17 -17
- package/ios/RNSkia-iOS/SkiaManager.mm +12 -10
- package/ios/RNSkia-iOS/SkiaMetalRenderer.h +5 -0
- package/ios/RNSkia-iOS/SkiaMetalRenderer.mm +53 -0
- package/ios/RNSkia-iOS/SkiaPictureViewManager.mm +17 -17
- package/ios/RNSkia-iOS/SkiaUIView.mm +63 -53
- package/ios/RNSkiaModule.mm +5 -7
- package/lib/commonjs/dom/nodes/DrawingNode.js +5 -1
- package/lib/commonjs/dom/nodes/DrawingNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +33 -34
- package/lib/commonjs/dom/nodes/LayerNode.js +13 -6
- package/lib/commonjs/dom/nodes/LayerNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/Node.d.ts +6 -11
- package/lib/commonjs/dom/nodes/Node.js +8 -26
- package/lib/commonjs/dom/nodes/Node.js.map +1 -1
- package/lib/commonjs/dom/nodes/PaintContext.js.map +1 -1
- package/lib/commonjs/dom/nodes/PaintNode.d.ts +3 -3
- package/lib/commonjs/dom/nodes/PaintNode.js +32 -15
- package/lib/commonjs/dom/nodes/PaintNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.d.ts +2 -3
- package/lib/commonjs/dom/nodes/RenderNode.js +19 -187
- package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/BackdropFilterNode.d.ts +1 -1
- package/lib/commonjs/dom/nodes/drawings/BackdropFilterNode.js +25 -7
- package/lib/commonjs/dom/nodes/drawings/BackdropFilterNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/Box.d.ts +3 -1
- package/lib/commonjs/dom/nodes/drawings/Box.js +3 -0
- package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/BlendNode.d.ts +3 -7
- package/lib/commonjs/dom/nodes/paint/BlendNode.js +16 -47
- package/lib/commonjs/dom/nodes/paint/BlendNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/ColorFilters.d.ts +10 -11
- package/lib/commonjs/dom/nodes/paint/ColorFilters.js +29 -43
- package/lib/commonjs/dom/nodes/paint/ColorFilters.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/ImageFilters.d.ts +11 -11
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js +45 -42
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/MaskFilters.d.ts +3 -3
- package/lib/commonjs/dom/nodes/paint/MaskFilters.js +3 -2
- package/lib/commonjs/dom/nodes/paint/MaskFilters.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/PathEffects.d.ts +15 -18
- package/lib/commonjs/dom/nodes/paint/PathEffects.js +30 -72
- package/lib/commonjs/dom/nodes/paint/PathEffects.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/Shaders.d.ts +11 -12
- package/lib/commonjs/dom/nodes/paint/Shaders.js +28 -18
- package/lib/commonjs/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/commonjs/dom/types/DeclarationContext.d.ts +29 -0
- package/lib/commonjs/dom/types/DeclarationContext.js +118 -0
- package/lib/commonjs/dom/types/DeclarationContext.js.map +1 -0
- package/lib/commonjs/dom/types/DrawingContext.d.ts +18 -1
- package/lib/commonjs/dom/types/DrawingContext.js +330 -0
- package/lib/commonjs/dom/types/DrawingContext.js.map +1 -1
- package/lib/commonjs/dom/types/Node.d.ts +4 -10
- package/lib/commonjs/dom/types/Node.js.map +1 -1
- package/lib/commonjs/dom/types/SkDOM.d.ts +22 -23
- package/lib/commonjs/dom/types/SkDOM.js.map +1 -1
- package/lib/commonjs/dom/types/index.d.ts +1 -0
- package/lib/commonjs/dom/types/index.js +13 -0
- package/lib/commonjs/dom/types/index.js.map +1 -1
- package/lib/commonjs/index.d.ts +1 -0
- package/lib/commonjs/index.js +13 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +3 -3
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/DrawingContext.d.ts +4 -3
- package/lib/commonjs/renderer/DrawingContext.js.map +1 -1
- package/lib/commonjs/renderer/HostComponents.d.ts +35 -35
- package/lib/commonjs/renderer/HostComponents.js.map +1 -1
- package/lib/commonjs/renderer/HostConfig.js +1 -0
- package/lib/commonjs/renderer/HostConfig.js.map +1 -1
- package/lib/commonjs/renderer/Offscreen.d.ts +2 -0
- package/lib/commonjs/renderer/Offscreen.js +31 -0
- package/lib/commonjs/renderer/Offscreen.js.map +1 -0
- package/lib/commonjs/renderer/Reconciler.js +0 -1
- package/lib/commonjs/renderer/Reconciler.js.map +1 -1
- package/lib/commonjs/skia/types/Surface/Surface.d.ts +4 -0
- package/lib/commonjs/skia/types/Surface/Surface.js.map +1 -1
- package/lib/commonjs/skia/types/Surface/SurfaceFactory.d.ts +6 -0
- package/lib/commonjs/skia/types/Surface/SurfaceFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkDataFactory.js +0 -1
- package/lib/commonjs/skia/web/JsiSkDataFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkImage.d.ts +1 -0
- package/lib/commonjs/skia/web/JsiSkImage.js +34 -3
- package/lib/commonjs/skia/web/JsiSkImage.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkSurface.d.ts +1 -0
- package/lib/commonjs/skia/web/JsiSkSurface.js +4 -0
- package/lib/commonjs/skia/web/JsiSkSurface.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
- package/lib/commonjs/skia/web/JsiSkSurfaceFactory.js +21 -1
- package/lib/commonjs/skia/web/JsiSkSurfaceFactory.js.map +1 -1
- package/lib/commonjs/views/SkiaBaseWebView.js +14 -8
- package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
- package/lib/commonjs/views/SkiaDomView.web.js +3 -14
- package/lib/commonjs/views/SkiaDomView.web.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.web.js +0 -7
- package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
- package/lib/commonjs/views/SkiaView.web.js +0 -7
- package/lib/commonjs/views/SkiaView.web.js.map +1 -1
- package/lib/module/dom/nodes/DrawingNode.js +5 -1
- package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.d.ts +33 -34
- package/lib/module/dom/nodes/LayerNode.js +13 -7
- package/lib/module/dom/nodes/LayerNode.js.map +1 -1
- package/lib/module/dom/nodes/Node.d.ts +6 -11
- package/lib/module/dom/nodes/Node.js +8 -25
- package/lib/module/dom/nodes/Node.js.map +1 -1
- package/lib/module/dom/nodes/PaintContext.js.map +1 -1
- package/lib/module/dom/nodes/PaintNode.d.ts +3 -3
- package/lib/module/dom/nodes/PaintNode.js +32 -15
- package/lib/module/dom/nodes/PaintNode.js.map +1 -1
- package/lib/module/dom/nodes/RenderNode.d.ts +2 -3
- package/lib/module/dom/nodes/RenderNode.js +20 -187
- package/lib/module/dom/nodes/RenderNode.js.map +1 -1
- package/lib/module/dom/nodes/drawings/BackdropFilterNode.d.ts +1 -1
- package/lib/module/dom/nodes/drawings/BackdropFilterNode.js +23 -4
- package/lib/module/dom/nodes/drawings/BackdropFilterNode.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Box.d.ts +3 -1
- package/lib/module/dom/nodes/drawings/Box.js +3 -0
- package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/module/dom/nodes/paint/BlendNode.d.ts +3 -7
- package/lib/module/dom/nodes/paint/BlendNode.js +15 -46
- package/lib/module/dom/nodes/paint/BlendNode.js.map +1 -1
- package/lib/module/dom/nodes/paint/ColorFilters.d.ts +10 -11
- package/lib/module/dom/nodes/paint/ColorFilters.js +29 -43
- package/lib/module/dom/nodes/paint/ColorFilters.js.map +1 -1
- package/lib/module/dom/nodes/paint/ImageFilters.d.ts +11 -11
- package/lib/module/dom/nodes/paint/ImageFilters.js +48 -41
- package/lib/module/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/module/dom/nodes/paint/MaskFilters.d.ts +3 -3
- package/lib/module/dom/nodes/paint/MaskFilters.js +3 -2
- package/lib/module/dom/nodes/paint/MaskFilters.js.map +1 -1
- package/lib/module/dom/nodes/paint/PathEffects.d.ts +15 -18
- package/lib/module/dom/nodes/paint/PathEffects.js +29 -72
- package/lib/module/dom/nodes/paint/PathEffects.js.map +1 -1
- package/lib/module/dom/nodes/paint/Shaders.d.ts +11 -12
- package/lib/module/dom/nodes/paint/Shaders.js +28 -18
- package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/module/dom/types/DeclarationContext.d.ts +29 -0
- package/lib/module/dom/types/DeclarationContext.js +107 -0
- package/lib/module/dom/types/DeclarationContext.js.map +1 -0
- package/lib/module/dom/types/DrawingContext.d.ts +18 -1
- package/lib/module/dom/types/DrawingContext.js +322 -1
- package/lib/module/dom/types/DrawingContext.js.map +1 -1
- package/lib/module/dom/types/Node.d.ts +4 -10
- package/lib/module/dom/types/Node.js.map +1 -1
- package/lib/module/dom/types/SkDOM.d.ts +22 -23
- package/lib/module/dom/types/SkDOM.js.map +1 -1
- package/lib/module/dom/types/index.d.ts +1 -0
- package/lib/module/dom/types/index.js +1 -0
- package/lib/module/dom/types/index.js.map +1 -1
- package/lib/module/index.d.ts +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/renderer/Canvas.js +3 -3
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/DrawingContext.d.ts +4 -3
- package/lib/module/renderer/DrawingContext.js.map +1 -1
- package/lib/module/renderer/HostComponents.d.ts +35 -35
- package/lib/module/renderer/HostComponents.js.map +1 -1
- package/lib/module/renderer/HostConfig.js +1 -0
- package/lib/module/renderer/HostConfig.js.map +1 -1
- package/lib/module/renderer/Offscreen.d.ts +2 -0
- package/lib/module/renderer/Offscreen.js +19 -0
- package/lib/module/renderer/Offscreen.js.map +1 -0
- package/lib/module/renderer/Reconciler.js +0 -1
- package/lib/module/renderer/Reconciler.js.map +1 -1
- package/lib/module/skia/types/Surface/Surface.d.ts +4 -0
- package/lib/module/skia/types/Surface/Surface.js.map +1 -1
- package/lib/module/skia/types/Surface/SurfaceFactory.d.ts +6 -0
- package/lib/module/skia/types/Surface/SurfaceFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkDataFactory.js +0 -1
- package/lib/module/skia/web/JsiSkDataFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkImage.d.ts +1 -0
- package/lib/module/skia/web/JsiSkImage.js +31 -3
- package/lib/module/skia/web/JsiSkImage.js.map +1 -1
- package/lib/module/skia/web/JsiSkSurface.d.ts +1 -0
- package/lib/module/skia/web/JsiSkSurface.js +4 -0
- package/lib/module/skia/web/JsiSkSurface.js.map +1 -1
- package/lib/module/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
- package/lib/module/skia/web/JsiSkSurfaceFactory.js +21 -1
- package/lib/module/skia/web/JsiSkSurfaceFactory.js.map +1 -1
- package/lib/module/views/SkiaBaseWebView.js +14 -8
- package/lib/module/views/SkiaBaseWebView.js.map +1 -1
- package/lib/module/views/SkiaDomView.web.js +2 -11
- package/lib/module/views/SkiaDomView.web.js.map +1 -1
- package/lib/module/views/SkiaPictureView.web.js +0 -5
- package/lib/module/views/SkiaPictureView.web.js.map +1 -1
- package/lib/module/views/SkiaView.web.js +0 -5
- package/lib/module/views/SkiaView.web.js.map +1 -1
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +33 -34
- package/lib/typescript/src/dom/nodes/Node.d.ts +6 -11
- package/lib/typescript/src/dom/nodes/PaintNode.d.ts +3 -3
- package/lib/typescript/src/dom/nodes/RenderNode.d.ts +2 -3
- package/lib/typescript/src/dom/nodes/drawings/BackdropFilterNode.d.ts +1 -1
- package/lib/typescript/src/dom/nodes/drawings/Box.d.ts +3 -1
- package/lib/typescript/src/dom/nodes/paint/BlendNode.d.ts +3 -7
- package/lib/typescript/src/dom/nodes/paint/ColorFilters.d.ts +10 -11
- package/lib/typescript/src/dom/nodes/paint/ImageFilters.d.ts +11 -11
- package/lib/typescript/src/dom/nodes/paint/MaskFilters.d.ts +3 -3
- package/lib/typescript/src/dom/nodes/paint/PathEffects.d.ts +15 -18
- package/lib/typescript/src/dom/nodes/paint/Shaders.d.ts +11 -12
- package/lib/typescript/src/dom/types/DeclarationContext.d.ts +29 -0
- package/lib/typescript/src/dom/types/DrawingContext.d.ts +18 -1
- package/lib/typescript/src/dom/types/Node.d.ts +4 -10
- package/lib/typescript/src/dom/types/SkDOM.d.ts +22 -23
- package/lib/typescript/src/dom/types/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/renderer/DrawingContext.d.ts +4 -3
- package/lib/typescript/src/renderer/HostComponents.d.ts +35 -35
- package/lib/typescript/src/renderer/Offscreen.d.ts +2 -0
- package/lib/typescript/src/skia/types/Surface/Surface.d.ts +4 -0
- package/lib/typescript/src/skia/types/Surface/SurfaceFactory.d.ts +6 -0
- package/lib/typescript/src/skia/web/JsiSkImage.d.ts +1 -0
- package/lib/typescript/src/skia/web/JsiSkSurface.d.ts +1 -0
- package/lib/typescript/src/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
- package/package.json +1 -1
- package/src/dom/nodes/DrawingNode.ts +5 -1
- package/src/dom/nodes/LayerNode.ts +13 -11
- package/src/dom/nodes/Node.ts +18 -41
- package/src/dom/nodes/PaintContext.ts +1 -0
- package/src/dom/nodes/PaintNode.ts +28 -18
- package/src/dom/nodes/RenderNode.ts +25 -183
- package/src/dom/nodes/drawings/BackdropFilterNode.ts +18 -11
- package/src/dom/nodes/drawings/Box.ts +6 -4
- package/src/dom/nodes/paint/BlendNode.ts +16 -63
- package/src/dom/nodes/paint/ColorFilters.ts +32 -55
- package/src/dom/nodes/paint/ImageFilters.ts +58 -53
- package/src/dom/nodes/paint/MaskFilters.ts +5 -7
- package/src/dom/nodes/paint/PathEffects.ts +37 -90
- package/src/dom/nodes/paint/Shaders.ts +31 -29
- package/src/dom/types/DeclarationContext.ts +105 -0
- package/src/dom/types/DrawingContext.ts +304 -1
- package/src/dom/types/Node.ts +4 -20
- package/src/dom/types/SkDOM.ts +22 -43
- package/src/dom/types/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/renderer/Canvas.tsx +3 -3
- package/src/renderer/DrawingContext.ts +4 -5
- package/src/renderer/HostComponents.ts +34 -53
- package/src/renderer/HostConfig.ts +1 -0
- package/src/renderer/Offscreen.tsx +24 -0
- package/src/renderer/Reconciler.tsx +0 -1
- package/src/skia/types/Surface/Surface.ts +5 -0
- package/src/skia/types/Surface/SurfaceFactory.ts +7 -0
- package/src/skia/web/JsiSkDataFactory.ts +0 -1
- package/src/skia/web/JsiSkImage.ts +26 -2
- package/src/skia/web/JsiSkSurface.ts +4 -0
- package/src/skia/web/JsiSkSurfaceFactory.ts +21 -2
- package/src/views/SkiaBaseWebView.tsx +9 -2
- package/src/views/SkiaDomView.web.tsx +2 -13
- package/src/views/SkiaPictureView.web.tsx +0 -7
- package/src/views/SkiaView.web.tsx +0 -7
@@ -56,16 +56,7 @@ import type {
|
|
56
56
|
BlendProps,
|
57
57
|
MorphologyImageFilterProps,
|
58
58
|
} from "../dom/types/ImageFilters";
|
59
|
-
import type {
|
60
|
-
SkColorFilter,
|
61
|
-
SkImageFilter,
|
62
|
-
SkMaskFilter,
|
63
|
-
SkPaint,
|
64
|
-
SkPathEffect,
|
65
|
-
SkRect,
|
66
|
-
SkRRect,
|
67
|
-
SkShader,
|
68
|
-
} from "../skia";
|
59
|
+
import type { SkRect, SkRRect } from "../skia/types";
|
69
60
|
import type { JsiDrawingNode } from "../dom/nodes/DrawingNode";
|
70
61
|
import type { SkiaValue } from "../values";
|
71
62
|
|
@@ -86,7 +77,7 @@ declare global {
|
|
86
77
|
props: RoundedRectProps
|
87
78
|
) => JsiDrawingNode<RoundedRectProps, SkRRect>;
|
88
79
|
GroupNode: (props: GroupProps) => RenderNode<GroupProps>;
|
89
|
-
PaintNode: (props: PaintProps) => DeclarationNode<PaintProps
|
80
|
+
PaintNode: (props: PaintProps) => DeclarationNode<PaintProps>;
|
90
81
|
FillNode: (props: PaintProps) => RenderNode<PaintProps>;
|
91
82
|
CircleNode: (props: CircleProps) => RenderNode<CircleProps>;
|
92
83
|
PathNode: (props: PathProps) => RenderNode<PathProps>;
|
@@ -102,98 +93,90 @@ declare global {
|
|
102
93
|
// Mask filters
|
103
94
|
BlurMaskFilterNode: (
|
104
95
|
props: BlurMaskFilterProps
|
105
|
-
) => DeclarationNode<BlurMaskFilterProps
|
96
|
+
) => DeclarationNode<BlurMaskFilterProps>;
|
106
97
|
|
107
98
|
// Path effects
|
108
99
|
DashPathEffectNode: (
|
109
100
|
props: DashPathEffectProps
|
110
|
-
) => DeclarationNode<DashPathEffectProps
|
101
|
+
) => DeclarationNode<DashPathEffectProps>;
|
111
102
|
DiscretePathEffectNode: (
|
112
103
|
props: DiscretePathEffectProps
|
113
|
-
) => DeclarationNode<DiscretePathEffectProps
|
104
|
+
) => DeclarationNode<DiscretePathEffectProps>;
|
114
105
|
CornerPathEffectNode: (
|
115
106
|
props: CornerPathEffectProps
|
116
|
-
) => DeclarationNode<CornerPathEffectProps
|
107
|
+
) => DeclarationNode<CornerPathEffectProps>;
|
117
108
|
Path1DPathEffectNode: (
|
118
109
|
props: Path1DPathEffectProps
|
119
|
-
) => DeclarationNode<Path1DPathEffectProps
|
110
|
+
) => DeclarationNode<Path1DPathEffectProps>;
|
120
111
|
Path2DPathEffectNode: (
|
121
112
|
props: Path2DPathEffectProps
|
122
|
-
) => DeclarationNode<Path2DPathEffectProps
|
113
|
+
) => DeclarationNode<Path2DPathEffectProps>;
|
123
114
|
Line2DPathEffectNode: (
|
124
115
|
props: Line2DPathEffectProps
|
125
|
-
) => DeclarationNode<Line2DPathEffectProps
|
126
|
-
SumPathEffectNode: () => DeclarationNode<null
|
116
|
+
) => DeclarationNode<Line2DPathEffectProps>;
|
117
|
+
SumPathEffectNode: () => DeclarationNode<null>;
|
127
118
|
|
128
119
|
// Image filters
|
129
120
|
BlendImageFilterNode: (
|
130
121
|
props: BlendImageFilterProps
|
131
|
-
) => DeclarationNode<BlendImageFilterProps
|
122
|
+
) => DeclarationNode<BlendImageFilterProps>;
|
132
123
|
DropShadowImageFilterNode: (
|
133
124
|
props: DropShadowImageFilterProps
|
134
|
-
) => DeclarationNode<DropShadowImageFilterProps
|
125
|
+
) => DeclarationNode<DropShadowImageFilterProps>;
|
135
126
|
DisplacementMapImageFilterNode: (
|
136
127
|
props: DisplacementMapImageFilterProps
|
137
|
-
) => DeclarationNode<DisplacementMapImageFilterProps
|
128
|
+
) => DeclarationNode<DisplacementMapImageFilterProps>;
|
138
129
|
BlurImageFilterNode: (
|
139
130
|
props: BlurImageFilterProps
|
140
|
-
) => DeclarationNode<BlurImageFilterProps
|
131
|
+
) => DeclarationNode<BlurImageFilterProps>;
|
141
132
|
OffsetImageFilterNode: (
|
142
133
|
props: OffsetImageFilterProps
|
143
|
-
) => DeclarationNode<OffsetImageFilterProps
|
134
|
+
) => DeclarationNode<OffsetImageFilterProps>;
|
144
135
|
MorphologyImageFilterNode: (
|
145
136
|
props: MorphologyImageFilterProps
|
146
|
-
) => DeclarationNode<MorphologyImageFilterProps
|
137
|
+
) => DeclarationNode<MorphologyImageFilterProps>;
|
147
138
|
RuntimeShaderImageFilterNode: (
|
148
139
|
props: RuntimeShaderImageFilterProps
|
149
|
-
) => DeclarationNode<RuntimeShaderImageFilterProps
|
140
|
+
) => DeclarationNode<RuntimeShaderImageFilterProps>;
|
150
141
|
|
151
142
|
// Color filters
|
152
143
|
MatrixColorFilterNode: (
|
153
144
|
props: MatrixColorFilterProps
|
154
|
-
) => DeclarationNode<MatrixColorFilterProps
|
145
|
+
) => DeclarationNode<MatrixColorFilterProps>;
|
155
146
|
BlendColorFilterNode: (
|
156
147
|
props: BlendColorFilterProps
|
157
|
-
) => DeclarationNode<BlendColorFilterProps
|
158
|
-
LinearToSRGBGammaColorFilterNode: () => DeclarationNode<
|
159
|
-
|
160
|
-
|
161
|
-
>;
|
162
|
-
SRGBToLinearGammaColorFilterNode: () => DeclarationNode<
|
163
|
-
null,
|
164
|
-
SkColorFilter
|
165
|
-
>;
|
166
|
-
LumaColorFilterNode: () => DeclarationNode<null, SkColorFilter>;
|
148
|
+
) => DeclarationNode<BlendColorFilterProps>;
|
149
|
+
LinearToSRGBGammaColorFilterNode: () => DeclarationNode<null>;
|
150
|
+
SRGBToLinearGammaColorFilterNode: () => DeclarationNode<null>;
|
151
|
+
LumaColorFilterNode: () => DeclarationNode<null>;
|
167
152
|
LerpColorFilterNode: (
|
168
153
|
props: LerpColorFilterProps
|
169
|
-
) => DeclarationNode<LerpColorFilterProps
|
154
|
+
) => DeclarationNode<LerpColorFilterProps>;
|
170
155
|
|
171
156
|
// Shaders
|
172
|
-
ShaderNode: (props: ShaderProps) => DeclarationNode<ShaderProps
|
157
|
+
ShaderNode: (props: ShaderProps) => DeclarationNode<ShaderProps>;
|
173
158
|
ImageShaderNode: (
|
174
159
|
props: ImageShaderProps
|
175
|
-
) => DeclarationNode<ImageShaderProps
|
176
|
-
ColorShaderNode: (
|
177
|
-
props: ColorProps
|
178
|
-
) => DeclarationNode<ColorProps, SkShader>;
|
160
|
+
) => DeclarationNode<ImageShaderProps>;
|
161
|
+
ColorShaderNode: (props: ColorProps) => DeclarationNode<ColorProps>;
|
179
162
|
TurbulenceNode: (
|
180
163
|
props: TurbulenceProps
|
181
|
-
) => DeclarationNode<TurbulenceProps
|
164
|
+
) => DeclarationNode<TurbulenceProps>;
|
182
165
|
FractalNoiseNode: (
|
183
166
|
props: FractalNoiseProps
|
184
|
-
) => DeclarationNode<FractalNoiseProps
|
167
|
+
) => DeclarationNode<FractalNoiseProps>;
|
185
168
|
LinearGradientNode: (
|
186
169
|
props: LinearGradientProps
|
187
|
-
) => DeclarationNode<LinearGradientProps
|
170
|
+
) => DeclarationNode<LinearGradientProps>;
|
188
171
|
RadialGradientNode: (
|
189
172
|
props: RadialGradientProps
|
190
|
-
) => DeclarationNode<RadialGradientProps
|
173
|
+
) => DeclarationNode<RadialGradientProps>;
|
191
174
|
SweepGradientNode: (
|
192
175
|
props: SweepGradientProps
|
193
|
-
) => DeclarationNode<SweepGradientProps
|
176
|
+
) => DeclarationNode<SweepGradientProps>;
|
194
177
|
TwoPointConicalGradientNode: (
|
195
178
|
props: TwoPointConicalGradientProps
|
196
|
-
) => DeclarationNode<TwoPointConicalGradientProps
|
179
|
+
) => DeclarationNode<TwoPointConicalGradientProps>;
|
197
180
|
PictureNode: (props: PictureProps) => RenderNode<PictureProps>;
|
198
181
|
ImageSVGNode: (props: ImageSVGProps) => RenderNode<ImageSVGProps>;
|
199
182
|
VerticesNode: (props: VerticesProps) => RenderNode<VerticesProps>;
|
@@ -201,12 +184,10 @@ declare global {
|
|
201
184
|
TextPathNode: (prop: TextPathProps) => RenderNode<TextPathProps>;
|
202
185
|
TextBlobNode: (prop: TextBlobProps) => RenderNode<TextBlobProps>;
|
203
186
|
GlyphsNode: (prop: GlyphsProps) => RenderNode<GlyphsProps>;
|
204
|
-
BlendNode: (prop: BlendProps) => DeclarationNode<BlendProps
|
187
|
+
BlendNode: (prop: BlendProps) => DeclarationNode<BlendProps>;
|
205
188
|
BackdropFilterNode: (prop: ChildrenProps) => RenderNode<ChildrenProps>;
|
206
189
|
BoxNode: (prop: BoxProps) => RenderNode<BoxProps>;
|
207
|
-
BoxShadowNode: (
|
208
|
-
prop: BoxShadowProps
|
209
|
-
) => DeclarationNode<BoxShadowProps, BoxShadowProps>;
|
190
|
+
BoxShadowNode: (prop: BoxShadowProps) => DeclarationNode<BoxShadowProps>;
|
210
191
|
LayerNode: (prop: ChildrenProps) => RenderNode<ChildrenProps>;
|
211
192
|
};
|
212
193
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import type { ReactElement } from "react";
|
2
|
+
|
3
|
+
import { JsiDrawingContext } from "../dom/types";
|
4
|
+
import { Skia } from "../skia";
|
5
|
+
|
6
|
+
import { SkiaRoot } from "./Reconciler";
|
7
|
+
|
8
|
+
export const drawAsImage = (
|
9
|
+
element: ReactElement,
|
10
|
+
width: number,
|
11
|
+
height: number
|
12
|
+
) => {
|
13
|
+
const surface = Skia.Surface.MakeOffscreen(width, height);
|
14
|
+
if (!surface) {
|
15
|
+
throw new Error("Could not create offscreen surface");
|
16
|
+
}
|
17
|
+
const canvas = surface.getCanvas();
|
18
|
+
const root = new SkiaRoot(Skia);
|
19
|
+
root.render(element);
|
20
|
+
const ctx = new JsiDrawingContext(Skia, canvas);
|
21
|
+
root.dom.render(ctx);
|
22
|
+
surface.flush();
|
23
|
+
return surface.makeImageSnapshot();
|
24
|
+
};
|
@@ -24,4 +24,9 @@ export interface SkSurface extends SkJSIInstance<"Surface"> {
|
|
24
24
|
example: https://fiddle.skia.org/c/@Surface_makeImageSnapshot
|
25
25
|
*/
|
26
26
|
makeImageSnapshot(bounds?: SkRect): SkImage;
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Make sure any queued draws are sent to the screen or the GPU.
|
30
|
+
*/
|
31
|
+
flush(): void;
|
27
32
|
}
|
@@ -9,4 +9,11 @@ export interface SurfaceFactory {
|
|
9
9
|
* @param height - number of pixels of the height of the drawable area.
|
10
10
|
*/
|
11
11
|
Make: (width: number, height: number) => SkSurface | null;
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Creates a GPU backed surface.
|
15
|
+
* @param width - number of pixels of the width of the drawable area.
|
16
|
+
* @param height - number of pixels of the height of the drawable area.
|
17
|
+
*/
|
18
|
+
MakeOffscreen: (width: number, height: number) => SkSurface | null;
|
12
19
|
}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
/*global btoa, atob*/
|
2
1
|
import type { CanvasKit, Image } from "canvaskit-wasm";
|
3
2
|
|
4
3
|
import type {
|
@@ -15,6 +14,31 @@ import { ckEnum, HostObject } from "./Host";
|
|
15
14
|
import { JsiSkMatrix } from "./JsiSkMatrix";
|
16
15
|
import { JsiSkShader } from "./JsiSkShader";
|
17
16
|
|
17
|
+
// https://github.com/google/skia/blob/1f193df9b393d50da39570dab77a0bb5d28ec8ef/modules/canvaskit/htmlcanvas/util.js
|
18
|
+
export const toBase64String = (bytes: Uint8Array) => {
|
19
|
+
if (typeof Buffer !== "undefined") {
|
20
|
+
// Are we on node?
|
21
|
+
return Buffer.from(bytes).toString("base64");
|
22
|
+
} else {
|
23
|
+
// From https://stackoverflow.com/a/25644409
|
24
|
+
// because the naive solution of
|
25
|
+
// btoa(String.fromCharCode.apply(null, bytes));
|
26
|
+
// would occasionally throw "Maximum call stack size exceeded"
|
27
|
+
var CHUNK_SIZE = 0x8000; //arbitrary number
|
28
|
+
var index = 0;
|
29
|
+
var { length } = bytes;
|
30
|
+
var result = "";
|
31
|
+
var slice;
|
32
|
+
while (index < length) {
|
33
|
+
slice = bytes.slice(index, Math.min(index + CHUNK_SIZE, length));
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
35
|
+
result += String.fromCharCode.apply(null, slice as any);
|
36
|
+
index += CHUNK_SIZE;
|
37
|
+
}
|
38
|
+
return btoa(result);
|
39
|
+
}
|
40
|
+
};
|
41
|
+
|
18
42
|
export class JsiSkImage extends HostObject<Image, "Image"> implements SkImage {
|
19
43
|
constructor(CanvasKit: CanvasKit, ref: Image) {
|
20
44
|
super(CanvasKit, ref, "Image");
|
@@ -83,6 +107,6 @@ export class JsiSkImage extends HostObject<Image, "Image"> implements SkImage {
|
|
83
107
|
|
84
108
|
encodeToBase64(fmt?: ImageFormat, quality?: number) {
|
85
109
|
const bytes = this.encodeToBytes(fmt, quality);
|
86
|
-
return
|
110
|
+
return toBase64String(bytes);
|
87
111
|
}
|
88
112
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { CanvasKit } from "canvaskit-wasm";
|
1
|
+
import type { CanvasKit, Surface } from "canvaskit-wasm";
|
2
2
|
|
3
3
|
import type { SurfaceFactory } from "../types";
|
4
4
|
|
@@ -13,7 +13,26 @@ export class JsiSkSurfaceFactory extends Host implements SurfaceFactory {
|
|
13
13
|
Make(width: number, height: number) {
|
14
14
|
const surface = this.CanvasKit.MakeSurface(width, height);
|
15
15
|
if (!surface) {
|
16
|
-
|
16
|
+
return null;
|
17
|
+
}
|
18
|
+
return new JsiSkSurface(this.CanvasKit, surface);
|
19
|
+
}
|
20
|
+
|
21
|
+
MakeOffscreen(width: number, height: number) {
|
22
|
+
// OffscreenCanvas may be unvailable in some environments.
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
24
|
+
const OC = (globalThis as any).OffscreenCanvas;
|
25
|
+
let surface: Surface | null;
|
26
|
+
if (OC === undefined) {
|
27
|
+
surface = this.CanvasKit.MakeSurface(width, height);
|
28
|
+
} else {
|
29
|
+
const offscreen = new OC(width, height);
|
30
|
+
surface = this.CanvasKit.MakeWebGLCanvasSurface(
|
31
|
+
offscreen as unknown as HTMLCanvasElement
|
32
|
+
);
|
33
|
+
}
|
34
|
+
if (!surface) {
|
35
|
+
return null;
|
17
36
|
}
|
18
37
|
return new JsiSkSurface(this.CanvasKit, surface);
|
19
38
|
}
|
@@ -86,6 +86,9 @@ export abstract class SkiaBaseWebView<
|
|
86
86
|
* @returns An Image object.
|
87
87
|
*/
|
88
88
|
public makeImageSnapshot(rect?: SkRect) {
|
89
|
+
this._canvas!.clear(CanvasKit.TRANSPARENT);
|
90
|
+
this.renderInCanvas(this._canvas!, []);
|
91
|
+
this._surface?.ref.flush();
|
89
92
|
return this._surface?.makeImageSnapshot(rect);
|
90
93
|
}
|
91
94
|
|
@@ -106,8 +109,12 @@ export abstract class SkiaBaseWebView<
|
|
106
109
|
if (this._canvas) {
|
107
110
|
const touches = [...this._touches];
|
108
111
|
this._touches = [];
|
109
|
-
this._canvas
|
110
|
-
|
112
|
+
const canvas = this._canvas!;
|
113
|
+
canvas.clear(Float32Array.of(0, 0, 0, 0));
|
114
|
+
canvas.save();
|
115
|
+
canvas.scale(pd, pd);
|
116
|
+
this.renderInCanvas(canvas, touches);
|
117
|
+
canvas.restore();
|
111
118
|
this._surface?.ref.flush();
|
112
119
|
}
|
113
120
|
}
|
@@ -1,13 +1,10 @@
|
|
1
|
-
import { PixelRatio } from "react-native";
|
2
|
-
|
3
1
|
import { Skia } from "../skia";
|
4
2
|
import type { SkCanvas } from "../skia/types";
|
3
|
+
import { JsiDrawingContext } from "../dom/types/DrawingContext";
|
5
4
|
|
6
5
|
import { SkiaBaseWebView } from "./SkiaBaseWebView";
|
7
6
|
import type { SkiaDomViewProps, TouchInfo } from "./types";
|
8
7
|
|
9
|
-
const pd = PixelRatio.get();
|
10
|
-
|
11
8
|
export class SkiaDomView extends SkiaBaseWebView<SkiaDomViewProps> {
|
12
9
|
constructor(props: SkiaDomViewProps) {
|
13
10
|
super(props);
|
@@ -22,16 +19,8 @@ export class SkiaDomView extends SkiaBaseWebView<SkiaDomViewProps> {
|
|
22
19
|
this.props.onSize.current = { width, height };
|
23
20
|
}
|
24
21
|
if (this.props.root) {
|
25
|
-
const
|
26
|
-
const ctx = {
|
27
|
-
canvas,
|
28
|
-
paint,
|
29
|
-
opacity: 1,
|
30
|
-
};
|
31
|
-
canvas.save();
|
32
|
-
canvas.scale(pd, pd);
|
22
|
+
const ctx = new JsiDrawingContext(Skia, canvas);
|
33
23
|
this.props.root.render(ctx);
|
34
|
-
canvas.restore();
|
35
24
|
}
|
36
25
|
}
|
37
26
|
}
|
@@ -1,12 +1,8 @@
|
|
1
|
-
import { PixelRatio } from "react-native";
|
2
|
-
|
3
1
|
import type { SkCanvas } from "../skia/types";
|
4
2
|
|
5
3
|
import type { SkiaPictureViewProps } from "./types";
|
6
4
|
import { SkiaBaseWebView } from "./SkiaBaseWebView";
|
7
5
|
|
8
|
-
const pd = PixelRatio.get();
|
9
|
-
|
10
6
|
export class SkiaPictureView extends SkiaBaseWebView<SkiaPictureViewProps> {
|
11
7
|
constructor(props: SkiaPictureViewProps) {
|
12
8
|
super(props);
|
@@ -14,10 +10,7 @@ export class SkiaPictureView extends SkiaBaseWebView<SkiaPictureViewProps> {
|
|
14
10
|
|
15
11
|
protected renderInCanvas(canvas: SkCanvas): void {
|
16
12
|
if (this.props.picture) {
|
17
|
-
canvas.save();
|
18
|
-
canvas.scale(pd, pd);
|
19
13
|
canvas.drawPicture(this.props.picture);
|
20
|
-
canvas.restore();
|
21
14
|
}
|
22
15
|
}
|
23
16
|
}
|
@@ -1,12 +1,8 @@
|
|
1
|
-
import { PixelRatio } from "react-native";
|
2
|
-
|
3
1
|
import type { SkCanvas } from "../skia/types";
|
4
2
|
|
5
3
|
import type { DrawingInfo, SkiaDrawViewProps, TouchInfo } from "./types";
|
6
4
|
import { SkiaBaseWebView } from "./SkiaBaseWebView";
|
7
5
|
|
8
|
-
const pd = PixelRatio.get();
|
9
|
-
|
10
6
|
export class SkiaView extends SkiaBaseWebView<SkiaDrawViewProps> {
|
11
7
|
constructor(props: SkiaDrawViewProps) {
|
12
8
|
super(props);
|
@@ -20,10 +16,7 @@ export class SkiaView extends SkiaBaseWebView<SkiaDrawViewProps> {
|
|
20
16
|
timestamp: Date.now(),
|
21
17
|
touches: touches.map((t) => [t]),
|
22
18
|
};
|
23
|
-
canvas.save();
|
24
|
-
canvas.scale(pd, pd);
|
25
19
|
this.props.onDraw(canvas, info);
|
26
|
-
canvas.restore();
|
27
20
|
}
|
28
21
|
}
|
29
22
|
}
|