@shopify/react-native-skia 0.1.220 → 0.1.221

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.
Files changed (62) hide show
  1. package/cpp/api/JsiSkCanvas.h +38 -1
  2. package/cpp/api/JsiSkImage.h +66 -1
  3. package/cpp/api/JsiSkImageInfo.h +19 -0
  4. package/cpp/utils/RNSkTypedArray.h +41 -0
  5. package/lib/commonjs/skia/types/Canvas.d.ts +9 -1
  6. package/lib/commonjs/skia/types/Canvas.js.map +1 -1
  7. package/lib/commonjs/skia/types/Image/Image.d.ts +13 -0
  8. package/lib/commonjs/skia/types/Image/Image.js.map +1 -1
  9. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +14 -11
  10. package/lib/commonjs/skia/types/Image/ImageFactory.js +14 -11
  11. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  12. package/lib/commonjs/skia/web/Host.d.ts +2 -1
  13. package/lib/commonjs/skia/web/Host.js +10 -1
  14. package/lib/commonjs/skia/web/Host.js.map +1 -1
  15. package/lib/commonjs/skia/web/JsiSkCanvas.d.ts +2 -1
  16. package/lib/commonjs/skia/web/JsiSkCanvas.js +11 -0
  17. package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
  18. package/lib/commonjs/skia/web/JsiSkFontMgrFactory.js +1 -3
  19. package/lib/commonjs/skia/web/JsiSkFontMgrFactory.js.map +1 -1
  20. package/lib/commonjs/skia/web/JsiSkImage.d.ts +3 -1
  21. package/lib/commonjs/skia/web/JsiSkImage.js +28 -0
  22. package/lib/commonjs/skia/web/JsiSkImage.js.map +1 -1
  23. package/lib/commonjs/skia/web/JsiSkTypefaceFontProvider.d.ts +2 -2
  24. package/lib/commonjs/skia/web/JsiSkTypefaceFontProvider.js +0 -4
  25. package/lib/commonjs/skia/web/JsiSkTypefaceFontProvider.js.map +1 -1
  26. package/lib/module/skia/types/Canvas.d.ts +9 -1
  27. package/lib/module/skia/types/Canvas.js.map +1 -1
  28. package/lib/module/skia/types/Image/Image.d.ts +13 -0
  29. package/lib/module/skia/types/Image/Image.js.map +1 -1
  30. package/lib/module/skia/types/Image/ImageFactory.d.ts +14 -11
  31. package/lib/module/skia/types/Image/ImageFactory.js +14 -11
  32. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  33. package/lib/module/skia/web/Host.d.ts +2 -1
  34. package/lib/module/skia/web/Host.js +6 -0
  35. package/lib/module/skia/web/Host.js.map +1 -1
  36. package/lib/module/skia/web/JsiSkCanvas.d.ts +2 -1
  37. package/lib/module/skia/web/JsiSkCanvas.js +12 -1
  38. package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
  39. package/lib/module/skia/web/JsiSkFontMgrFactory.js +1 -3
  40. package/lib/module/skia/web/JsiSkFontMgrFactory.js.map +1 -1
  41. package/lib/module/skia/web/JsiSkImage.d.ts +3 -1
  42. package/lib/module/skia/web/JsiSkImage.js +31 -1
  43. package/lib/module/skia/web/JsiSkImage.js.map +1 -1
  44. package/lib/module/skia/web/JsiSkTypefaceFontProvider.d.ts +2 -2
  45. package/lib/module/skia/web/JsiSkTypefaceFontProvider.js +0 -4
  46. package/lib/module/skia/web/JsiSkTypefaceFontProvider.js.map +1 -1
  47. package/lib/typescript/src/skia/types/Canvas.d.ts +9 -1
  48. package/lib/typescript/src/skia/types/Image/Image.d.ts +13 -0
  49. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +14 -11
  50. package/lib/typescript/src/skia/web/Host.d.ts +2 -1
  51. package/lib/typescript/src/skia/web/JsiSkCanvas.d.ts +2 -1
  52. package/lib/typescript/src/skia/web/JsiSkImage.d.ts +3 -1
  53. package/lib/typescript/src/skia/web/JsiSkTypefaceFontProvider.d.ts +2 -2
  54. package/package.json +2 -2
  55. package/src/skia/types/Canvas.ts +14 -1
  56. package/src/skia/types/Image/Image.ts +20 -0
  57. package/src/skia/types/Image/ImageFactory.ts +30 -25
  58. package/src/skia/web/Host.ts +3 -1
  59. package/src/skia/web/JsiSkCanvas.ts +13 -1
  60. package/src/skia/web/JsiSkFontMgrFactory.ts +0 -2
  61. package/src/skia/web/JsiSkImage.ts +42 -3
  62. package/src/skia/web/JsiSkTypefaceFontProvider.ts +0 -4
@@ -1,4 +1,4 @@
1
- import type { CanvasKit, EmbindEnumEntity } from "canvaskit-wasm";
1
+ import type { CanvasKit, EmbindEnumEntity, EmbindEnum } from "canvaskit-wasm";
2
2
 
3
3
  import type { SkJSIInstance } from "../types";
4
4
 
@@ -41,6 +41,8 @@ export abstract class HostObject<T, N extends string> extends BaseHostObject<
41
41
  }
42
42
  }
43
43
 
44
+ export const getCkEnum = (e: EmbindEnum, v: number): EmbindEnumEntity =>
45
+ Object.values(e).find(({ value }) => value === v);
44
46
  export const ckEnum = (value: number): EmbindEnumEntity => ({ value });
45
47
  export const optEnum = (
46
48
  value: number | undefined
@@ -7,6 +7,7 @@ import type {
7
7
  MipmapMode,
8
8
  PointMode,
9
9
  SaveLayerFlag,
10
+ ImageInfo,
10
11
  SkCanvas,
11
12
  SkColor,
12
13
  SkFont,
@@ -24,7 +25,7 @@ import type {
24
25
  SkVertices,
25
26
  } from "../types";
26
27
 
27
- import { ckEnum, HostObject } from "./Host";
28
+ import { ckEnum, getCkEnum, HostObject } from "./Host";
28
29
  import { JsiSkPaint } from "./JsiSkPaint";
29
30
  import { JsiSkRect } from "./JsiSkRect";
30
31
  import { JsiSkRRect } from "./JsiSkRRect";
@@ -374,4 +375,15 @@ export class JsiSkCanvas
374
375
  drawPicture(skp: SkPicture) {
375
376
  this.ref.drawPicture(JsiSkPicture.fromValue(skp));
376
377
  }
378
+
379
+ readPixels(srcX: number, srcY: number, imageInfo: ImageInfo) {
380
+ const pxInfo = {
381
+ width: imageInfo.width,
382
+ height: imageInfo.height,
383
+ colorSpace: this.CanvasKit.ColorSpace.SRGB,
384
+ alphaType: getCkEnum(this.CanvasKit.AlphaType, imageInfo.alphaType),
385
+ colorType: getCkEnum(this.CanvasKit.ColorType, imageInfo.colorType),
386
+ };
387
+ return this.ref.readPixels(srcX, srcY, pxInfo);
388
+ }
377
389
  }
@@ -15,8 +15,6 @@ export class JsiSkFontMgrFactory extends Host implements FontMgrFactory {
15
15
  if (!fontMgr) {
16
16
  throw new Error("Couldn't create system font manager");
17
17
  }
18
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
19
- // @ts-expect-error
20
18
  return new JsiSkFontMgr(this.CanvasKit, fontMgr);
21
19
  }
22
20
  }
@@ -1,16 +1,21 @@
1
- import type { CanvasKit, Image } from "canvaskit-wasm";
1
+ import type {
2
+ CanvasKit,
3
+ ImageInfo as CKImageInfo,
4
+ Image,
5
+ } from "canvaskit-wasm";
2
6
 
3
7
  import type {
4
- ImageFormat,
5
8
  FilterMode,
6
9
  MipmapMode,
7
10
  SkImage,
8
11
  SkMatrix,
9
12
  SkShader,
10
13
  TileMode,
14
+ ImageFormat,
15
+ ImageInfo,
11
16
  } from "../types";
12
17
 
13
- import { ckEnum, HostObject } from "./Host";
18
+ import { ckEnum, getCkEnum, HostObject } from "./Host";
14
19
  import { JsiSkMatrix } from "./JsiSkMatrix";
15
20
  import { JsiSkShader } from "./JsiSkShader";
16
21
 
@@ -52,6 +57,16 @@ export class JsiSkImage extends HostObject<Image, "Image"> implements SkImage {
52
57
  return this.ref.width();
53
58
  }
54
59
 
60
+ getImageInfo(): ImageInfo {
61
+ const info = this.ref.getImageInfo();
62
+ return {
63
+ width: info.width,
64
+ height: info.height,
65
+ colorType: info.colorType.value,
66
+ alphaType: info.alphaType.value,
67
+ };
68
+ }
69
+
55
70
  makeShaderOptions(
56
71
  tx: TileMode,
57
72
  ty: TileMode,
@@ -110,6 +125,30 @@ export class JsiSkImage extends HostObject<Image, "Image"> implements SkImage {
110
125
  return toBase64String(bytes);
111
126
  }
112
127
 
128
+ readPixels(srcX?: number, srcY?: number, imageInfo?: ImageInfo) {
129
+ const info = this.getImageInfo();
130
+ console.log({
131
+ alphaType: ckEnum(info.alphaType),
132
+ colorType: ckEnum(info.colorType),
133
+ realAlphaType: this.CanvasKit.AlphaType.Opaque.value,
134
+ realColorType: this.CanvasKit.ColorType.RGBA_8888.value,
135
+ });
136
+ const pxInfo: CKImageInfo = {
137
+ colorSpace: this.CanvasKit.ColorSpace.SRGB,
138
+ width: imageInfo?.width ?? info.width,
139
+ height: imageInfo?.height ?? info.height,
140
+ alphaType: getCkEnum(
141
+ this.CanvasKit.AlphaType,
142
+ (imageInfo ?? info).alphaType
143
+ ),
144
+ colorType: getCkEnum(
145
+ this.CanvasKit.ColorType,
146
+ (imageInfo ?? info).colorType
147
+ ),
148
+ };
149
+ return this.ref.readPixels(srcX ?? 0, srcY ?? 0, pxInfo);
150
+ }
151
+
113
152
  dispose = () => {
114
153
  this.ref.delete();
115
154
  };
@@ -19,13 +19,9 @@ export class JsiSkTypefaceFontProvider
19
19
  throw new NotImplementedOnRNWeb();
20
20
  }
21
21
  countFamilies() {
22
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
23
- // @ts-expect-error
24
22
  return this.ref.countFamilies();
25
23
  }
26
24
  getFamilyName(index: number) {
27
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
28
- // @ts-expect-error
29
25
  return this.ref.getFamilyName(index);
30
26
  }
31
27
  registerFont(typeface: SkTypeface, familyName: string) {