@shopify/react-native-skia 2.11.0 → 2.11.2-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +0 -10
- package/android/src/main/java/com/shopify/reactnative/skia/ViewScreenshotService.java +9 -12
- package/apple/RNSkApplePlatformContext.h +0 -3
- package/apple/RNSkApplePlatformContext.mm +0 -11
- package/cpp/api/JsiSkApi.h +0 -6
- package/cpp/api/JsiSkFont.h +5 -10
- package/cpp/api/JsiSkMatrix.h +4 -2
- package/cpp/api/recorder/Convertor.h +5 -2
- package/cpp/api/recorder/Drawings.h +13 -3
- package/cpp/api/recorder/ImageFilters.h +15 -1
- package/cpp/api/recorder/Paint.h +8 -1
- package/cpp/dawn/include/dawn/dawn_proc.h +53 -0
- package/cpp/dawn/include/dawn/dawn_proc_table.h +330 -0
- package/cpp/dawn/include/dawn/dawn_thread_dispatch_proc.h +47 -0
- package/cpp/dawn/include/dawn/dawn_version.h +41 -0
- package/cpp/dawn/include/dawn/native/D3D11Backend.h +65 -0
- package/cpp/dawn/include/dawn/native/D3D12Backend.h +103 -0
- package/cpp/dawn/include/dawn/native/D3DBackend.h +56 -0
- package/cpp/dawn/include/dawn/native/DawnNative.h +368 -0
- package/cpp/dawn/include/dawn/native/MetalBackend.h +56 -0
- package/cpp/dawn/include/dawn/native/NullBackend.h +39 -0
- package/cpp/dawn/include/dawn/native/OpenGLBackend.h +89 -0
- package/cpp/dawn/include/dawn/native/VulkanBackend.h +183 -0
- package/cpp/dawn/include/dawn/native/WebGPUBackend.h +49 -0
- package/cpp/dawn/include/dawn/native/dawn_native_export.h +49 -0
- package/cpp/dawn/include/dawn/platform/DawnPlatform.h +207 -0
- package/cpp/dawn/include/dawn/platform/dawn_platform_export.h +49 -0
- package/cpp/dawn/include/dawn/replay/Replay.h +99 -0
- package/cpp/dawn/include/dawn/replay/dawn_replay_export.h +49 -0
- package/cpp/dawn/include/dawn/webgpu_cpp_print.h +2856 -0
- package/cpp/dawn/include/tint/tint.h +91 -0
- package/cpp/dawn/include/webgpu/webgpu.h +5029 -0
- package/cpp/dawn/include/webgpu/webgpu_cpp.h +10353 -0
- package/cpp/dawn/include/webgpu/webgpu_cpp_chained_struct.h +57 -0
- package/cpp/dawn/include/webgpu/webgpu_enum_class_bitmasks.h +162 -0
- package/cpp/dawn/include/webgpu/webgpu_glfw.h +88 -0
- package/cpp/jsi/NativeObject.h +50 -32
- package/cpp/jsi/RuntimeAwareCache.cpp +1 -0
- package/cpp/jsi/RuntimeAwareCache.h +29 -0
- package/cpp/rnskia/RNSkManager.cpp +5 -0
- package/cpp/rnskia/RNSkPlatformContext.h +0 -3
- package/cpp/skia/src/gpu/graphite/ContextOptionsPriv.h +45 -0
- package/cpp/skia/src/gpu/graphite/ResourceTypes.h +360 -0
- package/cpp/skia/src/gpu/graphite/TextureProxyView.h +105 -0
- package/lib/commonjs/dom/nodes/datatypes/Rect.js +5 -1
- package/lib/commonjs/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/commonjs/external/reanimated/useVideo.js +8 -2
- package/lib/commonjs/external/reanimated/useVideo.js.map +1 -1
- package/lib/commonjs/renderer/components/Mask.js +3 -9
- package/lib/commonjs/renderer/components/Mask.js.map +1 -1
- package/lib/commonjs/skia/types/JsiInstance.d.ts +1 -0
- package/lib/commonjs/skia/types/JsiInstance.js.map +1 -1
- package/lib/commonjs/skia/types/Matrix4.js +7 -2
- package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
- package/lib/commonjs/skia/types/Skia.d.ts +1 -6
- package/lib/commonjs/skia/types/Skia.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +0 -3
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js +15 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Visitor.js +6 -1
- package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js +10 -8
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js +15 -1
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.web.js +19 -14
- package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Rect.js +5 -1
- package/lib/module/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/module/external/reanimated/useVideo.js +8 -2
- package/lib/module/external/reanimated/useVideo.js.map +1 -1
- package/lib/module/renderer/components/Mask.js +3 -9
- package/lib/module/renderer/components/Mask.js.map +1 -1
- package/lib/module/skia/types/JsiInstance.d.ts +1 -0
- package/lib/module/skia/types/JsiInstance.js.map +1 -1
- package/lib/module/skia/types/Matrix4.js +7 -2
- package/lib/module/skia/types/Matrix4.js.map +1 -1
- package/lib/module/skia/types/Skia.d.ts +1 -6
- package/lib/module/skia/types/Skia.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +0 -3
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/module/sksg/Recorder/DrawingContext.js +15 -0
- package/lib/module/sksg/Recorder/DrawingContext.js.map +1 -1
- package/lib/module/sksg/Recorder/Player.js +1 -1
- package/lib/module/sksg/Recorder/Player.js.map +1 -1
- package/lib/module/sksg/Recorder/Visitor.js +6 -1
- package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Drawing.js +10 -8
- package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/ImageFilters.js +15 -1
- package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/module/views/SkiaPictureView.web.js +19 -14
- package/lib/module/views/SkiaPictureView.web.js.map +1 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +0 -1
- package/lib/typescript/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/typescript/lib/module/skia/Skia.web.d.ts +0 -1
- package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +0 -1
- package/lib/typescript/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/typescript/src/skia/types/JsiInstance.d.ts +1 -0
- package/lib/typescript/src/skia/types/Skia.d.ts +1 -6
- package/lib/typescript/src/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/libs/.graphite +1 -0
- package/package.json +6 -6
- package/src/dom/nodes/datatypes/Rect.ts +6 -1
- package/src/external/reanimated/useVideo.ts +7 -2
- package/src/renderer/components/Mask.tsx +10 -3
- package/src/skia/types/JsiInstance.ts +2 -0
- package/src/skia/types/Matrix4.ts +6 -2
- package/src/skia/types/Skia.ts +1 -7
- package/src/skia/web/JsiSkia.ts +0 -4
- package/src/sksg/Recorder/DrawingContext.ts +15 -0
- package/src/sksg/Recorder/Player.ts +1 -1
- package/src/sksg/Recorder/Visitor.ts +9 -6
- package/src/sksg/Recorder/commands/Drawing.ts +10 -8
- package/src/sksg/Recorder/commands/ImageFilters.ts +20 -1
- package/src/sksg/Recorder/commands/Shaders.ts +1 -1
- package/src/views/SkiaPictureView.web.tsx +17 -14
- package/cpp/api/JsiSkiaContext.h +0 -94
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_JsiSkSurface","_Platform","_SkiaViewNativeId","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","dp2Pixel","pd","rect","undefined","x","y","width","height","WebGLRenderer","constructor","canvas","contextHandle","CanvasKit","GetWebGLContext","Error","grContext","MakeWebGLContext","deleteContext","ctx","getContext","drawingBufferColorSpace","onResize","makeImageSnapshot","picture","surface","getCanvas","clear","TRANSPARENT","draw","ref","flush","_this$surface","window","devicePixelRatio","clientWidth","clientHeight","delete","MakeOnScreenGLSurface","ColorSpace","SRGB","JsiSkSurface","Float32Array","of","save","scale","drawPicture","restore","dispose","_this$surface2","_this$canvas","releaseResourcesAndAbandonContext","getExtension","loseContext","StaticWebGLRenderer","cachedImage","renderPictureToSurface","tempCanvas","OffscreenCanvas","webglSurface","skiaCanvas","error","cleanupRenderResult","result","_result$surface","_result$tempCanvas$ge","renderResult","ctx2d","drawImage","console","_this$cachedImage","makeLayoutEvent","timeStamp","Date","now","nativeEvent","layout","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isDefaultPrevented","isPropagationStopped","persist","preventDefault","stopPropagation","isTrusted","type","SkiaPictureView","props","onLayout","canvasRef","useRef","rendererRef","pictureRef","redrawPendingRef","frameRef","onLayoutRef","useLayoutEffect","current","flushRedraw","useCallback","redraw","requestAnimationFrame","getSize","_canvasRef$current","_canvasRef$current2","setPicture","newPicture","measure","callback","getBoundingClientRect","parentElement","offsetParent","parentRect","left","top","pageX","scrollX","pageY","scrollY","measureInWindow","isStatic","__destroyWebGLContextAfterRender","renderer","lastWidth","lastHeight","lastPixelDensity","resizeIfNeeded","pixelDensity","observer","ResizeObserver","entries","layoutHandler","contentRect","setTimeout","observe","media","onPixelDensityChange","watchPixelDensity","_media","removeEventListener","matchMedia","query","addEventListener","_media2","disconnect","useEffect","cancelAnimationFrame","useImperativeHandle","_props$nativeID","nativeID","SkiaViewNativeId","api","global","SkiaViewApi","registerView","unregisterView","debug","_debug","_ref","_onLayout","_picture","_isStatic","viewProps","createElement","Platform","View","style","display","exports"],"sources":["SkiaPictureView.web.tsx"],"sourcesContent":["/* global HTMLCanvasElement, ResizeObserver, MediaQueryList */\nimport React, {\n useRef,\n useEffect,\n useCallback,\n useImperativeHandle,\n useLayoutEffect,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\nimport type { GrDirectContext, WebGLContextHandle } from \"canvaskit-wasm\";\n\nimport type { SkRect, SkPicture, SkImage } from \"../skia/types\";\nimport { JsiSkSurface } from \"../skia/web/JsiSkSurface\";\nimport { Platform } from \"../Platform\";\nimport type { ISkiaViewApiWeb } from \"../specs/NativeSkiaModule.web\";\n\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst dp2Pixel = (pd: number, rect?: SkRect) => {\n if (!rect) {\n return undefined;\n }\n return {\n x: rect.x * pd,\n y: rect.y * pd,\n width: rect.width * pd,\n height: rect.height * pd,\n };\n};\n\ninterface Renderer {\n onResize(): void;\n draw(picture: SkPicture): void;\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null;\n dispose(): void;\n}\n\nclass WebGLRenderer implements Renderer {\n private surface: JsiSkSurface | null = null;\n private grContext: GrDirectContext | null = null;\n private contextHandle: WebGLContextHandle = 0;\n private pd = 1;\n\n constructor(private canvas: HTMLCanvasElement) {\n this.contextHandle = CanvasKit.GetWebGLContext(canvas);\n if (!this.contextHandle) {\n throw new Error(\"Could not create a WebGL context\");\n }\n this.grContext = CanvasKit.MakeWebGLContext(this.contextHandle);\n if (!this.grContext) {\n CanvasKit.deleteContext(this.contextHandle);\n this.contextHandle = 0;\n throw new Error(\"Could not create a graphics context\");\n }\n const ctx = canvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n this.onResize();\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.surface) {\n return null;\n }\n const canvas = this.surface.getCanvas();\n canvas!.clear(CanvasKit.TRANSPARENT);\n this.draw(picture);\n this.surface.ref.flush();\n return this.surface.makeImageSnapshot(dp2Pixel(this.pd, rect));\n }\n\n onResize() {\n const { canvas } = this;\n if (!this.grContext) {\n return;\n }\n this.pd = window.devicePixelRatio;\n canvas.width = canvas.clientWidth * this.pd;\n canvas.height = canvas.clientHeight * this.pd;\n this.surface?.ref.delete();\n this.surface = null;\n if (canvas.width === 0 || canvas.height === 0) {\n // The canvas hasn't been laid out yet (or is hidden). The view's\n // ResizeObserver calls us again as soon as it has a size.\n return;\n }\n // Reuse the existing WebGL context and GrDirectContext: only the surface\n // needs to be recreated when the canvas is resized.\n const surface = CanvasKit.MakeOnScreenGLSurface(\n this.grContext,\n canvas.width,\n canvas.height,\n CanvasKit.ColorSpace.SRGB\n );\n if (!surface) {\n throw new Error(\"Could not create surface\");\n }\n this.surface = new JsiSkSurface(CanvasKit, surface);\n }\n\n draw(picture: SkPicture) {\n if (this.surface) {\n const canvas = this.surface.getCanvas();\n canvas.clear(Float32Array.of(0, 0, 0, 0));\n canvas.save();\n canvas.scale(this.pd, this.pd);\n canvas.drawPicture(picture);\n canvas.restore();\n this.surface.ref.flush();\n }\n }\n\n dispose(): void {\n this.surface?.ref.delete();\n this.surface = null;\n if (this.grContext) {\n this.grContext.releaseResourcesAndAbandonContext();\n this.grContext.delete();\n this.grContext = null;\n }\n this.canvas\n ?.getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n if (this.contextHandle) {\n // Unregister the context from CanvasKit's internal registry, otherwise\n // it retains the canvas element (and its detached DOM tree) forever.\n CanvasKit.deleteContext(this.contextHandle);\n // Making the now-deleted handle current clears CanvasKit's\n // current-context globals (GLctx/Module.ctx), which would otherwise\n // keep referencing the context (and the canvas) until another surface\n // becomes current. With a deleted handle this is a no-op that returns\n // null without creating anything.\n CanvasKit.MakeWebGLContext(this.contextHandle);\n this.contextHandle = 0;\n }\n }\n}\n\ninterface TempRenderResult {\n surface: JsiSkSurface;\n tempCanvas: OffscreenCanvas;\n grContext: GrDirectContext;\n contextHandle: WebGLContextHandle;\n}\n\nclass StaticWebGLRenderer implements Renderer {\n private cachedImage: SkImage | null = null;\n private pd = 1;\n\n constructor(private canvas: HTMLCanvasElement) {}\n\n onResize(): void {\n this.cachedImage = null;\n }\n\n private renderPictureToSurface(picture: SkPicture): TempRenderResult | null {\n this.pd = window.devicePixelRatio;\n if (this.canvas.clientWidth === 0 || this.canvas.clientHeight === 0) {\n return null;\n }\n const tempCanvas = new OffscreenCanvas(\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n let surface: JsiSkSurface | null = null;\n let grContext: GrDirectContext | null = null;\n let contextHandle: WebGLContextHandle = 0;\n\n try {\n contextHandle = CanvasKit.GetWebGLContext(tempCanvas);\n if (!contextHandle) {\n throw new Error(\"Could not create a WebGL context\");\n }\n grContext = CanvasKit.MakeWebGLContext(contextHandle);\n if (!grContext) {\n throw new Error(\"Could not create a graphics context\");\n }\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n const webglSurface = CanvasKit.MakeOnScreenGLSurface(\n grContext,\n tempCanvas.width,\n tempCanvas.height,\n CanvasKit.ColorSpace.SRGB\n );\n\n if (!webglSurface) {\n throw new Error(\"Could not create WebGL surface\");\n }\n\n surface = new JsiSkSurface(CanvasKit, webglSurface);\n\n const skiaCanvas = surface.getCanvas();\n skiaCanvas.clear(Float32Array.of(0, 0, 0, 0));\n skiaCanvas.save();\n skiaCanvas.scale(this.pd, this.pd);\n skiaCanvas.drawPicture(picture);\n skiaCanvas.restore();\n surface.ref.flush();\n\n return { surface, tempCanvas, grContext, contextHandle };\n } catch (error) {\n this.cleanupRenderResult({\n surface,\n tempCanvas,\n grContext,\n contextHandle,\n });\n return null;\n }\n }\n\n private cleanupRenderResult(result: {\n surface: JsiSkSurface | null;\n tempCanvas: OffscreenCanvas;\n grContext: GrDirectContext | null;\n contextHandle: WebGLContextHandle;\n }): void {\n result.surface?.ref.delete();\n if (result.grContext) {\n result.grContext.releaseResourcesAndAbandonContext();\n result.grContext.delete();\n }\n result.tempCanvas\n .getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n if (result.contextHandle) {\n // Unregister the context from CanvasKit's internal registry, otherwise\n // it retains the OffscreenCanvas forever.\n CanvasKit.deleteContext(result.contextHandle);\n // Clear CanvasKit's current-context globals (see WebGLRenderer.dispose).\n CanvasKit.MakeWebGLContext(result.contextHandle);\n }\n }\n\n draw(picture: SkPicture): void {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return;\n }\n const { tempCanvas } = renderResult;\n const ctx2d = this.canvas.getContext(\"2d\");\n if (!ctx2d) {\n this.cleanupRenderResult(renderResult);\n throw new Error(\"Could not get 2D context\");\n }\n\n // Set canvas dimensions to match pixel density\n this.canvas.width = this.canvas.clientWidth * this.pd;\n this.canvas.height = this.canvas.clientHeight * this.pd;\n\n // Draw the tempCanvas scaled down to the display size\n ctx2d.drawImage(\n tempCanvas,\n 0,\n 0,\n tempCanvas.width,\n tempCanvas.height,\n 0,\n 0,\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n this.cleanupRenderResult(renderResult);\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.cachedImage) {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return null;\n }\n\n try {\n this.cachedImage = renderResult.surface.makeImageSnapshot(\n dp2Pixel(this.pd, rect)\n );\n } catch (error) {\n console.error(\"Error creating image snapshot:\", error);\n } finally {\n this.cleanupRenderResult(renderResult);\n }\n }\n\n return this.cachedImage;\n }\n\n dispose(): void {\n this.cachedImage?.dispose();\n this.cachedImage = null;\n }\n}\n\n// Mirrors the event react-native-web synthesizes for onLayout.\nconst makeLayoutEvent = (\n x: number,\n y: number,\n width: number,\n height: number\n): LayoutChangeEvent => ({\n timeStamp: Date.now(),\n nativeEvent: { layout: { x, y, width, height } },\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n currentTarget: 0,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n target: 0,\n bubbles: false,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isDefaultPrevented() {\n throw new Error(\"Method not supported on web.\");\n },\n isPropagationStopped() {\n throw new Error(\"Method not supported on web.\");\n },\n persist() {\n throw new Error(\"Method not supported on web.\");\n },\n preventDefault() {\n throw new Error(\"Method not supported on web.\");\n },\n stopPropagation() {\n throw new Error(\"Method not supported on web.\");\n },\n isTrusted: true,\n type: \"\",\n});\n\nexport interface SkiaPictureViewHandle {\n setPicture(picture: SkPicture): void;\n getSize(): { width: number; height: number };\n redraw(): void;\n makeImageSnapshot(rect?: SkRect): SkImage | null;\n measure(\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ): void;\n measureInWindow(\n callback: (x: number, y: number, width: number, height: number) => void\n ): void;\n}\n\nexport interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n ref?: React.Ref<SkiaPictureViewHandle>;\n}\n\nexport const SkiaPictureView = (props: SkiaPictureViewProps) => {\n const { ref, picture, onLayout } = props;\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const rendererRef = useRef<Renderer | null>(null);\n const pictureRef = useRef<SkPicture | null>(null);\n // The rendering lifecycle deliberately does not depend on layout events:\n // - The renderer is created synchronously on mount (the canvas element is\n // guaranteed to exist in useLayoutEffect; a zero size at that point is\n // fine, the surface is created once the canvas is measurable).\n // - Redraw requests coalesce into a single animation frame. A picture\n // dispatched before the canvas has a size stays in pictureRef (drawing\n // while unmeasured is a no-op) and is painted by the resize path below\n // once the canvas becomes measurable, so it is never lost.\n // - A ResizeObserver on the canvas itself recreates the surface and repaints\n // synchronously (its callbacks run after layout, before paint), and is\n // also the source of the user-facing onLayout event.\n const redrawPendingRef = useRef(false);\n const frameRef = useRef(0);\n const onLayoutRef = useRef(onLayout);\n useLayoutEffect(() => {\n onLayoutRef.current = onLayout;\n }, [onLayout]);\n\n const flushRedraw = useCallback(() => {\n frameRef.current = 0;\n if (redrawPendingRef.current && rendererRef.current && pictureRef.current) {\n redrawPendingRef.current = false;\n rendererRef.current.draw(pictureRef.current);\n }\n // If the renderer or picture isn't available yet, the request stays\n // pending and is flushed by whichever arrives last.\n }, []);\n\n const redraw = useCallback(() => {\n redrawPendingRef.current = true;\n if (frameRef.current === 0) {\n frameRef.current = requestAnimationFrame(flushRedraw);\n }\n }, [flushRedraw]);\n\n const getSize = useCallback(() => {\n return {\n width: canvasRef.current?.clientWidth || 0,\n height: canvasRef.current?.clientHeight || 0,\n };\n }, []);\n\n const setPicture = useCallback(\n (newPicture: SkPicture) => {\n pictureRef.current = newPicture;\n redraw();\n },\n [redraw]\n );\n\n const makeImageSnapshot = useCallback((rect?: SkRect) => {\n if (rendererRef.current && pictureRef.current) {\n return rendererRef.current.makeImageSnapshot(pictureRef.current, rect);\n }\n return null;\n }, []);\n\n const measure = useCallback(\n (\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ) => {\n if (canvasRef.current) {\n const rect = canvasRef.current.getBoundingClientRect();\n const parentElement = canvasRef.current.offsetParent as HTMLElement;\n const parentRect = parentElement?.getBoundingClientRect() || {\n left: 0,\n top: 0,\n };\n\n // x, y are relative to the parent\n const x = rect.left - parentRect.left;\n const y = rect.top - parentRect.top;\n\n // pageX, pageY are absolute screen coordinates\n const pageX = rect.left + window.scrollX;\n const pageY = rect.top + window.scrollY;\n\n callback(x, y, rect.width, rect.height, pageX, pageY);\n }\n },\n []\n );\n\n const measureInWindow = useCallback(\n (\n callback: (x: number, y: number, width: number, height: number) => void\n ) => {\n if (canvasRef.current) {\n const rect = canvasRef.current.getBoundingClientRect();\n\n // x, y are the absolute coordinates in the window\n const x = rect.left;\n const y = rect.top;\n\n callback(x, y, rect.width, rect.height);\n }\n },\n []\n );\n\n const isStatic = props.__destroyWebGLContextAfterRender === true;\n\n useLayoutEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) {\n return undefined;\n }\n const renderer = isStatic\n ? new StaticWebGLRenderer(canvas)\n : new WebGLRenderer(canvas);\n rendererRef.current = renderer;\n\n const drawPicture = () => {\n if (pictureRef.current) {\n redrawPendingRef.current = false;\n renderer.draw(pictureRef.current);\n }\n };\n\n // The renderer constructor already sized the surface from the current\n // layout, so the observer's initial delivery only repaints if the size\n // changed in between.\n let lastWidth = canvas.clientWidth;\n let lastHeight = canvas.clientHeight;\n let lastPixelDensity = window.devicePixelRatio;\n const resizeIfNeeded = () => {\n const width = canvas.clientWidth;\n const height = canvas.clientHeight;\n const pixelDensity = window.devicePixelRatio;\n if (\n width === lastWidth &&\n height === lastHeight &&\n pixelDensity === lastPixelDensity\n ) {\n return;\n }\n lastWidth = width;\n lastHeight = height;\n lastPixelDensity = pixelDensity;\n renderer.onResize();\n drawPicture();\n };\n\n const observer = new ResizeObserver((entries) => {\n resizeIfNeeded();\n const layoutHandler = onLayoutRef.current;\n if (layoutHandler) {\n const { left, top, width, height } = entries[0].contentRect;\n // setTimeout 0 is taken from react-native-web (UIManager)\n setTimeout(\n () => layoutHandler(makeLayoutEvent(left, top, width, height)),\n 0\n );\n }\n });\n observer.observe(canvas);\n\n // A pixel-density change with no CSS size change (browser zoom, moving\n // the window to another display) doesn't trigger the ResizeObserver:\n // watch it via matchMedia, re-arming the query for each new density.\n // This degrades gracefully where unsupported: without matchMedia or\n // MediaQueryList.addEventListener (older Safari), or where the query\n // never matches because the resolution feature is unknown (Safari < 16),\n // density-only changes simply don't repaint — everything else still does.\n let media: MediaQueryList | null = null;\n const onPixelDensityChange = () => {\n resizeIfNeeded();\n watchPixelDensity();\n };\n const watchPixelDensity = () => {\n media?.removeEventListener(\"change\", onPixelDensityChange);\n media = null;\n if (typeof window.matchMedia === \"function\") {\n const query = window.matchMedia(\n `(resolution: ${window.devicePixelRatio}dppx)`\n );\n if (typeof query.addEventListener === \"function\") {\n media = query;\n media.addEventListener(\"change\", onPixelDensityChange);\n }\n }\n };\n watchPixelDensity();\n\n // Paint any picture that was dispatched before the renderer existed.\n drawPicture();\n\n return () => {\n observer.disconnect();\n media?.removeEventListener(\"change\", onPixelDensityChange);\n rendererRef.current = null;\n renderer.dispose();\n };\n }, [isStatic]);\n\n useEffect(() => {\n return () => {\n cancelAnimationFrame(frameRef.current);\n frameRef.current = 0;\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n get canvasRef() {\n return () => canvasRef.current;\n },\n }),\n [setPicture, getSize, redraw, makeImageSnapshot, measure, measureInWindow]\n );\n\n useEffect(() => {\n const nativeID = props.nativeID ?? `${SkiaViewNativeId.current++}`;\n const api = global.SkiaViewApi as ISkiaViewApiWeb;\n api.registerView(nativeID, {\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n } as SkiaPictureViewHandle);\n return () => {\n api.unregisterView(nativeID);\n };\n }, [\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n props.nativeID,\n ]);\n\n useEffect(() => {\n if (picture) {\n setPicture(picture);\n }\n }, [setPicture, picture]);\n\n const {\n debug: _debug,\n ref: _ref,\n onLayout: _onLayout,\n picture: _picture,\n __destroyWebGLContextAfterRender: _isStatic,\n ...viewProps\n } = props;\n return (\n <Platform.View {...viewProps}>\n <canvas\n ref={canvasRef}\n style={{ display: \"block\", width: \"100%\", height: \"100%\" }}\n />\n </Platform.View>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_JsiSkSurface","_Platform","_SkiaViewNativeId","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","dp2Pixel","pd","rect","undefined","x","y","width","height","WebGLRenderer","constructor","canvas","contextHandle","CanvasKit","GetWebGLContext","Error","grContext","MakeWebGLContext","deleteContext","ctx","getContext","drawingBufferColorSpace","onResize","makeImageSnapshot","picture","surface","getCanvas","clear","TRANSPARENT","draw","ref","flush","_this$surface","window","devicePixelRatio","clientWidth","clientHeight","delete","MakeOnScreenGLSurface","ColorSpace","SRGB","JsiSkSurface","Float32Array","of","save","scale","drawPicture","restore","dispose","_this$surface2","_this$canvas","releaseResourcesAndAbandonContext","getExtension","loseContext","StaticWebGLRenderer","cachedImage","renderPictureToSurface","tempCanvas","OffscreenCanvas","webglSurface","skiaCanvas","error","cleanupRenderResult","result","_result$surface","_result$tempCanvas$ge","renderResult","ctx2d","drawImage","console","_this$cachedImage","makeLayoutEvent","timeStamp","Date","now","nativeEvent","layout","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isDefaultPrevented","isPropagationStopped","persist","preventDefault","stopPropagation","isTrusted","type","SkiaPictureView","props","onLayout","canvasRef","useRef","rendererRef","pictureRef","redrawPendingRef","flushScheduledRef","onLayoutRef","useLayoutEffect","current","flushRedraw","useCallback","redraw","queueMicrotask","getSize","_canvasRef$current","_canvasRef$current2","setPicture","newPicture","measure","callback","getBoundingClientRect","parentElement","offsetParent","parentRect","left","top","pageX","scrollX","pageY","scrollY","measureInWindow","isStatic","__destroyWebGLContextAfterRender","renderer","lastWidth","lastHeight","lastPixelDensity","resizeIfNeeded","pixelDensity","observer","ResizeObserver","entries","layoutHandler","contentRect","setTimeout","observe","media","onPixelDensityChange","watchPixelDensity","_media","removeEventListener","matchMedia","query","addEventListener","_media2","disconnect","useImperativeHandle","useEffect","_props$nativeID","nativeID","SkiaViewNativeId","api","global","SkiaViewApi","registerView","unregisterView","debug","_debug","_ref","_onLayout","_picture","_isStatic","viewProps","createElement","Platform","View","style","display","exports"],"sources":["SkiaPictureView.web.tsx"],"sourcesContent":["/* global HTMLCanvasElement, ResizeObserver, MediaQueryList */\nimport React, {\n useRef,\n useEffect,\n useCallback,\n useImperativeHandle,\n useLayoutEffect,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\nimport type { GrDirectContext, WebGLContextHandle } from \"canvaskit-wasm\";\n\nimport type { SkRect, SkPicture, SkImage } from \"../skia/types\";\nimport { JsiSkSurface } from \"../skia/web/JsiSkSurface\";\nimport { Platform } from \"../Platform\";\nimport type { ISkiaViewApiWeb } from \"../specs/NativeSkiaModule.web\";\n\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst dp2Pixel = (pd: number, rect?: SkRect) => {\n if (!rect) {\n return undefined;\n }\n return {\n x: rect.x * pd,\n y: rect.y * pd,\n width: rect.width * pd,\n height: rect.height * pd,\n };\n};\n\ninterface Renderer {\n onResize(): void;\n draw(picture: SkPicture): void;\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null;\n dispose(): void;\n}\n\nclass WebGLRenderer implements Renderer {\n private surface: JsiSkSurface | null = null;\n private grContext: GrDirectContext | null = null;\n private contextHandle: WebGLContextHandle = 0;\n private pd = 1;\n\n constructor(private canvas: HTMLCanvasElement) {\n this.contextHandle = CanvasKit.GetWebGLContext(canvas);\n if (!this.contextHandle) {\n throw new Error(\"Could not create a WebGL context\");\n }\n this.grContext = CanvasKit.MakeWebGLContext(this.contextHandle);\n if (!this.grContext) {\n CanvasKit.deleteContext(this.contextHandle);\n this.contextHandle = 0;\n throw new Error(\"Could not create a graphics context\");\n }\n const ctx = canvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n this.onResize();\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.surface) {\n return null;\n }\n const canvas = this.surface.getCanvas();\n canvas!.clear(CanvasKit.TRANSPARENT);\n this.draw(picture);\n this.surface.ref.flush();\n return this.surface.makeImageSnapshot(dp2Pixel(this.pd, rect));\n }\n\n onResize() {\n const { canvas } = this;\n if (!this.grContext) {\n return;\n }\n this.pd = window.devicePixelRatio;\n canvas.width = canvas.clientWidth * this.pd;\n canvas.height = canvas.clientHeight * this.pd;\n this.surface?.ref.delete();\n this.surface = null;\n if (canvas.width === 0 || canvas.height === 0) {\n // The canvas hasn't been laid out yet (or is hidden). The view's\n // ResizeObserver calls us again as soon as it has a size.\n return;\n }\n // Reuse the existing WebGL context and GrDirectContext: only the surface\n // needs to be recreated when the canvas is resized.\n const surface = CanvasKit.MakeOnScreenGLSurface(\n this.grContext,\n canvas.width,\n canvas.height,\n CanvasKit.ColorSpace.SRGB\n );\n if (!surface) {\n throw new Error(\"Could not create surface\");\n }\n this.surface = new JsiSkSurface(CanvasKit, surface);\n }\n\n draw(picture: SkPicture) {\n if (this.surface) {\n const canvas = this.surface.getCanvas();\n canvas.clear(Float32Array.of(0, 0, 0, 0));\n canvas.save();\n canvas.scale(this.pd, this.pd);\n canvas.drawPicture(picture);\n canvas.restore();\n this.surface.ref.flush();\n }\n }\n\n dispose(): void {\n this.surface?.ref.delete();\n this.surface = null;\n if (this.grContext) {\n this.grContext.releaseResourcesAndAbandonContext();\n this.grContext.delete();\n this.grContext = null;\n }\n this.canvas\n ?.getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n if (this.contextHandle) {\n // Unregister the context from CanvasKit's internal registry, otherwise\n // it retains the canvas element (and its detached DOM tree) forever.\n CanvasKit.deleteContext(this.contextHandle);\n // Making the now-deleted handle current clears CanvasKit's\n // current-context globals (GLctx/Module.ctx), which would otherwise\n // keep referencing the context (and the canvas) until another surface\n // becomes current. With a deleted handle this is a no-op that returns\n // null without creating anything.\n CanvasKit.MakeWebGLContext(this.contextHandle);\n this.contextHandle = 0;\n }\n }\n}\n\ninterface TempRenderResult {\n surface: JsiSkSurface;\n tempCanvas: OffscreenCanvas;\n grContext: GrDirectContext;\n contextHandle: WebGLContextHandle;\n}\n\nclass StaticWebGLRenderer implements Renderer {\n private cachedImage: SkImage | null = null;\n private pd = 1;\n\n constructor(private canvas: HTMLCanvasElement) {}\n\n onResize(): void {\n this.cachedImage = null;\n }\n\n private renderPictureToSurface(picture: SkPicture): TempRenderResult | null {\n this.pd = window.devicePixelRatio;\n if (this.canvas.clientWidth === 0 || this.canvas.clientHeight === 0) {\n return null;\n }\n const tempCanvas = new OffscreenCanvas(\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n let surface: JsiSkSurface | null = null;\n let grContext: GrDirectContext | null = null;\n let contextHandle: WebGLContextHandle = 0;\n\n try {\n contextHandle = CanvasKit.GetWebGLContext(tempCanvas);\n if (!contextHandle) {\n throw new Error(\"Could not create a WebGL context\");\n }\n grContext = CanvasKit.MakeWebGLContext(contextHandle);\n if (!grContext) {\n throw new Error(\"Could not create a graphics context\");\n }\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n const webglSurface = CanvasKit.MakeOnScreenGLSurface(\n grContext,\n tempCanvas.width,\n tempCanvas.height,\n CanvasKit.ColorSpace.SRGB\n );\n\n if (!webglSurface) {\n throw new Error(\"Could not create WebGL surface\");\n }\n\n surface = new JsiSkSurface(CanvasKit, webglSurface);\n\n const skiaCanvas = surface.getCanvas();\n skiaCanvas.clear(Float32Array.of(0, 0, 0, 0));\n skiaCanvas.save();\n skiaCanvas.scale(this.pd, this.pd);\n skiaCanvas.drawPicture(picture);\n skiaCanvas.restore();\n surface.ref.flush();\n\n return { surface, tempCanvas, grContext, contextHandle };\n } catch (error) {\n this.cleanupRenderResult({\n surface,\n tempCanvas,\n grContext,\n contextHandle,\n });\n return null;\n }\n }\n\n private cleanupRenderResult(result: {\n surface: JsiSkSurface | null;\n tempCanvas: OffscreenCanvas;\n grContext: GrDirectContext | null;\n contextHandle: WebGLContextHandle;\n }): void {\n result.surface?.ref.delete();\n if (result.grContext) {\n result.grContext.releaseResourcesAndAbandonContext();\n result.grContext.delete();\n }\n result.tempCanvas\n .getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n if (result.contextHandle) {\n // Unregister the context from CanvasKit's internal registry, otherwise\n // it retains the OffscreenCanvas forever.\n CanvasKit.deleteContext(result.contextHandle);\n // Clear CanvasKit's current-context globals (see WebGLRenderer.dispose).\n CanvasKit.MakeWebGLContext(result.contextHandle);\n }\n }\n\n draw(picture: SkPicture): void {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return;\n }\n const { tempCanvas } = renderResult;\n const ctx2d = this.canvas.getContext(\"2d\");\n if (!ctx2d) {\n this.cleanupRenderResult(renderResult);\n throw new Error(\"Could not get 2D context\");\n }\n\n // Set canvas dimensions to match pixel density\n this.canvas.width = this.canvas.clientWidth * this.pd;\n this.canvas.height = this.canvas.clientHeight * this.pd;\n\n // Draw the tempCanvas scaled down to the display size\n ctx2d.drawImage(\n tempCanvas,\n 0,\n 0,\n tempCanvas.width,\n tempCanvas.height,\n 0,\n 0,\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n this.cleanupRenderResult(renderResult);\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.cachedImage) {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return null;\n }\n\n try {\n this.cachedImage = renderResult.surface.makeImageSnapshot(\n dp2Pixel(this.pd, rect)\n );\n } catch (error) {\n console.error(\"Error creating image snapshot:\", error);\n } finally {\n this.cleanupRenderResult(renderResult);\n }\n }\n\n return this.cachedImage;\n }\n\n dispose(): void {\n this.cachedImage?.dispose();\n this.cachedImage = null;\n }\n}\n\n// Mirrors the event react-native-web synthesizes for onLayout.\nconst makeLayoutEvent = (\n x: number,\n y: number,\n width: number,\n height: number\n): LayoutChangeEvent => ({\n timeStamp: Date.now(),\n nativeEvent: { layout: { x, y, width, height } },\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n currentTarget: 0,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n target: 0,\n bubbles: false,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isDefaultPrevented() {\n throw new Error(\"Method not supported on web.\");\n },\n isPropagationStopped() {\n throw new Error(\"Method not supported on web.\");\n },\n persist() {\n throw new Error(\"Method not supported on web.\");\n },\n preventDefault() {\n throw new Error(\"Method not supported on web.\");\n },\n stopPropagation() {\n throw new Error(\"Method not supported on web.\");\n },\n isTrusted: true,\n type: \"\",\n});\n\nexport interface SkiaPictureViewHandle {\n setPicture(picture: SkPicture): void;\n getSize(): { width: number; height: number };\n redraw(): void;\n makeImageSnapshot(rect?: SkRect): SkImage | null;\n measure(\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ): void;\n measureInWindow(\n callback: (x: number, y: number, width: number, height: number) => void\n ): void;\n}\n\nexport interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n ref?: React.Ref<SkiaPictureViewHandle>;\n}\n\nexport const SkiaPictureView = (props: SkiaPictureViewProps) => {\n const { ref, picture, onLayout } = props;\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const rendererRef = useRef<Renderer | null>(null);\n const pictureRef = useRef<SkPicture | null>(null);\n // The rendering lifecycle deliberately does not depend on layout events:\n // - The renderer is created synchronously on mount (the canvas element is\n // guaranteed to exist in useLayoutEffect; a zero size at that point is\n // fine, the surface is created once the canvas is measurable).\n // - Redraw requests coalesce into a single microtask. A microtask (not an\n // animation frame) so that a picture produced inside a rAF callback (the\n // Reanimated mapper) is drawn before the current frame paints: deferring\n // to the next rAF alternates between \"flush pending in this frame\" and\n // \"flush scheduled for the next frame\", drawing on every other frame\n // only and halving the effective frame rate. A picture dispatched before\n // the canvas has a size stays in pictureRef (drawing while unmeasured is\n // a no-op) and is painted by the resize path below once the canvas\n // becomes measurable, so it is never lost.\n // - A ResizeObserver on the canvas itself recreates the surface and repaints\n // synchronously (its callbacks run after layout, before paint), and is\n // also the source of the user-facing onLayout event.\n const redrawPendingRef = useRef(false);\n const flushScheduledRef = useRef(false);\n const onLayoutRef = useRef(onLayout);\n useLayoutEffect(() => {\n onLayoutRef.current = onLayout;\n }, [onLayout]);\n\n const flushRedraw = useCallback(() => {\n flushScheduledRef.current = false;\n if (redrawPendingRef.current && rendererRef.current && pictureRef.current) {\n redrawPendingRef.current = false;\n rendererRef.current.draw(pictureRef.current);\n }\n // If the renderer or picture isn't available yet, the request stays\n // pending and is flushed by whichever arrives last.\n }, []);\n\n const redraw = useCallback(() => {\n redrawPendingRef.current = true;\n if (!flushScheduledRef.current) {\n flushScheduledRef.current = true;\n queueMicrotask(flushRedraw);\n }\n }, [flushRedraw]);\n\n const getSize = useCallback(() => {\n return {\n width: canvasRef.current?.clientWidth || 0,\n height: canvasRef.current?.clientHeight || 0,\n };\n }, []);\n\n const setPicture = useCallback(\n (newPicture: SkPicture) => {\n pictureRef.current = newPicture;\n redraw();\n },\n [redraw]\n );\n\n const makeImageSnapshot = useCallback((rect?: SkRect) => {\n if (rendererRef.current && pictureRef.current) {\n return rendererRef.current.makeImageSnapshot(pictureRef.current, rect);\n }\n return null;\n }, []);\n\n const measure = useCallback(\n (\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ) => {\n if (canvasRef.current) {\n const rect = canvasRef.current.getBoundingClientRect();\n const parentElement = canvasRef.current.offsetParent as HTMLElement;\n const parentRect = parentElement?.getBoundingClientRect() || {\n left: 0,\n top: 0,\n };\n\n // x, y are relative to the parent\n const x = rect.left - parentRect.left;\n const y = rect.top - parentRect.top;\n\n // pageX, pageY are absolute screen coordinates\n const pageX = rect.left + window.scrollX;\n const pageY = rect.top + window.scrollY;\n\n callback(x, y, rect.width, rect.height, pageX, pageY);\n }\n },\n []\n );\n\n const measureInWindow = useCallback(\n (\n callback: (x: number, y: number, width: number, height: number) => void\n ) => {\n if (canvasRef.current) {\n const rect = canvasRef.current.getBoundingClientRect();\n\n // x, y are the absolute coordinates in the window\n const x = rect.left;\n const y = rect.top;\n\n callback(x, y, rect.width, rect.height);\n }\n },\n []\n );\n\n const isStatic = props.__destroyWebGLContextAfterRender === true;\n\n useLayoutEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) {\n return undefined;\n }\n const renderer = isStatic\n ? new StaticWebGLRenderer(canvas)\n : new WebGLRenderer(canvas);\n rendererRef.current = renderer;\n\n const drawPicture = () => {\n if (pictureRef.current) {\n redrawPendingRef.current = false;\n renderer.draw(pictureRef.current);\n }\n };\n\n // The renderer constructor already sized the surface from the current\n // layout, so the observer's initial delivery only repaints if the size\n // changed in between.\n let lastWidth = canvas.clientWidth;\n let lastHeight = canvas.clientHeight;\n let lastPixelDensity = window.devicePixelRatio;\n const resizeIfNeeded = () => {\n const width = canvas.clientWidth;\n const height = canvas.clientHeight;\n const pixelDensity = window.devicePixelRatio;\n if (\n width === lastWidth &&\n height === lastHeight &&\n pixelDensity === lastPixelDensity\n ) {\n return;\n }\n lastWidth = width;\n lastHeight = height;\n lastPixelDensity = pixelDensity;\n renderer.onResize();\n drawPicture();\n };\n\n const observer = new ResizeObserver((entries) => {\n resizeIfNeeded();\n const layoutHandler = onLayoutRef.current;\n if (layoutHandler) {\n const { left, top, width, height } = entries[0].contentRect;\n // setTimeout 0 is taken from react-native-web (UIManager)\n setTimeout(\n () => layoutHandler(makeLayoutEvent(left, top, width, height)),\n 0\n );\n }\n });\n observer.observe(canvas);\n\n // A pixel-density change with no CSS size change (browser zoom, moving\n // the window to another display) doesn't trigger the ResizeObserver:\n // watch it via matchMedia, re-arming the query for each new density.\n // This degrades gracefully where unsupported: without matchMedia or\n // MediaQueryList.addEventListener (older Safari), or where the query\n // never matches because the resolution feature is unknown (Safari < 16),\n // density-only changes simply don't repaint — everything else still does.\n let media: MediaQueryList | null = null;\n const onPixelDensityChange = () => {\n resizeIfNeeded();\n watchPixelDensity();\n };\n const watchPixelDensity = () => {\n media?.removeEventListener(\"change\", onPixelDensityChange);\n media = null;\n if (typeof window.matchMedia === \"function\") {\n const query = window.matchMedia(\n `(resolution: ${window.devicePixelRatio}dppx)`\n );\n if (typeof query.addEventListener === \"function\") {\n media = query;\n media.addEventListener(\"change\", onPixelDensityChange);\n }\n }\n };\n watchPixelDensity();\n\n // Paint any picture that was dispatched before the renderer existed.\n drawPicture();\n\n return () => {\n observer.disconnect();\n media?.removeEventListener(\"change\", onPixelDensityChange);\n rendererRef.current = null;\n renderer.dispose();\n };\n }, [isStatic]);\n\n // No flush cancellation is needed on unmount: a microtask queued before\n // unmount runs within the same task, and flushRedraw no-ops once the\n // layout-effect cleanup has nulled rendererRef.\n\n useImperativeHandle(\n ref,\n () => ({\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n get canvasRef() {\n return () => canvasRef.current;\n },\n }),\n [setPicture, getSize, redraw, makeImageSnapshot, measure, measureInWindow]\n );\n\n useEffect(() => {\n const nativeID = props.nativeID ?? `${SkiaViewNativeId.current++}`;\n const api = global.SkiaViewApi as ISkiaViewApiWeb;\n api.registerView(nativeID, {\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n } as SkiaPictureViewHandle);\n return () => {\n api.unregisterView(nativeID);\n };\n }, [\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n props.nativeID,\n ]);\n\n useEffect(() => {\n if (picture) {\n setPicture(picture);\n }\n }, [setPicture, picture]);\n\n const {\n debug: _debug,\n ref: _ref,\n onLayout: _onLayout,\n picture: _picture,\n __destroyWebGLContextAfterRender: _isStatic,\n ...viewProps\n } = props;\n return (\n <Platform.View {...viewProps}>\n <canvas\n ref={canvasRef}\n style={{ display: \"block\", width: \"100%\", height: \"100%\" }}\n />\n </Platform.View>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,11 @@ import { processRadius } from "./Radius";
|
|
|
4
4
|
export const isEdge = (pos, b) => {
|
|
5
5
|
"worklet";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
const right = b.x + b.width;
|
|
8
|
+
const bottom = b.y + b.height;
|
|
9
|
+
const withinX = pos.x >= b.x && pos.x <= right;
|
|
10
|
+
const withinY = pos.y >= b.y && pos.y <= bottom;
|
|
11
|
+
return withinY && (pos.x === b.x || pos.x === right) || withinX && (pos.y === b.y || pos.y === bottom);
|
|
8
12
|
};
|
|
9
13
|
|
|
10
14
|
// We have an issue to check property existence on JSI backed instances
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["processRadius","isEdge","pos","b","
|
|
1
|
+
{"version":3,"names":["processRadius","isEdge","pos","b","right","x","width","bottom","y","height","withinX","withinY","isRRectCtor","def","rect","undefined","isRectCtor","processRect","Skia","_def$x","_def$y","XYWHRect","processRRect","_def$r","_def$x2","_def$y2","r","RRectXY","inflate","box","dx","dy","tx","ty","rx","ry","deflate"],"sources":["Rect.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Skia, SkRect, SkRRect, Vector } from \"../../../skia/types\";\nimport type { RectCtor, RectDef, RRectCtor, RRectDef } from \"../../types\";\n\nimport { processRadius } from \"./Radius\";\n\nexport const isEdge = (pos: Vector, b: SkRect) => {\n \"worklet\";\n const right = b.x + b.width;\n const bottom = b.y + b.height;\n const withinX = pos.x >= b.x && pos.x <= right;\n const withinY = pos.y >= b.y && pos.y <= bottom;\n return (\n (withinY && (pos.x === b.x || pos.x === right)) ||\n (withinX && (pos.y === b.y || pos.y === bottom))\n );\n};\n\n// We have an issue to check property existence on JSI backed instances\nconst isRRectCtor = (def: RRectDef): def is RRectCtor => {\n \"worklet\";\n return (def as any).rect === undefined;\n};\n// We have an issue to check property existence on JSI backed instances\nconst isRectCtor = (def: RectDef): def is RectCtor => {\n \"worklet\";\n return (def as any).rect === undefined;\n};\n\nexport const processRect = (Skia: Skia, def: RectDef) => {\n \"worklet\";\n if (isRectCtor(def)) {\n return Skia.XYWHRect(def.x ?? 0, def.y ?? 0, def.width, def.height);\n } else {\n return def.rect;\n }\n};\n\nexport const processRRect = (Skia: Skia, def: RRectDef) => {\n \"worklet\";\n if (isRRectCtor(def)) {\n const r = processRadius(Skia, def.r ?? 0);\n return Skia.RRectXY(\n Skia.XYWHRect(def.x ?? 0, def.y ?? 0, def.width, def.height),\n r.x,\n r.y\n );\n } else {\n return def.rect;\n }\n};\n\nexport const inflate = (\n Skia: Skia,\n box: SkRRect,\n dx: number,\n dy: number,\n tx = 0,\n ty = 0\n) => {\n \"worklet\";\n return 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};\n\nexport const deflate = (\n Skia: Skia,\n box: SkRRect,\n dx: number,\n dy: number,\n tx = 0,\n ty = 0\n) => {\n \"worklet\";\n return inflate(Skia, box, -dx, -dy, tx, ty);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,8 +9,12 @@ const copyFrameOnAndroid = currentFrame => {
|
|
|
9
9
|
if (Platform.OS === "android") {
|
|
10
10
|
const tex = currentFrame.value;
|
|
11
11
|
if (tex) {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const copy = tex.makeNonTextureImage();
|
|
13
|
+
if (copy) {
|
|
14
|
+
currentFrame.value = copy;
|
|
15
|
+
tex.dispose();
|
|
16
|
+
}
|
|
17
|
+
// If copy fails, keep the original frame rather than showing black
|
|
14
18
|
}
|
|
15
19
|
}
|
|
16
20
|
};
|
|
@@ -19,6 +23,8 @@ const setFrame = (video, currentFrame) => {
|
|
|
19
23
|
|
|
20
24
|
const img = video.nextImage();
|
|
21
25
|
if (img) {
|
|
26
|
+
var _currentFrame$value;
|
|
27
|
+
(_currentFrame$value = currentFrame.value) === null || _currentFrame$value === void 0 || _currentFrame$value.dispose();
|
|
22
28
|
currentFrame.value = img;
|
|
23
29
|
copyFrameOnAndroid(currentFrame);
|
|
24
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useMemo","Platform","Rea","useVideoLoading","copyFrameOnAndroid","currentFrame","OS","tex","value","dispose","setFrame","video","img","nextImage","defaultOptions","looping","paused","seek","volume","useOption","defaultValue","useSharedValue","isSharedValue","disposeVideo","useVideo","source","userOptions","_userOptions$paused","_userOptions$looping","_userOptions$seek","_userOptions$volume","isPaused","currentTime","duration","_video$duration","framerate","_video$framerate","size","_video$size","width","height","rotation","_video$rotation","useAnimatedReaction","pause","play","setVolume","setLooping","useFrameCallback","_frameInfo","runOnUI"],"sources":["useVideo.ts"],"sourcesContent":["import type { SharedValue, FrameInfo } from \"react-native-reanimated\";\nimport { useEffect, useMemo } from \"react\";\n\nimport type { SkImage, Video } from \"../../skia/types\";\nimport { Platform } from \"../../Platform\";\n\nimport Rea from \"./ReanimatedProxy\";\nimport { useVideoLoading } from \"./useVideoLoading\";\n\ntype MaybeAnimated<T> = SharedValue<T> | T;\n\ninterface PlaybackOptions {\n looping: MaybeAnimated<boolean>;\n paused: MaybeAnimated<boolean>;\n seek: MaybeAnimated<number | null>;\n volume: MaybeAnimated<number>;\n}\n\nconst copyFrameOnAndroid = (currentFrame: SharedValue<SkImage | null>) => {\n \"worklet\";\n // on android we need to copy the texture before it's invalidated\n if (Platform.OS === \"android\") {\n const tex = currentFrame.value;\n if (tex) {\n
|
|
1
|
+
{"version":3,"names":["useEffect","useMemo","Platform","Rea","useVideoLoading","copyFrameOnAndroid","currentFrame","OS","tex","value","copy","makeNonTextureImage","dispose","setFrame","video","img","nextImage","_currentFrame$value","defaultOptions","looping","paused","seek","volume","useOption","defaultValue","useSharedValue","isSharedValue","disposeVideo","useVideo","source","userOptions","_userOptions$paused","_userOptions$looping","_userOptions$seek","_userOptions$volume","isPaused","currentTime","duration","_video$duration","framerate","_video$framerate","size","_video$size","width","height","rotation","_video$rotation","useAnimatedReaction","pause","play","setVolume","setLooping","useFrameCallback","_frameInfo","runOnUI"],"sources":["useVideo.ts"],"sourcesContent":["import type { SharedValue, FrameInfo } from \"react-native-reanimated\";\nimport { useEffect, useMemo } from \"react\";\n\nimport type { SkImage, Video } from \"../../skia/types\";\nimport { Platform } from \"../../Platform\";\n\nimport Rea from \"./ReanimatedProxy\";\nimport { useVideoLoading } from \"./useVideoLoading\";\n\ntype MaybeAnimated<T> = SharedValue<T> | T;\n\ninterface PlaybackOptions {\n looping: MaybeAnimated<boolean>;\n paused: MaybeAnimated<boolean>;\n seek: MaybeAnimated<number | null>;\n volume: MaybeAnimated<number>;\n}\n\nconst copyFrameOnAndroid = (currentFrame: SharedValue<SkImage | null>) => {\n \"worklet\";\n // on android we need to copy the texture before it's invalidated\n if (Platform.OS === \"android\") {\n const tex = currentFrame.value;\n if (tex) {\n const copy = tex.makeNonTextureImage();\n if (copy) {\n currentFrame.value = copy;\n tex.dispose();\n }\n // If copy fails, keep the original frame rather than showing black\n }\n }\n};\n\nconst setFrame = (video: Video, currentFrame: SharedValue<SkImage | null>) => {\n \"worklet\";\n const img = video.nextImage();\n if (img) {\n currentFrame.value?.dispose();\n currentFrame.value = img;\n copyFrameOnAndroid(currentFrame);\n }\n};\n\nconst defaultOptions = {\n looping: true,\n paused: false,\n seek: null,\n volume: 0,\n};\n\nconst useOption = <T>(value: MaybeAnimated<T>) => {\n \"worklet\";\n const defaultValue = Rea.useSharedValue(\n Rea.isSharedValue(value) ? value.value : value\n );\n return Rea.isSharedValue(value)\n ? (value as SharedValue<T>)\n : (defaultValue as SharedValue<T>);\n};\n\nconst disposeVideo = (video: Video | null) => {\n \"worklet\";\n video?.dispose();\n};\n\nexport const useVideo = (\n source: string | null,\n userOptions?: Partial<PlaybackOptions>\n) => {\n const video = useVideoLoading(source);\n const isPaused = useOption(userOptions?.paused ?? defaultOptions.paused);\n const looping = useOption(userOptions?.looping ?? defaultOptions.looping);\n const seek = useOption(userOptions?.seek ?? defaultOptions.seek);\n const volume = useOption(userOptions?.volume ?? defaultOptions.volume);\n const currentFrame = Rea.useSharedValue<null | SkImage>(null);\n const currentTime = Rea.useSharedValue(0);\n const duration = useMemo(() => video?.duration() ?? 0, [video]);\n const framerate = useMemo(\n () => (Platform.OS === \"web\" ? -1 : (video?.framerate() ?? 0)),\n [video]\n );\n const size = useMemo(() => video?.size() ?? { width: 0, height: 0 }, [video]);\n const rotation = useMemo(() => video?.rotation() ?? 0, [video]);\n\n // Handle pause/play state changes\n Rea.useAnimatedReaction(\n () => isPaused.value,\n (paused) => {\n if (paused) {\n video?.pause();\n } else {\n video?.play();\n }\n }\n );\n\n // Handle seek\n Rea.useAnimatedReaction(\n () => seek.value,\n (value) => {\n if (value !== null) {\n video?.seek(value);\n seek.value = null;\n }\n }\n );\n\n // Handle volume changes\n Rea.useAnimatedReaction(\n () => volume.value,\n (value) => {\n video?.setVolume(value);\n }\n );\n\n // Handle looping changes\n Rea.useAnimatedReaction(\n () => looping.value,\n (value) => {\n video?.setLooping(value);\n }\n );\n\n // Frame callback - simplified since native handles frame timing\n Rea.useFrameCallback((_frameInfo: FrameInfo) => {\n \"worklet\";\n if (!video) {\n return;\n }\n // Update current time from native player\n currentTime.value = video.currentTime();\n // Get the latest frame (native handles timing via CADisplayLink/etc)\n setFrame(video, currentFrame);\n });\n\n // Apply initial state when video becomes available\n useEffect(() => {\n if (video) {\n video.setLooping(looping.value);\n video.setVolume(volume.value);\n if (isPaused.value) {\n video.pause();\n } else {\n video.play();\n }\n }\n return () => {\n Rea.runOnUI(disposeVideo)(video);\n };\n }, [video, isPaused, looping, volume]);\n\n return {\n currentFrame,\n currentTime,\n duration,\n framerate,\n rotation,\n size,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,16 +10,10 @@ export const Mask = ({
|
|
|
10
10
|
}) => {
|
|
11
11
|
return /*#__PURE__*/React.createElement(Group, {
|
|
12
12
|
layer: true
|
|
13
|
-
}, /*#__PURE__*/React.createElement(Group, {
|
|
13
|
+
}, children, /*#__PURE__*/React.createElement(Group, {
|
|
14
14
|
layer: /*#__PURE__*/React.createElement(Paint, {
|
|
15
|
-
blendMode: "
|
|
15
|
+
blendMode: clip ? "dstIn" : "dstATop"
|
|
16
16
|
}, mode === "luminance" && /*#__PURE__*/React.createElement(LumaColorFilter, null))
|
|
17
|
-
}, mask
|
|
18
|
-
layer: /*#__PURE__*/React.createElement(Paint, {
|
|
19
|
-
blendMode: "dstIn"
|
|
20
|
-
})
|
|
21
|
-
}, children)), /*#__PURE__*/React.createElement(Group, {
|
|
22
|
-
blendMode: "srcIn"
|
|
23
|
-
}, children));
|
|
17
|
+
}, mask));
|
|
24
18
|
};
|
|
25
19
|
//# sourceMappingURL=Mask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Group","LumaColorFilter","Paint","Mask","children","mask","mode","clip","createElement","layer","blendMode"],"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 = ({\n children,\n mask,\n mode = \"alpha\",\n clip = true,\n}: MaskProps) => {\n return (\n <Group layer>\n <Group\n layer={\n <Paint blendMode
|
|
1
|
+
{"version":3,"names":["React","Group","LumaColorFilter","Paint","Mask","children","mask","mode","clip","createElement","layer","blendMode"],"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 = ({\n children,\n mask,\n mode = \"alpha\",\n clip = true,\n}: MaskProps) => {\n return (\n <Group layer>\n {children}\n {/* The children composite against each other in the layer above; the\n mask is then applied once, when its own layer is restored. A blend\n mode attached to a <Group> without a layer would instead be applied\n per draw call, compositing every child after the first against the\n previous child rather than against the mask (issue #3254).\n dstIn keeps the children where the mask is opaque and erases them\n where it is transparent. Without clip, dstATop additionally keeps\n the mask artwork itself wherever the children leave it uncovered. */}\n <Group\n layer={\n <Paint blendMode={clip ? \"dstIn\" : \"dstATop\"}>\n {mode === \"luminance\" && <LumaColorFilter />}\n </Paint>\n }\n >\n {mask}\n </Group>\n </Group>\n );\n};\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,KAAK,QAAQ,SAAS;AAS/B,OAAO,MAAMC,IAAI,GAAGA,CAAC;EACnBC,QAAQ;EACRC,IAAI;EACJC,IAAI,GAAG,OAAO;EACdC,IAAI,GAAG;AACE,CAAC,KAAK;EACf,oBACER,KAAA,CAAAS,aAAA,CAACR,KAAK;IAACS,KAAK;EAAA,GACTL,QAAQ,eASTL,KAAA,CAAAS,aAAA,CAACR,KAAK;IACJS,KAAK,eACHV,KAAA,CAAAS,aAAA,CAACN,KAAK;MAACQ,SAAS,EAAEH,IAAI,GAAG,OAAO,GAAG;IAAU,GAC1CD,IAAI,KAAK,WAAW,iBAAIP,KAAA,CAAAS,aAAA,CAACP,eAAe,MAAE,CACtC;EACR,GAEAI,IACI,CACF,CAAC;AAEZ,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["JsiInstance.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":[],"sources":["JsiInstance.ts"],"sourcesContent":["/// <reference lib=\"esnext.disposable\" preserve=\"true\" />\n\nexport interface SkJSIInstance<T extends string> extends Disposable {\n __typename__: T;\n dispose(): void;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -86,12 +86,17 @@ export const multiply4 = (a, b) => {
|
|
|
86
86
|
}
|
|
87
87
|
return result;
|
|
88
88
|
};
|
|
89
|
-
|
|
89
|
+
|
|
90
|
+
// These matrices are row-major, so the shear factor of skewX - which offsets x
|
|
91
|
+
// in proportion to y - belongs in row 0, column 1, and skewY's in row 1,
|
|
92
|
+
// column 0. React Native's MatrixMath stores the same transforms column-major,
|
|
93
|
+
// and porting its indices verbatim is what swapped the two axes here.
|
|
94
|
+
const skewX = angle => {
|
|
90
95
|
"worklet";
|
|
91
96
|
|
|
92
97
|
return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
93
98
|
};
|
|
94
|
-
const
|
|
99
|
+
const skewY = angle => {
|
|
95
100
|
"worklet";
|
|
96
101
|
|
|
97
102
|
return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["exhaustiveCheck","a","Error","Matrix4","translate","x","y","z","perspective","p","normalizeVec","vec","length","Math","sqrt","rotatedUnitSinCos","axisVec","sinAngle","cosAngle","c","s","t","matrixVecMul4","m","v","mapPoint3d","r","multiply4","b","result","Array","fill","i","j","skewY","angle","tan","skewX","toMatrix3","rotate","axis","value","sin","cos","pivot","scale","sx","sy","sz","m4","rotateAxis","rotateZ","rotateX","rotateY","processTransform3d","transforms","reduce","acc","val","key","Object","keys","transform","convertToColumnMajor","rowMajorMatrix","colMajorMatrix","size","row","col","convertToColumnMajor3","convertToAffineMatrix","d","tx","ty","det3x3","a00","a01","a02","a10","a11","a12","a20","a21","a22","invert4","a03","a13","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","det","abs","invDet","vecSub","vecCross","lookat","eyeVec","centerVec","upVec","f","u","uf","perspectiveMatrix","near","far","dInv","halfAngle","cot","setupCamera","area","zscale","cam","camera","eye","coa","up","center","viewScale","viewport"],"sources":["Matrix4.ts"],"sourcesContent":["type Point = { x: number; y: number };\ntype Vec2 = readonly [number, number];\nexport type Vec3 = readonly [number, number, number];\nexport type Vec4 = readonly [number, number, number, number];\n\nexport type Matrix3 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\nexport type Matrix4 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\ntype Transform3dName =\n | \"translateX\"\n | \"translateY\"\n | \"translateZ\"\n | \"translate\"\n | \"scale\"\n | \"scaleX\"\n | \"scaleY\"\n | \"skewX\"\n | \"skewY\"\n | \"rotateZ\"\n | \"rotate\"\n | \"perspective\"\n | \"rotateX\"\n | \"rotateY\"\n | \"matrix\";\n\ntype Transformations = {\n [Name in Transform3dName]: Name extends \"matrix\"\n ? Matrix4\n : Name extends \"translate\"\n ? Vec3 | Vec2\n : number;\n};\n\ntype Transform3d =\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"translateZ\">\n | Pick<Transformations, \"translate\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"perspective\">\n | Pick<Transformations, \"rotateX\">\n | Pick<Transformations, \"rotateY\">\n | Pick<Transformations, \"rotateZ\">\n | Pick<Transformations, \"rotate\">\n | Pick<Transformations, \"matrix\">;\n\nexport type Transforms3d = Transform3d[];\n\nconst exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n/**\n * @worklet\n */\nexport const Matrix4 = (): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const translate = (x: number, y: number, z = 0): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const perspective = (p: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p, 1];\n};\n\nconst normalizeVec = (vec: Vec3): Vec3 => {\n \"worklet\";\n const [x, y, z] = vec;\n const length = Math.sqrt(x * x + y * y + z * z);\n // Check for zero length to avoid division by zero\n if (length === 0) {\n return [0, 0, 0];\n }\n return [x / length, y / length, z / length];\n};\n\nconst rotatedUnitSinCos = (\n axisVec: Vec3,\n sinAngle: number,\n cosAngle: number\n): Matrix4 => {\n \"worklet\";\n const x = axisVec[0];\n const y = axisVec[1];\n const z = axisVec[2];\n const c = cosAngle;\n const s = sinAngle;\n const t = 1 - c;\n return [\n t * x * x + c,\n t * x * y - s * z,\n t * x * z + s * y,\n 0,\n t * x * y + s * z,\n t * y * y + c,\n t * y * z - s * x,\n 0,\n t * x * z - s * y,\n t * y * z + s * x,\n t * z * z + c,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n};\n\n/**\n * @worklet\n */\nexport const matrixVecMul4 = (m: Matrix4, v: Vec4): Vec4 => {\n \"worklet\";\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],\n m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],\n m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],\n m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3],\n ];\n};\n\n/**\n * @worklet\n */\nexport const mapPoint3d = (m: Matrix4, v: Vec3) => {\n \"worklet\";\n const r = matrixVecMul4(m, [...v, 1]);\n return [r[0] / r[3], r[1] / r[3], r[2] / r[3]] as const;\n};\n\n/**\n * @worklet\n */\nexport const multiply4 = (a: Matrix4, b: Matrix4): Matrix4 => {\n \"worklet\";\n const result = new Array(16).fill(0);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n result[i * 4 + j] =\n a[i * 4] * b[j] +\n a[i * 4 + 1] * b[j + 4] +\n a[i * 4 + 2] * b[j + 8] +\n a[i * 4 + 3] * b[j + 12];\n }\n }\n return result as unknown as Matrix4;\n};\n\nconst skewY = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\nconst skewX = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const toMatrix3 = (m: Matrix4) => {\n \"worklet\";\n return [m[0], m[1], m[3], m[4], m[5], m[7], m[12], m[13], m[15]];\n};\n\nconst rotate = (axis: Vec3, value: number) => {\n \"worklet\";\n return rotatedUnitSinCos(\n normalizeVec(axis),\n Math.sin(value),\n Math.cos(value)\n );\n};\n\n/**\n * @worklet\n */\nexport const pivot = (m: Matrix4, p: Point) => {\n \"worklet\";\n return multiply4(translate(p.x, p.y), multiply4(m, translate(-p.x, -p.y)));\n};\n\n/**\n * @worklet\n */\nexport const scale = (sx: number, sy: number, sz = 1, p?: Point): Matrix4 => {\n \"worklet\";\n const m4: Matrix4 = [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1];\n if (p) {\n return pivot(m4, p);\n }\n return m4;\n};\n\nconst rotateAxis = (axis: Vec3, angle: number, p?: Point) => {\n \"worklet\";\n const result = rotate(axis, angle);\n if (p) {\n return pivot(result, p);\n }\n return result;\n};\n\n/**\n * @worklet\n */\nexport const rotateZ = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 0, 1], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateX = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([1, 0, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateY = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 1, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const processTransform3d = (transforms: Transforms3d) => {\n \"worklet\";\n return transforms.reduce((acc, val) => {\n const key = Object.keys(val)[0] as Transform3dName;\n const transform = val as Pick<Transformations, typeof key>;\n if (key === \"translateX\") {\n const value = transform[key];\n return multiply4(acc, translate(value, 0, 0));\n }\n if (key === \"translate\") {\n const [x, y, z = 0] = transform[key];\n return multiply4(acc, translate(x, y, z));\n }\n if (key === \"translateY\") {\n const value = transform[key];\n return multiply4(acc, translate(0, value, 0));\n }\n if (key === \"translateZ\") {\n const value = transform[key];\n return multiply4(acc, translate(0, 0, value));\n }\n if (key === \"scale\") {\n const value = transform[key];\n return multiply4(acc, scale(value, value, 1));\n }\n if (key === \"scaleX\") {\n const value = transform[key];\n return multiply4(acc, scale(value, 1, 1));\n }\n if (key === \"scaleY\") {\n const value = transform[key];\n return multiply4(acc, scale(1, value, 1));\n }\n if (key === \"skewX\") {\n const value = transform[key];\n return multiply4(acc, skewX(value));\n }\n if (key === \"skewY\") {\n const value = transform[key];\n return multiply4(acc, skewY(value));\n }\n if (key === \"rotateX\") {\n const value = transform[key];\n return multiply4(acc, rotate([1, 0, 0], value));\n }\n if (key === \"rotateY\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 1, 0], value));\n }\n if (key === \"perspective\") {\n const value = transform[key];\n return multiply4(acc, perspective(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 0, 1], value));\n }\n if (key === \"matrix\") {\n const value = transform[key];\n return multiply4(acc, value);\n }\n return exhaustiveCheck(key);\n }, Matrix4());\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(16);\n const size = 4;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix4;\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor3 = (rowMajorMatrix: Matrix3 | number[]) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(9);\n const size = 3;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix3;\n};\n\n/**\n * @worklet\n */\nexport const convertToAffineMatrix = (m4: Matrix4) => {\n \"worklet\";\n // Extracting the relevant components from the 4x4 matrix\n const a = m4[0]; // Scale X\n const b = m4[1]; // Skew Y\n const c = m4[4]; // Skew X\n const d = m4[5]; // Scale Y\n const tx = m4[12]; // Translate X\n const ty = m4[13]; // Translate Y\n\n // Returning the 6-element affine transformation matrix\n return [a, b, c, d, tx, ty];\n};\n\n/**\n * Calculates the determinant of a 3x3 matrix\n * @worklet\n */\nconst det3x3 = (\n a00: number,\n a01: number,\n a02: number,\n a10: number,\n a11: number,\n a12: number,\n a20: number,\n a21: number,\n a22: number\n): number => {\n \"worklet\";\n return (\n a00 * (a11 * a22 - a12 * a21) +\n a01 * (a12 * a20 - a10 * a22) +\n a02 * (a10 * a21 - a11 * a20)\n );\n};\n\n/**\n * Inverts a 4x4 matrix\n * @worklet\n * @returns The inverted matrix, or the identity matrix if the input is not invertible\n */\nexport const invert4 = (m: Matrix4): Matrix4 => {\n \"worklet\";\n\n const a00 = m[0],\n a01 = m[1],\n a02 = m[2],\n a03 = m[3];\n const a10 = m[4],\n a11 = m[5],\n a12 = m[6],\n a13 = m[7];\n const a20 = m[8],\n a21 = m[9],\n a22 = m[10],\n a23 = m[11];\n const a30 = m[12],\n a31 = m[13],\n a32 = m[14],\n a33 = m[15];\n\n // Calculate cofactors\n const b00 = det3x3(a11, a12, a13, a21, a22, a23, a31, a32, a33);\n const b01 = -det3x3(a10, a12, a13, a20, a22, a23, a30, a32, a33);\n const b02 = det3x3(a10, a11, a13, a20, a21, a23, a30, a31, a33);\n const b03 = -det3x3(a10, a11, a12, a20, a21, a22, a30, a31, a32);\n\n const b10 = -det3x3(a01, a02, a03, a21, a22, a23, a31, a32, a33);\n const b11 = det3x3(a00, a02, a03, a20, a22, a23, a30, a32, a33);\n const b12 = -det3x3(a00, a01, a03, a20, a21, a23, a30, a31, a33);\n const b13 = det3x3(a00, a01, a02, a20, a21, a22, a30, a31, a32);\n\n const b20 = det3x3(a01, a02, a03, a11, a12, a13, a31, a32, a33);\n const b21 = -det3x3(a00, a02, a03, a10, a12, a13, a30, a32, a33);\n const b22 = det3x3(a00, a01, a03, a10, a11, a13, a30, a31, a33);\n const b23 = -det3x3(a00, a01, a02, a10, a11, a12, a30, a31, a32);\n\n const b30 = -det3x3(a01, a02, a03, a11, a12, a13, a21, a22, a23);\n const b31 = det3x3(a00, a02, a03, a10, a12, a13, a20, a22, a23);\n const b32 = -det3x3(a00, a01, a03, a10, a11, a13, a20, a21, a23);\n const b33 = det3x3(a00, a01, a02, a10, a11, a12, a20, a21, a22);\n\n // Calculate determinant\n const det = a00 * b00 + a01 * b01 + a02 * b02 + a03 * b03;\n\n // Check if matrix is invertible\n if (Math.abs(det) < 1e-8) {\n // Return identity matrix if not invertible\n return Matrix4();\n }\n\n const invDet = 1.0 / det;\n\n // Calculate inverse matrix\n return [\n b00 * invDet,\n b10 * invDet,\n b20 * invDet,\n b30 * invDet,\n b01 * invDet,\n b11 * invDet,\n b21 * invDet,\n b31 * invDet,\n b02 * invDet,\n b12 * invDet,\n b22 * invDet,\n b32 * invDet,\n b03 * invDet,\n b13 * invDet,\n b23 * invDet,\n b33 * invDet,\n ] as Matrix4;\n};\n\nconst vecSub = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n};\n\nconst vecCross = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0],\n ];\n};\n\nconst lookat = (eyeVec: Vec3, centerVec: Vec3, upVec: Vec3): Matrix4 => {\n \"worklet\";\n const f = normalizeVec(vecSub(centerVec, eyeVec));\n const u = normalizeVec(upVec);\n const s = normalizeVec(vecCross(f, u));\n const uf = vecCross(s, f);\n\n // Build the look-at matrix directly\n const m: Matrix4 = [\n s[0],\n uf[0],\n -f[0],\n eyeVec[0],\n s[1],\n uf[1],\n -f[1],\n eyeVec[1],\n s[2],\n uf[2],\n -f[2],\n eyeVec[2],\n 0,\n 0,\n 0,\n 1,\n ];\n\n return invert4(m);\n};\n\nconst perspectiveMatrix = (\n near: number,\n far: number,\n angle: number\n): Matrix4 => {\n \"worklet\";\n const dInv = 1 / (far - near);\n const halfAngle = angle / 2;\n const cot = Math.cos(halfAngle) / Math.sin(halfAngle);\n return [\n cot,\n 0,\n 0,\n 0,\n 0,\n cot,\n 0,\n 0,\n 0,\n 0,\n (far + near) * dInv,\n 2 * far * near * dInv,\n 0,\n 0,\n -1,\n 1,\n ];\n};\n\nexport interface CameraConfig {\n eye: Vec3;\n coa: Vec3;\n up: Vec3;\n near: number;\n far: number;\n angle: number;\n}\n\nexport const setupCamera = (\n area: Vec4,\n zscale: number,\n cam: CameraConfig\n): Matrix4 => {\n \"worklet\";\n const camera = lookat(cam.eye, cam.coa, cam.up);\n const p = perspectiveMatrix(cam.near, cam.far, cam.angle);\n const center: Vec3 = [(area[0] + area[2]) / 2, (area[1] + area[3]) / 2, 0];\n const viewScale: Vec3 = [\n (area[2] - area[0]) / 2,\n (area[3] - area[1]) / 2,\n zscale,\n ];\n const viewport = multiply4(\n translate(center[0], center[1], center[2]),\n scale(viewScale[0], viewScale[1], viewScale[2])\n );\n return multiply4(\n multiply4(viewport, p),\n multiply4(camera, invert4(viewport))\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["exhaustiveCheck","a","Error","Matrix4","translate","x","y","z","perspective","p","normalizeVec","vec","length","Math","sqrt","rotatedUnitSinCos","axisVec","sinAngle","cosAngle","c","s","t","matrixVecMul4","m","v","mapPoint3d","r","multiply4","b","result","Array","fill","i","j","skewX","angle","tan","skewY","toMatrix3","rotate","axis","value","sin","cos","pivot","scale","sx","sy","sz","m4","rotateAxis","rotateZ","rotateX","rotateY","processTransform3d","transforms","reduce","acc","val","key","Object","keys","transform","convertToColumnMajor","rowMajorMatrix","colMajorMatrix","size","row","col","convertToColumnMajor3","convertToAffineMatrix","d","tx","ty","det3x3","a00","a01","a02","a10","a11","a12","a20","a21","a22","invert4","a03","a13","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","det","abs","invDet","vecSub","vecCross","lookat","eyeVec","centerVec","upVec","f","u","uf","perspectiveMatrix","near","far","dInv","halfAngle","cot","setupCamera","area","zscale","cam","camera","eye","coa","up","center","viewScale","viewport"],"sources":["Matrix4.ts"],"sourcesContent":["type Point = { x: number; y: number };\ntype Vec2 = readonly [number, number];\nexport type Vec3 = readonly [number, number, number];\nexport type Vec4 = readonly [number, number, number, number];\n\nexport type Matrix3 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\nexport type Matrix4 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\ntype Transform3dName =\n | \"translateX\"\n | \"translateY\"\n | \"translateZ\"\n | \"translate\"\n | \"scale\"\n | \"scaleX\"\n | \"scaleY\"\n | \"skewX\"\n | \"skewY\"\n | \"rotateZ\"\n | \"rotate\"\n | \"perspective\"\n | \"rotateX\"\n | \"rotateY\"\n | \"matrix\";\n\ntype Transformations = {\n [Name in Transform3dName]: Name extends \"matrix\"\n ? Matrix4\n : Name extends \"translate\"\n ? Vec3 | Vec2\n : number;\n};\n\ntype Transform3d =\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"translateZ\">\n | Pick<Transformations, \"translate\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"perspective\">\n | Pick<Transformations, \"rotateX\">\n | Pick<Transformations, \"rotateY\">\n | Pick<Transformations, \"rotateZ\">\n | Pick<Transformations, \"rotate\">\n | Pick<Transformations, \"matrix\">;\n\nexport type Transforms3d = Transform3d[];\n\nconst exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n/**\n * @worklet\n */\nexport const Matrix4 = (): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const translate = (x: number, y: number, z = 0): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const perspective = (p: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p, 1];\n};\n\nconst normalizeVec = (vec: Vec3): Vec3 => {\n \"worklet\";\n const [x, y, z] = vec;\n const length = Math.sqrt(x * x + y * y + z * z);\n // Check for zero length to avoid division by zero\n if (length === 0) {\n return [0, 0, 0];\n }\n return [x / length, y / length, z / length];\n};\n\nconst rotatedUnitSinCos = (\n axisVec: Vec3,\n sinAngle: number,\n cosAngle: number\n): Matrix4 => {\n \"worklet\";\n const x = axisVec[0];\n const y = axisVec[1];\n const z = axisVec[2];\n const c = cosAngle;\n const s = sinAngle;\n const t = 1 - c;\n return [\n t * x * x + c,\n t * x * y - s * z,\n t * x * z + s * y,\n 0,\n t * x * y + s * z,\n t * y * y + c,\n t * y * z - s * x,\n 0,\n t * x * z - s * y,\n t * y * z + s * x,\n t * z * z + c,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n};\n\n/**\n * @worklet\n */\nexport const matrixVecMul4 = (m: Matrix4, v: Vec4): Vec4 => {\n \"worklet\";\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],\n m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],\n m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],\n m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3],\n ];\n};\n\n/**\n * @worklet\n */\nexport const mapPoint3d = (m: Matrix4, v: Vec3) => {\n \"worklet\";\n const r = matrixVecMul4(m, [...v, 1]);\n return [r[0] / r[3], r[1] / r[3], r[2] / r[3]] as const;\n};\n\n/**\n * @worklet\n */\nexport const multiply4 = (a: Matrix4, b: Matrix4): Matrix4 => {\n \"worklet\";\n const result = new Array(16).fill(0);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n result[i * 4 + j] =\n a[i * 4] * b[j] +\n a[i * 4 + 1] * b[j + 4] +\n a[i * 4 + 2] * b[j + 8] +\n a[i * 4 + 3] * b[j + 12];\n }\n }\n return result as unknown as Matrix4;\n};\n\n// These matrices are row-major, so the shear factor of skewX - which offsets x\n// in proportion to y - belongs in row 0, column 1, and skewY's in row 1,\n// column 0. React Native's MatrixMath stores the same transforms column-major,\n// and porting its indices verbatim is what swapped the two axes here.\nconst skewX = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\nconst skewY = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const toMatrix3 = (m: Matrix4) => {\n \"worklet\";\n return [m[0], m[1], m[3], m[4], m[5], m[7], m[12], m[13], m[15]];\n};\n\nconst rotate = (axis: Vec3, value: number) => {\n \"worklet\";\n return rotatedUnitSinCos(\n normalizeVec(axis),\n Math.sin(value),\n Math.cos(value)\n );\n};\n\n/**\n * @worklet\n */\nexport const pivot = (m: Matrix4, p: Point) => {\n \"worklet\";\n return multiply4(translate(p.x, p.y), multiply4(m, translate(-p.x, -p.y)));\n};\n\n/**\n * @worklet\n */\nexport const scale = (sx: number, sy: number, sz = 1, p?: Point): Matrix4 => {\n \"worklet\";\n const m4: Matrix4 = [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1];\n if (p) {\n return pivot(m4, p);\n }\n return m4;\n};\n\nconst rotateAxis = (axis: Vec3, angle: number, p?: Point) => {\n \"worklet\";\n const result = rotate(axis, angle);\n if (p) {\n return pivot(result, p);\n }\n return result;\n};\n\n/**\n * @worklet\n */\nexport const rotateZ = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 0, 1], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateX = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([1, 0, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateY = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 1, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const processTransform3d = (transforms: Transforms3d) => {\n \"worklet\";\n return transforms.reduce((acc, val) => {\n const key = Object.keys(val)[0] as Transform3dName;\n const transform = val as Pick<Transformations, typeof key>;\n if (key === \"translateX\") {\n const value = transform[key];\n return multiply4(acc, translate(value, 0, 0));\n }\n if (key === \"translate\") {\n const [x, y, z = 0] = transform[key];\n return multiply4(acc, translate(x, y, z));\n }\n if (key === \"translateY\") {\n const value = transform[key];\n return multiply4(acc, translate(0, value, 0));\n }\n if (key === \"translateZ\") {\n const value = transform[key];\n return multiply4(acc, translate(0, 0, value));\n }\n if (key === \"scale\") {\n const value = transform[key];\n return multiply4(acc, scale(value, value, 1));\n }\n if (key === \"scaleX\") {\n const value = transform[key];\n return multiply4(acc, scale(value, 1, 1));\n }\n if (key === \"scaleY\") {\n const value = transform[key];\n return multiply4(acc, scale(1, value, 1));\n }\n if (key === \"skewX\") {\n const value = transform[key];\n return multiply4(acc, skewX(value));\n }\n if (key === \"skewY\") {\n const value = transform[key];\n return multiply4(acc, skewY(value));\n }\n if (key === \"rotateX\") {\n const value = transform[key];\n return multiply4(acc, rotate([1, 0, 0], value));\n }\n if (key === \"rotateY\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 1, 0], value));\n }\n if (key === \"perspective\") {\n const value = transform[key];\n return multiply4(acc, perspective(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 0, 1], value));\n }\n if (key === \"matrix\") {\n const value = transform[key];\n return multiply4(acc, value);\n }\n return exhaustiveCheck(key);\n }, Matrix4());\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(16);\n const size = 4;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix4;\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor3 = (rowMajorMatrix: Matrix3 | number[]) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(9);\n const size = 3;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix3;\n};\n\n/**\n * @worklet\n */\nexport const convertToAffineMatrix = (m4: Matrix4) => {\n \"worklet\";\n // Extracting the relevant components from the 4x4 matrix\n const a = m4[0]; // Scale X\n const b = m4[1]; // Skew Y\n const c = m4[4]; // Skew X\n const d = m4[5]; // Scale Y\n const tx = m4[12]; // Translate X\n const ty = m4[13]; // Translate Y\n\n // Returning the 6-element affine transformation matrix\n return [a, b, c, d, tx, ty];\n};\n\n/**\n * Calculates the determinant of a 3x3 matrix\n * @worklet\n */\nconst det3x3 = (\n a00: number,\n a01: number,\n a02: number,\n a10: number,\n a11: number,\n a12: number,\n a20: number,\n a21: number,\n a22: number\n): number => {\n \"worklet\";\n return (\n a00 * (a11 * a22 - a12 * a21) +\n a01 * (a12 * a20 - a10 * a22) +\n a02 * (a10 * a21 - a11 * a20)\n );\n};\n\n/**\n * Inverts a 4x4 matrix\n * @worklet\n * @returns The inverted matrix, or the identity matrix if the input is not invertible\n */\nexport const invert4 = (m: Matrix4): Matrix4 => {\n \"worklet\";\n\n const a00 = m[0],\n a01 = m[1],\n a02 = m[2],\n a03 = m[3];\n const a10 = m[4],\n a11 = m[5],\n a12 = m[6],\n a13 = m[7];\n const a20 = m[8],\n a21 = m[9],\n a22 = m[10],\n a23 = m[11];\n const a30 = m[12],\n a31 = m[13],\n a32 = m[14],\n a33 = m[15];\n\n // Calculate cofactors\n const b00 = det3x3(a11, a12, a13, a21, a22, a23, a31, a32, a33);\n const b01 = -det3x3(a10, a12, a13, a20, a22, a23, a30, a32, a33);\n const b02 = det3x3(a10, a11, a13, a20, a21, a23, a30, a31, a33);\n const b03 = -det3x3(a10, a11, a12, a20, a21, a22, a30, a31, a32);\n\n const b10 = -det3x3(a01, a02, a03, a21, a22, a23, a31, a32, a33);\n const b11 = det3x3(a00, a02, a03, a20, a22, a23, a30, a32, a33);\n const b12 = -det3x3(a00, a01, a03, a20, a21, a23, a30, a31, a33);\n const b13 = det3x3(a00, a01, a02, a20, a21, a22, a30, a31, a32);\n\n const b20 = det3x3(a01, a02, a03, a11, a12, a13, a31, a32, a33);\n const b21 = -det3x3(a00, a02, a03, a10, a12, a13, a30, a32, a33);\n const b22 = det3x3(a00, a01, a03, a10, a11, a13, a30, a31, a33);\n const b23 = -det3x3(a00, a01, a02, a10, a11, a12, a30, a31, a32);\n\n const b30 = -det3x3(a01, a02, a03, a11, a12, a13, a21, a22, a23);\n const b31 = det3x3(a00, a02, a03, a10, a12, a13, a20, a22, a23);\n const b32 = -det3x3(a00, a01, a03, a10, a11, a13, a20, a21, a23);\n const b33 = det3x3(a00, a01, a02, a10, a11, a12, a20, a21, a22);\n\n // Calculate determinant\n const det = a00 * b00 + a01 * b01 + a02 * b02 + a03 * b03;\n\n // Check if matrix is invertible\n if (Math.abs(det) < 1e-8) {\n // Return identity matrix if not invertible\n return Matrix4();\n }\n\n const invDet = 1.0 / det;\n\n // Calculate inverse matrix\n return [\n b00 * invDet,\n b10 * invDet,\n b20 * invDet,\n b30 * invDet,\n b01 * invDet,\n b11 * invDet,\n b21 * invDet,\n b31 * invDet,\n b02 * invDet,\n b12 * invDet,\n b22 * invDet,\n b32 * invDet,\n b03 * invDet,\n b13 * invDet,\n b23 * invDet,\n b33 * invDet,\n ] as Matrix4;\n};\n\nconst vecSub = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n};\n\nconst vecCross = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0],\n ];\n};\n\nconst lookat = (eyeVec: Vec3, centerVec: Vec3, upVec: Vec3): Matrix4 => {\n \"worklet\";\n const f = normalizeVec(vecSub(centerVec, eyeVec));\n const u = normalizeVec(upVec);\n const s = normalizeVec(vecCross(f, u));\n const uf = vecCross(s, f);\n\n // Build the look-at matrix directly\n const m: Matrix4 = [\n s[0],\n uf[0],\n -f[0],\n eyeVec[0],\n s[1],\n uf[1],\n -f[1],\n eyeVec[1],\n s[2],\n uf[2],\n -f[2],\n eyeVec[2],\n 0,\n 0,\n 0,\n 1,\n ];\n\n return invert4(m);\n};\n\nconst perspectiveMatrix = (\n near: number,\n far: number,\n angle: number\n): Matrix4 => {\n \"worklet\";\n const dInv = 1 / (far - near);\n const halfAngle = angle / 2;\n const cot = Math.cos(halfAngle) / Math.sin(halfAngle);\n return [\n cot,\n 0,\n 0,\n 0,\n 0,\n cot,\n 0,\n 0,\n 0,\n 0,\n (far + near) * dInv,\n 2 * far * near * dInv,\n 0,\n 0,\n -1,\n 1,\n ];\n};\n\nexport interface CameraConfig {\n eye: Vec3;\n coa: Vec3;\n up: Vec3;\n near: number;\n far: number;\n angle: number;\n}\n\nexport const setupCamera = (\n area: Vec4,\n zscale: number,\n cam: CameraConfig\n): Matrix4 => {\n \"worklet\";\n const camera = lookat(cam.eye, cam.coa, cam.up);\n const p = perspectiveMatrix(cam.near, cam.far, cam.angle);\n const center: Vec3 = [(area[0] + area[2]) / 2, (area[1] + area[3]) / 2, 0];\n const viewScale: Vec3 = [\n (area[2] - area[0]) / 2,\n (area[3] - area[1]) / 2,\n zscale,\n ];\n const viewport = multiply4(\n translate(center[0], center[1], center[2]),\n scale(viewScale[0], viewScale[1], viewScale[2])\n );\n return multiply4(\n multiply4(viewport, p),\n multiply4(camera, invert4(viewport))\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,7 +17,7 @@ import type { SkVertices, VertexMode } from "./Vertices/Vertices";
|
|
|
17
17
|
import type { DataFactory } from "./Data";
|
|
18
18
|
import type { SVGFactory } from "./SVG";
|
|
19
19
|
import type { TextBlobFactory } from "./TextBlob";
|
|
20
|
-
import type {
|
|
20
|
+
import type { SurfaceFactory } from "./Surface";
|
|
21
21
|
import type { SkRSXform } from "./RSXform";
|
|
22
22
|
import type { SkPath } from "./Path/Path";
|
|
23
23
|
import type { SkContourMeasureIter } from "./ContourMeasure";
|
|
@@ -30,10 +30,6 @@ import type { Video } from "./Video";
|
|
|
30
30
|
import type { NativeBufferFactory } from "./NativeBuffer";
|
|
31
31
|
import type { JsiRecorder } from "./Recorder";
|
|
32
32
|
import type { SkottieFactory } from "./Skottie";
|
|
33
|
-
export interface SkiaContext {
|
|
34
|
-
getSurface(): SkSurface;
|
|
35
|
-
present(): void;
|
|
36
|
-
}
|
|
37
33
|
/**
|
|
38
34
|
* Declares the interface for the native Skia API
|
|
39
35
|
*/
|
|
@@ -82,7 +78,6 @@ export interface Skia {
|
|
|
82
78
|
ParagraphBuilder: ParagraphBuilderFactory;
|
|
83
79
|
Skottie: SkottieFactory;
|
|
84
80
|
Video: (url: string) => Promise<Video> | Video;
|
|
85
|
-
Context(surface: bigint, width: number, height: number): SkiaContext;
|
|
86
81
|
NativeBuffer: NativeBufferFactory;
|
|
87
82
|
Recorder(): JsiRecorder;
|
|
88
83
|
/**
|