@shopify/react-native-skia 0.1.230 → 0.1.232
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 +1 -0
- package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.cpp +2 -2
- package/cpp/api/JsiSkAnimatedImage.h +1 -1
- package/cpp/api/JsiSkDataFactory.h +6 -6
- package/cpp/api/JsiSkImage.h +4 -4
- package/cpp/api/JsiSkPath.h +1 -1
- package/cpp/api/JsiSkRRect.h +30 -3
- package/cpp/api/third_party/base64.cpp +153 -0
- package/cpp/api/third_party/base64.h +50 -0
- package/cpp/jsi/JsiPromises.h +1 -1
- package/cpp/rnskia/dom/props/FontProp.h +2 -4
- package/cpp/rnskia/dom/props/RRectProp.h +50 -0
- package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.mm +1 -1
- package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +2 -1
- package/lib/commonjs/dom/nodes/datatypes/Rect.d.ts +1 -1
- package/lib/commonjs/dom/nodes/drawings/RRectNode.d.ts +3 -3
- package/lib/commonjs/dom/nodes/drawings/RRectNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/Text.js +1 -11
- package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
- package/lib/commonjs/dom/types/Common.d.ts +2 -2
- package/lib/commonjs/dom/types/Common.js.map +1 -1
- package/lib/commonjs/dom/types/Drawings.d.ts +1 -1
- package/lib/commonjs/dom/types/Drawings.js.map +1 -1
- package/lib/commonjs/headless/index.d.ts +3 -1
- package/lib/commonjs/headless/index.js +12 -6
- package/lib/commonjs/headless/index.js.map +1 -1
- package/lib/commonjs/skia/types/Canvas.d.ts +4 -4
- package/lib/commonjs/skia/types/Canvas.js.map +1 -1
- package/lib/commonjs/skia/types/Matrix4.d.ts +5 -0
- package/lib/commonjs/skia/types/Matrix4.js +8 -3
- package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
- package/lib/commonjs/skia/types/Paragraph/Paragraph.d.ts +2 -2
- package/lib/commonjs/skia/types/Paragraph/Paragraph.js.map +1 -1
- package/lib/commonjs/skia/types/Paragraph/ParagraphStyle.d.ts +6 -6
- package/lib/commonjs/skia/types/Paragraph/ParagraphStyle.js +25 -25
- package/lib/commonjs/skia/types/Paragraph/ParagraphStyle.js.map +1 -1
- package/lib/commonjs/skia/types/Path/Path.d.ts +2 -2
- package/lib/commonjs/skia/types/Path/Path.js.map +1 -1
- package/lib/commonjs/skia/types/RRect.d.ts +9 -0
- package/lib/commonjs/skia/types/RRect.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkCanvas.d.ts +4 -4
- package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.js +1 -1
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkRRect.d.ts +2 -2
- package/lib/commonjs/skia/web/JsiSkRRect.js +4 -0
- package/lib/commonjs/skia/web/JsiSkRRect.js.map +1 -1
- package/lib/commonjs/web/LoadSkiaWeb.js +4 -1
- package/lib/commonjs/web/LoadSkiaWeb.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.d.ts +2 -1
- package/lib/module/dom/nodes/datatypes/Rect.d.ts +1 -1
- package/lib/module/dom/nodes/drawings/RRectNode.d.ts +3 -3
- package/lib/module/dom/nodes/drawings/RRectNode.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Text.js +1 -11
- package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
- package/lib/module/dom/types/Common.d.ts +2 -2
- package/lib/module/dom/types/Common.js.map +1 -1
- package/lib/module/dom/types/Drawings.d.ts +1 -1
- package/lib/module/dom/types/Drawings.js.map +1 -1
- package/lib/module/headless/index.d.ts +3 -1
- package/lib/module/headless/index.js +5 -3
- package/lib/module/headless/index.js.map +1 -1
- package/lib/module/skia/types/Canvas.d.ts +4 -4
- package/lib/module/skia/types/Canvas.js.map +1 -1
- package/lib/module/skia/types/Matrix4.d.ts +5 -0
- package/lib/module/skia/types/Matrix4.js +6 -4
- package/lib/module/skia/types/Matrix4.js.map +1 -1
- package/lib/module/skia/types/Paragraph/Paragraph.d.ts +2 -2
- package/lib/module/skia/types/Paragraph/Paragraph.js.map +1 -1
- package/lib/module/skia/types/Paragraph/ParagraphStyle.d.ts +6 -6
- package/lib/module/skia/types/Paragraph/ParagraphStyle.js +21 -21
- package/lib/module/skia/types/Paragraph/ParagraphStyle.js.map +1 -1
- package/lib/module/skia/types/Path/Path.d.ts +2 -2
- package/lib/module/skia/types/Path/Path.js.map +1 -1
- package/lib/module/skia/types/RRect.d.ts +9 -0
- package/lib/module/skia/types/RRect.js.map +1 -1
- package/lib/module/skia/web/JsiSkCanvas.d.ts +4 -4
- package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/module/skia/web/JsiSkParagraphStyle.js +2 -2
- package/lib/module/skia/web/JsiSkParagraphStyle.js.map +1 -1
- package/lib/module/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/module/skia/web/JsiSkPath.js.map +1 -1
- package/lib/module/skia/web/JsiSkRRect.d.ts +2 -2
- package/lib/module/skia/web/JsiSkRRect.js +4 -0
- package/lib/module/skia/web/JsiSkRRect.js.map +1 -1
- package/lib/module/web/LoadSkiaWeb.js +5 -1
- package/lib/module/web/LoadSkiaWeb.js.map +1 -1
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +2 -1
- package/lib/typescript/src/dom/nodes/datatypes/Rect.d.ts +1 -1
- package/lib/typescript/src/dom/nodes/drawings/RRectNode.d.ts +3 -3
- package/lib/typescript/src/dom/types/Common.d.ts +2 -2
- package/lib/typescript/src/dom/types/Drawings.d.ts +1 -1
- package/lib/typescript/src/headless/index.d.ts +3 -1
- package/lib/typescript/src/skia/types/Canvas.d.ts +4 -4
- package/lib/typescript/src/skia/types/Matrix4.d.ts +5 -0
- package/lib/typescript/src/skia/types/Paragraph/Paragraph.d.ts +2 -2
- package/lib/typescript/src/skia/types/Paragraph/ParagraphStyle.d.ts +6 -6
- package/lib/typescript/src/skia/types/Path/Path.d.ts +2 -2
- package/lib/typescript/src/skia/types/RRect.d.ts +9 -0
- package/lib/typescript/src/skia/web/JsiSkCanvas.d.ts +4 -4
- package/lib/typescript/src/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/typescript/src/skia/web/JsiSkRRect.d.ts +2 -2
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/armeabi-v7a/libskia.a +0 -0
- package/libs/android/x86/libskia.a +0 -0
- package/libs/android/x86_64/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskottie.xcframework/Info.plist +5 -5
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/ios/libskshaper.xcframework/Info.plist +5 -5
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
- package/libs/ios/libsvg.xcframework/Info.plist +5 -5
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +1 -1
- package/src/dom/nodes/drawings/RRectNode.ts +2 -2
- package/src/dom/nodes/drawings/Text.ts +1 -14
- package/src/dom/types/Common.ts +2 -1
- package/src/dom/types/Drawings.ts +1 -1
- package/src/headless/index.ts +7 -3
- package/src/skia/types/Canvas.ts +4 -4
- package/src/skia/types/Matrix4.ts +8 -6
- package/src/skia/types/Paragraph/Paragraph.ts +2 -2
- package/src/skia/types/Paragraph/ParagraphStyle.ts +6 -6
- package/src/skia/types/Path/Path.ts +2 -2
- package/src/skia/types/RRect.ts +11 -0
- package/src/skia/web/JsiSkCanvas.ts +4 -4
- package/src/skia/web/JsiSkParagraphStyle.ts +2 -2
- package/src/skia/web/JsiSkPath.ts +2 -2
- package/src/skia/web/JsiSkRRect.ts +23 -2
- package/src/web/LoadSkiaWeb.tsx +4 -1
package/android/CMakeLists.txt
CHANGED
|
@@ -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,
|
|
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 "
|
|
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
|
-
|
|
71
|
-
if (err !=
|
|
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 =
|
|
79
|
-
|
|
80
|
-
if (err !=
|
|
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
|
}
|
package/cpp/api/JsiSkImage.h
CHANGED
|
@@ -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 =
|
|
136
|
+
auto len = Base64::Encode(data->bytes(), data->size(), nullptr);
|
|
137
137
|
auto buffer = std::string(len, 0);
|
|
138
|
-
|
|
139
|
-
|
|
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
|
|
package/cpp/api/JsiSkPath.h
CHANGED
|
@@ -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) {
|
package/cpp/api/JsiSkRRect.h
CHANGED
|
@@ -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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
package/cpp/jsi/JsiPromises.h
CHANGED
|
@@ -31,9 +31,7 @@ public:
|
|
|
31
31
|
"Expected SkFont object or null/undefined for the Font property.");
|
|
32
32
|
}
|
|
33
33
|
} else {
|
|
34
|
-
|
|
35
|
-
font->setSize(14);
|
|
36
|
-
setDerivedValue(font);
|
|
34
|
+
setDerivedValue(nullptr);
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
37
|
|
|
@@ -41,4 +39,4 @@ private:
|
|
|
41
39
|
NodeProp *_fontProp;
|
|
42
40
|
};
|
|
43
41
|
|
|
44
|
-
} // namespace RNSkia
|
|
42
|
+
} // namespace RNSkia
|
|
@@ -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,
|
|
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").
|
|
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,
|
|
5
|
+
export declare class RRectNode extends JsiDrawingNode<RoundedRectProps, InputRRect> {
|
|
6
6
|
rect?: SkRRect;
|
|
7
7
|
constructor(ctx: NodeContext, props: RoundedRectProps);
|
|
8
|
-
protected deriveProps():
|
|
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,
|
|
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"}
|
|
@@ -21,18 +21,8 @@ class TextNode extends _DrawingNode.JsiDrawingNode {
|
|
|
21
21
|
font
|
|
22
22
|
} = this.props;
|
|
23
23
|
|
|
24
|
-
if (font
|
|
24
|
+
if (!font) {
|
|
25
25
|
return null;
|
|
26
|
-
} else if (font === undefined) {
|
|
27
|
-
console.warn("<Text />: the font property is mandatory on React Native Web");
|
|
28
|
-
return null; // return this.Skia.Font(
|
|
29
|
-
// this.Skia.FontMgr.System().matchFamilyStyle("System", {
|
|
30
|
-
// width: 5,
|
|
31
|
-
// weight: 400,
|
|
32
|
-
// slant: 0,
|
|
33
|
-
// }),
|
|
34
|
-
// 14
|
|
35
|
-
// );
|
|
36
26
|
}
|
|
37
27
|
|
|
38
28
|
return font;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TextNode","JsiDrawingNode","constructor","ctx","props","NodeType","Text","deriveProps","font","
|
|
1
|
+
{"version":3,"names":["TextNode","JsiDrawingNode","constructor","ctx","props","NodeType","Text","deriveProps","font","draw","canvas","paint","text","x","y","derived","undefined","Error","drawText","TextPathNode","TextPath","path","processPath","Skia","initialOffset","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","width","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","TextBlob","MakeFromRSXform","drawTextBlob","TextBlobNode","blob","GlyphsNode","Glyphs","glyphs","reduce","acc","glyph","id","pos","positions","drawGlyphs"],"sources":["Text.ts"],"sourcesContent":["import type {\n SkRSXform,\n SkTextBlob,\n SkPoint,\n SkFont,\n} from \"../../../skia/types\";\nimport type {\n DrawingContext,\n TextBlobProps,\n TextPathProps,\n TextProps,\n} from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { processPath } from \"../datatypes\";\nimport type { GlyphsProps } from \"../../types/Drawings\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class TextNode extends JsiDrawingNode<TextProps, SkFont | null> {\n constructor(ctx: NodeContext, props: TextProps) {\n super(ctx, NodeType.Text, props);\n }\n\n protected deriveProps() {\n const { font } = this.props;\n if (!font) {\n return null;\n }\n return font;\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { text, x, y } = this.props;\n const font = this.derived;\n if (font === undefined) {\n throw new Error(\"TextNode: font hasn't been derived\");\n }\n if (font != null) {\n canvas.drawText(text, x, y, paint, font);\n }\n }\n}\n\nexport class TextPathNode extends JsiDrawingNode<\n TextPathProps,\n SkTextBlob | null\n> {\n constructor(ctx: NodeContext, props: TextPathProps) {\n super(ctx, NodeType.TextPath, props);\n }\n\n deriveProps() {\n const path = processPath(this.Skia, this.props.path);\n const { font, initialOffset } = this.props;\n if (!font) {\n return null;\n }\n let { text } = this.props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = this.Skia.ContourMeasureIter(path, false, 1);\n let cont = meas.next();\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = meas.next();\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(this.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n return this.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"TextPathNode: blob is null\");\n }\n canvas.drawTextBlob(this.derived, 0, 0, paint);\n }\n}\n\nexport class TextBlobNode extends JsiDrawingNode<TextBlobProps, null> {\n constructor(ctx: NodeContext, props: TextBlobProps) {\n super(ctx, NodeType.TextBlob, props);\n }\n\n protected deriveProps() {\n return null;\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { blob, x, y } = this.props;\n canvas.drawTextBlob(blob, x, y, paint);\n }\n}\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport class GlyphsNode extends JsiDrawingNode<GlyphsProps, ProcessedGlyphs> {\n constructor(ctx: NodeContext, props: GlyphsProps) {\n super(ctx, NodeType.Glyphs, props);\n }\n\n deriveProps() {\n return this.props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"GlyphsNode: processedGlyphs is null\");\n }\n const { glyphs, positions } = this.derived;\n const { x, y, font } = this.props;\n if (font) {\n canvas.drawGlyphs(glyphs, positions, x, y, font, paint);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -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:
|
|
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:
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["Drawings.ts"],"sourcesContent":["import type {\n FillType,\n SkImage,\n StrokeOpts,\n Vector,\n Color,\n SkPoint,\n BlendMode,\n PointMode,\n VertexMode,\n SkFont,\n SkRRect,\n SkTextBlob,\n SkPicture,\n SkSVG,\n SkPaint,\n SkRect,\n} from \"../../skia/types\";\n\nimport type {\n CircleDef,\n Fit,\n GroupProps,\n PathDef,\n RectDef,\n RRectDef,\n SkEnum,\n} from \"./Common\";\n\nexport interface DrawingNodeProps extends GroupProps {\n paint?: SkPaint;\n}\n\nexport type ImageProps = DrawingNodeProps &\n RectDef & {\n fit?: Fit;\n image: SkImage | null;\n };\n\nexport type CircleProps = CircleDef & DrawingNodeProps;\n\nexport interface PathProps extends DrawingNodeProps {\n path: PathDef;\n start: number;\n end: number;\n stroke?: StrokeOpts;\n fillType?: SkEnum<typeof FillType>;\n}\n\nexport interface LineProps extends DrawingNodeProps {\n p1: Vector;\n p2: Vector;\n}\n\nexport type OvalProps = RectDef & DrawingNodeProps;\n\nexport type RectProps = RectDef & DrawingNodeProps;\n\nexport type RoundedRectProps = RRectDef & DrawingNodeProps;\n\nexport interface CubicBezierHandle {\n pos: Vector;\n c1: Vector;\n c2: Vector;\n}\n\nexport interface PatchProps extends DrawingNodeProps {\n colors?: Color[];\n patch: [\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle\n ];\n texture?: readonly [SkPoint, SkPoint, SkPoint, SkPoint];\n blendMode?: SkEnum<typeof BlendMode>;\n}\n\nexport interface VerticesProps extends DrawingNodeProps {\n colors?: string[];\n vertices: SkPoint[];\n textures?: SkPoint[];\n mode: SkEnum<typeof VertexMode>;\n blendMode?: SkEnum<typeof BlendMode>;\n indices?: number[];\n}\n\nexport interface ImageSVGProps extends DrawingNodeProps {\n svg: SkSVG | null;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n rect?: SkRect;\n}\n\nexport interface PictureProps extends DrawingNodeProps {\n picture: SkPicture;\n}\n\nexport interface PointsProps extends DrawingNodeProps {\n points: SkPoint[];\n mode: SkEnum<typeof PointMode>;\n}\n\nexport interface DiffRectProps extends DrawingNodeProps {\n inner: SkRRect;\n outer: SkRRect;\n}\n\nexport interface TextProps extends DrawingNodeProps {\n font
|
|
1
|
+
{"version":3,"names":[],"sources":["Drawings.ts"],"sourcesContent":["import type {\n FillType,\n SkImage,\n StrokeOpts,\n Vector,\n Color,\n SkPoint,\n BlendMode,\n PointMode,\n VertexMode,\n SkFont,\n SkRRect,\n SkTextBlob,\n SkPicture,\n SkSVG,\n SkPaint,\n SkRect,\n} from \"../../skia/types\";\n\nimport type {\n CircleDef,\n Fit,\n GroupProps,\n PathDef,\n RectDef,\n RRectDef,\n SkEnum,\n} from \"./Common\";\n\nexport interface DrawingNodeProps extends GroupProps {\n paint?: SkPaint;\n}\n\nexport type ImageProps = DrawingNodeProps &\n RectDef & {\n fit?: Fit;\n image: SkImage | null;\n };\n\nexport type CircleProps = CircleDef & DrawingNodeProps;\n\nexport interface PathProps extends DrawingNodeProps {\n path: PathDef;\n start: number;\n end: number;\n stroke?: StrokeOpts;\n fillType?: SkEnum<typeof FillType>;\n}\n\nexport interface LineProps extends DrawingNodeProps {\n p1: Vector;\n p2: Vector;\n}\n\nexport type OvalProps = RectDef & DrawingNodeProps;\n\nexport type RectProps = RectDef & DrawingNodeProps;\n\nexport type RoundedRectProps = RRectDef & DrawingNodeProps;\n\nexport interface CubicBezierHandle {\n pos: Vector;\n c1: Vector;\n c2: Vector;\n}\n\nexport interface PatchProps extends DrawingNodeProps {\n colors?: Color[];\n patch: [\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle\n ];\n texture?: readonly [SkPoint, SkPoint, SkPoint, SkPoint];\n blendMode?: SkEnum<typeof BlendMode>;\n}\n\nexport interface VerticesProps extends DrawingNodeProps {\n colors?: string[];\n vertices: SkPoint[];\n textures?: SkPoint[];\n mode: SkEnum<typeof VertexMode>;\n blendMode?: SkEnum<typeof BlendMode>;\n indices?: number[];\n}\n\nexport interface ImageSVGProps extends DrawingNodeProps {\n svg: SkSVG | null;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n rect?: SkRect;\n}\n\nexport interface PictureProps extends DrawingNodeProps {\n picture: SkPicture;\n}\n\nexport interface PointsProps extends DrawingNodeProps {\n points: SkPoint[];\n mode: SkEnum<typeof PointMode>;\n}\n\nexport interface DiffRectProps extends DrawingNodeProps {\n inner: SkRRect;\n outer: SkRRect;\n}\n\nexport interface TextProps extends DrawingNodeProps {\n font: SkFont | null;\n text: string;\n x: number;\n y: number;\n}\n\nexport interface TextPathProps extends DrawingNodeProps {\n font: SkFont | null;\n text: string;\n path: PathDef;\n initialOffset: number;\n}\n\nexport interface TextBlobProps extends DrawingNodeProps {\n blob: SkTextBlob;\n x: number;\n y: number;\n}\n\nexport interface Glyph {\n id: number;\n pos: SkPoint;\n}\n\nexport interface GlyphsProps extends DrawingNodeProps {\n font: SkFont | null;\n x: number;\n y: number;\n glyphs: Glyph[];\n}\n\nexport interface BoxProps extends DrawingNodeProps {\n box: SkRRect | SkRect;\n}\n\nexport interface BoxShadowProps {\n dx?: number;\n dy?: number;\n spread?: number;\n blur: number;\n color?: Color;\n inner?: boolean;\n}\n"],"mappings":""}
|