@shopify/react-native-skia 2.4.3 → 2.4.5
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/CMakeLists.txt +21 -21
- package/lib/commonjs/renderer/Canvas.js +17 -5
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js +30 -32
- package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.web.d.ts +2 -0
- package/lib/commonjs/views/SkiaPictureView.web.js +40 -4
- package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
- package/lib/module/renderer/Canvas.js +17 -5
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/sksg/Recorder/Player.js +30 -32
- package/lib/module/sksg/Recorder/Player.js.map +1 -1
- package/lib/module/views/SkiaPictureView.web.d.ts +2 -0
- package/lib/module/views/SkiaPictureView.web.js +40 -4
- package/lib/module/views/SkiaPictureView.web.js.map +1 -1
- package/lib/typescript/src/views/SkiaPictureView.web.d.ts +2 -0
- package/package.json +1 -1
- package/react-native-skia.podspec +17 -35
- package/scripts/install-skia.mjs +19 -0
- package/src/renderer/Canvas.tsx +11 -1
- package/src/sksg/Recorder/Player.ts +40 -37
- package/src/views/SkiaPictureView.web.tsx +80 -2
|
@@ -224,6 +224,19 @@ export interface SkiaPictureViewHandle {
|
|
|
224
224
|
getSize(): { width: number; height: number };
|
|
225
225
|
redraw(): void;
|
|
226
226
|
makeImageSnapshot(rect?: SkRect): SkImage | null;
|
|
227
|
+
measure(
|
|
228
|
+
callback: (
|
|
229
|
+
x: number,
|
|
230
|
+
y: number,
|
|
231
|
+
width: number,
|
|
232
|
+
height: number,
|
|
233
|
+
pageX: number,
|
|
234
|
+
pageY: number
|
|
235
|
+
) => void
|
|
236
|
+
): void;
|
|
237
|
+
measureInWindow(
|
|
238
|
+
callback: (x: number, y: number, width: number, height: number) => void
|
|
239
|
+
): void;
|
|
227
240
|
}
|
|
228
241
|
|
|
229
242
|
export const SkiaPictureView = forwardRef<
|
|
@@ -264,6 +277,56 @@ export const SkiaPictureView = forwardRef<
|
|
|
264
277
|
return null;
|
|
265
278
|
}, []);
|
|
266
279
|
|
|
280
|
+
const measure = useCallback(
|
|
281
|
+
(
|
|
282
|
+
callback: (
|
|
283
|
+
x: number,
|
|
284
|
+
y: number,
|
|
285
|
+
width: number,
|
|
286
|
+
height: number,
|
|
287
|
+
pageX: number,
|
|
288
|
+
pageY: number
|
|
289
|
+
) => void
|
|
290
|
+
) => {
|
|
291
|
+
if (canvasRef.current) {
|
|
292
|
+
const rect = canvasRef.current.getBoundingClientRect();
|
|
293
|
+
const parentElement = canvasRef.current.offsetParent as HTMLElement;
|
|
294
|
+
const parentRect = parentElement?.getBoundingClientRect() || {
|
|
295
|
+
left: 0,
|
|
296
|
+
top: 0,
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
// x, y are relative to the parent
|
|
300
|
+
const x = rect.left - parentRect.left;
|
|
301
|
+
const y = rect.top - parentRect.top;
|
|
302
|
+
|
|
303
|
+
// pageX, pageY are absolute screen coordinates
|
|
304
|
+
const pageX = rect.left + window.scrollX;
|
|
305
|
+
const pageY = rect.top + window.scrollY;
|
|
306
|
+
|
|
307
|
+
callback(x, y, rect.width, rect.height, pageX, pageY);
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
[]
|
|
311
|
+
);
|
|
312
|
+
|
|
313
|
+
const measureInWindow = useCallback(
|
|
314
|
+
(
|
|
315
|
+
callback: (x: number, y: number, width: number, height: number) => void
|
|
316
|
+
) => {
|
|
317
|
+
if (canvasRef.current) {
|
|
318
|
+
const rect = canvasRef.current.getBoundingClientRect();
|
|
319
|
+
|
|
320
|
+
// x, y are the absolute coordinates in the window
|
|
321
|
+
const x = rect.left;
|
|
322
|
+
const y = rect.top;
|
|
323
|
+
|
|
324
|
+
callback(x, y, rect.width, rect.height);
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
[]
|
|
328
|
+
);
|
|
329
|
+
|
|
267
330
|
const tick = useCallback(() => {
|
|
268
331
|
if (redrawRequestsRef.current > 0) {
|
|
269
332
|
redrawRequestsRef.current = 0;
|
|
@@ -300,8 +363,13 @@ export const SkiaPictureView = forwardRef<
|
|
|
300
363
|
getSize,
|
|
301
364
|
redraw,
|
|
302
365
|
makeImageSnapshot,
|
|
366
|
+
measure,
|
|
367
|
+
measureInWindow,
|
|
368
|
+
get canvasRef() {
|
|
369
|
+
return () => canvasRef.current;
|
|
370
|
+
},
|
|
303
371
|
}),
|
|
304
|
-
[setPicture, getSize, redraw, makeImageSnapshot]
|
|
372
|
+
[setPicture, getSize, redraw, makeImageSnapshot, measure, measureInWindow]
|
|
305
373
|
);
|
|
306
374
|
|
|
307
375
|
useEffect(() => {
|
|
@@ -311,8 +379,18 @@ export const SkiaPictureView = forwardRef<
|
|
|
311
379
|
getSize,
|
|
312
380
|
redraw,
|
|
313
381
|
makeImageSnapshot,
|
|
382
|
+
measure,
|
|
383
|
+
measureInWindow,
|
|
314
384
|
} as SkiaPictureViewHandle);
|
|
315
|
-
}, [
|
|
385
|
+
}, [
|
|
386
|
+
setPicture,
|
|
387
|
+
getSize,
|
|
388
|
+
redraw,
|
|
389
|
+
makeImageSnapshot,
|
|
390
|
+
measure,
|
|
391
|
+
measureInWindow,
|
|
392
|
+
props.nativeID,
|
|
393
|
+
]);
|
|
316
394
|
|
|
317
395
|
useEffect(() => {
|
|
318
396
|
if (props.picture) {
|