@shopify/react-native-skia 0.1.162 → 0.1.164
Sign up to get free protection for your applications and to get access to all the features.
- package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +2 -0
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +2 -2
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +2 -2
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +5 -5
- package/cpp/api/JsiSkCanvas.h +8 -8
- package/cpp/api/JsiSkColor.h +1 -1
- package/cpp/api/JsiSkColorFilter.h +1 -1
- package/cpp/api/JsiSkColorFilterFactory.h +2 -2
- package/cpp/api/JsiSkContourMeasure.h +1 -1
- package/cpp/api/JsiSkContourMeasureIter.h +2 -2
- package/cpp/api/JsiSkData.h +2 -2
- package/cpp/api/JsiSkDataFactory.h +1 -1
- package/cpp/api/JsiSkFont.h +2 -2
- package/cpp/api/JsiSkImage.h +3 -3
- package/cpp/api/JsiSkImageFilter.h +1 -1
- package/cpp/api/JsiSkImageFilterFactory.h +1 -1
- package/cpp/api/JsiSkImageInfo.h +1 -1
- package/cpp/api/JsiSkMaskFilter.h +1 -1
- package/cpp/api/JsiSkMaskFilterFactory.h +1 -1
- package/cpp/api/JsiSkMatrix.h +1 -1
- package/cpp/api/JsiSkPaint.h +7 -1
- package/cpp/api/JsiSkPath.h +15 -15
- package/cpp/api/JsiSkPathEffect.h +1 -1
- package/cpp/api/JsiSkPathEffectFactory.h +4 -4
- package/cpp/api/JsiSkPathFactory.h +2 -2
- package/cpp/api/JsiSkPicture.h +1 -1
- package/cpp/api/JsiSkPictureFactory.h +2 -2
- package/cpp/api/JsiSkPictureRecorder.h +2 -2
- package/cpp/api/JsiSkPoint.h +1 -1
- package/cpp/api/JsiSkRRect.h +1 -1
- package/cpp/api/JsiSkRSXform.h +1 -1
- package/cpp/api/JsiSkRect.h +1 -1
- package/cpp/api/JsiSkRuntimeEffect.h +1 -1
- package/cpp/api/JsiSkRuntimeShaderBuilder.h +1 -1
- package/cpp/api/JsiSkSVGFactory.h +1 -1
- package/cpp/api/JsiSkShader.h +2 -2
- package/cpp/api/JsiSkShaderFactory.h +3 -3
- package/cpp/api/JsiSkSurface.h +1 -1
- package/cpp/api/JsiSkSurfaceFactory.h +2 -2
- package/cpp/api/JsiSkTextBlob.h +1 -1
- package/cpp/api/JsiSkTextBlobFactory.h +1 -1
- package/cpp/api/JsiSkTypeface.h +2 -2
- package/cpp/api/JsiSkVertices.h +1 -1
- package/cpp/jsi/JsiHostObject.h +25 -25
- package/cpp/rnskia/RNSkJsView.h +3 -3
- package/cpp/rnskia/RNSkPictureView.h +3 -3
- package/cpp/rnskia/RNSkPlatformContext.h +5 -3
- package/cpp/rnskia/RNSkView.h +2 -2
- package/cpp/rnskia/dom/base/DrawingContext.cpp +24 -9
- package/cpp/rnskia/dom/base/DrawingContext.h +3 -2
- package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +12 -2
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +4 -4
- package/cpp/rnskia/dom/base/JsiDomNode.h +68 -10
- package/cpp/rnskia/dom/base/JsiDomRenderNode.h +26 -61
- package/cpp/rnskia/dom/base/NodeProp.h +2 -1
- package/cpp/rnskia/dom/base/NodePropsContainer.h +10 -0
- package/cpp/rnskia/dom/nodes/JsiBlendNode.h +7 -9
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +3 -6
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +2 -4
- package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +1 -2
- package/cpp/rnskia/dom/nodes/JsiCircleNode.h +2 -3
- package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +4 -8
- package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +1 -2
- package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +2 -7
- package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +4 -8
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +19 -37
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +1 -1
- package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +2 -4
- package/cpp/rnskia/dom/nodes/JsiLineNode.h +2 -7
- package/cpp/rnskia/dom/nodes/JsiOvalNode.h +1 -3
- package/cpp/rnskia/dom/nodes/JsiPaintNode.h +2 -3
- package/cpp/rnskia/dom/nodes/JsiPatchNode.h +4 -8
- package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +14 -28
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +16 -24
- package/cpp/rnskia/dom/nodes/JsiPictureNode.h +1 -2
- package/cpp/rnskia/dom/nodes/JsiPointsNode.h +2 -5
- package/cpp/rnskia/dom/nodes/JsiRRectNode.h +1 -2
- package/cpp/rnskia/dom/nodes/JsiRectNode.h +1 -2
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +37 -69
- package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +3 -6
- package/cpp/rnskia/dom/nodes/JsiTextNode.h +4 -8
- package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +1 -2
- package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +2 -4
- package/cpp/rnskia/dom/props/BlendModeProp.h +2 -2
- package/cpp/rnskia/dom/props/PaintProps.h +3 -0
- package/cpp/rnskia/dom/props/TransformProp.h +0 -2
- package/cpp/utils/RNSkLog.h +1 -1
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +8 -7
- package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +2 -1
- package/ios/RNSkia-iOS/SkiaDrawViewManager.mm +4 -4
- package/ios/RNSkia-iOS/SkiaManager.mm +5 -5
- package/ios/RNSkia-iOS/SkiaPictureViewManager.mm +3 -3
- package/ios/RNSkia-iOS/SkiaUIView.mm +10 -10
- package/lib/commonjs/dom/nodes/RenderNode.js +12 -16
- package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/index.js +0 -13
- package/lib/commonjs/dom/nodes/datatypes/index.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/Box.js +6 -6
- package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/PatchNode.js +3 -7
- package/lib/commonjs/dom/nodes/drawings/PatchNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/VerticesNode.js +1 -1
- package/lib/commonjs/dom/nodes/drawings/VerticesNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/ColorFilters.js +1 -3
- package/lib/commonjs/dom/nodes/paint/ColorFilters.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js +1 -1
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/Shaders.js +1 -3
- package/lib/commonjs/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/commonjs/dom/types/DrawingContext.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +2 -11
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/Container.js +2 -1
- package/lib/commonjs/renderer/Container.js.map +1 -1
- package/lib/commonjs/renderer/DrawingContext.js.map +1 -1
- package/lib/commonjs/renderer/components/Mask.js +11 -25
- package/lib/commonjs/renderer/components/Mask.js.map +1 -1
- package/lib/commonjs/renderer/index.js +0 -13
- package/lib/commonjs/renderer/index.js.map +1 -1
- package/lib/commonjs/skia/types/Paint/Paint.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPaint.js +4 -0
- package/lib/commonjs/skia/web/JsiSkPaint.js.map +1 -1
- package/lib/commonjs/web/LoadSkiaWeb.js +1 -1
- package/lib/commonjs/web/LoadSkiaWeb.js.map +1 -1
- package/lib/module/dom/nodes/RenderNode.js +12 -16
- package/lib/module/dom/nodes/RenderNode.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/index.js +0 -1
- package/lib/module/dom/nodes/datatypes/index.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Box.js +6 -5
- package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/module/dom/nodes/drawings/PatchNode.js +4 -8
- package/lib/module/dom/nodes/drawings/PatchNode.js.map +1 -1
- package/lib/module/dom/nodes/drawings/VerticesNode.js +2 -2
- package/lib/module/dom/nodes/drawings/VerticesNode.js.map +1 -1
- package/lib/module/dom/nodes/paint/ColorFilters.js +1 -2
- package/lib/module/dom/nodes/paint/ColorFilters.js.map +1 -1
- package/lib/module/dom/nodes/paint/ImageFilters.js +2 -2
- package/lib/module/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/module/dom/nodes/paint/Shaders.js +1 -2
- package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/module/dom/types/DrawingContext.js.map +1 -1
- package/lib/module/renderer/Canvas.js +3 -10
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/Container.js +2 -1
- package/lib/module/renderer/Container.js.map +1 -1
- package/lib/module/renderer/DrawingContext.js.map +1 -1
- package/lib/module/renderer/components/Mask.js +9 -21
- package/lib/module/renderer/components/Mask.js.map +1 -1
- package/lib/module/renderer/index.js +0 -1
- package/lib/module/renderer/index.js.map +1 -1
- package/lib/module/skia/types/Paint/Paint.js.map +1 -1
- package/lib/module/skia/web/JsiSkPaint.js +4 -0
- package/lib/module/skia/web/JsiSkPaint.js.map +1 -1
- package/lib/module/web/LoadSkiaWeb.js +1 -1
- package/lib/module/web/LoadSkiaWeb.js.map +1 -1
- package/lib/typescript/src/dom/nodes/datatypes/index.d.ts +0 -1
- package/lib/typescript/src/dom/nodes/drawings/Box.d.ts +1 -1
- package/lib/typescript/src/dom/nodes/drawings/PatchNode.d.ts +1 -1
- package/lib/typescript/src/dom/types/DrawingContext.d.ts +0 -1
- package/lib/typescript/src/renderer/Container.d.ts +1 -1
- package/lib/typescript/src/renderer/DrawingContext.d.ts +3 -5
- package/lib/typescript/src/renderer/index.d.ts +0 -1
- package/lib/typescript/src/skia/types/Paint/Paint.d.ts +4 -0
- package/lib/typescript/src/skia/web/JsiSkPaint.d.ts +1 -0
- package/package.json +1 -1
- package/src/dom/nodes/RenderNode.ts +11 -21
- package/src/dom/nodes/datatypes/index.ts +0 -1
- package/src/dom/nodes/drawings/Box.ts +7 -4
- package/src/dom/nodes/drawings/PatchNode.ts +4 -18
- package/src/dom/nodes/drawings/VerticesNode.ts +2 -2
- package/src/dom/nodes/paint/ColorFilters.ts +1 -2
- package/src/dom/nodes/paint/ImageFilters.ts +2 -2
- package/src/dom/nodes/paint/Shaders.ts +1 -2
- package/src/dom/types/DrawingContext.ts +0 -1
- package/src/renderer/Canvas.tsx +2 -12
- package/src/renderer/Container.tsx +1 -1
- package/src/renderer/DrawingContext.ts +5 -5
- package/src/renderer/components/Mask.tsx +11 -20
- package/src/renderer/index.ts +0 -1
- package/src/skia/types/Paint/Paint.ts +5 -0
- package/src/skia/web/JsiSkPaint.ts +4 -0
- package/src/web/LoadSkiaWeb.tsx +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Color.js +0 -27
- package/lib/commonjs/dom/nodes/datatypes/Color.js.map +0 -1
- package/lib/commonjs/renderer/useCanvas.js +0 -32
- package/lib/commonjs/renderer/useCanvas.js.map +0 -1
- package/lib/module/dom/nodes/datatypes/Color.js +0 -11
- package/lib/module/dom/nodes/datatypes/Color.js.map +0 -1
- package/lib/module/renderer/useCanvas.js +0 -15
- package/lib/module/renderer/useCanvas.js.map +0 -1
- package/lib/typescript/src/dom/nodes/datatypes/Color.d.ts +0 -7
- package/lib/typescript/src/renderer/useCanvas.d.ts +0 -9
- package/src/dom/nodes/datatypes/Color.ts +0 -15
- package/src/renderer/useCanvas.ts +0 -21
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["skiaReconciler","ReactReconciler","skHostConfig","injectIntoDevTools","bundleType","version","rendererPackageName","render","element","root","container","updateContainer","hostDebug","depMgr","update","useCanvasRef","useRef","createDependencyManager","registerValues","global","SkiaDomApi","DependencyManager","Canvas","forwardRef","forwardedRef","children","style","debug","mode","onTouch","onSize","props","innerRef","ref","useCombinedRefs","
|
1
|
+
{"version":3,"names":["skiaReconciler","ReactReconciler","skHostConfig","injectIntoDevTools","bundleType","version","rendererPackageName","render","element","root","container","updateContainer","hostDebug","depMgr","update","useCanvasRef","useRef","createDependencyManager","registerValues","global","SkiaDomApi","DependencyManager","Canvas","forwardRef","forwardedRef","children","style","debug","mode","onTouch","onSize","props","innerRef","ref","useCombinedRefs","redraw","useCallback","current","values","Error","useMemo","Container","Skia","createContainer","console","error","useEffect","remove","refs","targetRef","React","forEach"],"sources":["Canvas.tsx"],"sourcesContent":["import React, {\n useEffect,\n useCallback,\n useMemo,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n ComponentProps,\n MutableRefObject,\n ForwardedRef,\n} from \"react\";\nimport type { OpaqueRoot } from \"react-reconciler\";\nimport ReactReconciler from \"react-reconciler\";\n\nimport { SkiaDomView } from \"../views\";\nimport type { TouchHandler } from \"../views\";\nimport { Skia } from \"../skia/Skia\";\nimport type { SkiaValue } from \"../values\";\n\nimport { debug as hostDebug, skHostConfig } from \"./HostConfig\";\n// import { debugTree } from \"./nodes\";\nimport { Container } from \"./Container\";\nimport { DependencyManager } from \"./DependencyManager\";\n\nexport const skiaReconciler = ReactReconciler(skHostConfig);\n\nskiaReconciler.injectIntoDevTools({\n bundleType: 1,\n version: \"0.0.1\",\n rendererPackageName: \"react-native-skia\",\n});\n\nconst render = (element: ReactNode, root: OpaqueRoot, container: Container) => {\n skiaReconciler.updateContainer(element, root, null, () => {\n hostDebug(\"updateContainer\");\n container.depMgr.update();\n });\n};\n\nexport const useCanvasRef = () => useRef<SkiaDomView>(null);\n\nconst createDependencyManager = (\n registerValues: (values: Array<SkiaValue<unknown>>) => () => void\n) =>\n global.SkiaDomApi && global.SkiaDomApi.DependencyManager\n ? global.SkiaDomApi.DependencyManager(registerValues)\n : new DependencyManager(registerValues);\n\nexport interface CanvasProps extends ComponentProps<typeof SkiaDomView> {\n ref?: RefObject<SkiaDomView>;\n children: ReactNode;\n onTouch?: TouchHandler;\n}\n\nexport const Canvas = forwardRef<SkiaDomView, CanvasProps>(\n (\n { children, style, debug, mode, onTouch, onSize, ...props },\n forwardedRef\n ) => {\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const redraw = useCallback(() => {\n innerRef.current?.redraw();\n }, [innerRef]);\n\n const registerValues = useCallback(\n (values: Array<SkiaValue<unknown>>) => {\n if (ref.current === null) {\n throw new Error(\"Canvas ref is not set\");\n }\n return ref.current.registerValues(values);\n },\n [ref]\n );\n\n const container = useMemo(() => {\n return new Container(\n Skia,\n createDependencyManager(registerValues),\n redraw\n );\n }, [redraw, registerValues]);\n\n const root = useMemo(\n () =>\n skiaReconciler.createContainer(\n container,\n 0,\n null,\n true,\n null,\n \"\",\n console.error,\n null\n ),\n [container]\n );\n\n // Render effect\n useEffect(() => {\n render(children, root, container);\n }, [children, root, redraw, container]);\n\n useEffect(() => {\n return () => {\n skiaReconciler.updateContainer(null, root, null, () => {\n container.depMgr.remove();\n });\n };\n }, [container, root]);\n\n return (\n <SkiaDomView\n ref={ref}\n style={style}\n root={container.root}\n onTouch={onTouch}\n onSize={onSize}\n mode={mode}\n debug={debug}\n {...props}\n />\n );\n }\n);\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"],"mappings":"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"}
|
@@ -10,7 +10,8 @@ var _nodes = require("../dom/nodes");
|
|
10
10
|
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; }
|
11
11
|
|
12
12
|
class Container {
|
13
|
-
constructor(Skia, depMgr
|
13
|
+
constructor(Skia, depMgr) {
|
14
|
+
let redraw = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : () => {};
|
14
15
|
this.depMgr = depMgr;
|
15
16
|
this.redraw = redraw;
|
16
17
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Container","constructor","Skia","depMgr","redraw","Sk","JsiSkDOM","_root","Group","draw","ctx","render","root"],"sources":["Container.tsx"],"sourcesContent":["import { JsiSkDOM } from \"../dom/nodes\";\nimport type {\n GroupProps,\n DrawingContext,\n RenderNode,\n SkDOM,\n} from \"../dom/types\";\nimport type { Skia } from \"../skia/types\";\n\nimport type { DependencyManager } from \"./DependencyManager\";\n\nexport class Container {\n private _root: RenderNode<GroupProps>;\n public Sk: SkDOM;\n constructor(\n Skia: Skia,\n public depMgr: DependencyManager,\n public redraw: () => void\n ) {\n this.Sk = new JsiSkDOM({ Skia, depMgr });\n this._root = this.Sk.Group();\n }\n\n draw(ctx: DrawingContext) {\n this._root.render(ctx);\n }\n\n get root() {\n return this._root;\n }\n}\n"],"mappings":";;;;;;;AAAA;;;;AAWO,MAAMA,SAAN,CAAgB;EAGrBC,WAAW,CACTC,IADS,EAEFC,MAFE,
|
1
|
+
{"version":3,"names":["Container","constructor","Skia","depMgr","redraw","Sk","JsiSkDOM","_root","Group","draw","ctx","render","root"],"sources":["Container.tsx"],"sourcesContent":["import { JsiSkDOM } from \"../dom/nodes\";\nimport type {\n GroupProps,\n DrawingContext,\n RenderNode,\n SkDOM,\n} from \"../dom/types\";\nimport type { Skia } from \"../skia/types\";\n\nimport type { DependencyManager } from \"./DependencyManager\";\n\nexport class Container {\n private _root: RenderNode<GroupProps>;\n public Sk: SkDOM;\n constructor(\n Skia: Skia,\n public depMgr: DependencyManager,\n public redraw: () => void = () => {}\n ) {\n this.Sk = new JsiSkDOM({ Skia, depMgr });\n this._root = this.Sk.Group();\n }\n\n draw(ctx: DrawingContext) {\n this._root.render(ctx);\n }\n\n get root() {\n return this._root;\n }\n}\n"],"mappings":";;;;;;;AAAA;;;;AAWO,MAAMA,SAAN,CAAgB;EAGrBC,WAAW,CACTC,IADS,EAEFC,MAFE,EAIT;IAAA,IADOC,MACP,uEAD4B,MAAM,CAAE,CACpC;IAAA,KAFOD,MAEP,GAFOA,MAEP;IAAA,KADOC,MACP,GADOA,MACP;;IAAA;;IAAA;;IACA,KAAKC,EAAL,GAAU,IAAIC,eAAJ,CAAa;MAAEJ,IAAF;MAAQC;IAAR,CAAb,CAAV;IACA,KAAKI,KAAL,GAAa,KAAKF,EAAL,CAAQG,KAAR,EAAb;EACD;;EAEDC,IAAI,CAACC,GAAD,EAAsB;IACxB,KAAKH,KAAL,CAAWI,MAAX,CAAkBD,GAAlB;EACD;;EAEO,IAAJE,IAAI,GAAG;IACT,OAAO,KAAKL,KAAZ;EACD;;AAlBoB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type { DrawingInfo, SkiaView } from \"../views\";\nimport type {
|
1
|
+
{"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type { DrawingInfo, SkiaView } from \"../views\";\nimport type { Skia, Vector } from \"../skia/types\";\nimport type { DrawingContext as DOMDrawingContext } from \"../dom/types\";\n\nexport interface DrawingContext\n extends Omit<DrawingInfo, \"touches\">,\n DOMDrawingContext {\n center: Vector;\n ref: RefObject<SkiaView>;\n Skia: Skia;\n}\n"],"mappings":""}
|
@@ -5,17 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.Mask = void 0;
|
7
7
|
|
8
|
-
var _react =
|
9
|
-
|
10
|
-
var _types = require("../../skia/types");
|
11
|
-
|
12
|
-
var _useCanvas = require("../useCanvas");
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
13
9
|
|
14
10
|
var _Group = require("./Group");
|
15
11
|
|
16
|
-
|
12
|
+
var _LumaColorFilter = require("./colorFilters/LumaColorFilter");
|
13
|
+
|
14
|
+
var _Paint = require("./Paint");
|
17
15
|
|
18
|
-
function
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19
17
|
|
20
18
|
const Mask = _ref => {
|
21
19
|
let {
|
@@ -24,28 +22,16 @@ const Mask = _ref => {
|
|
24
22
|
mode,
|
25
23
|
clip
|
26
24
|
} = _ref;
|
27
|
-
const Skia = (0, _useCanvas.useSkiaPrivate)();
|
28
|
-
const maskPaint = (0, _react.useMemo)(() => {
|
29
|
-
const paint = Skia.Paint();
|
30
|
-
paint.setBlendMode(_types.BlendMode.Src);
|
31
|
-
|
32
|
-
if (mode === "luminance") {
|
33
|
-
paint.setColorFilter(Skia.ColorFilter.MakeLumaColorFilter());
|
34
|
-
}
|
35
|
-
|
36
|
-
return paint;
|
37
|
-
}, [Skia, mode]);
|
38
|
-
const clippingPaint = (0, _react.useMemo)(() => {
|
39
|
-
const paint = Skia.Paint();
|
40
|
-
paint.setBlendMode(_types.BlendMode.DstIn);
|
41
|
-
return paint;
|
42
|
-
}, [Skia]);
|
43
25
|
return /*#__PURE__*/_react.default.createElement(_Group.Group, {
|
44
26
|
layer: true
|
45
27
|
}, /*#__PURE__*/_react.default.createElement(_Group.Group, {
|
46
|
-
layer:
|
28
|
+
layer: /*#__PURE__*/_react.default.createElement(_Paint.Paint, {
|
29
|
+
blendMode: "src"
|
30
|
+
}, mode === "luminance" && /*#__PURE__*/_react.default.createElement(_LumaColorFilter.LumaColorFilter, null))
|
47
31
|
}, mask, clip && /*#__PURE__*/_react.default.createElement(_Group.Group, {
|
48
|
-
layer:
|
32
|
+
layer: /*#__PURE__*/_react.default.createElement(_Paint.Paint, {
|
33
|
+
blendMode: "dstIn"
|
34
|
+
})
|
49
35
|
}, children)), /*#__PURE__*/_react.default.createElement(_Group.Group, {
|
50
36
|
blendMode: "srcIn"
|
51
37
|
}, children));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Mask","children","mask","mode","clip","
|
1
|
+
{"version":3,"names":["Mask","children","mask","mode","clip","defaultProps"],"sources":["Mask.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport React from \"react\";\n\nimport { Group } from \"./Group\";\nimport { LumaColorFilter } from \"./colorFilters/LumaColorFilter\";\nimport { Paint } from \"./Paint\";\n\ninterface MaskProps {\n mode: \"luminance\" | \"alpha\";\n clip: boolean;\n mask: ReactNode | ReactNode[];\n children: ReactNode | ReactNode[];\n}\n\nexport const Mask = ({ children, mask, mode, clip }: MaskProps) => {\n return (\n <Group layer>\n <Group\n layer={\n <Paint blendMode=\"src\">\n {mode === \"luminance\" && <LumaColorFilter />}\n </Paint>\n }\n >\n {mask}\n {clip && <Group layer={<Paint blendMode=\"dstIn\" />}>{children}</Group>}\n </Group>\n <Group blendMode=\"srcIn\">{children}</Group>\n </Group>\n );\n};\n\nMask.defaultProps = {\n mode: \"alpha\",\n clip: true,\n};\n"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AACA;;;;AASO,MAAMA,IAAI,GAAG,QAA+C;EAAA,IAA9C;IAAEC,QAAF;IAAYC,IAAZ;IAAkBC,IAAlB;IAAwBC;EAAxB,CAA8C;EACjE,oBACE,6BAAC,YAAD;IAAO,KAAK;EAAZ,gBACE,6BAAC,YAAD;IACE,KAAK,eACH,6BAAC,YAAD;MAAO,SAAS,EAAC;IAAjB,GACGD,IAAI,KAAK,WAAT,iBAAwB,6BAAC,gCAAD,OAD3B;EAFJ,GAOGD,IAPH,EAQGE,IAAI,iBAAI,6BAAC,YAAD;IAAO,KAAK,eAAE,6BAAC,YAAD;MAAO,SAAS,EAAC;IAAjB;EAAd,GAA4CH,QAA5C,CARX,CADF,eAWE,6BAAC,YAAD;IAAO,SAAS,EAAC;EAAjB,GAA0BA,QAA1B,CAXF,CADF;AAeD,CAhBM;;;AAkBPD,IAAI,CAACK,YAAL,GAAoB;EAClBF,IAAI,EAAE,OADY;EAElBC,IAAI,EAAE;AAFY,CAApB"}
|
@@ -42,17 +42,4 @@ Object.keys(_DependencyManager).forEach(function (key) {
|
|
42
42
|
}
|
43
43
|
});
|
44
44
|
});
|
45
|
-
|
46
|
-
var _useCanvas = require("./useCanvas");
|
47
|
-
|
48
|
-
Object.keys(_useCanvas).forEach(function (key) {
|
49
|
-
if (key === "default" || key === "__esModule") return;
|
50
|
-
if (key in exports && exports[key] === _useCanvas[key]) return;
|
51
|
-
Object.defineProperty(exports, key, {
|
52
|
-
enumerable: true,
|
53
|
-
get: function () {
|
54
|
-
return _useCanvas[key];
|
55
|
-
}
|
56
|
-
});
|
57
|
-
});
|
58
45
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./components\";\nexport * from \"./useContextBridge\";\nexport * from \"./DependencyManager\";\
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./components\";\nexport * from \"./useContextBridge\";\nexport * from \"./DependencyManager\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["PaintStyle","StrokeCap","StrokeJoin","isPaint","obj","__typename__"],"sources":["Paint.ts"],"sourcesContent":["import type { SkImageFilter } from \"../ImageFilter\";\nimport type { SkMaskFilter } from \"../MaskFilter\";\nimport type { SkColorFilter } from \"../ColorFilter\";\nimport type { SkColor } from \"../Color\";\nimport type { SkPathEffect } from \"../PathEffect\";\nimport type { SkJSIInstance } from \"../JsiInstance\";\nimport type { SkShader } from \"../Shader\";\n\nimport type { BlendMode } from \"./BlendMode\";\n\nexport enum PaintStyle {\n Fill,\n Stroke,\n}\n\nexport enum StrokeCap {\n Butt,\n Round,\n Square,\n}\n\nexport enum StrokeJoin {\n Miter,\n Round,\n Bevel,\n}\n\nexport const isPaint = (obj: SkJSIInstance<string> | null): obj is SkPaint =>\n obj !== null && obj.__typename__ === \"Paint\";\n\nexport interface SkPaint extends SkJSIInstance<\"Paint\"> {\n /**\n * Returns a copy of this paint.\n */\n copy(): SkPaint;\n\n /**\n * Sets all SkPaint contents to their initial values. This is equivalent to replacing\n SkPaint with the result of SkPaint().\n */\n reset(): void;\n\n /**\n * Retrieves the alpha and RGB unpremultiplied. RGB are extended sRGB values\n * (sRGB gamut, and encoded with the sRGB transfer function).\n */\n getColor(): SkColor;\n\n /**\n * Returns the geometry drawn at the beginning and end of strokes.\n */\n getStrokeCap(): StrokeCap;\n\n /**\n * Returns the geometry drawn at the corners of strokes.\n */\n getStrokeJoin(): StrokeJoin;\n\n /**\n * Returns the limit at which a sharp corner is drawn beveled.\n */\n getStrokeMiter(): number;\n\n /**\n * Returns the thickness of the pen used to outline the shape.\n */\n getStrokeWidth(): number;\n\n /**\n * Replaces alpha, leaving RGBA unchanged. 0 means fully transparent, 1.0 means opaque.\n * @param alpha\n */\n setAlphaf(alpha: number): void;\n\n /**\n * Requests, but does not require, that edge pixels draw opaque or with\n * partial transparency.\n * @param aa\n */\n setAntiAlias: (aa: boolean) => void;\n\n /**\n * Sets the blend mode that is, the mode used to combine source color\n * with destination color.\n * @param mode\n */\n setBlendMode: (blendMode: BlendMode) => void;\n\n /**\n * Sets alpha and RGB used when stroking and filling. The color is a 32-bit\n * value, unpremultiplied, packing 8-bit components for alpha, red, blue,\n * and green.\n *\n * @param color unpremultiplied ARGB\n *\n * example: https://fiddle.skia.org/c/@Paint_setColor\n */\n setColor(color: SkColor): void;\n\n /**\n * Sets the current color filter, replacing the existing one if there was one.\n * @param filter\n */\n setColorFilter(filter: SkColorFilter | null): void;\n\n /**\n * Sets the current image filter, replacing the existing one if there was one.\n * @param filter\n */\n setImageFilter(filter: SkImageFilter | null): void;\n\n /**\n * Sets the current mask filter, replacing the existing one if there was one.\n * @param filter\n */\n setMaskFilter(filter: SkMaskFilter | null): void;\n\n /**\n * Sets the current path effect, replacing the existing one if there was one.\n * @param effect\n */\n setPathEffect(effect: SkPathEffect | null): void;\n\n /**\n * Sets the current shader, replacing the existing one if there was one.\n * @param shader\n */\n setShader(shader: SkShader | null): void;\n\n /**\n * Sets the geometry drawn at the beginning and end of strokes.\n * @param cap\n */\n setStrokeCap(cap: StrokeCap): void;\n\n /**\n * Sets the geometry drawn at the corners of strokes.\n * @param join\n */\n setStrokeJoin(join: StrokeJoin): void;\n\n /**\n * Sets the limit at which a sharp corner is drawn beveled.\n * @param limit\n */\n setStrokeMiter(limit: number): void;\n\n /**\n * Sets the thickness of the pen used to outline the shape.\n * @param width\n */\n setStrokeWidth(width: number): void;\n\n /**\n * Sets whether the geometry is filled or stroked.\n * @param style\n */\n setStyle(style: PaintStyle): void;\n}\n"],"mappings":";;;;;;IAUYA,U;;;WAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;IAKAC,S;;;WAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;GAAAA,S,yBAAAA,S;;IAMAC,U;;;WAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;AAML,MAAMC,OAAO,GAAIC,GAAD,IACrBA,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAACC,YAAJ,KAAqB,OADhC"}
|
1
|
+
{"version":3,"names":["PaintStyle","StrokeCap","StrokeJoin","isPaint","obj","__typename__"],"sources":["Paint.ts"],"sourcesContent":["import type { SkImageFilter } from \"../ImageFilter\";\nimport type { SkMaskFilter } from \"../MaskFilter\";\nimport type { SkColorFilter } from \"../ColorFilter\";\nimport type { SkColor } from \"../Color\";\nimport type { SkPathEffect } from \"../PathEffect\";\nimport type { SkJSIInstance } from \"../JsiInstance\";\nimport type { SkShader } from \"../Shader\";\n\nimport type { BlendMode } from \"./BlendMode\";\n\nexport enum PaintStyle {\n Fill,\n Stroke,\n}\n\nexport enum StrokeCap {\n Butt,\n Round,\n Square,\n}\n\nexport enum StrokeJoin {\n Miter,\n Round,\n Bevel,\n}\n\nexport const isPaint = (obj: SkJSIInstance<string> | null): obj is SkPaint =>\n obj !== null && obj.__typename__ === \"Paint\";\n\nexport interface SkPaint extends SkJSIInstance<\"Paint\"> {\n /**\n * Retrieves alpha from the color used when stroking and filling.\n */\n getAlphaf(): number;\n\n /**\n * Returns a copy of this paint.\n */\n copy(): SkPaint;\n\n /**\n * Sets all SkPaint contents to their initial values. This is equivalent to replacing\n SkPaint with the result of SkPaint().\n */\n reset(): void;\n\n /**\n * Retrieves the alpha and RGB unpremultiplied. RGB are extended sRGB values\n * (sRGB gamut, and encoded with the sRGB transfer function).\n */\n getColor(): SkColor;\n\n /**\n * Returns the geometry drawn at the beginning and end of strokes.\n */\n getStrokeCap(): StrokeCap;\n\n /**\n * Returns the geometry drawn at the corners of strokes.\n */\n getStrokeJoin(): StrokeJoin;\n\n /**\n * Returns the limit at which a sharp corner is drawn beveled.\n */\n getStrokeMiter(): number;\n\n /**\n * Returns the thickness of the pen used to outline the shape.\n */\n getStrokeWidth(): number;\n\n /**\n * Replaces alpha, leaving RGBA unchanged. 0 means fully transparent, 1.0 means opaque.\n * @param alpha\n */\n setAlphaf(alpha: number): void;\n\n /**\n * Requests, but does not require, that edge pixels draw opaque or with\n * partial transparency.\n * @param aa\n */\n setAntiAlias: (aa: boolean) => void;\n\n /**\n * Sets the blend mode that is, the mode used to combine source color\n * with destination color.\n * @param mode\n */\n setBlendMode: (blendMode: BlendMode) => void;\n\n /**\n * Sets alpha and RGB used when stroking and filling. The color is a 32-bit\n * value, unpremultiplied, packing 8-bit components for alpha, red, blue,\n * and green.\n *\n * @param color unpremultiplied ARGB\n *\n * example: https://fiddle.skia.org/c/@Paint_setColor\n */\n setColor(color: SkColor): void;\n\n /**\n * Sets the current color filter, replacing the existing one if there was one.\n * @param filter\n */\n setColorFilter(filter: SkColorFilter | null): void;\n\n /**\n * Sets the current image filter, replacing the existing one if there was one.\n * @param filter\n */\n setImageFilter(filter: SkImageFilter | null): void;\n\n /**\n * Sets the current mask filter, replacing the existing one if there was one.\n * @param filter\n */\n setMaskFilter(filter: SkMaskFilter | null): void;\n\n /**\n * Sets the current path effect, replacing the existing one if there was one.\n * @param effect\n */\n setPathEffect(effect: SkPathEffect | null): void;\n\n /**\n * Sets the current shader, replacing the existing one if there was one.\n * @param shader\n */\n setShader(shader: SkShader | null): void;\n\n /**\n * Sets the geometry drawn at the beginning and end of strokes.\n * @param cap\n */\n setStrokeCap(cap: StrokeCap): void;\n\n /**\n * Sets the geometry drawn at the corners of strokes.\n * @param join\n */\n setStrokeJoin(join: StrokeJoin): void;\n\n /**\n * Sets the limit at which a sharp corner is drawn beveled.\n * @param limit\n */\n setStrokeMiter(limit: number): void;\n\n /**\n * Sets the thickness of the pen used to outline the shape.\n * @param width\n */\n setStrokeWidth(width: number): void;\n\n /**\n * Sets whether the geometry is filled or stroked.\n * @param style\n */\n setStyle(style: PaintStyle): void;\n}\n"],"mappings":";;;;;;IAUYA,U;;;WAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;IAKAC,S;;;WAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;GAAAA,S,yBAAAA,S;;IAMAC,U;;;WAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;AAML,MAAMC,OAAO,GAAIC,GAAD,IACrBA,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAACC,YAAJ,KAAqB,OADhC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["JsiSkPaint","HostObject","constructor","CanvasKit","ref","copy","reset","Paint","getColor","getStrokeCap","value","getStrokeJoin","getStrokeMiter","getStrokeWidth","setAlphaf","alpha","setAntiAlias","aa","setBlendMode","blendMode","ckEnum","setColor","color","setColorFilter","filter","JsiSkColorFilter","fromValue","setImageFilter","JsiSkImageFilter","setMaskFilter","JsiSkMaskFilter","setPathEffect","effect","JsiSkPathEffect","setShader","shader","JsiSkShader","setStrokeCap","cap","setStrokeJoin","join","setStrokeMiter","limit","setStrokeWidth","width","setStyle","style"],"sources":["JsiSkPaint.ts"],"sourcesContent":["import type { CanvasKit, Paint } from \"canvaskit-wasm\";\n\nimport type {\n StrokeJoin,\n BlendMode,\n SkColor,\n SkColorFilter,\n SkImageFilter,\n SkPaint,\n SkShader,\n StrokeCap,\n PaintStyle,\n SkMaskFilter,\n SkPathEffect,\n} from \"../types\";\n\nimport { HostObject, ckEnum } from \"./Host\";\nimport { JsiSkColorFilter } from \"./JsiSkColorFilter\";\nimport { JsiSkImageFilter } from \"./JsiSkImageFilter\";\nimport { JsiSkMaskFilter } from \"./JsiSkMaskFilter\";\nimport { JsiSkPathEffect } from \"./JsiSkPathEffect\";\nimport { JsiSkShader } from \"./JsiSkShader\";\n\nexport class JsiSkPaint extends HostObject<Paint, \"Paint\"> implements SkPaint {\n constructor(CanvasKit: CanvasKit, ref: Paint) {\n super(CanvasKit, ref, \"Paint\");\n }\n\n copy() {\n return new JsiSkPaint(this.CanvasKit, this.ref.copy());\n }\n\n reset() {\n this.ref = new this.CanvasKit.Paint();\n }\n\n getColor() {\n return this.ref.getColor();\n }\n\n getStrokeCap() {\n return this.ref.getStrokeCap().value;\n }\n\n getStrokeJoin() {\n return this.ref.getStrokeJoin().value;\n }\n\n getStrokeMiter() {\n return this.ref.getStrokeMiter();\n }\n\n getStrokeWidth() {\n return this.ref.getStrokeWidth();\n }\n\n setAlphaf(alpha: number) {\n this.ref.setAlphaf(alpha);\n }\n\n setAntiAlias(aa: boolean) {\n this.ref.setAntiAlias(aa);\n }\n\n setBlendMode(blendMode: BlendMode) {\n this.ref.setBlendMode(ckEnum(blendMode));\n }\n\n setColor(color: SkColor) {\n this.ref.setColor(color);\n }\n\n setColorFilter(filter: SkColorFilter | null) {\n this.ref.setColorFilter(filter ? JsiSkColorFilter.fromValue(filter) : null);\n }\n\n setImageFilter(filter: SkImageFilter | null) {\n this.ref.setImageFilter(filter ? JsiSkImageFilter.fromValue(filter) : null);\n }\n\n setMaskFilter(filter: SkMaskFilter | null) {\n this.ref.setMaskFilter(filter ? JsiSkMaskFilter.fromValue(filter) : null);\n }\n\n setPathEffect(effect: SkPathEffect | null) {\n this.ref.setPathEffect(effect ? JsiSkPathEffect.fromValue(effect) : null);\n }\n\n setShader(shader: SkShader | null) {\n this.ref.setShader(shader ? JsiSkShader.fromValue(shader) : null);\n }\n\n setStrokeCap(cap: StrokeCap) {\n this.ref.setStrokeCap(ckEnum(cap));\n }\n\n setStrokeJoin(join: StrokeJoin) {\n this.ref.setStrokeJoin(ckEnum(join));\n }\n\n setStrokeMiter(limit: number) {\n this.ref.setStrokeMiter(limit);\n }\n\n setStrokeWidth(width: number) {\n this.ref.setStrokeWidth(width);\n }\n\n setStyle(style: PaintStyle) {\n this.ref.setStyle({ value: style });\n }\n}\n"],"mappings":";;;;;;;AAgBA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,MAAMA,UAAN,SAAyBC,gBAAzB,CAAuE;EAC5EC,WAAW,CAACC,SAAD,EAAuBC,GAAvB,EAAmC;IAC5C,MAAMD,SAAN,EAAiBC,GAAjB,EAAsB,OAAtB;EACD;;EAEDC,IAAI,GAAG;IACL,OAAO,IAAIL,UAAJ,CAAe,KAAKG,SAApB,EAA+B,KAAKC,GAAL,CAASC,IAAT,EAA/B,CAAP;EACD;;EAEDC,KAAK,GAAG;IACN,KAAKF,GAAL,GAAW,IAAI,KAAKD,SAAL,CAAeI,KAAnB,EAAX;EACD;;EAEDC,QAAQ,GAAG;IACT,OAAO,
|
1
|
+
{"version":3,"names":["JsiSkPaint","HostObject","constructor","CanvasKit","ref","copy","reset","Paint","getAlphaf","getColor","getStrokeCap","value","getStrokeJoin","getStrokeMiter","getStrokeWidth","setAlphaf","alpha","setAntiAlias","aa","setBlendMode","blendMode","ckEnum","setColor","color","setColorFilter","filter","JsiSkColorFilter","fromValue","setImageFilter","JsiSkImageFilter","setMaskFilter","JsiSkMaskFilter","setPathEffect","effect","JsiSkPathEffect","setShader","shader","JsiSkShader","setStrokeCap","cap","setStrokeJoin","join","setStrokeMiter","limit","setStrokeWidth","width","setStyle","style"],"sources":["JsiSkPaint.ts"],"sourcesContent":["import type { CanvasKit, Paint } from \"canvaskit-wasm\";\n\nimport type {\n StrokeJoin,\n BlendMode,\n SkColor,\n SkColorFilter,\n SkImageFilter,\n SkPaint,\n SkShader,\n StrokeCap,\n PaintStyle,\n SkMaskFilter,\n SkPathEffect,\n} from \"../types\";\n\nimport { HostObject, ckEnum } from \"./Host\";\nimport { JsiSkColorFilter } from \"./JsiSkColorFilter\";\nimport { JsiSkImageFilter } from \"./JsiSkImageFilter\";\nimport { JsiSkMaskFilter } from \"./JsiSkMaskFilter\";\nimport { JsiSkPathEffect } from \"./JsiSkPathEffect\";\nimport { JsiSkShader } from \"./JsiSkShader\";\n\nexport class JsiSkPaint extends HostObject<Paint, \"Paint\"> implements SkPaint {\n constructor(CanvasKit: CanvasKit, ref: Paint) {\n super(CanvasKit, ref, \"Paint\");\n }\n\n copy() {\n return new JsiSkPaint(this.CanvasKit, this.ref.copy());\n }\n\n reset() {\n this.ref = new this.CanvasKit.Paint();\n }\n\n getAlphaf() {\n return this.getColor()[3];\n }\n\n getColor() {\n return this.ref.getColor();\n }\n\n getStrokeCap() {\n return this.ref.getStrokeCap().value;\n }\n\n getStrokeJoin() {\n return this.ref.getStrokeJoin().value;\n }\n\n getStrokeMiter() {\n return this.ref.getStrokeMiter();\n }\n\n getStrokeWidth() {\n return this.ref.getStrokeWidth();\n }\n\n setAlphaf(alpha: number) {\n this.ref.setAlphaf(alpha);\n }\n\n setAntiAlias(aa: boolean) {\n this.ref.setAntiAlias(aa);\n }\n\n setBlendMode(blendMode: BlendMode) {\n this.ref.setBlendMode(ckEnum(blendMode));\n }\n\n setColor(color: SkColor) {\n this.ref.setColor(color);\n }\n\n setColorFilter(filter: SkColorFilter | null) {\n this.ref.setColorFilter(filter ? JsiSkColorFilter.fromValue(filter) : null);\n }\n\n setImageFilter(filter: SkImageFilter | null) {\n this.ref.setImageFilter(filter ? JsiSkImageFilter.fromValue(filter) : null);\n }\n\n setMaskFilter(filter: SkMaskFilter | null) {\n this.ref.setMaskFilter(filter ? JsiSkMaskFilter.fromValue(filter) : null);\n }\n\n setPathEffect(effect: SkPathEffect | null) {\n this.ref.setPathEffect(effect ? JsiSkPathEffect.fromValue(effect) : null);\n }\n\n setShader(shader: SkShader | null) {\n this.ref.setShader(shader ? JsiSkShader.fromValue(shader) : null);\n }\n\n setStrokeCap(cap: StrokeCap) {\n this.ref.setStrokeCap(ckEnum(cap));\n }\n\n setStrokeJoin(join: StrokeJoin) {\n this.ref.setStrokeJoin(ckEnum(join));\n }\n\n setStrokeMiter(limit: number) {\n this.ref.setStrokeMiter(limit);\n }\n\n setStrokeWidth(width: number) {\n this.ref.setStrokeWidth(width);\n }\n\n setStyle(style: PaintStyle) {\n this.ref.setStyle({ value: style });\n }\n}\n"],"mappings":"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"}
|
@@ -10,7 +10,7 @@ var _canvaskit = _interopRequireDefault(require("canvaskit-wasm/bin/full/canvask
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11
11
|
|
12
12
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
13
|
-
// @ts-
|
13
|
+
// @ts-ignore
|
14
14
|
const LoadSkiaWeb = async opts => {
|
15
15
|
if (global.CanvasKit !== undefined) {
|
16
16
|
return;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["LoadSkiaWeb","opts","global","CanvasKit","undefined","CanvasKitInit","LoadSkia"],"sources":["LoadSkiaWeb.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-
|
1
|
+
{"version":3,"names":["LoadSkiaWeb","opts","global","CanvasKit","undefined","CanvasKitInit","LoadSkia"],"sources":["LoadSkiaWeb.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CanvasKitInit from \"canvaskit-wasm/bin/full/canvaskit\";\nimport type {\n CanvasKit as CanvasKitType,\n CanvasKitInitOptions,\n} from \"canvaskit-wasm\";\n\ndeclare global {\n var CanvasKit: CanvasKitType;\n}\n\nexport const LoadSkiaWeb = async (opts?: CanvasKitInitOptions) => {\n if (global.CanvasKit !== undefined) {\n return;\n }\n const CanvasKit = await CanvasKitInit(opts);\n // The CanvasKit API is stored on the global object and used\n // to create the JsiSKApi in the Skia.web.ts file.\n global.CanvasKit = CanvasKit;\n};\n\n// We keep this function for backward compatibility\nexport const LoadSkia = LoadSkiaWeb;\n"],"mappings":";;;;;;;AAEA;;;;AAFA;AACA;AAWO,MAAMA,WAAW,GAAG,MAAOC,IAAP,IAAuC;EAChE,IAAIC,MAAM,CAACC,SAAP,KAAqBC,SAAzB,EAAoC;IAClC;EACD;;EACD,MAAMD,SAAS,GAAG,MAAM,IAAAE,kBAAA,EAAcJ,IAAd,CAAxB,CAJgE,CAKhE;EACA;;EACAC,MAAM,CAACC,SAAP,GAAmBA,SAAnB;AACD,CARM,C,CAUP;;;;AACO,MAAMG,QAAQ,GAAGN,WAAjB"}
|
@@ -103,7 +103,9 @@ export class JsiRenderNode extends JsiNode {
|
|
103
103
|
} = this.props;
|
104
104
|
|
105
105
|
if (color !== undefined || strokeWidth !== undefined || blendMode !== undefined || style !== undefined || strokeJoin !== undefined || strokeCap !== undefined || strokeMiter !== undefined || opacity !== undefined || antiAlias !== undefined) {
|
106
|
-
ctx = {
|
106
|
+
ctx = {
|
107
|
+
opacity: 1
|
108
|
+
};
|
107
109
|
|
108
110
|
if (color !== undefined) {
|
109
111
|
ctx.color = this.Skia.Color(color);
|
@@ -181,11 +183,10 @@ export class JsiRenderNode extends JsiNode {
|
|
181
183
|
const {
|
182
184
|
canvas
|
183
185
|
} = parentCtx;
|
184
|
-
const opacity = this.props.opacity !== undefined ? parentCtx.opacity * this.props.opacity : parentCtx.opacity;
|
185
186
|
|
186
187
|
if (this.paintCache === null || this.paintCache.parent !== parentCtx.paint) {
|
187
188
|
const paintCtx = this.getPaintCtx();
|
188
|
-
const child = paintCtx ? concatPaint(parentCtx.paint, paintCtx
|
189
|
+
const child = paintCtx ? concatPaint(parentCtx.paint.copy(), paintCtx) : parentCtx.paint;
|
189
190
|
this.paintCache = {
|
190
191
|
parent: parentCtx.paint,
|
191
192
|
child
|
@@ -195,7 +196,6 @@ export class JsiRenderNode extends JsiNode {
|
|
195
196
|
const paint = this.paintCache.child; // TODO: can we only recreate a new context here if needed?
|
196
197
|
|
197
198
|
const ctx = { ...parentCtx,
|
198
|
-
opacity,
|
199
199
|
paint
|
200
200
|
};
|
201
201
|
const hasTransform = matrix !== undefined || transform !== undefined;
|
@@ -236,7 +236,7 @@ export class JsiRenderNode extends JsiNode {
|
|
236
236
|
|
237
237
|
}
|
238
238
|
|
239
|
-
const concatPaint = (
|
239
|
+
const concatPaint = (paint, _ref) => {
|
240
240
|
let {
|
241
241
|
color,
|
242
242
|
strokeWidth,
|
@@ -247,22 +247,22 @@ const concatPaint = (parent, _ref, opacity) => {
|
|
247
247
|
imageFilter,
|
248
248
|
maskFilter,
|
249
249
|
pathEffect,
|
250
|
-
opacity
|
250
|
+
opacity,
|
251
251
|
strokeCap,
|
252
252
|
strokeJoin,
|
253
253
|
strokeMiter,
|
254
254
|
style
|
255
255
|
} = _ref;
|
256
|
-
|
256
|
+
|
257
|
+
if (opacity !== undefined) {
|
258
|
+
paint.setAlphaf(paint.getAlphaf() * opacity);
|
259
|
+
}
|
257
260
|
|
258
261
|
if (color !== undefined) {
|
262
|
+
const currentOpacity = paint.getAlphaf();
|
259
263
|
paint.setShader(null);
|
260
|
-
color[3] *= opacity;
|
261
264
|
paint.setColor(color);
|
262
|
-
|
263
|
-
const cl = paint.getColor();
|
264
|
-
cl[3] = opacity;
|
265
|
-
paint.setColor(cl);
|
265
|
+
paint.setAlphaf(currentOpacity * paint.getAlphaf());
|
266
266
|
}
|
267
267
|
|
268
268
|
if (strokeWidth !== undefined) {
|
@@ -297,10 +297,6 @@ const concatPaint = (parent, _ref, opacity) => {
|
|
297
297
|
paint.setPathEffect(pathEffect);
|
298
298
|
}
|
299
299
|
|
300
|
-
if (alpha !== undefined) {
|
301
|
-
paint.setAlphaf(alpha * opacity);
|
302
|
-
}
|
303
|
-
|
304
300
|
if (strokeCap !== undefined) {
|
305
301
|
paint.setStrokeCap(strokeCap);
|
306
302
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["StrokeCap","StrokeJoin","PaintStyle","BlendMode","ClipOp","isRRect","isPathDef","processPath","processTransformProps","JsiNode","JsiDeclarationNode","enumKey","paintProps","JsiRenderNode","constructor","ctx","type","props","matrix","Skia","Matrix","onPropChange","setProps","paintCache","setProp","key","value","hasChanged","includes","identity","clipPath","undefined","clipRect","clipRRect","computeMatrix","computeClip","addChild","child","setInvalidate","insertChildBefore","before","clip","getPaintCtx","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","opacity","antiAlias","Color","_children","forEach","isColorFilter","cf","materialize","colorFilter","ColorFilter","MakeCompose","isShader","shader","isPathEffect","pe","pathEffect","PathEffect","isImageFilter","filter","imageFilter","ImageFilter","isMaskFilter","maskFilter","render","parentCtx","invertClip","layer","transform","canvas","parent","paint","paintCtx","concatPaint","hasTransform","hasClip","shouldSave","op","Difference","Intersect","saveLayer","save","concat","renderNode","restore","alpha","copy","setShader","setColor","cl","getColor","setStrokeWidth","setAntiAlias","setBlendMode","setColorFilter","setImageFilter","setMaskFilter","setPathEffect","setAlphaf","setStrokeCap","setStrokeJoin","setStrokeMiter","setStyle"],"sources":["RenderNode.ts"],"sourcesContent":["import type {\n SkMatrix,\n SkRect,\n SkRRect,\n SkPath,\n SkPaint,\n} from \"../../skia/types\";\nimport {\n StrokeCap,\n StrokeJoin,\n PaintStyle,\n BlendMode,\n ClipOp,\n isRRect,\n} from \"../../skia/types\";\nimport type {\n RenderNode,\n GroupProps,\n DrawingContext,\n NodeType,\n Node,\n} from \"../types\";\n\nimport { isPathDef, processPath, processTransformProps } from \"./datatypes\";\nimport type { NodeContext } from \"./Node\";\nimport { JsiNode, JsiDeclarationNode } from \"./Node\";\nimport type { PaintContext } from \"./PaintContext\";\nimport { enumKey } from \"./datatypes/Enum\";\n\nconst paintProps = [\n \"color\",\n \"strokeWidth\",\n \"blendMode\",\n \"strokeCap\",\n \"strokeJoin\",\n \"strokeMiter\",\n \"style\",\n \"antiAlias\",\n \"opacity\",\n];\n\ninterface PaintCache {\n parent: SkPaint;\n child: SkPaint;\n}\n\nexport abstract class JsiRenderNode<P extends GroupProps>\n extends JsiNode<P>\n implements RenderNode<P>\n{\n paintCache: PaintCache | null = null;\n matrix: SkMatrix;\n clipRect?: SkRect;\n clipRRect?: SkRRect;\n clipPath?: SkPath;\n\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, type, props);\n this.matrix = this.Skia.Matrix();\n this.onPropChange();\n }\n\n setProps(props: P) {\n super.setProps(props);\n this.onPropChange();\n this.paintCache = null;\n }\n\n setProp<K extends keyof P>(key: K, value: P[K]) {\n const hasChanged = super.setProp(key, value);\n if (hasChanged) {\n this.onPropChange();\n if (paintProps.includes(key as string)) {\n this.paintCache = null;\n }\n }\n return hasChanged;\n }\n\n protected onPropChange() {\n this.matrix.identity();\n this.clipPath = undefined;\n this.clipRect = undefined;\n this.clipRRect = undefined;\n this.computeMatrix();\n this.computeClip();\n }\n\n addChild(child: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.addChild(child);\n }\n\n insertChildBefore(child: Node<unknown>, before: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.insertChildBefore(child, before);\n }\n\n private computeClip() {\n const { clip } = this.props;\n if (clip) {\n if (isPathDef(clip)) {\n this.clipPath = processPath(this.Skia, clip);\n } else if (isRRect(clip)) {\n this.clipRRect = clip;\n } else {\n this.clipRect = clip;\n }\n }\n }\n\n private computeMatrix() {\n processTransformProps(this.matrix, this.props);\n }\n\n private getPaintCtx() {\n let ctx: PaintContext | undefined;\n const {\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n antiAlias,\n } = this.props;\n if (\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n opacity !== undefined ||\n antiAlias !== undefined\n ) {\n ctx = {};\n if (color !== undefined) {\n ctx.color = this.Skia.Color(color);\n }\n if (strokeWidth !== undefined) {\n ctx.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n ctx.blendMode = BlendMode[enumKey(blendMode)];\n }\n if (style !== undefined) {\n ctx.style = PaintStyle[enumKey(style)];\n }\n if (strokeJoin !== undefined) {\n ctx.strokeJoin = StrokeJoin[enumKey(strokeJoin)];\n }\n if (strokeCap !== undefined) {\n ctx.strokeCap = StrokeCap[enumKey(strokeCap)];\n }\n if (strokeMiter !== undefined) {\n ctx.strokeMiter = strokeMiter;\n }\n if (opacity !== undefined) {\n ctx.opacity = opacity;\n }\n if (antiAlias !== undefined) {\n ctx.antiAlias = antiAlias;\n }\n }\n this._children.forEach((child) => {\n if (child instanceof JsiDeclarationNode) {\n if (child.isColorFilter()) {\n ctx = ctx || {};\n const cf = child.materialize();\n ctx.colorFilter = ctx.colorFilter\n ? this.Skia.ColorFilter.MakeCompose(cf, ctx.colorFilter)\n : cf;\n } else if (child.isShader()) {\n ctx = ctx || {};\n const shader = child.materialize();\n ctx.shader = shader;\n } else if (child.isPathEffect()) {\n ctx = ctx || {};\n const pe = child.materialize();\n ctx.pathEffect = ctx.pathEffect\n ? this.Skia.PathEffect.MakeCompose(pe, ctx.pathEffect)\n : pe;\n } else if (child.isImageFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.imageFilter = ctx.imageFilter\n ? this.Skia.ImageFilter.MakeCompose(filter, ctx.imageFilter)\n : filter;\n } else if (child.isMaskFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.maskFilter = filter;\n }\n }\n });\n return ctx;\n }\n\n render(parentCtx: DrawingContext) {\n const { invertClip, layer, matrix, transform } = this.props;\n const { canvas } = parentCtx;\n\n const opacity =\n this.props.opacity !== undefined\n ? parentCtx.opacity * this.props.opacity\n : parentCtx.opacity;\n\n if (\n this.paintCache === null ||\n this.paintCache.parent !== parentCtx.paint\n ) {\n const paintCtx = this.getPaintCtx();\n const child = paintCtx\n ? concatPaint(parentCtx.paint, paintCtx, parentCtx.opacity)\n : parentCtx.paint;\n this.paintCache = { parent: parentCtx.paint, child };\n }\n const paint = this.paintCache.child;\n // TODO: can we only recreate a new context here if needed?\n const ctx = { ...parentCtx, opacity, paint };\n const hasTransform = matrix !== undefined || transform !== undefined;\n const hasClip =\n this.clipRect !== undefined ||\n this.clipPath !== undefined ||\n this.clipRRect !== undefined;\n const shouldSave = hasTransform || hasClip || !!layer;\n const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;\n if (shouldSave) {\n if (layer) {\n if (typeof layer === \"boolean\") {\n canvas.saveLayer();\n } else {\n canvas.saveLayer(layer);\n }\n } else {\n canvas.save();\n }\n }\n\n if (this.matrix) {\n canvas.concat(this.matrix);\n }\n if (this.clipRect) {\n canvas.clipRect(this.clipRect, op, true);\n } else if (this.clipRRect) {\n canvas.clipRRect(this.clipRRect, op, true);\n } else if (this.clipPath) {\n canvas.clipPath(this.clipPath, op, true);\n }\n\n this.renderNode(ctx);\n\n if (shouldSave) {\n canvas.restore();\n }\n }\n\n abstract renderNode(ctx: DrawingContext): void;\n}\n\nconst concatPaint = (\n parent: SkPaint,\n {\n color,\n strokeWidth,\n shader,\n antiAlias,\n blendMode,\n colorFilter,\n imageFilter,\n maskFilter,\n pathEffect,\n opacity: alpha,\n strokeCap,\n strokeJoin,\n strokeMiter,\n style,\n }: PaintContext,\n opacity: number\n) => {\n const paint = parent.copy();\n if (color !== undefined) {\n paint.setShader(null);\n color[3] *= opacity;\n paint.setColor(color);\n } else {\n const cl = paint.getColor();\n cl[3] = opacity;\n paint.setColor(cl);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (shader !== undefined) {\n paint.setShader(shader);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(blendMode);\n }\n if (colorFilter !== undefined) {\n paint.setColorFilter(colorFilter);\n }\n if (imageFilter !== undefined) {\n paint.setImageFilter(imageFilter);\n }\n if (maskFilter !== undefined) {\n paint.setMaskFilter(maskFilter);\n }\n if (pathEffect !== undefined) {\n paint.setPathEffect(pathEffect);\n }\n if (alpha !== undefined) {\n paint.setAlphaf(alpha * opacity);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(strokeCap);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(strokeJoin);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (style !== undefined) {\n paint.setStyle(style);\n }\n return paint;\n};\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["StrokeCap","StrokeJoin","PaintStyle","BlendMode","ClipOp","isRRect","isPathDef","processPath","processTransformProps","JsiNode","JsiDeclarationNode","enumKey","paintProps","JsiRenderNode","constructor","ctx","type","props","matrix","Skia","Matrix","onPropChange","setProps","paintCache","setProp","key","value","hasChanged","includes","identity","clipPath","undefined","clipRect","clipRRect","computeMatrix","computeClip","addChild","child","setInvalidate","insertChildBefore","before","clip","getPaintCtx","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","opacity","antiAlias","Color","_children","forEach","isColorFilter","cf","materialize","colorFilter","ColorFilter","MakeCompose","isShader","shader","isPathEffect","pe","pathEffect","PathEffect","isImageFilter","filter","imageFilter","ImageFilter","isMaskFilter","maskFilter","render","parentCtx","invertClip","layer","transform","canvas","parent","paint","paintCtx","concatPaint","copy","hasTransform","hasClip","shouldSave","op","Difference","Intersect","saveLayer","save","concat","renderNode","restore","setAlphaf","getAlphaf","currentOpacity","setShader","setColor","setStrokeWidth","setAntiAlias","setBlendMode","setColorFilter","setImageFilter","setMaskFilter","setPathEffect","setStrokeCap","setStrokeJoin","setStrokeMiter","setStyle"],"sources":["RenderNode.ts"],"sourcesContent":["import type {\n SkMatrix,\n SkRect,\n SkRRect,\n SkPath,\n SkPaint,\n} from \"../../skia/types\";\nimport {\n StrokeCap,\n StrokeJoin,\n PaintStyle,\n BlendMode,\n ClipOp,\n isRRect,\n} from \"../../skia/types\";\nimport type {\n RenderNode,\n GroupProps,\n DrawingContext,\n NodeType,\n Node,\n} from \"../types\";\n\nimport { isPathDef, processPath, processTransformProps } from \"./datatypes\";\nimport type { NodeContext } from \"./Node\";\nimport { JsiNode, JsiDeclarationNode } from \"./Node\";\nimport type { PaintContext } from \"./PaintContext\";\nimport { enumKey } from \"./datatypes/Enum\";\n\nconst paintProps = [\n \"color\",\n \"strokeWidth\",\n \"blendMode\",\n \"strokeCap\",\n \"strokeJoin\",\n \"strokeMiter\",\n \"style\",\n \"antiAlias\",\n \"opacity\",\n];\n\ninterface PaintCache {\n parent: SkPaint;\n child: SkPaint;\n}\n\nexport abstract class JsiRenderNode<P extends GroupProps>\n extends JsiNode<P>\n implements RenderNode<P>\n{\n paintCache: PaintCache | null = null;\n matrix: SkMatrix;\n clipRect?: SkRect;\n clipRRect?: SkRRect;\n clipPath?: SkPath;\n\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, type, props);\n this.matrix = this.Skia.Matrix();\n this.onPropChange();\n }\n\n setProps(props: P) {\n super.setProps(props);\n this.onPropChange();\n this.paintCache = null;\n }\n\n setProp<K extends keyof P>(key: K, value: P[K]) {\n const hasChanged = super.setProp(key, value);\n if (hasChanged) {\n this.onPropChange();\n if (paintProps.includes(key as string)) {\n this.paintCache = null;\n }\n }\n return hasChanged;\n }\n\n protected onPropChange() {\n this.matrix.identity();\n this.clipPath = undefined;\n this.clipRect = undefined;\n this.clipRRect = undefined;\n this.computeMatrix();\n this.computeClip();\n }\n\n addChild(child: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.addChild(child);\n }\n\n insertChildBefore(child: Node<unknown>, before: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.insertChildBefore(child, before);\n }\n\n private computeClip() {\n const { clip } = this.props;\n if (clip) {\n if (isPathDef(clip)) {\n this.clipPath = processPath(this.Skia, clip);\n } else if (isRRect(clip)) {\n this.clipRRect = clip;\n } else {\n this.clipRect = clip;\n }\n }\n }\n\n private computeMatrix() {\n processTransformProps(this.matrix, this.props);\n }\n\n private getPaintCtx() {\n let ctx: PaintContext | undefined;\n const {\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n antiAlias,\n } = this.props;\n if (\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n opacity !== undefined ||\n antiAlias !== undefined\n ) {\n ctx = { opacity: 1 };\n if (color !== undefined) {\n ctx.color = this.Skia.Color(color);\n }\n if (strokeWidth !== undefined) {\n ctx.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n ctx.blendMode = BlendMode[enumKey(blendMode)];\n }\n if (style !== undefined) {\n ctx.style = PaintStyle[enumKey(style)];\n }\n if (strokeJoin !== undefined) {\n ctx.strokeJoin = StrokeJoin[enumKey(strokeJoin)];\n }\n if (strokeCap !== undefined) {\n ctx.strokeCap = StrokeCap[enumKey(strokeCap)];\n }\n if (strokeMiter !== undefined) {\n ctx.strokeMiter = strokeMiter;\n }\n if (opacity !== undefined) {\n ctx.opacity = opacity;\n }\n if (antiAlias !== undefined) {\n ctx.antiAlias = antiAlias;\n }\n }\n this._children.forEach((child) => {\n if (child instanceof JsiDeclarationNode) {\n if (child.isColorFilter()) {\n ctx = ctx || {};\n const cf = child.materialize();\n ctx.colorFilter = ctx.colorFilter\n ? this.Skia.ColorFilter.MakeCompose(cf, ctx.colorFilter)\n : cf;\n } else if (child.isShader()) {\n ctx = ctx || {};\n const shader = child.materialize();\n ctx.shader = shader;\n } else if (child.isPathEffect()) {\n ctx = ctx || {};\n const pe = child.materialize();\n ctx.pathEffect = ctx.pathEffect\n ? this.Skia.PathEffect.MakeCompose(pe, ctx.pathEffect)\n : pe;\n } else if (child.isImageFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.imageFilter = ctx.imageFilter\n ? this.Skia.ImageFilter.MakeCompose(filter, ctx.imageFilter)\n : filter;\n } else if (child.isMaskFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.maskFilter = filter;\n }\n }\n });\n return ctx;\n }\n\n render(parentCtx: DrawingContext) {\n const { invertClip, layer, matrix, transform } = this.props;\n const { canvas } = parentCtx;\n\n if (\n this.paintCache === null ||\n this.paintCache.parent !== parentCtx.paint\n ) {\n const paintCtx = this.getPaintCtx();\n const child = paintCtx\n ? concatPaint(parentCtx.paint.copy(), paintCtx)\n : parentCtx.paint;\n this.paintCache = { parent: parentCtx.paint, child };\n }\n const paint = this.paintCache.child;\n // TODO: can we only recreate a new context here if needed?\n const ctx = { ...parentCtx, paint };\n const hasTransform = matrix !== undefined || transform !== undefined;\n const hasClip =\n this.clipRect !== undefined ||\n this.clipPath !== undefined ||\n this.clipRRect !== undefined;\n const shouldSave = hasTransform || hasClip || !!layer;\n const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;\n if (shouldSave) {\n if (layer) {\n if (typeof layer === \"boolean\") {\n canvas.saveLayer();\n } else {\n canvas.saveLayer(layer);\n }\n } else {\n canvas.save();\n }\n }\n\n if (this.matrix) {\n canvas.concat(this.matrix);\n }\n if (this.clipRect) {\n canvas.clipRect(this.clipRect, op, true);\n } else if (this.clipRRect) {\n canvas.clipRRect(this.clipRRect, op, true);\n } else if (this.clipPath) {\n canvas.clipPath(this.clipPath, op, true);\n }\n\n this.renderNode(ctx);\n\n if (shouldSave) {\n canvas.restore();\n }\n }\n\n abstract renderNode(ctx: DrawingContext): void;\n}\n\nconst concatPaint = (\n paint: SkPaint,\n {\n color,\n strokeWidth,\n shader,\n antiAlias,\n blendMode,\n colorFilter,\n imageFilter,\n maskFilter,\n pathEffect,\n opacity,\n strokeCap,\n strokeJoin,\n strokeMiter,\n style,\n }: PaintContext\n) => {\n if (opacity !== undefined) {\n paint.setAlphaf(paint.getAlphaf() * opacity);\n }\n if (color !== undefined) {\n const currentOpacity = paint.getAlphaf();\n paint.setShader(null);\n paint.setColor(color);\n paint.setAlphaf(currentOpacity * paint.getAlphaf());\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (shader !== undefined) {\n paint.setShader(shader);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(blendMode);\n }\n if (colorFilter !== undefined) {\n paint.setColorFilter(colorFilter);\n }\n if (imageFilter !== undefined) {\n paint.setImageFilter(imageFilter);\n }\n if (maskFilter !== undefined) {\n paint.setMaskFilter(maskFilter);\n }\n if (pathEffect !== undefined) {\n paint.setPathEffect(pathEffect);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(strokeCap);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(strokeJoin);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (style !== undefined) {\n paint.setStyle(style);\n }\n return paint;\n};\n"],"mappings":";;AAOA,SACEA,SADF,EAEEC,UAFF,EAGEC,UAHF,EAIEC,SAJF,EAKEC,MALF,EAMEC,OANF,QAOO,kBAPP;AAgBA,SAASC,SAAT,EAAoBC,WAApB,EAAiCC,qBAAjC,QAA8D,aAA9D;AAEA,SAASC,OAAT,EAAkBC,kBAAlB,QAA4C,QAA5C;AAEA,SAASC,OAAT,QAAwB,kBAAxB;AAEA,MAAMC,UAAU,GAAG,CACjB,OADiB,EAEjB,aAFiB,EAGjB,WAHiB,EAIjB,WAJiB,EAKjB,YALiB,EAMjB,aANiB,EAOjB,OAPiB,EAQjB,WARiB,EASjB,SATiB,CAAnB;AAiBA,OAAO,MAAeC,aAAf,SACGJ,OADH,CAGP;EAOEK,WAAW,CAACC,GAAD,EAAmBC,IAAnB,EAAmCC,KAAnC,EAA6C;IACtD,MAAMF,GAAN,EAAWC,IAAX,EAAiBC,KAAjB;;IADsD,oCANxB,IAMwB;;IAAA;;IAAA;;IAAA;;IAAA;;IAEtD,KAAKC,MAAL,GAAc,KAAKC,IAAL,CAAUC,MAAV,EAAd;IACA,KAAKC,YAAL;EACD;;EAEDC,QAAQ,CAACL,KAAD,EAAW;IACjB,MAAMK,QAAN,CAAeL,KAAf;IACA,KAAKI,YAAL;IACA,KAAKE,UAAL,GAAkB,IAAlB;EACD;;EAEDC,OAAO,CAAoBC,GAApB,EAA4BC,KAA5B,EAAyC;IAC9C,MAAMC,UAAU,GAAG,MAAMH,OAAN,CAAcC,GAAd,EAAmBC,KAAnB,CAAnB;;IACA,IAAIC,UAAJ,EAAgB;MACd,KAAKN,YAAL;;MACA,IAAIT,UAAU,CAACgB,QAAX,CAAoBH,GAApB,CAAJ,EAAwC;QACtC,KAAKF,UAAL,GAAkB,IAAlB;MACD;IACF;;IACD,OAAOI,UAAP;EACD;;EAESN,YAAY,GAAG;IACvB,KAAKH,MAAL,CAAYW,QAAZ;IACA,KAAKC,QAAL,GAAgBC,SAAhB;IACA,KAAKC,QAAL,GAAgBD,SAAhB;IACA,KAAKE,SAAL,GAAiBF,SAAjB;IACA,KAAKG,aAAL;IACA,KAAKC,WAAL;EACD;;EAEDC,QAAQ,CAACC,KAAD,EAAuB;IAC7B,IAAIA,KAAK,YAAY3B,kBAArB,EAAyC;MACvC2B,KAAK,CAACC,aAAN,CAAoB,MAAO,KAAKf,UAAL,GAAkB,IAA7C;IACD;;IACD,MAAMa,QAAN,CAAeC,KAAf;EACD;;EAEDE,iBAAiB,CAACF,KAAD,EAAuBG,MAAvB,EAA8C;IAC7D,IAAIH,KAAK,YAAY3B,kBAArB,EAAyC;MACvC2B,KAAK,CAACC,aAAN,CAAoB,MAAO,KAAKf,UAAL,GAAkB,IAA7C;IACD;;IACD,MAAMgB,iBAAN,CAAwBF,KAAxB,EAA+BG,MAA/B;EACD;;EAEOL,WAAW,GAAG;IACpB,MAAM;MAAEM;IAAF,IAAW,KAAKxB,KAAtB;;IACA,IAAIwB,IAAJ,EAAU;MACR,IAAInC,SAAS,CAACmC,IAAD,CAAb,EAAqB;QACnB,KAAKX,QAAL,GAAgBvB,WAAW,CAAC,KAAKY,IAAN,EAAYsB,IAAZ,CAA3B;MACD,CAFD,MAEO,IAAIpC,OAAO,CAACoC,IAAD,CAAX,EAAmB;QACxB,KAAKR,SAAL,GAAiBQ,IAAjB;MACD,CAFM,MAEA;QACL,KAAKT,QAAL,GAAgBS,IAAhB;MACD;IACF;EACF;;EAEOP,aAAa,GAAG;IACtB1B,qBAAqB,CAAC,KAAKU,MAAN,EAAc,KAAKD,KAAnB,CAArB;EACD;;EAEOyB,WAAW,GAAG;IACpB,IAAI3B,GAAJ;IACA,MAAM;MACJ4B,KADI;MAEJC,WAFI;MAGJC,SAHI;MAIJC,KAJI;MAKJC,UALI;MAMJC,SANI;MAOJC,WAPI;MAQJC,OARI;MASJC;IATI,IAUF,KAAKlC,KAVT;;IAWA,IACE0B,KAAK,KAAKZ,SAAV,IACAa,WAAW,KAAKb,SADhB,IAEAc,SAAS,KAAKd,SAFd,IAGAe,KAAK,KAAKf,SAHV,IAIAgB,UAAU,KAAKhB,SAJf,IAKAiB,SAAS,KAAKjB,SALd,IAMAkB,WAAW,KAAKlB,SANhB,IAOAmB,OAAO,KAAKnB,SAPZ,IAQAoB,SAAS,KAAKpB,SAThB,EAUE;MACAhB,GAAG,GAAG;QAAEmC,OAAO,EAAE;MAAX,CAAN;;MACA,IAAIP,KAAK,KAAKZ,SAAd,EAAyB;QACvBhB,GAAG,CAAC4B,KAAJ,GAAY,KAAKxB,IAAL,CAAUiC,KAAV,CAAgBT,KAAhB,CAAZ;MACD;;MACD,IAAIC,WAAW,KAAKb,SAApB,EAA+B;QAC7BhB,GAAG,CAAC6B,WAAJ,GAAkBA,WAAlB;MACD;;MACD,IAAIC,SAAS,KAAKd,SAAlB,EAA6B;QAC3BhB,GAAG,CAAC8B,SAAJ,GAAgB1C,SAAS,CAACQ,OAAO,CAACkC,SAAD,CAAR,CAAzB;MACD;;MACD,IAAIC,KAAK,KAAKf,SAAd,EAAyB;QACvBhB,GAAG,CAAC+B,KAAJ,GAAY5C,UAAU,CAACS,OAAO,CAACmC,KAAD,CAAR,CAAtB;MACD;;MACD,IAAIC,UAAU,KAAKhB,SAAnB,EAA8B;QAC5BhB,GAAG,CAACgC,UAAJ,GAAiB9C,UAAU,CAACU,OAAO,CAACoC,UAAD,CAAR,CAA3B;MACD;;MACD,IAAIC,SAAS,KAAKjB,SAAlB,EAA6B;QAC3BhB,GAAG,CAACiC,SAAJ,GAAgBhD,SAAS,CAACW,OAAO,CAACqC,SAAD,CAAR,CAAzB;MACD;;MACD,IAAIC,WAAW,KAAKlB,SAApB,EAA+B;QAC7BhB,GAAG,CAACkC,WAAJ,GAAkBA,WAAlB;MACD;;MACD,IAAIC,OAAO,KAAKnB,SAAhB,EAA2B;QACzBhB,GAAG,CAACmC,OAAJ,GAAcA,OAAd;MACD;;MACD,IAAIC,SAAS,KAAKpB,SAAlB,EAA6B;QAC3BhB,GAAG,CAACoC,SAAJ,GAAgBA,SAAhB;MACD;IACF;;IACD,KAAKE,SAAL,CAAeC,OAAf,CAAwBjB,KAAD,IAAW;MAChC,IAAIA,KAAK,YAAY3B,kBAArB,EAAyC;QACvC,IAAI2B,KAAK,CAACkB,aAAN,EAAJ,EAA2B;UACzBxC,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAMyC,EAAE,GAAGnB,KAAK,CAACoB,WAAN,EAAX;UACA1C,GAAG,CAAC2C,WAAJ,GAAkB3C,GAAG,CAAC2C,WAAJ,GACd,KAAKvC,IAAL,CAAUwC,WAAV,CAAsBC,WAAtB,CAAkCJ,EAAlC,EAAsCzC,GAAG,CAAC2C,WAA1C,CADc,GAEdF,EAFJ;QAGD,CAND,MAMO,IAAInB,KAAK,CAACwB,QAAN,EAAJ,EAAsB;UAC3B9C,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAM+C,MAAM,GAAGzB,KAAK,CAACoB,WAAN,EAAf;UACA1C,GAAG,CAAC+C,MAAJ,GAAaA,MAAb;QACD,CAJM,MAIA,IAAIzB,KAAK,CAAC0B,YAAN,EAAJ,EAA0B;UAC/BhD,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAMiD,EAAE,GAAG3B,KAAK,CAACoB,WAAN,EAAX;UACA1C,GAAG,CAACkD,UAAJ,GAAiBlD,GAAG,CAACkD,UAAJ,GACb,KAAK9C,IAAL,CAAU+C,UAAV,CAAqBN,WAArB,CAAiCI,EAAjC,EAAqCjD,GAAG,CAACkD,UAAzC,CADa,GAEbD,EAFJ;QAGD,CANM,MAMA,IAAI3B,KAAK,CAAC8B,aAAN,EAAJ,EAA2B;UAChCpD,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAMqD,MAAM,GAAG/B,KAAK,CAACoB,WAAN,EAAf;UACA1C,GAAG,CAACsD,WAAJ,GAAkBtD,GAAG,CAACsD,WAAJ,GACd,KAAKlD,IAAL,CAAUmD,WAAV,CAAsBV,WAAtB,CAAkCQ,MAAlC,EAA0CrD,GAAG,CAACsD,WAA9C,CADc,GAEdD,MAFJ;QAGD,CANM,MAMA,IAAI/B,KAAK,CAACkC,YAAN,EAAJ,EAA0B;UAC/BxD,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAMqD,MAAM,GAAG/B,KAAK,CAACoB,WAAN,EAAf;UACA1C,GAAG,CAACyD,UAAJ,GAAiBJ,MAAjB;QACD;MACF;IACF,CA9BD;;IA+BA,OAAOrD,GAAP;EACD;;EAED0D,MAAM,CAACC,SAAD,EAA4B;IAChC,MAAM;MAAEC,UAAF;MAAcC,KAAd;MAAqB1D,MAArB;MAA6B2D;IAA7B,IAA2C,KAAK5D,KAAtD;IACA,MAAM;MAAE6D;IAAF,IAAaJ,SAAnB;;IAEA,IACE,KAAKnD,UAAL,KAAoB,IAApB,IACA,KAAKA,UAAL,CAAgBwD,MAAhB,KAA2BL,SAAS,CAACM,KAFvC,EAGE;MACA,MAAMC,QAAQ,GAAG,KAAKvC,WAAL,EAAjB;MACA,MAAML,KAAK,GAAG4C,QAAQ,GAClBC,WAAW,CAACR,SAAS,CAACM,KAAV,CAAgBG,IAAhB,EAAD,EAAyBF,QAAzB,CADO,GAElBP,SAAS,CAACM,KAFd;MAGA,KAAKzD,UAAL,GAAkB;QAAEwD,MAAM,EAAEL,SAAS,CAACM,KAApB;QAA2B3C;MAA3B,CAAlB;IACD;;IACD,MAAM2C,KAAK,GAAG,KAAKzD,UAAL,CAAgBc,KAA9B,CAdgC,CAehC;;IACA,MAAMtB,GAAG,GAAG,EAAE,GAAG2D,SAAL;MAAgBM;IAAhB,CAAZ;IACA,MAAMI,YAAY,GAAGlE,MAAM,KAAKa,SAAX,IAAwB8C,SAAS,KAAK9C,SAA3D;IACA,MAAMsD,OAAO,GACX,KAAKrD,QAAL,KAAkBD,SAAlB,IACA,KAAKD,QAAL,KAAkBC,SADlB,IAEA,KAAKE,SAAL,KAAmBF,SAHrB;IAIA,MAAMuD,UAAU,GAAGF,YAAY,IAAIC,OAAhB,IAA2B,CAAC,CAACT,KAAhD;IACA,MAAMW,EAAE,GAAGZ,UAAU,GAAGvE,MAAM,CAACoF,UAAV,GAAuBpF,MAAM,CAACqF,SAAnD;;IACA,IAAIH,UAAJ,EAAgB;MACd,IAAIV,KAAJ,EAAW;QACT,IAAI,OAAOA,KAAP,KAAiB,SAArB,EAAgC;UAC9BE,MAAM,CAACY,SAAP;QACD,CAFD,MAEO;UACLZ,MAAM,CAACY,SAAP,CAAiBd,KAAjB;QACD;MACF,CAND,MAMO;QACLE,MAAM,CAACa,IAAP;MACD;IACF;;IAED,IAAI,KAAKzE,MAAT,EAAiB;MACf4D,MAAM,CAACc,MAAP,CAAc,KAAK1E,MAAnB;IACD;;IACD,IAAI,KAAKc,QAAT,EAAmB;MACjB8C,MAAM,CAAC9C,QAAP,CAAgB,KAAKA,QAArB,EAA+BuD,EAA/B,EAAmC,IAAnC;IACD,CAFD,MAEO,IAAI,KAAKtD,SAAT,EAAoB;MACzB6C,MAAM,CAAC7C,SAAP,CAAiB,KAAKA,SAAtB,EAAiCsD,EAAjC,EAAqC,IAArC;IACD,CAFM,MAEA,IAAI,KAAKzD,QAAT,EAAmB;MACxBgD,MAAM,CAAChD,QAAP,CAAgB,KAAKA,QAArB,EAA+ByD,EAA/B,EAAmC,IAAnC;IACD;;IAED,KAAKM,UAAL,CAAgB9E,GAAhB;;IAEA,IAAIuE,UAAJ,EAAgB;MACdR,MAAM,CAACgB,OAAP;IACD;EACF;;AAjNH;;AAsNA,MAAMZ,WAAW,GAAG,CAClBF,KADkB,WAkBf;EAAA,IAhBH;IACErC,KADF;IAEEC,WAFF;IAGEkB,MAHF;IAIEX,SAJF;IAKEN,SALF;IAMEa,WANF;IAOEW,WAPF;IAQEG,UARF;IASEP,UATF;IAUEf,OAVF;IAWEF,SAXF;IAYED,UAZF;IAaEE,WAbF;IAcEH;EAdF,CAgBG;;EACH,IAAII,OAAO,KAAKnB,SAAhB,EAA2B;IACzBiD,KAAK,CAACe,SAAN,CAAgBf,KAAK,CAACgB,SAAN,KAAoB9C,OAApC;EACD;;EACD,IAAIP,KAAK,KAAKZ,SAAd,EAAyB;IACvB,MAAMkE,cAAc,GAAGjB,KAAK,CAACgB,SAAN,EAAvB;IACAhB,KAAK,CAACkB,SAAN,CAAgB,IAAhB;IACAlB,KAAK,CAACmB,QAAN,CAAexD,KAAf;IACAqC,KAAK,CAACe,SAAN,CAAgBE,cAAc,GAAGjB,KAAK,CAACgB,SAAN,EAAjC;EACD;;EACD,IAAIpD,WAAW,KAAKb,SAApB,EAA+B;IAC7BiD,KAAK,CAACoB,cAAN,CAAqBxD,WAArB;EACD;;EACD,IAAIkB,MAAM,KAAK/B,SAAf,EAA0B;IACxBiD,KAAK,CAACkB,SAAN,CAAgBpC,MAAhB;EACD;;EACD,IAAIX,SAAS,KAAKpB,SAAlB,EAA6B;IAC3BiD,KAAK,CAACqB,YAAN,CAAmBlD,SAAnB;EACD;;EACD,IAAIN,SAAS,KAAKd,SAAlB,EAA6B;IAC3BiD,KAAK,CAACsB,YAAN,CAAmBzD,SAAnB;EACD;;EACD,IAAIa,WAAW,KAAK3B,SAApB,EAA+B;IAC7BiD,KAAK,CAACuB,cAAN,CAAqB7C,WAArB;EACD;;EACD,IAAIW,WAAW,KAAKtC,SAApB,EAA+B;IAC7BiD,KAAK,CAACwB,cAAN,CAAqBnC,WAArB;EACD;;EACD,IAAIG,UAAU,KAAKzC,SAAnB,EAA8B;IAC5BiD,KAAK,CAACyB,aAAN,CAAoBjC,UAApB;EACD;;EACD,IAAIP,UAAU,KAAKlC,SAAnB,EAA8B;IAC5BiD,KAAK,CAAC0B,aAAN,CAAoBzC,UAApB;EACD;;EACD,IAAIjB,SAAS,KAAKjB,SAAlB,EAA6B;IAC3BiD,KAAK,CAAC2B,YAAN,CAAmB3D,SAAnB;EACD;;EACD,IAAID,UAAU,KAAKhB,SAAnB,EAA8B;IAC5BiD,KAAK,CAAC4B,aAAN,CAAoB7D,UAApB;EACD;;EACD,IAAIE,WAAW,KAAKlB,SAApB,EAA+B;IAC7BiD,KAAK,CAAC6B,cAAN,CAAqB5D,WAArB;EACD;;EACD,IAAIH,KAAK,KAAKf,SAAd,EAAyB;IACvBiD,KAAK,CAAC8B,QAAN,CAAehE,KAAf;EACD;;EACD,OAAOkC,KAAP;AACD,CAjED"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./Enum\";\nexport * from \"./Path\";\nexport * from \"./Fitting\";\nexport * from \"./
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./Enum\";\nexport * from \"./Path\";\nexport * from \"./Fitting\";\nexport * from \"./Rect\";\nexport * from \"./Radius\";\nexport * from \"./Circle\";\nexport * from \"./Gradient\";\nexport * from \"./Transform\";\n"],"mappings":"AAAA,cAAc,QAAd;AACA,cAAc,QAAd;AACA,cAAc,WAAd;AACA,cAAc,QAAd;AACA,cAAc,UAAd;AACA,cAAc,UAAd;AACA,cAAc,YAAd;AACA,cAAc,aAAd"}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import { BlurStyle, ClipOp, isRRect } from "../../../skia/types";
|
2
2
|
import { DeclarationType, NodeType } from "../../types";
|
3
3
|
import { JsiDeclarationNode } from "../Node";
|
4
|
-
import { processColor } from "../datatypes";
|
5
4
|
import { JsiRenderNode } from "../RenderNode";
|
6
5
|
|
7
6
|
const inflate = function (Skia, box, dx, dy) {
|
@@ -34,12 +33,12 @@ export class BoxNode extends JsiRenderNode {
|
|
34
33
|
renderNode(_ref) {
|
35
34
|
let {
|
36
35
|
canvas,
|
37
|
-
paint
|
38
|
-
opacity
|
36
|
+
paint
|
39
37
|
} = _ref;
|
40
38
|
const {
|
41
39
|
box: defaultBox
|
42
40
|
} = this.props;
|
41
|
+
const opacity = paint.getAlphaf();
|
43
42
|
const box = isRRect(defaultBox) ? defaultBox : this.Skia.RRectXY(defaultBox, 0, 0);
|
44
43
|
|
45
44
|
const shadows = this._children.map(node => {
|
@@ -59,7 +58,8 @@ export class BoxNode extends JsiRenderNode {
|
|
59
58
|
dy = 0
|
60
59
|
} = shadow;
|
61
60
|
const lPaint = this.Skia.Paint();
|
62
|
-
lPaint.setColor(
|
61
|
+
lPaint.setColor(this.Skia.Color(color));
|
62
|
+
lPaint.setAlphaf(paint.getAlphaf() * opacity);
|
63
63
|
lPaint.setMaskFilter(this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true));
|
64
64
|
canvas.drawRRect(inflate(this.Skia, box, spread, spread, dx, dy), lPaint);
|
65
65
|
});
|
@@ -76,7 +76,8 @@ export class BoxNode extends JsiRenderNode {
|
|
76
76
|
canvas.save();
|
77
77
|
canvas.clipRRect(box, ClipOp.Intersect, false);
|
78
78
|
const lPaint = this.Skia.Paint();
|
79
|
-
lPaint.setColor(
|
79
|
+
lPaint.setColor(this.Skia.Color(color));
|
80
|
+
lPaint.setAlphaf(paint.getAlphaf() * opacity);
|
80
81
|
lPaint.setMaskFilter(this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true));
|
81
82
|
const inner = deflate(this.Skia, box, spread, spread, dx, dy);
|
82
83
|
const outer = inflate(this.Skia, box, delta.x, delta.y);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["BlurStyle","ClipOp","isRRect","DeclarationType","NodeType","JsiDeclarationNode","
|
1
|
+
{"version":3,"names":["BlurStyle","ClipOp","isRRect","DeclarationType","NodeType","JsiDeclarationNode","JsiRenderNode","inflate","Skia","box","dx","dy","tx","ty","RRectXY","XYWHRect","rect","x","y","width","height","rx","ry","deflate","BoxShadowNode","constructor","ctx","props","Unknown","Box","materialize","BoxNode","renderNode","canvas","paint","defaultBox","opacity","getAlphaf","shadows","_children","map","node","filter","n","shadow","inner","color","blur","spread","lPaint","Paint","setColor","Color","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","Normal","drawRRect","delta","Point","Math","abs","save","clipRRect","Intersect","outer","drawDRRect","restore"],"sources":["Box.ts"],"sourcesContent":["import type { SkRRect, Skia } from \"../../../skia/types\";\nimport { BlurStyle, ClipOp, isRRect } from \"../../../skia/types\";\nimport type { DrawingContext } from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport type { BoxShadowProps, BoxProps } from \"../../types/Drawings\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport { JsiRenderNode } from \"../RenderNode\";\n\nconst inflate = (\n Skia: Skia,\n box: SkRRect,\n dx: number,\n dy: number,\n tx = 0,\n ty = 0\n) =>\n Skia.RRectXY(\n Skia.XYWHRect(\n box.rect.x - dx + tx,\n box.rect.y - dy + ty,\n box.rect.width + 2 * dx,\n box.rect.height + 2 * dy\n ),\n box.rx + dx,\n box.ry + dy\n );\n\nconst deflate = (\n Skia: Skia,\n box: SkRRect,\n dx: number,\n dy: number,\n tx = 0,\n ty = 0\n) => inflate(Skia, box, -dx, -dy, tx, ty);\n\nexport class BoxShadowNode extends JsiDeclarationNode<\n BoxShadowProps,\n BoxShadowProps\n> {\n constructor(ctx: NodeContext, props: BoxShadowProps) {\n super(ctx, DeclarationType.Unknown, NodeType.Box, props);\n }\n\n materialize() {\n return this.props;\n }\n}\n\nexport class BoxNode extends JsiRenderNode<BoxProps> {\n constructor(ctx: NodeContext, props: BoxProps) {\n super(ctx, NodeType.Box, props);\n }\n\n renderNode({ canvas, paint }: DrawingContext) {\n const { box: defaultBox } = this.props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox)\n ? defaultBox\n : this.Skia.RRectXY(defaultBox, 0, 0);\n const shadows = this._children\n .map((node) => {\n if (node instanceof BoxShadowNode) {\n return node.materialize();\n }\n return null;\n })\n .filter((n): n is BoxShadowProps => n !== null);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = this.Skia.Paint();\n lPaint.setColor(this.Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(\n inflate(this.Skia, box, spread, spread, dx, dy),\n lPaint\n );\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = this.Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = this.Skia.Paint();\n lPaint.setColor(this.Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(this.Skia, box, spread, spread, dx, dy);\n const outer = inflate(this.Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n }\n}\n"],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { BlendMode } from "../../../skia/types";
|
2
2
|
import { NodeType } from "../../types";
|
3
|
-
import {
|
3
|
+
import { enumKey } from "../datatypes";
|
4
4
|
import { JsiDrawingNode } from "../DrawingNode";
|
5
5
|
export class PatchNode extends JsiDrawingNode {
|
6
6
|
constructor(ctx, props) {
|
@@ -23,15 +23,14 @@ export class PatchNode extends JsiDrawingNode {
|
|
23
23
|
return {
|
24
24
|
mode,
|
25
25
|
points: [patch[0].pos, patch[0].c2, patch[1].c1, patch[1].pos, patch[1].c2, patch[2].c1, patch[2].pos, patch[2].c2, patch[3].c1, patch[3].pos, patch[3].c2, patch[0].c1],
|
26
|
-
colors: colors ? colors.map(c =>
|
26
|
+
colors: colors ? colors.map(c => this.Skia.Color(c)) : undefined
|
27
27
|
};
|
28
28
|
}
|
29
29
|
|
30
30
|
draw(_ref) {
|
31
31
|
let {
|
32
32
|
canvas,
|
33
|
-
paint
|
34
|
-
opacity
|
33
|
+
paint
|
35
34
|
} = _ref;
|
36
35
|
|
37
36
|
if (!this.derived) {
|
@@ -46,10 +45,7 @@ export class PatchNode extends JsiDrawingNode {
|
|
46
45
|
points,
|
47
46
|
mode
|
48
47
|
} = this.derived;
|
49
|
-
canvas.drawPatch(points,
|
50
|
-
c[ALPHA] = c[ALPHA] * opacity;
|
51
|
-
return c;
|
52
|
-
}), texture, mode, paint);
|
48
|
+
canvas.drawPatch(points, colors, texture, mode, paint);
|
53
49
|
}
|
54
50
|
|
55
51
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["BlendMode","NodeType","
|
1
|
+
{"version":3,"names":["BlendMode","NodeType","enumKey","JsiDrawingNode","PatchNode","constructor","ctx","props","Patch","deriveProps","colors","blendMode","patch","defaultBlendMode","DstOver","SrcOver","mode","points","pos","c2","c1","map","c","Skia","Color","undefined","draw","canvas","paint","derived","Error","texture","drawPatch"],"sources":["PatchNode.ts"],"sourcesContent":["import type { SkColor, SkPoint } from \"../../../skia/types\";\nimport { BlendMode } from \"../../../skia/types\";\nimport type { DrawingContext, PatchProps } from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { enumKey } from \"../datatypes\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class PatchNode extends JsiDrawingNode<\n PatchProps,\n { points: SkPoint[]; colors: SkColor[] | undefined; mode: BlendMode }\n> {\n constructor(ctx: NodeContext, props: PatchProps) {\n super(ctx, NodeType.Patch, props);\n }\n\n deriveProps() {\n const { colors, blendMode, patch } = this.props;\n const defaultBlendMode = colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const mode = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n // Patch requires a path with the following constraints:\n // M tl\n // C c1 c2 br\n // C c1 c2 bl\n // C c1 c2 tl (the redundant point in the last command is removed)\n return {\n mode,\n points: [\n patch[0].pos,\n patch[0].c2,\n patch[1].c1,\n patch[1].pos,\n patch[1].c2,\n patch[2].c1,\n patch[2].pos,\n patch[2].c2,\n patch[3].c1,\n patch[3].pos,\n patch[3].c2,\n patch[0].c1,\n ],\n colors: colors ? colors.map((c) => this.Skia.Color(c)) : undefined,\n };\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"PatchNode: derived props not set\");\n }\n const { texture } = this.props;\n const { colors, points, mode } = this.derived;\n canvas.drawPatch(points, colors, texture, mode, paint);\n }\n}\n"],"mappings":"AACA,SAASA,SAAT,QAA0B,qBAA1B;AAEA,SAASC,QAAT,QAAyB,aAAzB;AACA,SAASC,OAAT,QAAwB,cAAxB;AACA,SAASC,cAAT,QAA+B,gBAA/B;AAGA,OAAO,MAAMC,SAAN,SAAwBD,cAAxB,CAGL;EACAE,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAsC;IAC/C,MAAMD,GAAN,EAAWL,QAAQ,CAACO,KAApB,EAA2BD,KAA3B;EACD;;EAEDE,WAAW,GAAG;IACZ,MAAM;MAAEC,MAAF;MAAUC,SAAV;MAAqBC;IAArB,IAA+B,KAAKL,KAA1C;IACA,MAAMM,gBAAgB,GAAGH,MAAM,GAAGV,SAAS,CAACc,OAAb,GAAuBd,SAAS,CAACe,OAAhE;IACA,MAAMC,IAAI,GAAGL,SAAS,GAAGX,SAAS,CAACE,OAAO,CAACS,SAAD,CAAR,CAAZ,GAAmCE,gBAAzD,CAHY,CAIZ;IACA;IACA;IACA;IACA;;IACA,OAAO;MACLG,IADK;MAELC,MAAM,EAAE,CACNL,KAAK,CAAC,CAAD,CAAL,CAASM,GADH,EAENN,KAAK,CAAC,CAAD,CAAL,CAASO,EAFH,EAGNP,KAAK,CAAC,CAAD,CAAL,CAASQ,EAHH,EAINR,KAAK,CAAC,CAAD,CAAL,CAASM,GAJH,EAKNN,KAAK,CAAC,CAAD,CAAL,CAASO,EALH,EAMNP,KAAK,CAAC,CAAD,CAAL,CAASQ,EANH,EAONR,KAAK,CAAC,CAAD,CAAL,CAASM,GAPH,EAQNN,KAAK,CAAC,CAAD,CAAL,CAASO,EARH,EASNP,KAAK,CAAC,CAAD,CAAL,CAASQ,EATH,EAUNR,KAAK,CAAC,CAAD,CAAL,CAASM,GAVH,EAWNN,KAAK,CAAC,CAAD,CAAL,CAASO,EAXH,EAYNP,KAAK,CAAC,CAAD,CAAL,CAASQ,EAZH,CAFH;MAgBLV,MAAM,EAAEA,MAAM,GAAGA,MAAM,CAACW,GAAP,CAAYC,CAAD,IAAO,KAAKC,IAAL,CAAUC,KAAV,CAAgBF,CAAhB,CAAlB,CAAH,GAA2CG;IAhBpD,CAAP;EAkBD;;EAEDC,IAAI,OAAoC;IAAA,IAAnC;MAAEC,MAAF;MAAUC;IAAV,CAAmC;;IACtC,IAAI,CAAC,KAAKC,OAAV,EAAmB;MACjB,MAAM,IAAIC,KAAJ,CAAU,kCAAV,CAAN;IACD;;IACD,MAAM;MAAEC;IAAF,IAAc,KAAKxB,KAAzB;IACA,MAAM;MAAEG,MAAF;MAAUO,MAAV;MAAkBD;IAAlB,IAA2B,KAAKa,OAAtC;IACAF,MAAM,CAACK,SAAP,CAAiBf,MAAjB,EAAyBP,MAAzB,EAAiCqB,OAAjC,EAA0Cf,IAA1C,EAAgDY,KAAhD;EACD;;AAzCD"}
|