@shopify/react-native-skia 0.1.230 → 0.1.231

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 (99) hide show
  1. package/android/CMakeLists.txt +1 -0
  2. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.cpp +2 -2
  3. package/cpp/api/JsiSkAnimatedImage.h +1 -1
  4. package/cpp/api/JsiSkDataFactory.h +6 -6
  5. package/cpp/api/JsiSkImage.h +4 -4
  6. package/cpp/api/JsiSkPath.h +1 -1
  7. package/cpp/api/JsiSkRRect.h +30 -3
  8. package/cpp/api/third_party/base64.cpp +153 -0
  9. package/cpp/api/third_party/base64.h +50 -0
  10. package/cpp/jsi/JsiPromises.h +1 -1
  11. package/cpp/rnskia/dom/props/FontProp.h +4 -1
  12. package/cpp/rnskia/dom/props/RRectProp.h +50 -0
  13. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.mm +1 -1
  14. package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +2 -1
  15. package/lib/commonjs/dom/nodes/datatypes/Rect.d.ts +1 -1
  16. package/lib/commonjs/dom/nodes/drawings/RRectNode.d.ts +3 -3
  17. package/lib/commonjs/dom/nodes/drawings/RRectNode.js.map +1 -1
  18. package/lib/commonjs/dom/types/Common.d.ts +2 -2
  19. package/lib/commonjs/dom/types/Common.js.map +1 -1
  20. package/lib/commonjs/headless/index.d.ts +3 -1
  21. package/lib/commonjs/headless/index.js +12 -6
  22. package/lib/commonjs/headless/index.js.map +1 -1
  23. package/lib/commonjs/skia/types/Canvas.d.ts +4 -4
  24. package/lib/commonjs/skia/types/Canvas.js.map +1 -1
  25. package/lib/commonjs/skia/types/Path/Path.d.ts +2 -2
  26. package/lib/commonjs/skia/types/Path/Path.js.map +1 -1
  27. package/lib/commonjs/skia/types/RRect.d.ts +9 -0
  28. package/lib/commonjs/skia/types/RRect.js.map +1 -1
  29. package/lib/commonjs/skia/web/JsiSkCanvas.d.ts +4 -4
  30. package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
  31. package/lib/commonjs/skia/web/JsiSkPath.d.ts +2 -2
  32. package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
  33. package/lib/commonjs/skia/web/JsiSkRRect.d.ts +2 -2
  34. package/lib/commonjs/skia/web/JsiSkRRect.js +4 -0
  35. package/lib/commonjs/skia/web/JsiSkRRect.js.map +1 -1
  36. package/lib/module/dom/nodes/JsiSkDOM.d.ts +2 -1
  37. package/lib/module/dom/nodes/datatypes/Rect.d.ts +1 -1
  38. package/lib/module/dom/nodes/drawings/RRectNode.d.ts +3 -3
  39. package/lib/module/dom/nodes/drawings/RRectNode.js.map +1 -1
  40. package/lib/module/dom/types/Common.d.ts +2 -2
  41. package/lib/module/dom/types/Common.js.map +1 -1
  42. package/lib/module/headless/index.d.ts +3 -1
  43. package/lib/module/headless/index.js +5 -3
  44. package/lib/module/headless/index.js.map +1 -1
  45. package/lib/module/skia/types/Canvas.d.ts +4 -4
  46. package/lib/module/skia/types/Canvas.js.map +1 -1
  47. package/lib/module/skia/types/Path/Path.d.ts +2 -2
  48. package/lib/module/skia/types/Path/Path.js.map +1 -1
  49. package/lib/module/skia/types/RRect.d.ts +9 -0
  50. package/lib/module/skia/types/RRect.js.map +1 -1
  51. package/lib/module/skia/web/JsiSkCanvas.d.ts +4 -4
  52. package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
  53. package/lib/module/skia/web/JsiSkPath.d.ts +2 -2
  54. package/lib/module/skia/web/JsiSkPath.js.map +1 -1
  55. package/lib/module/skia/web/JsiSkRRect.d.ts +2 -2
  56. package/lib/module/skia/web/JsiSkRRect.js +4 -0
  57. package/lib/module/skia/web/JsiSkRRect.js.map +1 -1
  58. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +2 -1
  59. package/lib/typescript/src/dom/nodes/datatypes/Rect.d.ts +1 -1
  60. package/lib/typescript/src/dom/nodes/drawings/RRectNode.d.ts +3 -3
  61. package/lib/typescript/src/dom/types/Common.d.ts +2 -2
  62. package/lib/typescript/src/headless/index.d.ts +3 -1
  63. package/lib/typescript/src/skia/types/Canvas.d.ts +4 -4
  64. package/lib/typescript/src/skia/types/Path/Path.d.ts +2 -2
  65. package/lib/typescript/src/skia/types/RRect.d.ts +9 -0
  66. package/lib/typescript/src/skia/web/JsiSkCanvas.d.ts +4 -4
  67. package/lib/typescript/src/skia/web/JsiSkPath.d.ts +2 -2
  68. package/lib/typescript/src/skia/web/JsiSkRRect.d.ts +2 -2
  69. package/libs/android/arm64-v8a/libskia.a +0 -0
  70. package/libs/android/armeabi-v7a/libskia.a +0 -0
  71. package/libs/android/x86/libskia.a +0 -0
  72. package/libs/android/x86_64/libskia.a +0 -0
  73. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  74. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  75. package/libs/ios/libskottie.xcframework/Info.plist +5 -5
  76. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  77. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  78. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  79. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  80. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  81. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  82. package/libs/ios/libskshaper.xcframework/Info.plist +5 -5
  83. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  84. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  85. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  86. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  87. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  88. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  89. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  90. package/package.json +1 -1
  91. package/src/dom/nodes/drawings/RRectNode.ts +2 -2
  92. package/src/dom/types/Common.ts +2 -1
  93. package/src/headless/index.ts +7 -3
  94. package/src/skia/types/Canvas.ts +4 -4
  95. package/src/skia/types/Path/Path.ts +2 -2
  96. package/src/skia/types/RRect.ts +11 -0
  97. package/src/skia/web/JsiSkCanvas.ts +4 -4
  98. package/src/skia/web/JsiSkPath.ts +2 -2
  99. package/src/skia/web/JsiSkRRect.ts +23 -2
@@ -62,6 +62,7 @@ add_library(
62
62
  "${PROJECT_SOURCE_DIR}/../cpp/rnskia/dom/base/ConcatablePaint.cpp"
63
63
 
64
64
  "${PROJECT_SOURCE_DIR}/../cpp/api/third_party/CSSColorParser.cpp"
65
+ "${PROJECT_SOURCE_DIR}/../cpp/api/third_party/base64.cpp"
65
66
 
66
67
  )
67
68
 
@@ -31,8 +31,8 @@ sk_sp<SkSurface> SkiaOpenGLSurfaceFactory::makeOffscreenSurface(int width,
31
31
  // Create texture
32
32
  auto texture =
33
33
  ThreadContextHolder::ThreadSkiaOpenGLContext.directContext
34
- ->createBackendTexture(width, height, colorType, GrMipMapped::kNo,
35
- GrRenderable::kYes);
34
+ ->createBackendTexture(width, height, colorType,
35
+ skgpu::Mipmapped::kNo, GrRenderable::kYes);
36
36
 
37
37
  struct ReleaseContext {
38
38
  SkiaOpenGLContext *context;
@@ -5,12 +5,12 @@
5
5
  #include <utility>
6
6
 
7
7
  #include "JsiSkHostObjects.h"
8
+ #include "third_party/base64.h"
8
9
 
9
10
  #pragma clang diagnostic push
10
11
  #pragma clang diagnostic ignored "-Wdocumentation"
11
12
 
12
13
  #include "JsiSkImage.h"
13
- #include "SkBase64.h"
14
14
  #include "SkStream.h"
15
15
  #include "include/codec/SkEncodedImageFormat.h"
16
16
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  #include "JsiPromises.h"
9
9
  #include "JsiSkData.h"
10
- #include "SkBase64.h"
10
+ #include "third_party/base64.h"
11
11
 
12
12
  namespace RNSkia {
13
13
 
@@ -67,17 +67,17 @@ public:
67
67
  // Calculate length
68
68
  size_t len;
69
69
  auto err =
70
- SkBase64::Decode(&base64.utf8(runtime).c_str()[0], size, nullptr, &len);
71
- if (err != SkBase64::Error::kNoError) {
70
+ Base64::Decode(&base64.utf8(runtime).c_str()[0], size, nullptr, &len);
71
+ if (err != Base64::Error::kNone) {
72
72
  throw jsi::JSError(runtime, "Error decoding base64 string");
73
73
  return jsi::Value::undefined();
74
74
  }
75
75
 
76
76
  // Create data object and decode
77
77
  auto data = SkData::MakeUninitialized(len);
78
- err = SkBase64::Decode(&base64.utf8(runtime).c_str()[0], size,
79
- data->writable_data(), &len);
80
- if (err != SkBase64::Error::kNoError) {
78
+ err = Base64::Decode(&base64.utf8(runtime).c_str()[0], size,
79
+ data->writable_data(), &len);
80
+ if (err != Base64::Error::kNone) {
81
81
  throw jsi::JSError(runtime, "Error decoding base64 string");
82
82
  return jsi::Value::undefined();
83
83
  }
@@ -8,13 +8,13 @@
8
8
  #include "JsiSkImageInfo.h"
9
9
  #include "JsiSkMatrix.h"
10
10
  #include "JsiSkShader.h"
11
+ #include "third_party/base64.h"
11
12
 
12
13
  #include "RNSkTypedArray.h"
13
14
 
14
15
  #pragma clang diagnostic push
15
16
  #pragma clang diagnostic ignored "-Wdocumentation"
16
17
 
17
- #include "SkBase64.h"
18
18
  #include "SkImage.h"
19
19
  #include "SkStream.h"
20
20
  #include "include/codec/SkEncodedImageFormat.h"
@@ -133,10 +133,10 @@ public:
133
133
  JSI_HOST_FUNCTION(encodeToBase64) {
134
134
  auto data = encodeImageData(arguments, count);
135
135
 
136
- auto len = SkBase64::Encode(data->bytes(), data->size(), nullptr);
136
+ auto len = Base64::Encode(data->bytes(), data->size(), nullptr);
137
137
  auto buffer = std::string(len, 0);
138
- SkBase64::Encode(data->bytes(), data->size(),
139
- reinterpret_cast<void *>(&buffer[0]));
138
+ Base64::Encode(data->bytes(), data->size(),
139
+ reinterpret_cast<void *>(&buffer[0]));
140
140
  return jsi::String::createFromAscii(runtime, buffer);
141
141
  }
142
142
 
@@ -494,7 +494,7 @@ public:
494
494
  JSI_HOST_FUNCTION(interpolate) {
495
495
  auto path2 = JsiSkPath::fromValue(runtime, arguments[0]);
496
496
  auto weight = arguments[1].asNumber();
497
- if (count > 2) {
497
+ if (count > 2 && !arguments[2].isUndefined()) {
498
498
  auto path3 = JsiSkPath::fromValue(runtime, arguments[2]);
499
499
  auto succeed = getObject()->interpolate(*path2, weight, path3.get());
500
500
  if (!succeed) {
@@ -2,6 +2,7 @@
2
2
 
3
3
  #include <memory>
4
4
  #include <utility>
5
+ #include <vector>
5
6
 
6
7
  #include <jsi/jsi.h>
7
8
 
@@ -61,9 +62,35 @@ public:
61
62
  } else {
62
63
  auto rect =
63
64
  JsiSkRect::fromValue(runtime, object.getProperty(runtime, "rect"));
64
- auto rx = object.getProperty(runtime, "rx").asNumber();
65
- auto ry = object.getProperty(runtime, "ry").asNumber();
66
- return std::make_shared<SkRRect>(SkRRect::MakeRectXY(*rect, rx, ry));
65
+ if (!object.getProperty(runtime, "rx").isUndefined()) {
66
+ auto rx = object.getProperty(runtime, "rx").asNumber();
67
+ auto ry = object.getProperty(runtime, "ry").asNumber();
68
+ return std::make_shared<SkRRect>(SkRRect::MakeRectXY(*rect, rx, ry));
69
+ } else if (object.getProperty(runtime, "topLeft").isObject() &&
70
+ object.getProperty(runtime, "topRight").isObject() &&
71
+ object.getProperty(runtime, "bottomRight").isObject() &&
72
+ object.getProperty(runtime, "bottomLeft").isObject()) {
73
+ std::vector<SkPoint> points;
74
+ std::shared_ptr<SkPoint> topLeft = JsiSkPoint::fromValue(
75
+ runtime, object.getProperty(runtime, "topLeft").asObject(runtime));
76
+ std::shared_ptr<SkPoint> topRight = JsiSkPoint::fromValue(
77
+ runtime, object.getProperty(runtime, "topRight").asObject(runtime));
78
+ std::shared_ptr<SkPoint> bottomRight = JsiSkPoint::fromValue(
79
+ runtime,
80
+ object.getProperty(runtime, "bottomRight").asObject(runtime));
81
+ std::shared_ptr<SkPoint> bottomLeft = JsiSkPoint::fromValue(
82
+ runtime,
83
+ object.getProperty(runtime, "bottomLeft").asObject(runtime));
84
+ points.push_back(*topLeft.get());
85
+ points.push_back(*topRight.get());
86
+ points.push_back(*bottomRight.get());
87
+ points.push_back(*bottomLeft.get());
88
+ auto rrect = SkRRect::MakeEmpty();
89
+ rrect.setRectRadii(*rect, points.data());
90
+ return std::make_shared<SkRRect>(rrect);
91
+ } else {
92
+ throw jsi::JSError(runtime, "Invalid RRect object");
93
+ }
67
94
  }
68
95
  }
69
96
 
@@ -0,0 +1,153 @@
1
+ /*
2
+ * Copyright 2006 The Android Open Source Project
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+ #include "third_party/base64.h"
8
+
9
+ #include <cstdint>
10
+
11
+ #define DecodePad -2
12
+ #define EncodePad 64
13
+
14
+ static const char kDefaultEncode[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
15
+ "abcdefghijklmnopqrstuvwxyz"
16
+ "0123456789+/=";
17
+
18
+ static const signed char kDecodeData[] = {
19
+ 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1,
20
+ -1, -1, DecodePad, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
21
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
22
+ -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
23
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51};
24
+
25
+ namespace RNSkia {
26
+
27
+ Base64::Error Base64::Decode(const void *srcv, size_t srcLength, void *dstv,
28
+ size_t *dstLength) {
29
+ const unsigned char *src = static_cast<const unsigned char *>(srcv);
30
+ unsigned char *dst = static_cast<unsigned char *>(dstv);
31
+
32
+ int i = 0;
33
+ bool padTwo = false;
34
+ bool padThree = false;
35
+ char unsigned const *const end = src + srcLength;
36
+ while (src < end) {
37
+ unsigned char bytes[4] = {0, 0, 0, 0};
38
+ int byte = 0;
39
+ do {
40
+ unsigned char srcByte = *src++;
41
+ if (srcByte == 0) {
42
+ *dstLength = i;
43
+ return Error::kNone;
44
+ }
45
+ if (srcByte <= ' ') {
46
+ continue; // treat as white space
47
+ }
48
+ if (srcByte < '+' || srcByte > 'z') {
49
+ return Error::kBadChar;
50
+ }
51
+ signed char decoded = kDecodeData[srcByte - '+'];
52
+ bytes[byte] = decoded;
53
+ if (decoded != DecodePad) {
54
+ if (decoded < 0) {
55
+ return Error::kBadChar;
56
+ }
57
+ byte++;
58
+ if (*src) {
59
+ continue;
60
+ }
61
+ if (byte == 0) {
62
+ *dstLength = i;
63
+ return Error::kNone;
64
+ }
65
+ if (byte == 4) {
66
+ break;
67
+ }
68
+ }
69
+ // As an optimization, if we find an equals sign
70
+ // we assume all future bytes to read are the
71
+ // appropriate number of padding equals signs.
72
+ if (byte < 2) {
73
+ return Error::kBadPadding;
74
+ }
75
+ padThree = true;
76
+ if (byte == 2) {
77
+ padTwo = true;
78
+ }
79
+ break;
80
+ } while (byte < 4);
81
+ int two = 0;
82
+ int three = 0;
83
+ if (dst) {
84
+ int one = (uint8_t)(bytes[0] << 2);
85
+ two = bytes[1];
86
+ one |= two >> 4;
87
+ two = (uint8_t)((two << 4) & 0xFF);
88
+ three = bytes[2];
89
+ two |= three >> 2;
90
+ three = (uint8_t)((three << 6) & 0xFF);
91
+ three |= bytes[3];
92
+ dst[i] = (unsigned char)one;
93
+ }
94
+ i++;
95
+ if (padTwo) {
96
+ break;
97
+ }
98
+ if (dst) {
99
+ dst[i] = (unsigned char)two;
100
+ }
101
+ i++;
102
+ if (padThree) {
103
+ break;
104
+ }
105
+ if (dst) {
106
+ dst[i] = (unsigned char)three;
107
+ }
108
+ i++;
109
+ }
110
+ *dstLength = i;
111
+ return Error::kNone;
112
+ }
113
+
114
+ size_t Base64::Encode(const void *srcv, size_t length, void *dstv) {
115
+ const unsigned char *src = static_cast<const unsigned char *>(srcv);
116
+ unsigned char *dst = static_cast<unsigned char *>(dstv);
117
+
118
+ const char *encode = kDefaultEncode;
119
+ if (dst) {
120
+ size_t remainder = length % 3;
121
+ char unsigned const *const end = &src[length - remainder];
122
+ while (src < end) {
123
+ unsigned a = *src++;
124
+ unsigned b = *src++;
125
+ unsigned c = *src++;
126
+ int d = c & 0x3F;
127
+ c = (c >> 6 | b << 2) & 0x3F;
128
+ b = (b >> 4 | a << 4) & 0x3F;
129
+ a = a >> 2;
130
+ *dst++ = encode[a];
131
+ *dst++ = encode[b];
132
+ *dst++ = encode[c];
133
+ *dst++ = encode[d];
134
+ }
135
+ if (remainder > 0) {
136
+ int k1 = 0;
137
+ int k2 = EncodePad;
138
+ int a = (uint8_t)*src++;
139
+ if (remainder == 2) {
140
+ int b = *src++;
141
+ k1 = b >> 4;
142
+ k2 = (b << 2) & 0x3F;
143
+ }
144
+ *dst++ = encode[a >> 2];
145
+ *dst++ = encode[(k1 | a << 4) & 0x3F];
146
+ *dst++ = encode[k2];
147
+ *dst++ = encode[EncodePad];
148
+ }
149
+ }
150
+ return (length + 2) / 3 * 4;
151
+ }
152
+
153
+ } // namespace RNSkia
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Copyright 2006 The Android Open Source Project
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+ #pragma once
8
+
9
+ #include <cstddef>
10
+
11
+ namespace RNSkia {
12
+
13
+ struct Base64 {
14
+ public:
15
+ enum class Error {
16
+ kNone,
17
+ kBadPadding,
18
+ kBadChar,
19
+ };
20
+
21
+ /**
22
+ Base64 encodes src into dst.
23
+
24
+ Normally this is called once with 'dst' nullptr to get the required size,
25
+ then again with an allocated 'dst' pointer to do the actual encoding.
26
+
27
+ @param dst nullptr or a pointer to a buffer large enough to receive the
28
+ result
29
+
30
+ @return the required length of dst for encoding.
31
+ */
32
+ static size_t Encode(const void *src, size_t length, void *dst);
33
+
34
+ /**
35
+ Base64 decodes src into dst.
36
+
37
+ Normally this is called once with 'dst' nullptr to get the required size,
38
+ then again with an allocated 'dst' pointer to do the actual encoding.
39
+
40
+ @param dst nullptr or a pointer to a buffer large enough to receive the
41
+ result
42
+
43
+ @param dstLength assigned the length dst is required to be. Must not be
44
+ nullptr.
45
+ */
46
+ [[nodiscard]] static Error Decode(const void *src, size_t srcLength,
47
+ void *dst, size_t *dstLength);
48
+ };
49
+
50
+ } // namespace RNSkia
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include <jsi/jsi.h>
8
8
 
9
- #include "SkBase64.h"
9
+ #include "third_party/base64.h"
10
10
 
11
11
  namespace RNJsi {
12
12
  namespace jsi = facebook::jsi;
@@ -31,7 +31,10 @@ public:
31
31
  "Expected SkFont object or null/undefined for the Font property.");
32
32
  }
33
33
  } else {
34
- auto font = std::make_shared<SkFont>(SkFont());
34
+ auto fm = SkFontMgr::RefDefault();
35
+ sk_sp<SkTypeface> typeface =
36
+ fm->legacyMakeTypeface(nullptr, SkFontStyle());
37
+ auto font = std::make_shared<SkFont>(SkFont(typeface));
35
38
  font->setSize(14);
36
39
  setDerivedValue(font);
37
40
  }
@@ -5,6 +5,7 @@
5
5
  #include "RectProp.h"
6
6
 
7
7
  #include <memory>
8
+ #include <vector>
8
9
 
9
10
  #pragma clang diagnostic push
10
11
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -19,6 +20,10 @@ namespace RNSkia {
19
20
  static PropId PropNameRx = JsiPropId::get("rx");
20
21
  static PropId PropNameRy = JsiPropId::get("ry");
21
22
  static PropId PropNameR = JsiPropId::get("r");
23
+ static PropId PropNameTopLeft = JsiPropId::get("topLeft");
24
+ static PropId PropNameTopRight = JsiPropId::get("topRight");
25
+ static PropId PropNameBottomRight = JsiPropId::get("bottomRight");
26
+ static PropId PropNameBottomLeft = JsiPropId::get("bottomLeft");
22
27
 
23
28
  /**
24
29
  Reads a rect from a given propety in the node. The name of the property is
@@ -64,6 +69,51 @@ public:
64
69
  width.getAsNumber(), height.getAsNumber()),
65
70
  rx.getAsNumber(), ry.getAsNumber()));
66
71
  }
72
+ } else if (value.hasValue(PropNameRect) &&
73
+ value.hasValue(PropNameTopLeft) &&
74
+ value.hasValue(PropNameTopRight) &&
75
+ value.hasValue(PropNameBottomRight) &&
76
+ value.hasValue(PropNameBottomLeft)) {
77
+ auto rect = value.getValue(PropNameRect);
78
+ if (rect.hasValue(PropNameX) && rect.hasValue(PropNameY) &&
79
+ rect.hasValue(PropNameWidth) && rect.hasValue(PropNameHeight)) {
80
+ auto x = rect.getValue(PropNameX);
81
+ auto y = rect.getValue(PropNameY);
82
+ auto width = rect.getValue(PropNameWidth);
83
+ auto height = rect.getValue(PropNameHeight);
84
+ std::vector<SkPoint> points;
85
+ points.reserve(4);
86
+ auto topLeft = value.getValue(PropNameTopLeft);
87
+ auto topLeftX = topLeft.getValue(PropNameX);
88
+ auto topLeftY = topLeft.getValue(PropNameY);
89
+ points.push_back(
90
+ SkPoint::Make(topLeftX.getAsNumber(), topLeftY.getAsNumber()));
91
+
92
+ auto topRight = value.getValue(PropNameTopRight);
93
+ auto topRightX = topRight.getValue(PropNameX);
94
+ auto topRightY = topRight.getValue(PropNameY);
95
+ points.push_back(SkPoint::Make(topRightX.getAsNumber(),
96
+ topRightY.getAsNumber()));
97
+
98
+ auto bottomRight = value.getValue(PropNameBottomRight);
99
+ auto bottomRightX = bottomRight.getValue(PropNameX);
100
+ auto bottomRightY = bottomRight.getValue(PropNameY);
101
+ points.push_back(SkPoint::Make(bottomRightX.getAsNumber(),
102
+ bottomRightY.getAsNumber()));
103
+
104
+ auto bottomLeft = value.getValue(PropNameBottomLeft);
105
+ auto bottomLeftX = bottomLeft.getValue(PropNameX);
106
+ auto bottomLeftY = bottomLeft.getValue(PropNameY);
107
+ points.push_back(SkPoint::Make(bottomLeftX.getAsNumber(),
108
+ bottomLeftY.getAsNumber()));
109
+
110
+ auto rrect = std::make_shared<SkRRect>(SkRRect::MakeEmpty());
111
+ rrect->setRectRadii(
112
+ SkRect::MakeXYWH(x.getAsNumber(), y.getAsNumber(),
113
+ width.getAsNumber(), height.getAsNumber()),
114
+ points.data());
115
+ return rrect;
116
+ }
67
117
  }
68
118
  }
69
119
  }
@@ -92,7 +92,7 @@ sk_sp<SkSurface> SkiaMetalSurfaceFactory::makeOffscreenSurface(int width,
92
92
  // Create a GrBackendTexture from the Metal texture
93
93
  GrMtlTextureInfo info;
94
94
  info.fTexture.retain((__bridge void *)ctx->texture);
95
- GrBackendTexture backendTexture(width, height, GrMipMapped::kNo, info);
95
+ GrBackendTexture backendTexture(width, height, skgpu::Mipmapped::kNo, info);
96
96
 
97
97
  // Create a SkSurface from the GrBackendTexture
98
98
  auto surface = SkSurfaces::WrapBackendTexture(
@@ -2,6 +2,7 @@ import type { PathProps, SkDOM, GroupProps, ImageProps, BlurImageFilterProps, Ma
2
2
  import type { BlendImageFilterProps, BlendProps, DisplacementMapImageFilterProps, DropShadowImageFilterProps, MorphologyImageFilterProps, RuntimeShaderImageFilterProps } from "../types/ImageFilters";
3
3
  import type { CornerPathEffectProps, DashPathEffectProps, DiscretePathEffectProps, Line2DPathEffectProps, Path1DPathEffectProps, Path2DPathEffectProps } from "../types/PathEffects";
4
4
  import type { ParagraphProps } from "../types/Paragraph";
5
+ import { RRectNode } from "./drawings";
5
6
  import type { NodeContext } from "./Node";
6
7
  export declare class JsiSkDOM implements SkDOM {
7
8
  private ctx;
@@ -18,7 +19,7 @@ export declare class JsiSkDOM implements SkDOM {
18
19
  Patch(props: PatchProps): import("../types").RenderNode<PatchProps>;
19
20
  Points(props: PointsProps): import("../types").RenderNode<PointsProps>;
20
21
  Rect(props: RectProps): import("./DrawingNode").JsiDrawingNode<RectProps, import("../..").SkRect>;
21
- RRect(props: RoundedRectProps): import("./DrawingNode").JsiDrawingNode<RoundedRectProps, import("../..").SkRRect>;
22
+ RRect(props: RoundedRectProps): import("./DrawingNode").JsiDrawingNode<RoundedRectProps, import("../..").SkRRect> | RRectNode;
22
23
  Vertices(props: VerticesProps): import("../types").RenderNode<VerticesProps>;
23
24
  Text(props: TextProps): import("../types").RenderNode<TextProps>;
24
25
  TextPath(props: TextPathProps): import("../types").RenderNode<TextPathProps>;
@@ -2,4 +2,4 @@ import type { Skia, SkRect, Vector } from "../../../skia/types";
2
2
  import type { RectDef, RRectDef } from "../../types";
3
3
  export declare const isEdge: (pos: Vector, b: SkRect) => boolean;
4
4
  export declare const processRect: (Skia: Skia, def: RectDef) => SkRect;
5
- export declare const processRRect: (Skia: Skia, def: RRectDef) => import("../../../skia/types").SkRRect;
5
+ export declare const processRRect: (Skia: Skia, def: RRectDef) => import("../../../skia/types").InputRRect;
@@ -1,10 +1,10 @@
1
- import type { SkRRect } from "../../../skia/types";
1
+ import type { InputRRect, SkRRect } from "../../../skia/types";
2
2
  import type { DrawingContext, RoundedRectProps } from "../../types";
3
3
  import { JsiDrawingNode } from "../DrawingNode";
4
4
  import type { NodeContext } from "../Node";
5
- export declare class RRectNode extends JsiDrawingNode<RoundedRectProps, SkRRect> {
5
+ export declare class RRectNode extends JsiDrawingNode<RoundedRectProps, InputRRect> {
6
6
  rect?: SkRRect;
7
7
  constructor(ctx: NodeContext, props: RoundedRectProps);
8
- protected deriveProps(): SkRRect;
8
+ protected deriveProps(): InputRRect;
9
9
  draw({ canvas, paint }: DrawingContext): void;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"names":["RRectNode","JsiDrawingNode","constructor","ctx","props","NodeType","RRect","deriveProps","processRRect","Skia","draw","canvas","paint","derived","undefined","Error","drawRRect"],"sources":["RRectNode.ts"],"sourcesContent":["import type { SkRRect } from \"../../../skia/types\";\nimport type { DrawingContext, RoundedRectProps } from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { processRRect } from \"../datatypes\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class RRectNode extends JsiDrawingNode<RoundedRectProps, SkRRect> {\n rect?: SkRRect;\n\n constructor(ctx: NodeContext, props: RoundedRectProps) {\n super(ctx, NodeType.RRect, props);\n }\n\n protected deriveProps() {\n return processRRect(this.Skia, this.props);\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (this.derived === undefined) {\n throw new Error(\"RRectNode: rect is undefined\");\n }\n canvas.drawRRect(this.derived, paint);\n }\n}\n"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;;;AAGO,MAAMA,SAAN,SAAwBC,2BAAxB,CAAkE;EAGvEC,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAA4C;IACrD,MAAMD,GAAN,EAAWE,eAAA,CAASC,KAApB,EAA2BF,KAA3B;;IADqD;EAEtD;;EAESG,WAAW,GAAG;IACtB,OAAO,IAAAC,uBAAA,EAAa,KAAKC,IAAlB,EAAwB,KAAKL,KAA7B,CAAP;EACD;;EAEDM,IAAI,OAAoC;IAAA,IAAnC;MAAEC,MAAF;MAAUC;IAAV,CAAmC;;IACtC,IAAI,KAAKC,OAAL,KAAiBC,SAArB,EAAgC;MAC9B,MAAM,IAAIC,KAAJ,CAAU,8BAAV,CAAN;IACD;;IACDJ,MAAM,CAACK,SAAP,CAAiB,KAAKH,OAAtB,EAA+BD,KAA/B;EACD;;AAhBsE"}
1
+ {"version":3,"names":["RRectNode","JsiDrawingNode","constructor","ctx","props","NodeType","RRect","deriveProps","processRRect","Skia","draw","canvas","paint","derived","undefined","Error","drawRRect"],"sources":["RRectNode.ts"],"sourcesContent":["import type { InputRRect, SkRRect } from \"../../../skia/types\";\nimport type { DrawingContext, RoundedRectProps } from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { processRRect } from \"../datatypes\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class RRectNode extends JsiDrawingNode<RoundedRectProps, InputRRect> {\n rect?: SkRRect;\n\n constructor(ctx: NodeContext, props: RoundedRectProps) {\n super(ctx, NodeType.RRect, props);\n }\n\n protected deriveProps() {\n return processRRect(this.Skia, this.props);\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (this.derived === undefined) {\n throw new Error(\"RRectNode: rect is undefined\");\n }\n canvas.drawRRect(this.derived, paint);\n }\n}\n"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;;;AAGO,MAAMA,SAAN,SAAwBC,2BAAxB,CAAqE;EAG1EC,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAA4C;IACrD,MAAMD,GAAN,EAAWE,eAAA,CAASC,KAApB,EAA2BF,KAA3B;;IADqD;EAEtD;;EAESG,WAAW,GAAG;IACtB,OAAO,IAAAC,uBAAA,EAAa,KAAKC,IAAlB,EAAwB,KAAKL,KAA7B,CAAP;EACD;;EAEDM,IAAI,OAAoC;IAAA,IAAnC;MAAEC,MAAF;MAAUC;IAAV,CAAmC;;IACtC,IAAI,KAAKC,OAAL,KAAiBC,SAArB,EAAgC;MAC9B,MAAM,IAAIC,KAAJ,CAAU,8BAAV,CAAN;IACD;;IACDJ,MAAM,CAACK,SAAP,CAAiB,KAAKH,OAAtB,EAA+BD,KAA/B;EACD;;AAhByE"}
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import type { BlendMode, Color, InputMatrix, PaintStyle, SkPaint, SkPath, SkRect, SkRRect, StrokeCap, StrokeJoin, Transforms3d, Vector } from "../../skia/types";
2
+ import type { BlendMode, Color, InputMatrix, InputRRect, PaintStyle, SkPaint, SkPath, SkRect, SkRRect, StrokeCap, StrokeJoin, Transforms3d, Vector } from "../../skia/types";
3
3
  export type SkEnum<T> = Uncapitalize<keyof T extends string ? keyof T : never>;
4
4
  export type PathDef = string | SkPath;
5
5
  export type ClipDef = SkRRect | SkRect | PathDef;
@@ -21,7 +21,7 @@ export type RectDef = RectCtor | {
21
21
  rect: SkRect;
22
22
  };
23
23
  export type RRectDef = RRectCtor | {
24
- rect: SkRRect;
24
+ rect: InputRRect;
25
25
  };
26
26
  export interface PointCircleDef {
27
27
  c?: Vector;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["Common.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nimport type {\n BlendMode,\n Color,\n InputMatrix,\n PaintStyle,\n SkPaint,\n SkPath,\n SkRect,\n SkRRect,\n StrokeCap,\n StrokeJoin,\n Transforms3d,\n Vector,\n} from \"../../skia/types\";\n\nexport type SkEnum<T> = Uncapitalize<keyof T extends string ? keyof T : never>;\n\nexport type PathDef = string | SkPath;\n\nexport type ClipDef = SkRRect | SkRect | PathDef;\n\nexport type Fit =\n | \"cover\"\n | \"contain\"\n | \"fill\"\n | \"fitHeight\"\n | \"fitWidth\"\n | \"none\"\n | \"scaleDown\";\n\nexport type Radius = number | Vector;\n\nexport interface ChildrenProps {\n children?: ReactNode | ReactNode[];\n}\n\nexport interface RectCtor {\n x?: number;\n y?: number;\n width: number;\n height: number;\n}\n\nexport interface RRectCtor extends RectCtor {\n r?: Radius;\n}\n\nexport type RectDef = RectCtor | { rect: SkRect };\nexport type RRectDef = RRectCtor | { rect: SkRRect };\n\nexport interface PointCircleDef {\n c?: Vector;\n r: number;\n}\n\nexport interface ScalarCircleDef {\n cx: number;\n cy: number;\n r: number;\n}\n\nexport type CircleDef = PointCircleDef | ScalarCircleDef;\n\nexport interface TransformProps {\n transform?: Transforms3d;\n origin?: Vector;\n matrix?: InputMatrix;\n}\n\nexport interface PaintProps extends ChildrenProps {\n color?: Color;\n strokeWidth?: number;\n blendMode?: SkEnum<typeof BlendMode>;\n style?: SkEnum<typeof PaintStyle>;\n strokeJoin?: SkEnum<typeof StrokeJoin>;\n strokeCap?: SkEnum<typeof StrokeCap>;\n strokeMiter?: number;\n opacity?: number;\n antiAlias?: boolean;\n dither?: boolean;\n}\n\nexport interface GroupProps extends PaintProps, TransformProps {\n clip?: ClipDef;\n invertClip?: boolean;\n layer?: SkPaint | boolean;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["Common.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nimport type {\n BlendMode,\n Color,\n InputMatrix,\n InputRRect,\n PaintStyle,\n SkPaint,\n SkPath,\n SkRect,\n SkRRect,\n StrokeCap,\n StrokeJoin,\n Transforms3d,\n Vector,\n} from \"../../skia/types\";\n\nexport type SkEnum<T> = Uncapitalize<keyof T extends string ? keyof T : never>;\n\nexport type PathDef = string | SkPath;\n\nexport type ClipDef = SkRRect | SkRect | PathDef;\n\nexport type Fit =\n | \"cover\"\n | \"contain\"\n | \"fill\"\n | \"fitHeight\"\n | \"fitWidth\"\n | \"none\"\n | \"scaleDown\";\n\nexport type Radius = number | Vector;\n\nexport interface ChildrenProps {\n children?: ReactNode | ReactNode[];\n}\n\nexport interface RectCtor {\n x?: number;\n y?: number;\n width: number;\n height: number;\n}\n\nexport interface RRectCtor extends RectCtor {\n r?: Radius;\n}\n\nexport type RectDef = RectCtor | { rect: SkRect };\nexport type RRectDef = RRectCtor | { rect: InputRRect };\n\nexport interface PointCircleDef {\n c?: Vector;\n r: number;\n}\n\nexport interface ScalarCircleDef {\n cx: number;\n cy: number;\n r: number;\n}\n\nexport type CircleDef = PointCircleDef | ScalarCircleDef;\n\nexport interface TransformProps {\n transform?: Transforms3d;\n origin?: Vector;\n matrix?: InputMatrix;\n}\n\nexport interface PaintProps extends ChildrenProps {\n color?: Color;\n strokeWidth?: number;\n blendMode?: SkEnum<typeof BlendMode>;\n style?: SkEnum<typeof PaintStyle>;\n strokeJoin?: SkEnum<typeof StrokeJoin>;\n strokeCap?: SkEnum<typeof StrokeCap>;\n strokeMiter?: number;\n opacity?: number;\n antiAlias?: boolean;\n dither?: boolean;\n}\n\nexport interface GroupProps extends PaintProps, TransformProps {\n clip?: ClipDef;\n invertClip?: boolean;\n layer?: SkPaint | boolean;\n}\n"],"mappings":""}
@@ -1,3 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
+ import type { SkSurface } from "../skia";
2
3
  export * from "../renderer/components";
3
- export declare const draw: (element: ReactNode, width: number, height: number) => any;
4
+ export declare const makeOffscreenSurface: (width: number, height: number) => any;
5
+ export declare const drawOffscreen: (surface: SkSurface, element: ReactNode) => import("../skia").SkImage;
@@ -4,9 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  var _exportNames = {
7
- draw: true
7
+ makeOffscreenSurface: true,
8
+ drawOffscreen: true
8
9
  };
9
- exports.draw = void 0;
10
+ exports.makeOffscreenSurface = exports.drawOffscreen = void 0;
10
11
 
11
12
  var _web = require("../skia/web");
12
13
 
@@ -32,7 +33,7 @@ Object.keys(_components).forEach(function (key) {
32
33
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
34
  let Skia;
34
35
 
35
- const draw = (element, width, height) => {
36
+ const makeOffscreenSurface = (width, height) => {
36
37
  if (!Skia) {
37
38
  Skia = (0, _web.JsiSkApi)(CanvasKit);
38
39
  }
@@ -43,15 +44,20 @@ const draw = (element, width, height) => {
43
44
  throw new Error("Couldn't create surface!");
44
45
  }
45
46
 
47
+ return surface;
48
+ };
49
+
50
+ exports.makeOffscreenSurface = makeOffscreenSurface;
51
+
52
+ const drawOffscreen = (surface, element) => {
46
53
  const root = new _Reconciler.SkiaRoot(Skia);
47
54
  root.render(element);
48
55
  const canvas = surface.getCanvas();
49
56
  const ctx = new _types.JsiDrawingContext(Skia, canvas);
50
57
  root.dom.render(ctx);
51
58
  surface.flush();
52
- const image = surface.makeImageSnapshot();
53
- return image;
59
+ return surface.makeImageSnapshot();
54
60
  };
55
61
 
56
- exports.draw = draw;
62
+ exports.drawOffscreen = drawOffscreen;
57
63
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Skia","draw","element","width","height","JsiSkApi","CanvasKit","surface","Surface","MakeOffscreen","Error","root","SkiaRoot","render","canvas","getCanvas","ctx","JsiDrawingContext","dom","flush","image","makeImageSnapshot"],"sources":["index.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CanvasKitInit from \"canvaskit-wasm/bin/full/canvaskit\";\nimport type { ReactNode } from \"react\";\n\nimport { JsiSkApi } from \"../skia/web\";\nimport { SkiaRoot } from \"../renderer/Reconciler\";\nimport { JsiDrawingContext } from \"../dom/types\";\n\nexport * from \"../renderer/components\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet Skia: any;\n\nexport const draw = (element: ReactNode, width: number, height: number) => {\n if (!Skia) {\n Skia = JsiSkApi(CanvasKit);\n }\n const surface = Skia.Surface.MakeOffscreen(width, height);\n if (surface === null) {\n throw new Error(\"Couldn't create surface!\");\n }\n const root = new SkiaRoot(Skia);\n root.render(element);\n const canvas = surface.getCanvas();\n const ctx = new JsiDrawingContext(Skia, canvas);\n root.dom.render(ctx);\n surface.flush();\n const image = surface.makeImageSnapshot();\n return image;\n};\n"],"mappings":";;;;;;;;;;AAKA;;AACA;;AACA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AATA;AACA;AAUA;AACA,IAAIA,IAAJ;;AAEO,MAAMC,IAAI,GAAG,CAACC,OAAD,EAAqBC,KAArB,EAAoCC,MAApC,KAAuD;EACzE,IAAI,CAACJ,IAAL,EAAW;IACTA,IAAI,GAAG,IAAAK,aAAA,EAASC,SAAT,CAAP;EACD;;EACD,MAAMC,OAAO,GAAGP,IAAI,CAACQ,OAAL,CAAaC,aAAb,CAA2BN,KAA3B,EAAkCC,MAAlC,CAAhB;;EACA,IAAIG,OAAO,KAAK,IAAhB,EAAsB;IACpB,MAAM,IAAIG,KAAJ,CAAU,0BAAV,CAAN;EACD;;EACD,MAAMC,IAAI,GAAG,IAAIC,oBAAJ,CAAaZ,IAAb,CAAb;EACAW,IAAI,CAACE,MAAL,CAAYX,OAAZ;EACA,MAAMY,MAAM,GAAGP,OAAO,CAACQ,SAAR,EAAf;EACA,MAAMC,GAAG,GAAG,IAAIC,wBAAJ,CAAsBjB,IAAtB,EAA4Bc,MAA5B,CAAZ;EACAH,IAAI,CAACO,GAAL,CAASL,MAAT,CAAgBG,GAAhB;EACAT,OAAO,CAACY,KAAR;EACA,MAAMC,KAAK,GAAGb,OAAO,CAACc,iBAAR,EAAd;EACA,OAAOD,KAAP;AACD,CAhBM"}
1
+ {"version":3,"names":["Skia","makeOffscreenSurface","width","height","JsiSkApi","CanvasKit","surface","Surface","MakeOffscreen","Error","drawOffscreen","element","root","SkiaRoot","render","canvas","getCanvas","ctx","JsiDrawingContext","dom","flush","makeImageSnapshot"],"sources":["index.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CanvasKitInit from \"canvaskit-wasm/bin/full/canvaskit\";\nimport type { ReactNode } from \"react\";\n\nimport { JsiSkApi } from \"../skia/web\";\nimport { SkiaRoot } from \"../renderer/Reconciler\";\nimport { JsiDrawingContext } from \"../dom/types\";\nimport type { SkSurface } from \"../skia\";\n\nexport * from \"../renderer/components\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet Skia: any;\n\nexport const makeOffscreenSurface = (width: number, height: number) => {\n if (!Skia) {\n Skia = JsiSkApi(CanvasKit);\n }\n const surface = Skia.Surface.MakeOffscreen(width, height);\n if (surface === null) {\n throw new Error(\"Couldn't create surface!\");\n }\n return surface;\n};\n\nexport const drawOffscreen = (surface: SkSurface, element: ReactNode) => {\n const root = new SkiaRoot(Skia);\n root.render(element);\n const canvas = surface.getCanvas();\n const ctx = new JsiDrawingContext(Skia, canvas);\n root.dom.render(ctx);\n surface.flush();\n return surface.makeImageSnapshot();\n};\n"],"mappings":";;;;;;;;;;;AAKA;;AACA;;AACA;;AAGA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAVA;AACA;AAWA;AACA,IAAIA,IAAJ;;AAEO,MAAMC,oBAAoB,GAAG,CAACC,KAAD,EAAgBC,MAAhB,KAAmC;EACrE,IAAI,CAACH,IAAL,EAAW;IACTA,IAAI,GAAG,IAAAI,aAAA,EAASC,SAAT,CAAP;EACD;;EACD,MAAMC,OAAO,GAAGN,IAAI,CAACO,OAAL,CAAaC,aAAb,CAA2BN,KAA3B,EAAkCC,MAAlC,CAAhB;;EACA,IAAIG,OAAO,KAAK,IAAhB,EAAsB;IACpB,MAAM,IAAIG,KAAJ,CAAU,0BAAV,CAAN;EACD;;EACD,OAAOH,OAAP;AACD,CATM;;;;AAWA,MAAMI,aAAa,GAAG,CAACJ,OAAD,EAAqBK,OAArB,KAA4C;EACvE,MAAMC,IAAI,GAAG,IAAIC,oBAAJ,CAAab,IAAb,CAAb;EACAY,IAAI,CAACE,MAAL,CAAYH,OAAZ;EACA,MAAMI,MAAM,GAAGT,OAAO,CAACU,SAAR,EAAf;EACA,MAAMC,GAAG,GAAG,IAAIC,wBAAJ,CAAsBlB,IAAtB,EAA4Be,MAA5B,CAAZ;EACAH,IAAI,CAACO,GAAL,CAASL,MAAT,CAAgBG,GAAhB;EACAX,OAAO,CAACc,KAAR;EACA,OAAOd,OAAO,CAACe,iBAAR,EAAP;AACD,CARM"}
@@ -5,7 +5,7 @@ import type { SkPath } from "./Path";
5
5
  import type { SkImage, MipmapMode, FilterMode, ImageInfo } from "./Image";
6
6
  import type { SkSVG } from "./SVG";
7
7
  import type { SkColor } from "./Color";
8
- import type { SkRRect } from "./RRect";
8
+ import type { InputRRect } from "./RRect";
9
9
  import type { BlendMode } from "./Paint/BlendMode";
10
10
  import type { SkPoint, PointMode } from "./Point";
11
11
  import type { InputMatrix } from "./Matrix";
@@ -202,7 +202,7 @@ export interface SkCanvas {
202
202
  * @param rrect
203
203
  * @param paint
204
204
  */
205
- drawRRect(rrect: SkRRect, paint: SkPaint): void;
205
+ drawRRect(rrect: InputRRect, paint: SkPaint): void;
206
206
  /**
207
207
  * Draws RRect outer and inner using clip, Matrix, and Paint paint.
208
208
  * outer must contain inner or the drawing is undefined.
@@ -210,7 +210,7 @@ export interface SkCanvas {
210
210
  * @param inner
211
211
  * @param paint
212
212
  */
213
- drawDRRect(outer: SkRRect, inner: SkRRect, paint: SkPaint): void;
213
+ drawDRRect(outer: InputRRect, inner: InputRRect, paint: SkPaint): void;
214
214
  /**
215
215
  * Draws an oval bounded by the given rectangle using the current clip, current matrix,
216
216
  * and the provided paint.
@@ -367,7 +367,7 @@ export interface SkCanvas {
367
367
  * @param op
368
368
  * @param doAntiAlias
369
369
  */
370
- clipRRect(rrect: SkRRect, op: ClipOp, doAntiAlias: boolean): void;
370
+ clipRRect(rrect: InputRRect, op: ClipOp, doAntiAlias: boolean): void;
371
371
  /**
372
372
  * Replaces current matrix with m premultiplied with the existing matrix.
373
373
  * @param m