@shopify/react-native-skia 0.1.172 → 0.1.173
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 +38 -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/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 +6 -4
- 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/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 +6 -4
- 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/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/JsiSkSurface.ts +4 -0
- package/src/skia/web/JsiSkSurfaceFactory.ts +21 -2
- package/src/views/SkiaBaseWebView.tsx +6 -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
@@ -0,0 +1,107 @@
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
|
+
|
3
|
+
export const composeDeclarations = (filters, composer) => {
|
4
|
+
if (filters.length <= 1) {
|
5
|
+
return filters[0];
|
6
|
+
}
|
7
|
+
|
8
|
+
return filters.reverse().reduce((inner, outer) => {
|
9
|
+
if (!inner) {
|
10
|
+
return outer;
|
11
|
+
}
|
12
|
+
|
13
|
+
return composer(outer, inner);
|
14
|
+
});
|
15
|
+
};
|
16
|
+
|
17
|
+
class Declaration {
|
18
|
+
constructor(composer) {
|
19
|
+
this.composer = composer;
|
20
|
+
|
21
|
+
_defineProperty(this, "decls", []);
|
22
|
+
|
23
|
+
_defineProperty(this, "indexes", [0]);
|
24
|
+
}
|
25
|
+
|
26
|
+
get index() {
|
27
|
+
return this.indexes[this.indexes.length - 1];
|
28
|
+
}
|
29
|
+
|
30
|
+
save() {
|
31
|
+
this.indexes.push(this.decls.length);
|
32
|
+
}
|
33
|
+
|
34
|
+
restore() {
|
35
|
+
this.indexes.pop();
|
36
|
+
}
|
37
|
+
|
38
|
+
pop() {
|
39
|
+
return this.decls.pop();
|
40
|
+
}
|
41
|
+
|
42
|
+
push(decl) {
|
43
|
+
this.decls.push(decl);
|
44
|
+
}
|
45
|
+
|
46
|
+
popAll() {
|
47
|
+
return this.decls.splice(this.index, this.decls.length - this.index);
|
48
|
+
}
|
49
|
+
|
50
|
+
popAllAsOne() {
|
51
|
+
if (!this.composer) {
|
52
|
+
throw new Error("No composer for this type of declaration");
|
53
|
+
}
|
54
|
+
|
55
|
+
const decls = this.popAll();
|
56
|
+
return composeDeclarations(decls, this.composer);
|
57
|
+
}
|
58
|
+
|
59
|
+
}
|
60
|
+
|
61
|
+
export class DeclarationContext {
|
62
|
+
constructor(Skia) {
|
63
|
+
this.Skia = Skia;
|
64
|
+
|
65
|
+
_defineProperty(this, "paints", void 0);
|
66
|
+
|
67
|
+
_defineProperty(this, "maskFilters", void 0);
|
68
|
+
|
69
|
+
_defineProperty(this, "shaders", void 0);
|
70
|
+
|
71
|
+
_defineProperty(this, "pathEffects", void 0);
|
72
|
+
|
73
|
+
_defineProperty(this, "imageFilters", void 0);
|
74
|
+
|
75
|
+
_defineProperty(this, "colorFilters", void 0);
|
76
|
+
|
77
|
+
const peComp = this.Skia.PathEffect.MakeCompose.bind(this.Skia.PathEffect);
|
78
|
+
const ifComp = this.Skia.ImageFilter.MakeCompose.bind(this.Skia.ImageFilter);
|
79
|
+
const cfComp = this.Skia.ColorFilter.MakeCompose.bind(this.Skia.ColorFilter);
|
80
|
+
this.paints = new Declaration();
|
81
|
+
this.maskFilters = new Declaration();
|
82
|
+
this.shaders = new Declaration();
|
83
|
+
this.pathEffects = new Declaration(peComp);
|
84
|
+
this.imageFilters = new Declaration(ifComp);
|
85
|
+
this.colorFilters = new Declaration(cfComp);
|
86
|
+
}
|
87
|
+
|
88
|
+
save() {
|
89
|
+
this.paints.save();
|
90
|
+
this.maskFilters.save();
|
91
|
+
this.shaders.save();
|
92
|
+
this.pathEffects.save();
|
93
|
+
this.imageFilters.save();
|
94
|
+
this.colorFilters.save();
|
95
|
+
}
|
96
|
+
|
97
|
+
restore() {
|
98
|
+
this.paints.restore();
|
99
|
+
this.maskFilters.restore();
|
100
|
+
this.shaders.restore();
|
101
|
+
this.pathEffects.restore();
|
102
|
+
this.imageFilters.restore();
|
103
|
+
this.colorFilters.restore();
|
104
|
+
}
|
105
|
+
|
106
|
+
}
|
107
|
+
//# sourceMappingURL=DeclarationContext.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["composeDeclarations","filters","composer","length","reverse","reduce","inner","outer","Declaration","constructor","index","indexes","save","push","decls","restore","pop","decl","popAll","splice","popAllAsOne","Error","DeclarationContext","Skia","peComp","PathEffect","MakeCompose","bind","ifComp","ImageFilter","cfComp","ColorFilter","paints","maskFilters","shaders","pathEffects","imageFilters","colorFilters"],"sources":["DeclarationContext.ts"],"sourcesContent":["import type {\n SkShader,\n SkPaint,\n SkImageFilter,\n SkMaskFilter,\n SkPathEffect,\n Skia,\n SkColorFilter,\n} from \"../../skia/types\";\n\ntype Composer<T> = (outer: T, inner: T) => T;\n\nexport const composeDeclarations = <T>(filters: T[], composer: Composer<T>) => {\n if (filters.length <= 1) {\n return filters[0];\n }\n return filters.reverse().reduce((inner, outer) => {\n if (!inner) {\n return outer;\n }\n return composer(outer, inner);\n });\n};\n\nclass Declaration<T> {\n private decls: T[] = [];\n private indexes = [0];\n\n constructor(private composer?: Composer<T>) {}\n\n private get index() {\n return this.indexes[this.indexes.length - 1];\n }\n\n save() {\n this.indexes.push(this.decls.length);\n }\n\n restore() {\n this.indexes.pop();\n }\n\n pop() {\n return this.decls.pop();\n }\n\n push(decl: T) {\n this.decls.push(decl);\n }\n\n popAll() {\n return this.decls.splice(this.index, this.decls.length - this.index);\n }\n\n popAllAsOne() {\n if (!this.composer) {\n throw new Error(\"No composer for this type of declaration\");\n }\n const decls = this.popAll();\n return composeDeclarations(decls, this.composer!);\n }\n}\n\nexport class DeclarationContext {\n readonly paints: Declaration<SkPaint>;\n readonly maskFilters: Declaration<SkMaskFilter>;\n readonly shaders: Declaration<SkShader>;\n readonly pathEffects: Declaration<SkPathEffect>;\n readonly imageFilters: Declaration<SkImageFilter>;\n readonly colorFilters: Declaration<SkColorFilter>;\n\n constructor(private Skia: Skia) {\n const peComp = this.Skia.PathEffect.MakeCompose.bind(this.Skia.PathEffect);\n const ifComp = this.Skia.ImageFilter.MakeCompose.bind(\n this.Skia.ImageFilter\n );\n const cfComp = this.Skia.ColorFilter.MakeCompose.bind(\n this.Skia.ColorFilter\n );\n this.paints = new Declaration<SkPaint>();\n this.maskFilters = new Declaration<SkMaskFilter>();\n this.shaders = new Declaration<SkShader>();\n this.pathEffects = new Declaration<SkPathEffect>(peComp);\n this.imageFilters = new Declaration<SkImageFilter>(ifComp);\n this.colorFilters = new Declaration<SkColorFilter>(cfComp);\n }\n\n save() {\n this.paints.save();\n this.maskFilters.save();\n this.shaders.save();\n this.pathEffects.save();\n this.imageFilters.save();\n this.colorFilters.save();\n }\n\n restore() {\n this.paints.restore();\n this.maskFilters.restore();\n this.shaders.restore();\n this.pathEffects.restore();\n this.imageFilters.restore();\n this.colorFilters.restore();\n }\n}\n"],"mappings":"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"}
|
@@ -1,5 +1,22 @@
|
|
1
|
-
import type { SkCanvas, SkPaint } from "../../skia/types";
|
1
|
+
import type { SkCanvas, SkPaint, Skia } from "../../skia/types";
|
2
|
+
import type { PaintProps } from "./Common";
|
3
|
+
import { DeclarationContext } from "./DeclarationContext";
|
4
|
+
import type { Node } from "./Node";
|
2
5
|
export interface DrawingContext {
|
3
6
|
canvas: SkCanvas;
|
4
7
|
paint: SkPaint;
|
8
|
+
saveAndConcat(node: Node<PaintProps>, cache?: SkPaint): boolean;
|
9
|
+
restore(): void;
|
10
|
+
declarationCtx: DeclarationContext;
|
11
|
+
}
|
12
|
+
export declare class JsiDrawingContext implements DrawingContext {
|
13
|
+
private readonly Skia;
|
14
|
+
readonly canvas: SkCanvas;
|
15
|
+
paints: SkPaint[];
|
16
|
+
declarationCtx: DeclarationContext;
|
17
|
+
constructor(Skia: Skia, canvas: SkCanvas);
|
18
|
+
get paint(): SkPaint;
|
19
|
+
private save;
|
20
|
+
restore(): void;
|
21
|
+
saveAndConcat(node: Node<PaintProps>, cache?: SkPaint): boolean;
|
5
22
|
}
|
@@ -1,2 +1,323 @@
|
|
1
|
-
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
|
+
|
3
|
+
import { BlendMode, PaintStyle, StrokeCap, StrokeJoin } from "../../skia/types";
|
4
|
+
import { enumKey } from "../nodes/datatypes/Enum";
|
5
|
+
import { JsiDeclarationNode } from "../nodes/Node";
|
6
|
+
import { DeclarationContext } from "./DeclarationContext";
|
7
|
+
export class JsiDrawingContext {
|
8
|
+
constructor(Skia, canvas) {
|
9
|
+
this.Skia = Skia;
|
10
|
+
this.canvas = canvas;
|
11
|
+
|
12
|
+
_defineProperty(this, "paints", void 0);
|
13
|
+
|
14
|
+
_defineProperty(this, "declarationCtx", void 0);
|
15
|
+
|
16
|
+
const paint = this.Skia.Paint();
|
17
|
+
this.paints = [paint];
|
18
|
+
this.declarationCtx = new DeclarationContext(Skia);
|
19
|
+
}
|
20
|
+
|
21
|
+
get paint() {
|
22
|
+
return this.paints[this.paints.length - 1];
|
23
|
+
}
|
24
|
+
|
25
|
+
save() {
|
26
|
+
const childPaint = this.paint.copy();
|
27
|
+
this.paints.push(childPaint);
|
28
|
+
}
|
29
|
+
|
30
|
+
restore() {
|
31
|
+
this.paints.pop();
|
32
|
+
}
|
33
|
+
|
34
|
+
saveAndConcat(node, cache) {
|
35
|
+
if (cache) {
|
36
|
+
this.paints.push(cache);
|
37
|
+
return true;
|
38
|
+
}
|
39
|
+
|
40
|
+
const paint = new ConcatablePaint(this.Skia, this.declarationCtx, node);
|
41
|
+
|
42
|
+
if (!paint.isPristine()) {
|
43
|
+
this.save();
|
44
|
+
paint.concatTo(this.paint);
|
45
|
+
return true;
|
46
|
+
}
|
47
|
+
|
48
|
+
return false;
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
52
|
+
|
53
|
+
class ConcatablePaint {
|
54
|
+
constructor(Skia, declCtx, node) {
|
55
|
+
_defineProperty(this, "pristine", true);
|
56
|
+
|
57
|
+
_defineProperty(this, "_color", void 0);
|
58
|
+
|
59
|
+
_defineProperty(this, "_strokeWidth", void 0);
|
60
|
+
|
61
|
+
_defineProperty(this, "_blendMode", void 0);
|
62
|
+
|
63
|
+
_defineProperty(this, "_style", void 0);
|
64
|
+
|
65
|
+
_defineProperty(this, "_strokeJoin", void 0);
|
66
|
+
|
67
|
+
_defineProperty(this, "_strokeCap", void 0);
|
68
|
+
|
69
|
+
_defineProperty(this, "_strokeMiter", void 0);
|
70
|
+
|
71
|
+
_defineProperty(this, "_opacity", 1);
|
72
|
+
|
73
|
+
_defineProperty(this, "_antiAlias", void 0);
|
74
|
+
|
75
|
+
_defineProperty(this, "_imageFilter", void 0);
|
76
|
+
|
77
|
+
_defineProperty(this, "_shader", void 0);
|
78
|
+
|
79
|
+
_defineProperty(this, "_pathEffect", void 0);
|
80
|
+
|
81
|
+
_defineProperty(this, "_colorFilter", void 0);
|
82
|
+
|
83
|
+
_defineProperty(this, "_maskFilter", void 0);
|
84
|
+
|
85
|
+
const props = node.getProps();
|
86
|
+
const children = node.children();
|
87
|
+
this.setColor(props.color !== undefined ? Skia.Color(props.color) : props.color);
|
88
|
+
this.setStrokeWidth(props.strokeWidth);
|
89
|
+
this.setBlendMode(props.blendMode);
|
90
|
+
this.setStyle(props.style);
|
91
|
+
this.setStrokeJoin(props.strokeJoin);
|
92
|
+
this.setStrokeCap(props.strokeCap);
|
93
|
+
this.setStrokeMiter(props.strokeMiter);
|
94
|
+
this.setOpacity(props.opacity);
|
95
|
+
this.setAntiAlias(props.antiAlias);
|
96
|
+
declCtx.save();
|
97
|
+
children.forEach(child => {
|
98
|
+
if (child instanceof JsiDeclarationNode) {
|
99
|
+
child.decorate(declCtx);
|
100
|
+
}
|
101
|
+
});
|
102
|
+
const colorFilter = declCtx.colorFilters.popAllAsOne();
|
103
|
+
const imageFilter = declCtx.imageFilters.popAllAsOne();
|
104
|
+
const shader = declCtx.shaders.pop();
|
105
|
+
const maskFilter = declCtx.maskFilters.pop();
|
106
|
+
const pathEffect = declCtx.pathEffects.popAllAsOne();
|
107
|
+
declCtx.restore();
|
108
|
+
|
109
|
+
if (imageFilter) {
|
110
|
+
this.setImageFilter(imageFilter);
|
111
|
+
}
|
112
|
+
|
113
|
+
if (shader) {
|
114
|
+
this.setShader(shader);
|
115
|
+
}
|
116
|
+
|
117
|
+
if (pathEffect) {
|
118
|
+
this.setPathEffect(pathEffect);
|
119
|
+
}
|
120
|
+
|
121
|
+
if (colorFilter) {
|
122
|
+
this.setColorFilter(colorFilter);
|
123
|
+
}
|
124
|
+
|
125
|
+
if (maskFilter) {
|
126
|
+
this.setMaskFilter(maskFilter);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
enum(value, key) {
|
131
|
+
if (key !== undefined) {
|
132
|
+
return value[enumKey(key)];
|
133
|
+
}
|
134
|
+
|
135
|
+
return undefined;
|
136
|
+
}
|
137
|
+
|
138
|
+
setValue(key, value) {
|
139
|
+
if (value !== undefined) {
|
140
|
+
this[key] = value;
|
141
|
+
this.pristine = false;
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
setColor(color) {
|
146
|
+
this.setValue("_color", color);
|
147
|
+
}
|
148
|
+
|
149
|
+
getColor() {
|
150
|
+
return this._color;
|
151
|
+
}
|
152
|
+
|
153
|
+
setStrokeWidth(strokeWidth) {
|
154
|
+
this.setValue("_strokeWidth", strokeWidth);
|
155
|
+
}
|
156
|
+
|
157
|
+
getStrokeWidth() {
|
158
|
+
return this._strokeWidth;
|
159
|
+
}
|
160
|
+
|
161
|
+
setBlendMode(blendMode) {
|
162
|
+
this.setValue("_blendMode", this.enum(BlendMode, blendMode));
|
163
|
+
}
|
164
|
+
|
165
|
+
getBlendMode() {
|
166
|
+
return this._blendMode;
|
167
|
+
}
|
168
|
+
|
169
|
+
setStyle(style) {
|
170
|
+
this.setValue("_style", this.enum(PaintStyle, style));
|
171
|
+
}
|
172
|
+
|
173
|
+
getStyle() {
|
174
|
+
return this._style;
|
175
|
+
}
|
176
|
+
|
177
|
+
setStrokeJoin(strokeJoin) {
|
178
|
+
this.setValue("_strokeJoin", this.enum(StrokeJoin, strokeJoin));
|
179
|
+
}
|
180
|
+
|
181
|
+
getStrokeJoin() {
|
182
|
+
return this._strokeJoin;
|
183
|
+
}
|
184
|
+
|
185
|
+
setStrokeCap(strokeCap) {
|
186
|
+
this.setValue("_strokeCap", this.enum(StrokeCap, strokeCap));
|
187
|
+
}
|
188
|
+
|
189
|
+
getStrokeCap() {
|
190
|
+
return this._strokeCap;
|
191
|
+
}
|
192
|
+
|
193
|
+
setStrokeMiter(strokeMiter) {
|
194
|
+
this.setValue("_strokeMiter", strokeMiter);
|
195
|
+
}
|
196
|
+
|
197
|
+
getStrokeMiter() {
|
198
|
+
return this._strokeMiter;
|
199
|
+
}
|
200
|
+
|
201
|
+
setOpacity(opacity) {
|
202
|
+
this.setValue("_opacity", opacity);
|
203
|
+
}
|
204
|
+
|
205
|
+
getOpacity() {
|
206
|
+
return this._opacity;
|
207
|
+
}
|
208
|
+
|
209
|
+
setAntiAlias(antiAlias) {
|
210
|
+
this.setValue("_antiAlias", antiAlias);
|
211
|
+
}
|
212
|
+
|
213
|
+
getAntiAlias() {
|
214
|
+
return this._antiAlias;
|
215
|
+
}
|
216
|
+
|
217
|
+
setImageFilter(imageFilter) {
|
218
|
+
this.setValue("_imageFilter", imageFilter);
|
219
|
+
}
|
220
|
+
|
221
|
+
getImageFilter() {
|
222
|
+
return this._imageFilter;
|
223
|
+
}
|
224
|
+
|
225
|
+
setShader(shader) {
|
226
|
+
this.setValue("_shader", shader);
|
227
|
+
}
|
228
|
+
|
229
|
+
getShader() {
|
230
|
+
return this._shader;
|
231
|
+
}
|
232
|
+
|
233
|
+
setPathEffect(pathEffect) {
|
234
|
+
this.setValue("_pathEffect", pathEffect);
|
235
|
+
}
|
236
|
+
|
237
|
+
getPathEffect() {
|
238
|
+
return this._pathEffect;
|
239
|
+
}
|
240
|
+
|
241
|
+
setColorFilter(colorFilter) {
|
242
|
+
this.setValue("_colorFilter", colorFilter);
|
243
|
+
}
|
244
|
+
|
245
|
+
getColorFilter() {
|
246
|
+
return this._colorFilter;
|
247
|
+
}
|
248
|
+
|
249
|
+
setMaskFilter(maskFilter) {
|
250
|
+
this.setValue("_maskFilter", maskFilter);
|
251
|
+
}
|
252
|
+
|
253
|
+
getMaskFilter() {
|
254
|
+
return this._maskFilter;
|
255
|
+
}
|
256
|
+
|
257
|
+
isPristine() {
|
258
|
+
return this.pristine;
|
259
|
+
}
|
260
|
+
|
261
|
+
concatTo(paint) {
|
262
|
+
if (this._opacity !== undefined) {
|
263
|
+
paint.setAlphaf(paint.getAlphaf() * this._opacity);
|
264
|
+
}
|
265
|
+
|
266
|
+
if (this._color !== undefined) {
|
267
|
+
const currentOpacity = paint.getAlphaf();
|
268
|
+
paint.setShader(null);
|
269
|
+
paint.setColor(this._color);
|
270
|
+
paint.setAlphaf(currentOpacity * paint.getAlphaf());
|
271
|
+
}
|
272
|
+
|
273
|
+
if (this._strokeWidth !== undefined) {
|
274
|
+
paint.setStrokeWidth(this._strokeWidth);
|
275
|
+
}
|
276
|
+
|
277
|
+
if (this._blendMode !== undefined) {
|
278
|
+
paint.setBlendMode(this._blendMode);
|
279
|
+
}
|
280
|
+
|
281
|
+
if (this._style !== undefined) {
|
282
|
+
paint.setStyle(this._style);
|
283
|
+
}
|
284
|
+
|
285
|
+
if (this._strokeJoin !== undefined) {
|
286
|
+
paint.setStrokeJoin(this._strokeJoin);
|
287
|
+
}
|
288
|
+
|
289
|
+
if (this._strokeCap !== undefined) {
|
290
|
+
paint.setStrokeCap(this._strokeCap);
|
291
|
+
}
|
292
|
+
|
293
|
+
if (this._strokeMiter !== undefined) {
|
294
|
+
paint.setStrokeMiter(this._strokeMiter);
|
295
|
+
}
|
296
|
+
|
297
|
+
if (this._antiAlias !== undefined) {
|
298
|
+
paint.setAntiAlias(this._antiAlias);
|
299
|
+
}
|
300
|
+
|
301
|
+
if (this._imageFilter !== undefined) {
|
302
|
+
paint.setImageFilter(this._imageFilter);
|
303
|
+
}
|
304
|
+
|
305
|
+
if (this._shader !== undefined) {
|
306
|
+
paint.setShader(this._shader);
|
307
|
+
}
|
308
|
+
|
309
|
+
if (this._pathEffect !== undefined) {
|
310
|
+
paint.setPathEffect(this._pathEffect);
|
311
|
+
}
|
312
|
+
|
313
|
+
if (this._colorFilter !== undefined) {
|
314
|
+
paint.setColorFilter(this._colorFilter);
|
315
|
+
}
|
316
|
+
|
317
|
+
if (this._maskFilter !== undefined) {
|
318
|
+
paint.setMaskFilter(this._maskFilter);
|
319
|
+
}
|
320
|
+
}
|
321
|
+
|
322
|
+
}
|
2
323
|
//# sourceMappingURL=DrawingContext.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type { SkCanvas, SkPaint } from \"../../skia/types\";\n\nexport interface DrawingContext {\n canvas: SkCanvas;\n paint: SkPaint;\n}\n"],"mappings":""}
|
1
|
+
{"version":3,"names":["BlendMode","PaintStyle","StrokeCap","StrokeJoin","enumKey","JsiDeclarationNode","DeclarationContext","JsiDrawingContext","constructor","Skia","canvas","paint","Paint","paints","declarationCtx","length","save","childPaint","copy","push","restore","pop","saveAndConcat","node","cache","ConcatablePaint","isPristine","concatTo","declCtx","props","getProps","children","setColor","color","undefined","Color","setStrokeWidth","strokeWidth","setBlendMode","blendMode","setStyle","style","setStrokeJoin","strokeJoin","setStrokeCap","strokeCap","setStrokeMiter","strokeMiter","setOpacity","opacity","setAntiAlias","antiAlias","forEach","child","decorate","colorFilter","colorFilters","popAllAsOne","imageFilter","imageFilters","shader","shaders","maskFilter","maskFilters","pathEffect","pathEffects","setImageFilter","setShader","setPathEffect","setColorFilter","setMaskFilter","enum","value","key","setValue","pristine","getColor","_color","getStrokeWidth","_strokeWidth","getBlendMode","_blendMode","getStyle","_style","getStrokeJoin","_strokeJoin","getStrokeCap","_strokeCap","getStrokeMiter","_strokeMiter","getOpacity","_opacity","getAntiAlias","_antiAlias","getImageFilter","_imageFilter","getShader","_shader","getPathEffect","_pathEffect","getColorFilter","_colorFilter","getMaskFilter","_maskFilter","setAlphaf","getAlphaf","currentOpacity"],"sources":["DrawingContext.ts"],"sourcesContent":["import type {\n SkCanvas,\n SkColor,\n SkColorFilter,\n SkImageFilter,\n SkMaskFilter,\n SkPaint,\n SkPathEffect,\n SkShader,\n Skia,\n} from \"../../skia/types\";\nimport { BlendMode, PaintStyle, StrokeCap, StrokeJoin } from \"../../skia/types\";\nimport { enumKey } from \"../nodes/datatypes/Enum\";\nimport { JsiDeclarationNode } from \"../nodes/Node\";\n\nimport type { PaintProps, SkEnum } from \"./Common\";\nimport { DeclarationContext } from \"./DeclarationContext\";\nimport type { Node } from \"./Node\";\n\nexport interface DrawingContext {\n canvas: SkCanvas;\n paint: SkPaint;\n saveAndConcat(node: Node<PaintProps>, cache?: SkPaint): boolean;\n restore(): void;\n declarationCtx: DeclarationContext;\n}\n\nexport class JsiDrawingContext implements DrawingContext {\n paints: SkPaint[];\n\n declarationCtx: DeclarationContext;\n\n constructor(private readonly Skia: Skia, public readonly canvas: SkCanvas) {\n const paint = this.Skia.Paint();\n this.paints = [paint];\n this.declarationCtx = new DeclarationContext(Skia);\n }\n\n get paint() {\n return this.paints[this.paints.length - 1];\n }\n\n private save() {\n const childPaint = this.paint.copy();\n this.paints.push(childPaint);\n }\n\n restore(): void {\n this.paints.pop();\n }\n\n saveAndConcat(node: Node<PaintProps>, cache?: SkPaint) {\n if (cache) {\n this.paints.push(cache);\n return true;\n }\n const paint = new ConcatablePaint(this.Skia, this.declarationCtx, node);\n if (!paint.isPristine()) {\n this.save();\n paint.concatTo(this.paint);\n return true;\n }\n return false;\n }\n}\n\nclass ConcatablePaint {\n private pristine = true;\n\n _color?: SkColor;\n _strokeWidth?: number;\n _blendMode?: BlendMode;\n _style?: PaintStyle;\n _strokeJoin?: StrokeJoin;\n _strokeCap?: StrokeCap;\n _strokeMiter?: number;\n _opacity = 1;\n _antiAlias?: boolean;\n\n _imageFilter?: SkImageFilter;\n _shader?: SkShader;\n _pathEffect?: SkPathEffect;\n _colorFilter?: SkColorFilter;\n _maskFilter?: SkMaskFilter;\n\n constructor(Skia: Skia, declCtx: DeclarationContext, node: Node<PaintProps>) {\n const props = node.getProps();\n const children = node.children();\n this.setColor(\n props.color !== undefined ? Skia.Color(props.color) : props.color\n );\n this.setStrokeWidth(props.strokeWidth);\n this.setBlendMode(props.blendMode);\n this.setStyle(props.style);\n this.setStrokeJoin(props.strokeJoin);\n this.setStrokeCap(props.strokeCap);\n this.setStrokeMiter(props.strokeMiter);\n this.setOpacity(props.opacity);\n this.setAntiAlias(props.antiAlias);\n declCtx.save();\n children.forEach((child) => {\n if (child instanceof JsiDeclarationNode) {\n child.decorate(declCtx);\n }\n });\n const colorFilter = declCtx.colorFilters.popAllAsOne();\n const imageFilter = declCtx.imageFilters.popAllAsOne();\n const shader = declCtx.shaders.pop();\n const maskFilter = declCtx.maskFilters.pop();\n const pathEffect = declCtx.pathEffects.popAllAsOne();\n declCtx.restore();\n if (imageFilter) {\n this.setImageFilter(imageFilter);\n }\n if (shader) {\n this.setShader(shader);\n }\n if (pathEffect) {\n this.setPathEffect(pathEffect);\n }\n if (colorFilter) {\n this.setColorFilter(colorFilter);\n }\n if (maskFilter) {\n this.setMaskFilter(maskFilter);\n }\n }\n\n private enum<T>(value: T, key?: Uncapitalize<string>) {\n if (key !== undefined) {\n return value[enumKey(key) as keyof T];\n }\n return undefined;\n }\n\n private setValue<T extends keyof typeof this>(\n key: T,\n value?: typeof this[T]\n ) {\n if (value !== undefined) {\n this[key] = value;\n this.pristine = false;\n }\n }\n\n setColor(color?: SkColor) {\n this.setValue(\"_color\", color);\n }\n\n getColor() {\n return this._color;\n }\n\n setStrokeWidth(strokeWidth?: number) {\n this.setValue(\"_strokeWidth\", strokeWidth);\n }\n\n getStrokeWidth() {\n return this._strokeWidth;\n }\n\n setBlendMode(blendMode?: SkEnum<typeof BlendMode>) {\n this.setValue(\"_blendMode\", this.enum(BlendMode, blendMode));\n }\n\n getBlendMode() {\n return this._blendMode;\n }\n\n setStyle(style?: SkEnum<typeof PaintStyle>) {\n this.setValue(\"_style\", this.enum(PaintStyle, style));\n }\n\n getStyle() {\n return this._style;\n }\n\n setStrokeJoin(strokeJoin?: SkEnum<typeof StrokeJoin>) {\n this.setValue(\"_strokeJoin\", this.enum(StrokeJoin, strokeJoin));\n }\n\n getStrokeJoin() {\n return this._strokeJoin;\n }\n\n setStrokeCap(strokeCap?: SkEnum<typeof StrokeCap>) {\n this.setValue(\"_strokeCap\", this.enum(StrokeCap, strokeCap));\n }\n\n getStrokeCap() {\n return this._strokeCap;\n }\n\n setStrokeMiter(strokeMiter?: number) {\n this.setValue(\"_strokeMiter\", strokeMiter);\n }\n\n getStrokeMiter() {\n return this._strokeMiter;\n }\n\n setOpacity(opacity?: number) {\n this.setValue(\"_opacity\", opacity);\n }\n\n getOpacity() {\n return this._opacity;\n }\n\n setAntiAlias(antiAlias?: boolean) {\n this.setValue(\"_antiAlias\", antiAlias);\n }\n\n getAntiAlias() {\n return this._antiAlias;\n }\n\n setImageFilter(imageFilter?: SkImageFilter) {\n this.setValue(\"_imageFilter\", imageFilter);\n }\n\n getImageFilter() {\n return this._imageFilter;\n }\n\n setShader(shader?: SkShader) {\n this.setValue(\"_shader\", shader);\n }\n\n getShader() {\n return this._shader;\n }\n\n setPathEffect(pathEffect?: SkPathEffect) {\n this.setValue(\"_pathEffect\", pathEffect);\n }\n\n getPathEffect() {\n return this._pathEffect;\n }\n\n setColorFilter(colorFilter?: SkColorFilter) {\n this.setValue(\"_colorFilter\", colorFilter);\n }\n\n getColorFilter() {\n return this._colorFilter;\n }\n\n setMaskFilter(maskFilter?: SkMaskFilter) {\n this.setValue(\"_maskFilter\", maskFilter);\n }\n\n getMaskFilter() {\n return this._maskFilter;\n }\n\n isPristine() {\n return this.pristine;\n }\n\n concatTo(paint: SkPaint) {\n if (this._opacity !== undefined) {\n paint.setAlphaf(paint.getAlphaf() * this._opacity);\n }\n if (this._color !== undefined) {\n const currentOpacity = paint.getAlphaf();\n paint.setShader(null);\n paint.setColor(this._color);\n paint.setAlphaf(currentOpacity * paint.getAlphaf());\n }\n if (this._strokeWidth !== undefined) {\n paint.setStrokeWidth(this._strokeWidth);\n }\n if (this._blendMode !== undefined) {\n paint.setBlendMode(this._blendMode);\n }\n if (this._style !== undefined) {\n paint.setStyle(this._style);\n }\n if (this._strokeJoin !== undefined) {\n paint.setStrokeJoin(this._strokeJoin);\n }\n if (this._strokeCap !== undefined) {\n paint.setStrokeCap(this._strokeCap);\n }\n if (this._strokeMiter !== undefined) {\n paint.setStrokeMiter(this._strokeMiter);\n }\n if (this._antiAlias !== undefined) {\n paint.setAntiAlias(this._antiAlias);\n }\n if (this._imageFilter !== undefined) {\n paint.setImageFilter(this._imageFilter);\n }\n if (this._shader !== undefined) {\n paint.setShader(this._shader);\n }\n if (this._pathEffect !== undefined) {\n paint.setPathEffect(this._pathEffect);\n }\n if (this._colorFilter !== undefined) {\n paint.setColorFilter(this._colorFilter);\n }\n if (this._maskFilter !== undefined) {\n paint.setMaskFilter(this._maskFilter);\n }\n }\n}\n"],"mappings":"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"}
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import type { SkColorFilter, SkImageFilter, SkMaskFilter, SkPaint, SkPathEffect, SkShader } from "../../skia/types";
|
2
1
|
import type { GroupProps } from "./Common";
|
3
|
-
import type { DrawingContext } from "./DrawingContext";
|
4
2
|
import type { DeclarationType, NodeType } from "./NodeType";
|
3
|
+
import type { DeclarationContext } from "./DeclarationContext";
|
4
|
+
import type { DrawingContext } from "./DrawingContext";
|
5
5
|
export interface Node<P> {
|
6
6
|
type: NodeType;
|
7
7
|
setProps(props: P): void;
|
@@ -13,16 +13,10 @@ export interface Node<P> {
|
|
13
13
|
insertChildBefore(child: Node<unknown>, before: Node<unknown>): void;
|
14
14
|
}
|
15
15
|
export declare type Invalidate = () => void;
|
16
|
-
export interface DeclarationNode<P
|
16
|
+
export interface DeclarationNode<P> extends Node<P> {
|
17
17
|
declarationType: DeclarationType;
|
18
|
-
|
18
|
+
decorate(ctx: DeclarationContext): void;
|
19
19
|
setInvalidate(invalidate: Invalidate): void;
|
20
|
-
isPaint(): this is DeclarationNode<unknown, SkPaint>;
|
21
|
-
isImageFilter(): this is DeclarationNode<unknown, SkImageFilter>;
|
22
|
-
isColorFilter(): this is DeclarationNode<unknown, SkColorFilter>;
|
23
|
-
isShader(): this is DeclarationNode<unknown, SkShader>;
|
24
|
-
isMaskFilter(): this is DeclarationNode<unknown, SkMaskFilter>;
|
25
|
-
isPathEffect(): this is DeclarationNode<unknown, SkPathEffect>;
|
26
20
|
}
|
27
21
|
export interface RenderNode<P extends GroupProps> extends Node<P> {
|
28
22
|
render(ctx: DrawingContext): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["Node.ts"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"names":[],"sources":["Node.ts"],"sourcesContent":["import type { GroupProps } from \"./Common\";\nimport type { DeclarationType, NodeType } from \"./NodeType\";\nimport type { DeclarationContext } from \"./DeclarationContext\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\nexport interface Node<P> {\n type: NodeType;\n\n setProps(props: P): void;\n setProp<K extends keyof P>(name: K, v: P[K]): boolean;\n getProps(): P;\n\n children(): Node<unknown>[];\n addChild(child: Node<unknown>): void;\n removeChild(child: Node<unknown>): void;\n insertChildBefore(child: Node<unknown>, before: Node<unknown>): void;\n}\n\nexport type Invalidate = () => void;\n\nexport interface DeclarationNode<P> extends Node<P> {\n declarationType: DeclarationType;\n decorate(ctx: DeclarationContext): void;\n\n setInvalidate(invalidate: Invalidate): void;\n}\n\nexport interface RenderNode<P extends GroupProps> extends Node<P> {\n render(ctx: DrawingContext): void;\n}\n"],"mappings":""}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import type { SkImageFilter, SkMaskFilter, SkShader, SkColorFilter, SkPathEffect, SkPaint } from "../../skia/types";
|
2
1
|
import type { ChildrenProps, GroupProps, PaintProps } from "./Common";
|
3
2
|
import type { BlendImageFilterProps, BlurImageFilterProps, DropShadowImageFilterProps, OffsetImageFilterProps, RuntimeShaderImageFilterProps, DisplacementMapImageFilterProps, MorphologyImageFilterProps, BlendProps } from "./ImageFilters";
|
4
3
|
import type { DeclarationNode, RenderNode } from "./Node";
|
@@ -7,14 +6,14 @@ import type { ImageProps, CircleProps, PathProps, CustomDrawingNodeProps, LinePr
|
|
7
6
|
import type { BlurMaskFilterProps } from "./MaskFilters";
|
8
7
|
import type { FractalNoiseProps, SweepGradientProps, ImageShaderProps, LinearGradientProps, ShaderProps, TurbulenceProps, TwoPointConicalGradientProps, RadialGradientProps, ColorProps } from "./Shaders";
|
9
8
|
import type { CornerPathEffectProps, DashPathEffectProps, DiscretePathEffectProps, Line2DPathEffectProps, Path1DPathEffectProps, Path2DPathEffectProps } from "./PathEffects";
|
10
|
-
declare type ImageFilterNode<P> = DeclarationNode<P
|
11
|
-
declare type PathEffectNode<P> = DeclarationNode<P
|
12
|
-
declare type NullablePathEffectNode<P> = DeclarationNode<P
|
9
|
+
declare type ImageFilterNode<P> = DeclarationNode<P>;
|
10
|
+
declare type PathEffectNode<P> = DeclarationNode<P>;
|
11
|
+
declare type NullablePathEffectNode<P> = DeclarationNode<P>;
|
13
12
|
declare type DrawingNode<P extends GroupProps> = RenderNode<P>;
|
14
13
|
export interface SkDOM {
|
15
14
|
Layer(props?: ChildrenProps): RenderNode<ChildrenProps>;
|
16
15
|
Group(props?: GroupProps): RenderNode<GroupProps>;
|
17
|
-
Paint(props: PaintProps): DeclarationNode<PaintProps
|
16
|
+
Paint(props: PaintProps): DeclarationNode<PaintProps>;
|
18
17
|
Fill(props?: DrawingNodeProps): DrawingNode<DrawingNodeProps>;
|
19
18
|
Image(props: ImageProps): DrawingNode<ImageProps>;
|
20
19
|
Circle(props: CircleProps): DrawingNode<CircleProps>;
|
@@ -34,7 +33,7 @@ export interface SkDOM {
|
|
34
33
|
DiffRect(props: DiffRectProps): DrawingNode<DiffRectProps>;
|
35
34
|
Picture(props: PictureProps): DrawingNode<PictureProps>;
|
36
35
|
ImageSVG(props: ImageSVGProps): DrawingNode<ImageSVGProps>;
|
37
|
-
BlurMaskFilter(props: BlurMaskFilterProps): DeclarationNode<BlurMaskFilterProps
|
36
|
+
BlurMaskFilter(props: BlurMaskFilterProps): DeclarationNode<BlurMaskFilterProps>;
|
38
37
|
BlendImageFilter(props: BlendImageFilterProps): ImageFilterNode<BlendImageFilterProps>;
|
39
38
|
BlurImageFilter(props: BlurImageFilterProps): ImageFilterNode<BlurImageFilterProps>;
|
40
39
|
OffsetImageFilter(props: OffsetImageFilterProps): ImageFilterNode<OffsetImageFilterProps>;
|
@@ -42,21 +41,21 @@ export interface SkDOM {
|
|
42
41
|
MorphologyImageFilter(props: MorphologyImageFilterProps): ImageFilterNode<MorphologyImageFilterProps>;
|
43
42
|
DisplacementMapImageFilter(props: DisplacementMapImageFilterProps): ImageFilterNode<DisplacementMapImageFilterProps>;
|
44
43
|
RuntimeShaderImageFilter(props: RuntimeShaderImageFilterProps): ImageFilterNode<RuntimeShaderImageFilterProps>;
|
45
|
-
MatrixColorFilter(props: MatrixColorFilterProps): DeclarationNode<MatrixColorFilterProps
|
46
|
-
BlendColorFilter(props: BlendColorFilterProps): DeclarationNode<BlendColorFilterProps
|
47
|
-
LumaColorFilter(): DeclarationNode<null
|
48
|
-
LinearToSRGBGammaColorFilter(): DeclarationNode<null
|
49
|
-
SRGBToLinearGammaColorFilter(): DeclarationNode<null
|
50
|
-
LerpColorFilter(props: LerpColorFilterProps): DeclarationNode<LerpColorFilterProps
|
51
|
-
Shader(props: ShaderProps): DeclarationNode<ShaderProps
|
52
|
-
ImageShader(props: ImageShaderProps): DeclarationNode<ImageShaderProps
|
53
|
-
ColorShader(props: ColorProps): DeclarationNode<ColorProps
|
54
|
-
Turbulence(props: TurbulenceProps): DeclarationNode<TurbulenceProps
|
55
|
-
FractalNoise(props: FractalNoiseProps): DeclarationNode<FractalNoiseProps
|
56
|
-
LinearGradient(props: LinearGradientProps): DeclarationNode<LinearGradientProps
|
57
|
-
RadialGradient(props: RadialGradientProps): DeclarationNode<RadialGradientProps
|
58
|
-
SweepGradient(props: SweepGradientProps): DeclarationNode<SweepGradientProps
|
59
|
-
TwoPointConicalGradient(props: TwoPointConicalGradientProps): DeclarationNode<TwoPointConicalGradientProps
|
44
|
+
MatrixColorFilter(props: MatrixColorFilterProps): DeclarationNode<MatrixColorFilterProps>;
|
45
|
+
BlendColorFilter(props: BlendColorFilterProps): DeclarationNode<BlendColorFilterProps>;
|
46
|
+
LumaColorFilter(): DeclarationNode<null>;
|
47
|
+
LinearToSRGBGammaColorFilter(): DeclarationNode<null>;
|
48
|
+
SRGBToLinearGammaColorFilter(): DeclarationNode<null>;
|
49
|
+
LerpColorFilter(props: LerpColorFilterProps): DeclarationNode<LerpColorFilterProps>;
|
50
|
+
Shader(props: ShaderProps): DeclarationNode<ShaderProps>;
|
51
|
+
ImageShader(props: ImageShaderProps): DeclarationNode<ImageShaderProps>;
|
52
|
+
ColorShader(props: ColorProps): DeclarationNode<ColorProps>;
|
53
|
+
Turbulence(props: TurbulenceProps): DeclarationNode<TurbulenceProps>;
|
54
|
+
FractalNoise(props: FractalNoiseProps): DeclarationNode<FractalNoiseProps>;
|
55
|
+
LinearGradient(props: LinearGradientProps): DeclarationNode<LinearGradientProps>;
|
56
|
+
RadialGradient(props: RadialGradientProps): DeclarationNode<RadialGradientProps>;
|
57
|
+
SweepGradient(props: SweepGradientProps): DeclarationNode<SweepGradientProps>;
|
58
|
+
TwoPointConicalGradient(props: TwoPointConicalGradientProps): DeclarationNode<TwoPointConicalGradientProps>;
|
60
59
|
CornerPathEffect(props: CornerPathEffectProps): NullablePathEffectNode<CornerPathEffectProps>;
|
61
60
|
DiscretePathEffect(props: DiscretePathEffectProps): PathEffectNode<DiscretePathEffectProps>;
|
62
61
|
DashPathEffect(props: DashPathEffectProps): PathEffectNode<DashPathEffectProps>;
|
@@ -64,9 +63,9 @@ export interface SkDOM {
|
|
64
63
|
Path2DPathEffect(props: Path2DPathEffectProps): NullablePathEffectNode<Path2DPathEffectProps>;
|
65
64
|
SumPathEffect(): NullablePathEffectNode<null>;
|
66
65
|
Line2DPathEffect(props: Line2DPathEffectProps): NullablePathEffectNode<Line2DPathEffectProps>;
|
67
|
-
Blend(props: BlendProps): DeclarationNode<BlendProps
|
66
|
+
Blend(props: BlendProps): DeclarationNode<BlendProps>;
|
68
67
|
BackdropFilter(props: ChildrenProps): RenderNode<ChildrenProps>;
|
69
68
|
Box(props: BoxProps): RenderNode<BoxProps>;
|
70
|
-
BoxShadow(props: BoxShadowProps): DeclarationNode<BoxShadowProps
|
69
|
+
BoxShadow(props: BoxShadowProps): DeclarationNode<BoxShadowProps>;
|
71
70
|
}
|
72
71
|
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["SkDOM.ts"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"names":[],"sources":["SkDOM.ts"],"sourcesContent":["import type { ChildrenProps, GroupProps, PaintProps } from \"./Common\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DropShadowImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n DisplacementMapImageFilterProps,\n MorphologyImageFilterProps,\n BlendProps,\n} from \"./ImageFilters\";\nimport type { DeclarationNode, RenderNode } from \"./Node\";\nimport type {\n BlendColorFilterProps,\n MatrixColorFilterProps,\n LerpColorFilterProps,\n} from \"./ColorFilters\";\nimport type {\n ImageProps,\n CircleProps,\n PathProps,\n CustomDrawingNodeProps,\n LineProps,\n OvalProps,\n PatchProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n VerticesProps,\n TextProps,\n DiffRectProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n DrawingNodeProps,\n BoxProps,\n BoxShadowProps,\n} from \"./Drawings\";\nimport type { BlurMaskFilterProps } from \"./MaskFilters\";\nimport type {\n FractalNoiseProps,\n SweepGradientProps,\n ImageShaderProps,\n LinearGradientProps,\n ShaderProps,\n TurbulenceProps,\n TwoPointConicalGradientProps,\n RadialGradientProps,\n ColorProps,\n} from \"./Shaders\";\nimport type {\n CornerPathEffectProps,\n DashPathEffectProps,\n DiscretePathEffectProps,\n Line2DPathEffectProps,\n Path1DPathEffectProps,\n Path2DPathEffectProps,\n} from \"./PathEffects\";\n\ntype ImageFilterNode<P> = DeclarationNode<P>;\n\ntype PathEffectNode<P> = DeclarationNode<P>;\ntype NullablePathEffectNode<P> = DeclarationNode<P>;\n\ntype DrawingNode<P extends GroupProps> = RenderNode<P>;\n\nexport interface SkDOM {\n Layer(props?: ChildrenProps): RenderNode<ChildrenProps>;\n Group(props?: GroupProps): RenderNode<GroupProps>;\n Paint(props: PaintProps): DeclarationNode<PaintProps>;\n\n // Drawings\n Fill(props?: DrawingNodeProps): DrawingNode<DrawingNodeProps>;\n Image(props: ImageProps): DrawingNode<ImageProps>;\n Circle(props: CircleProps): DrawingNode<CircleProps>;\n Path(props: PathProps): DrawingNode<PathProps>;\n CustomDrawing(\n props: CustomDrawingNodeProps\n ): DrawingNode<CustomDrawingNodeProps>;\n Line(props: LineProps): DrawingNode<LineProps>;\n Oval(props: OvalProps): DrawingNode<OvalProps>;\n Patch(props: PatchProps): DrawingNode<PatchProps>;\n Points(props: PointsProps): DrawingNode<PointsProps>;\n Rect(props: RectProps): DrawingNode<RectProps>;\n RRect(props: RoundedRectProps): DrawingNode<RoundedRectProps>;\n Vertices(props: VerticesProps): DrawingNode<VerticesProps>;\n Text(props: TextProps): DrawingNode<TextProps>;\n TextPath(props: TextPathProps): DrawingNode<TextPathProps>;\n TextBlob(props: TextBlobProps): DrawingNode<TextBlobProps>;\n Glyphs(props: GlyphsProps): DrawingNode<GlyphsProps>;\n DiffRect(props: DiffRectProps): DrawingNode<DiffRectProps>;\n Picture(props: PictureProps): DrawingNode<PictureProps>;\n ImageSVG(props: ImageSVGProps): DrawingNode<ImageSVGProps>;\n\n // BlurMaskFilters\n BlurMaskFilter(\n props: BlurMaskFilterProps\n ): DeclarationNode<BlurMaskFilterProps>;\n\n // ImageFilters\n BlendImageFilter(\n props: BlendImageFilterProps\n ): ImageFilterNode<BlendImageFilterProps>;\n BlurImageFilter(\n props: BlurImageFilterProps\n ): ImageFilterNode<BlurImageFilterProps>;\n OffsetImageFilter(\n props: OffsetImageFilterProps\n ): ImageFilterNode<OffsetImageFilterProps>;\n DropShadowImageFilter(\n props: DropShadowImageFilterProps\n ): ImageFilterNode<DropShadowImageFilterProps>;\n MorphologyImageFilter(\n props: MorphologyImageFilterProps\n ): ImageFilterNode<MorphologyImageFilterProps>;\n DisplacementMapImageFilter(\n props: DisplacementMapImageFilterProps\n ): ImageFilterNode<DisplacementMapImageFilterProps>;\n RuntimeShaderImageFilter(\n props: RuntimeShaderImageFilterProps\n ): ImageFilterNode<RuntimeShaderImageFilterProps>;\n\n // ColorFilters\n MatrixColorFilter(\n props: MatrixColorFilterProps\n ): DeclarationNode<MatrixColorFilterProps>;\n BlendColorFilter(\n props: BlendColorFilterProps\n ): DeclarationNode<BlendColorFilterProps>;\n LumaColorFilter(): DeclarationNode<null>;\n LinearToSRGBGammaColorFilter(): DeclarationNode<null>;\n SRGBToLinearGammaColorFilter(): DeclarationNode<null>;\n LerpColorFilter(\n props: LerpColorFilterProps\n ): DeclarationNode<LerpColorFilterProps>;\n\n // Shaders\n Shader(props: ShaderProps): DeclarationNode<ShaderProps>;\n ImageShader(props: ImageShaderProps): DeclarationNode<ImageShaderProps>;\n ColorShader(props: ColorProps): DeclarationNode<ColorProps>;\n Turbulence(props: TurbulenceProps): DeclarationNode<TurbulenceProps>;\n FractalNoise(props: FractalNoiseProps): DeclarationNode<FractalNoiseProps>;\n LinearGradient(\n props: LinearGradientProps\n ): DeclarationNode<LinearGradientProps>;\n RadialGradient(\n props: RadialGradientProps\n ): DeclarationNode<RadialGradientProps>;\n SweepGradient(props: SweepGradientProps): DeclarationNode<SweepGradientProps>;\n TwoPointConicalGradient(\n props: TwoPointConicalGradientProps\n ): DeclarationNode<TwoPointConicalGradientProps>;\n\n // Path Effects\n CornerPathEffect(\n props: CornerPathEffectProps\n ): NullablePathEffectNode<CornerPathEffectProps>;\n DiscretePathEffect(\n props: DiscretePathEffectProps\n ): PathEffectNode<DiscretePathEffectProps>;\n DashPathEffect(\n props: DashPathEffectProps\n ): PathEffectNode<DashPathEffectProps>;\n Path1DPathEffect(\n props: Path1DPathEffectProps\n ): NullablePathEffectNode<Path1DPathEffectProps>;\n Path2DPathEffect(\n props: Path2DPathEffectProps\n ): NullablePathEffectNode<Path2DPathEffectProps>;\n SumPathEffect(): NullablePathEffectNode<null>;\n Line2DPathEffect(\n props: Line2DPathEffectProps\n ): NullablePathEffectNode<Line2DPathEffectProps>;\n\n // Mixed\n Blend(props: BlendProps): DeclarationNode<BlendProps>;\n BackdropFilter(props: ChildrenProps): RenderNode<ChildrenProps>;\n Box(props: BoxProps): RenderNode<BoxProps>;\n BoxShadow(props: BoxShadowProps): DeclarationNode<BoxShadowProps>;\n}\n"],"mappings":""}
|