@shopify/react-native-skia 2.11.0 → 2.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +0 -10
- package/android/src/main/java/com/shopify/reactnative/skia/ViewScreenshotService.java +9 -12
- package/apple/RNSkApplePlatformContext.h +0 -3
- package/apple/RNSkApplePlatformContext.mm +0 -11
- package/cpp/api/JsiSkApi.h +0 -6
- package/cpp/api/JsiSkFont.h +2 -8
- package/cpp/api/JsiSkMatrix.h +4 -2
- package/cpp/api/recorder/Convertor.h +5 -2
- package/cpp/api/recorder/Drawings.h +13 -3
- package/cpp/api/recorder/ImageFilters.h +15 -1
- package/cpp/api/recorder/Paint.h +5 -2
- package/cpp/rnskia/RNSkPlatformContext.h +0 -3
- package/lib/commonjs/renderer/components/Mask.js +3 -9
- package/lib/commonjs/renderer/components/Mask.js.map +1 -1
- package/lib/commonjs/skia/types/Matrix4.js +7 -2
- package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
- package/lib/commonjs/skia/types/Skia.d.ts +1 -6
- package/lib/commonjs/skia/types/Skia.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +0 -3
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js +10 -0
- package/lib/commonjs/sksg/Recorder/DrawingContext.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Visitor.js +6 -1
- package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js +10 -8
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js +15 -1
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/module/renderer/components/Mask.js +3 -9
- package/lib/module/renderer/components/Mask.js.map +1 -1
- package/lib/module/skia/types/Matrix4.js +7 -2
- package/lib/module/skia/types/Matrix4.js.map +1 -1
- package/lib/module/skia/types/Skia.d.ts +1 -6
- package/lib/module/skia/types/Skia.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +0 -3
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/module/sksg/Recorder/DrawingContext.js +10 -0
- package/lib/module/sksg/Recorder/DrawingContext.js.map +1 -1
- package/lib/module/sksg/Recorder/Player.js +1 -1
- package/lib/module/sksg/Recorder/Player.js.map +1 -1
- package/lib/module/sksg/Recorder/Visitor.js +6 -1
- package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Drawing.js +10 -8
- package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/ImageFilters.js +15 -1
- package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +0 -1
- package/lib/typescript/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/typescript/lib/module/skia/Skia.web.d.ts +0 -1
- package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +0 -1
- package/lib/typescript/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/lib/typescript/src/skia/types/Skia.d.ts +1 -6
- package/lib/typescript/src/sksg/Recorder/DrawingContext.d.ts +1 -0
- package/package.json +1 -1
- package/src/renderer/components/Mask.tsx +10 -3
- package/src/skia/types/Matrix4.ts +6 -2
- package/src/skia/types/Skia.ts +1 -7
- package/src/skia/web/JsiSkia.ts +0 -4
- package/src/sksg/Recorder/DrawingContext.ts +10 -0
- package/src/sksg/Recorder/Player.ts +1 -1
- package/src/sksg/Recorder/Visitor.ts +9 -6
- package/src/sksg/Recorder/commands/Drawing.ts +10 -8
- package/src/sksg/Recorder/commands/ImageFilters.ts +20 -1
- package/src/sksg/Recorder/commands/Shaders.ts +1 -1
- package/cpp/api/JsiSkiaContext.h +0 -94
|
@@ -63,16 +63,6 @@ public:
|
|
|
63
63
|
#endif
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
std::shared_ptr<WindowContext>
|
|
67
|
-
makeContextFromNativeSurface(void *surface, int width, int height) override {
|
|
68
|
-
#if defined(SK_GRAPHITE)
|
|
69
|
-
return DawnContext::getInstance().MakeWindow(surface, width, height);
|
|
70
|
-
#else
|
|
71
|
-
auto aWindow = reinterpret_cast<ANativeWindow *>(surface);
|
|
72
|
-
return OpenGLContext::getInstance().MakeWindow(aWindow);
|
|
73
|
-
#endif
|
|
74
|
-
}
|
|
75
|
-
|
|
76
66
|
sk_sp<SkImage> makeImageFromNativeBuffer(void *buffer) override {
|
|
77
67
|
#if defined(SK_GRAPHITE)
|
|
78
68
|
return DawnContext::getInstance().MakeImageFromBuffer(buffer);
|
|
@@ -19,10 +19,11 @@ import android.widget.ScrollView;
|
|
|
19
19
|
import androidx.annotation.NonNull;
|
|
20
20
|
import com.facebook.react.bridge.ReactContext;
|
|
21
21
|
import com.facebook.react.bridge.UIManager;
|
|
22
|
+
import com.facebook.react.uimanager.BackgroundStyleApplicator;
|
|
22
23
|
import com.facebook.react.uimanager.UIManagerHelper;
|
|
24
|
+
import com.facebook.react.uimanager.ViewProps;
|
|
23
25
|
import com.facebook.react.views.view.ReactViewGroup;
|
|
24
26
|
|
|
25
|
-
import java.lang.reflect.Method;
|
|
26
27
|
import java.util.concurrent.CountDownLatch;
|
|
27
28
|
import java.util.concurrent.TimeUnit;
|
|
28
29
|
|
|
@@ -118,17 +119,13 @@ public class ViewScreenshotService {
|
|
|
118
119
|
}
|
|
119
120
|
|
|
120
121
|
private static void drawChildren(Canvas canvas, ViewGroup group, Paint paint, float parentOpacity) {
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
method.invoke(group, canvas);
|
|
129
|
-
} catch (Exception e) {
|
|
130
|
-
Log.e(TAG, "couldn't invoke dispatchOverflowDraw() on ReactViewGroup", e);
|
|
131
|
-
}
|
|
122
|
+
// ReactViewGroup applies `overflow: hidden` / `overflow: scroll` clipping from its
|
|
123
|
+
// dispatchDraw() override. We never call dispatchDraw() here because children are
|
|
124
|
+
// walked manually (TextureView / SurfaceView need special handling), so the clip has
|
|
125
|
+
// to be replicated explicitly, exactly as ReactViewGroup.dispatchDraw() does it.
|
|
126
|
+
if (group instanceof ReactViewGroup
|
|
127
|
+
&& !ViewProps.VISIBLE.equals(((ReactViewGroup) group).getOverflow())) {
|
|
128
|
+
BackgroundStyleApplicator.clipToPaddingBox(group, canvas);
|
|
132
129
|
}
|
|
133
130
|
for (int i = 0; i < group.getChildCount(); i++) {
|
|
134
131
|
View child = group.getChildAt(i);
|
|
@@ -63,9 +63,6 @@ public:
|
|
|
63
63
|
|
|
64
64
|
std::shared_ptr<RNSkVideo> createVideo(const std::string &url) override;
|
|
65
65
|
|
|
66
|
-
std::shared_ptr<WindowContext>
|
|
67
|
-
makeContextFromNativeSurface(void *surface, int width, int height) override;
|
|
68
|
-
|
|
69
66
|
virtual void performStreamOperation(
|
|
70
67
|
const std::string &sourceUri,
|
|
71
68
|
const std::function<void(std::unique_ptr<SkStreamAsset>)> &op) override;
|
|
@@ -307,17 +307,6 @@ RNSkApplePlatformContext::createVideo(const std::string &url) {
|
|
|
307
307
|
return std::make_shared<RNSkAppleVideo>(url, this);
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
-
std::shared_ptr<WindowContext>
|
|
311
|
-
RNSkApplePlatformContext::makeContextFromNativeSurface(void *surface, int width,
|
|
312
|
-
int height) {
|
|
313
|
-
#if defined(SK_GRAPHITE)
|
|
314
|
-
return DawnContext::getInstance().MakeWindow(surface, width, height);
|
|
315
|
-
#else
|
|
316
|
-
return MetalContext::getInstance().MakeWindow((__bridge CALayer *)surface,
|
|
317
|
-
width, height);
|
|
318
|
-
#endif
|
|
319
|
-
}
|
|
320
|
-
|
|
321
310
|
void RNSkApplePlatformContext::raiseError(const std::exception &err) {
|
|
322
311
|
RCTFatal(RCTErrorWithMessage([NSString stringWithUTF8String:err.what()]));
|
|
323
312
|
}
|
package/cpp/api/JsiSkApi.h
CHANGED
|
@@ -56,7 +56,6 @@
|
|
|
56
56
|
#include "JsiSkTypefaceFactory.h"
|
|
57
57
|
#include "JsiSkTypefaceFontProviderFactory.h"
|
|
58
58
|
#include "JsiSkVertices.h"
|
|
59
|
-
#include "JsiSkiaContext.h"
|
|
60
59
|
#include "JsiSkottieFactory.h"
|
|
61
60
|
#include "JsiVideo.h"
|
|
62
61
|
#include "api/recorder/JsiRecorder.h"
|
|
@@ -116,10 +115,6 @@ public:
|
|
|
116
115
|
return JsiVideo::createCtor(getContext())(runtime, thisValue, arguments,
|
|
117
116
|
count);
|
|
118
117
|
}
|
|
119
|
-
JSI_HOST_FUNCTION(Context) {
|
|
120
|
-
return JsiSkiaContext::createCtor(getContext())(runtime, thisValue,
|
|
121
|
-
arguments, count);
|
|
122
|
-
}
|
|
123
118
|
JSI_HOST_FUNCTION(Font) {
|
|
124
119
|
return JsiSkFont::createCtor(getContext())(runtime, thisValue, arguments,
|
|
125
120
|
count);
|
|
@@ -256,7 +251,6 @@ public:
|
|
|
256
251
|
|
|
257
252
|
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
258
253
|
installHostMethod(runtime, prototype, "Video", &JsiSkApi::Video);
|
|
259
|
-
installHostMethod(runtime, prototype, "Context", &JsiSkApi::Context);
|
|
260
254
|
installHostMethod(runtime, prototype, "getNativeDevice",
|
|
261
255
|
&JsiSkApi::getNativeDevice);
|
|
262
256
|
installHostMethod(runtime, prototype, "Font", &JsiSkApi::Font);
|
package/cpp/api/JsiSkFont.h
CHANGED
|
@@ -161,15 +161,9 @@ public:
|
|
|
161
161
|
|
|
162
162
|
void setSize(double size) { getObject()->setSize(size); }
|
|
163
163
|
|
|
164
|
-
|
|
165
|
-
// the arguments with asNumber() — keep accepting numbers.
|
|
166
|
-
void setEmbolden(double embolden) {
|
|
167
|
-
getObject()->setEmbolden(static_cast<bool>(embolden));
|
|
168
|
-
}
|
|
164
|
+
void setEmbolden(bool embolden) { getObject()->setEmbolden(embolden); }
|
|
169
165
|
|
|
170
|
-
void setSubpixel(
|
|
171
|
-
getObject()->setSubpixel(static_cast<bool>(subpixel));
|
|
172
|
-
}
|
|
166
|
+
void setSubpixel(bool subpixel) { getObject()->setSubpixel(subpixel); }
|
|
173
167
|
|
|
174
168
|
void setTypeface(std::variant<std::nullptr_t, sk_sp<SkTypeface>> typeface) {
|
|
175
169
|
getObject()->setTypeface(
|
package/cpp/api/JsiSkMatrix.h
CHANGED
|
@@ -69,12 +69,14 @@ public:
|
|
|
69
69
|
|
|
70
70
|
void postTranslate(double x, double y) { getObject()->postTranslate(x, y); }
|
|
71
71
|
|
|
72
|
+
// A missing y means a uniform scale, matching the CanvasKit backend and the
|
|
73
|
+
// SkMatrix type, where y is optional rather than defaulted to 1.
|
|
72
74
|
void scale(double x, JsiOptional<double> y) {
|
|
73
|
-
getObject()->preScale(x, y.has_value() ? *y :
|
|
75
|
+
getObject()->preScale(x, y.has_value() ? *y : x);
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
void postScale(double x, JsiOptional<double> y) {
|
|
77
|
-
getObject()->postScale(x, y.has_value() ? *y :
|
|
79
|
+
getObject()->postScale(x, y.has_value() ? *y : x);
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
void skew(double x, double y) { getObject()->preSkew(x, y); }
|
|
@@ -361,13 +361,16 @@ SkM44 getPropertyValue(jsi::Runtime &runtime, const jsi::Value &value) {
|
|
|
361
361
|
m4.preScale(1, s);
|
|
362
362
|
} else if (key == "skewX") {
|
|
363
363
|
auto angle = value.getProperty(runtime, key.c_str()).asNumber();
|
|
364
|
-
|
|
364
|
+
// The SkM44 constructor takes its arguments in row-major reading
|
|
365
|
+
// order, so the shear factor of a horizontal skew belongs in row 0,
|
|
366
|
+
// where it scales y into x.
|
|
367
|
+
SkM44 skewX(1, std::tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
|
|
365
368
|
1);
|
|
366
369
|
m4.preConcat(skewX);
|
|
367
370
|
|
|
368
371
|
} else if (key == "skewY") {
|
|
369
372
|
auto angle = value.getProperty(runtime, key.c_str()).asNumber();
|
|
370
|
-
SkM44 skewY(1,
|
|
373
|
+
SkM44 skewY(1, 0, 0, 0, std::tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
|
|
371
374
|
1);
|
|
372
375
|
m4.preConcat(skewY);
|
|
373
376
|
} else if (key == "rotate" || key == "rotateZ") {
|
|
@@ -149,6 +149,9 @@ public:
|
|
|
149
149
|
if (hasStrokeOptions) {
|
|
150
150
|
const auto &stroke = props.stroke.value();
|
|
151
151
|
SkPaint strokePaint;
|
|
152
|
+
// A default SkPaint is fill-style, and FillPathWithPaint only
|
|
153
|
+
// outlines a paint that strokes.
|
|
154
|
+
strokePaint.setStyle(SkPaint::kStroke_Style);
|
|
152
155
|
|
|
153
156
|
if (stroke.cap.has_value()) {
|
|
154
157
|
strokePaint.setStrokeCap(stroke.cap.value());
|
|
@@ -166,11 +169,18 @@ public:
|
|
|
166
169
|
strokePaint.setStrokeMiter(stroke.miter_limit.value());
|
|
167
170
|
}
|
|
168
171
|
|
|
172
|
+
float precision = stroke.precision.value_or(1.0f);
|
|
173
|
+
|
|
169
174
|
SkPathBuilder resultBuilder;
|
|
170
|
-
|
|
171
|
-
|
|
175
|
+
auto ctm = SkMatrix::Scale(precision, precision);
|
|
176
|
+
if (skpathutils::FillPathWithPaint(*p, strokePaint, &resultBuilder,
|
|
177
|
+
nullptr, ctm)) {
|
|
178
|
+
pathToUse = std::make_shared<const SkPath>(resultBuilder.snapshot());
|
|
179
|
+
} else {
|
|
180
|
+
// The JS player keeps the unstroked path when Path.Stroke returns
|
|
181
|
+
// null (e.g. a hairline width of 0).
|
|
182
|
+
pathToUse = std::const_pointer_cast<const SkPath>(p);
|
|
172
183
|
}
|
|
173
|
-
pathToUse = std::make_shared<const SkPath>(resultBuilder.snapshot());
|
|
174
184
|
} else {
|
|
175
185
|
pathToUse = std::const_pointer_cast<const SkPath>(p);
|
|
176
186
|
}
|
|
@@ -135,8 +135,22 @@ private:
|
|
|
135
135
|
auto sourceAlpha = SkImageFilters::ColorFilter(
|
|
136
136
|
SkColorFilters::Blend(SK_ColorBLACK, SkBlendMode::kSrcIn), nullptr);
|
|
137
137
|
|
|
138
|
+
// The shadow is generated outside the shape and then clipped back into it,
|
|
139
|
+
// so "outside" has to be the complement of the shape's silhouette. Taking
|
|
140
|
+
// SrcOut against the source graphic itself makes it the complement of the
|
|
141
|
+
// source's *alpha*: inside a translucent shape 1 - alpha is non-zero, so
|
|
142
|
+
// the shadow is generated across the whole interior and tints it, no matter
|
|
143
|
+
// how small the blur and the offset are (issue #2990). Saturating alpha
|
|
144
|
+
// first keeps the shadow tied to the shape's outline instead of to its
|
|
145
|
+
// opacity. 255 is the saturation point of an 8-bit alpha channel, so one
|
|
146
|
+
// unit of coverage is enough to reach 1.
|
|
147
|
+
static constexpr float kAlphaSaturate[20] = {
|
|
148
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0};
|
|
149
|
+
auto coverage = SkImageFilters::ColorFilter(
|
|
150
|
+
SkColorFilters::Matrix(kAlphaSaturate), nullptr);
|
|
151
|
+
|
|
138
152
|
auto f1 = SkImageFilters::ColorFilter(
|
|
139
|
-
SkColorFilters::Blend(color, SkBlendMode::kSrcOut),
|
|
153
|
+
SkColorFilters::Blend(color, SkBlendMode::kSrcOut), coverage);
|
|
140
154
|
|
|
141
155
|
auto f2 = SkImageFilters::Offset(dx, dy, f1);
|
|
142
156
|
auto f3 = SkImageFilters::Blur(sigmaX, sigmaY, SkTileMode::kDecal, f2);
|
package/cpp/api/recorder/Paint.h
CHANGED
|
@@ -154,8 +154,11 @@ public:
|
|
|
154
154
|
}
|
|
155
155
|
ctx->savePaint();
|
|
156
156
|
if (standalone) {
|
|
157
|
-
|
|
158
|
-
|
|
157
|
+
// Reset the paint that savePaint() just pushed instead of pushing a
|
|
158
|
+
// second one: the matching RestorePaintDeclaration pops a single frame,
|
|
159
|
+
// so an extra push would leave the enclosing group's opacity on the
|
|
160
|
+
// stack and leak it onto every sibling drawn afterwards.
|
|
161
|
+
ctx->getPaint() = SkPaint();
|
|
159
162
|
}
|
|
160
163
|
auto &paint = ctx->getPaint();
|
|
161
164
|
if (props.opacity.has_value()) {
|
|
@@ -96,9 +96,6 @@ public:
|
|
|
96
96
|
virtual sk_sp<SkSurface>
|
|
97
97
|
makeOffscreenSurface(int width, int height, bool useP3ColorSpace = false) = 0;
|
|
98
98
|
|
|
99
|
-
virtual std::shared_ptr<WindowContext>
|
|
100
|
-
makeContextFromNativeSurface(void *surface, int width, int height) = 0;
|
|
101
|
-
|
|
102
99
|
/**
|
|
103
100
|
* Creates an image from a native buffer.
|
|
104
101
|
* - On iOS, this is a `CVPixelBufferRef`
|
|
@@ -17,17 +17,11 @@ const Mask = ({
|
|
|
17
17
|
}) => {
|
|
18
18
|
return /*#__PURE__*/_react.default.createElement(_Group.Group, {
|
|
19
19
|
layer: true
|
|
20
|
-
}, /*#__PURE__*/_react.default.createElement(_Group.Group, {
|
|
20
|
+
}, children, /*#__PURE__*/_react.default.createElement(_Group.Group, {
|
|
21
21
|
layer: /*#__PURE__*/_react.default.createElement(_Paint.Paint, {
|
|
22
|
-
blendMode: "
|
|
22
|
+
blendMode: clip ? "dstIn" : "dstATop"
|
|
23
23
|
}, mode === "luminance" && /*#__PURE__*/_react.default.createElement(_LumaColorFilter.LumaColorFilter, null))
|
|
24
|
-
}, mask
|
|
25
|
-
layer: /*#__PURE__*/_react.default.createElement(_Paint.Paint, {
|
|
26
|
-
blendMode: "dstIn"
|
|
27
|
-
})
|
|
28
|
-
}, children)), /*#__PURE__*/_react.default.createElement(_Group.Group, {
|
|
29
|
-
blendMode: "srcIn"
|
|
30
|
-
}, children));
|
|
24
|
+
}, mask));
|
|
31
25
|
};
|
|
32
26
|
exports.Mask = Mask;
|
|
33
27
|
//# sourceMappingURL=Mask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_Group","_LumaColorFilter","_Paint","e","__esModule","default","Mask","children","mask","mode","clip","createElement","Group","layer","Paint","blendMode","LumaColorFilter","exports"],"sources":["Mask.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport React from \"react\";\n\nimport { Group } from \"./Group\";\nimport { LumaColorFilter } from \"./colorFilters/LumaColorFilter\";\nimport { Paint } from \"./Paint\";\n\ninterface MaskProps {\n mode?: \"luminance\" | \"alpha\";\n clip?: boolean;\n mask: ReactNode | ReactNode[];\n children: ReactNode | ReactNode[];\n}\n\nexport const Mask = ({\n children,\n mask,\n mode = \"alpha\",\n clip = true,\n}: MaskProps) => {\n return (\n <Group layer>\n <Group\n layer={\n <Paint blendMode
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_Group","_LumaColorFilter","_Paint","e","__esModule","default","Mask","children","mask","mode","clip","createElement","Group","layer","Paint","blendMode","LumaColorFilter","exports"],"sources":["Mask.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport React from \"react\";\n\nimport { Group } from \"./Group\";\nimport { LumaColorFilter } from \"./colorFilters/LumaColorFilter\";\nimport { Paint } from \"./Paint\";\n\ninterface MaskProps {\n mode?: \"luminance\" | \"alpha\";\n clip?: boolean;\n mask: ReactNode | ReactNode[];\n children: ReactNode | ReactNode[];\n}\n\nexport const Mask = ({\n children,\n mask,\n mode = \"alpha\",\n clip = true,\n}: MaskProps) => {\n return (\n <Group layer>\n {children}\n {/* The children composite against each other in the layer above; the\n mask is then applied once, when its own layer is restored. A blend\n mode attached to a <Group> without a layer would instead be applied\n per draw call, compositing every child after the first against the\n previous child rather than against the mask (issue #3254).\n dstIn keeps the children where the mask is opaque and erases them\n where it is transparent. Without clip, dstATop additionally keeps\n the mask artwork itself wherever the children leave it uncovered. */}\n <Group\n layer={\n <Paint blendMode={clip ? \"dstIn\" : \"dstATop\"}>\n {mode === \"luminance\" && <LumaColorFilter />}\n </Paint>\n }\n >\n {mask}\n </Group>\n </Group>\n );\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAgC,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AASzB,MAAMG,IAAI,GAAGA,CAAC;EACnBC,QAAQ;EACRC,IAAI;EACJC,IAAI,GAAG,OAAO;EACdC,IAAI,GAAG;AACE,CAAC,KAAK;EACf,oBACEb,MAAA,CAAAQ,OAAA,CAAAM,aAAA,CAACX,MAAA,CAAAY,KAAK;IAACC,KAAK;EAAA,GACTN,QAAQ,eASTV,MAAA,CAAAQ,OAAA,CAAAM,aAAA,CAACX,MAAA,CAAAY,KAAK;IACJC,KAAK,eACHhB,MAAA,CAAAQ,OAAA,CAAAM,aAAA,CAACT,MAAA,CAAAY,KAAK;MAACC,SAAS,EAAEL,IAAI,GAAG,OAAO,GAAG;IAAU,GAC1CD,IAAI,KAAK,WAAW,iBAAIZ,MAAA,CAAAQ,OAAA,CAAAM,aAAA,CAACV,gBAAA,CAAAe,eAAe,MAAE,CACtC;EACR,GAEAR,IACI,CACF,CAAC;AAEZ,CAAC;AAACS,OAAA,CAAAX,IAAA,GAAAA,IAAA","ignoreList":[]}
|
|
@@ -97,13 +97,18 @@ const multiply4 = (a, b) => {
|
|
|
97
97
|
}
|
|
98
98
|
return result;
|
|
99
99
|
};
|
|
100
|
+
|
|
101
|
+
// These matrices are row-major, so the shear factor of skewX - which offsets x
|
|
102
|
+
// in proportion to y - belongs in row 0, column 1, and skewY's in row 1,
|
|
103
|
+
// column 0. React Native's MatrixMath stores the same transforms column-major,
|
|
104
|
+
// and porting its indices verbatim is what swapped the two axes here.
|
|
100
105
|
exports.multiply4 = multiply4;
|
|
101
|
-
const
|
|
106
|
+
const skewX = angle => {
|
|
102
107
|
"worklet";
|
|
103
108
|
|
|
104
109
|
return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
105
110
|
};
|
|
106
|
-
const
|
|
111
|
+
const skewY = angle => {
|
|
107
112
|
"worklet";
|
|
108
113
|
|
|
109
114
|
return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["exhaustiveCheck","a","Error","Matrix4","exports","translate","x","y","z","perspective","p","normalizeVec","vec","length","Math","sqrt","rotatedUnitSinCos","axisVec","sinAngle","cosAngle","c","s","t","matrixVecMul4","m","v","mapPoint3d","r","multiply4","b","result","Array","fill","i","j","skewY","angle","tan","skewX","toMatrix3","rotate","axis","value","sin","cos","pivot","scale","sx","sy","sz","m4","rotateAxis","rotateZ","rotateX","rotateY","processTransform3d","transforms","reduce","acc","val","key","Object","keys","transform","convertToColumnMajor","rowMajorMatrix","colMajorMatrix","size","row","col","convertToColumnMajor3","convertToAffineMatrix","d","tx","ty","det3x3","a00","a01","a02","a10","a11","a12","a20","a21","a22","invert4","a03","a13","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","det","abs","invDet","vecSub","vecCross","lookat","eyeVec","centerVec","upVec","f","u","uf","perspectiveMatrix","near","far","dInv","halfAngle","cot","setupCamera","area","zscale","cam","camera","eye","coa","up","center","viewScale","viewport"],"sources":["Matrix4.ts"],"sourcesContent":["type Point = { x: number; y: number };\ntype Vec2 = readonly [number, number];\nexport type Vec3 = readonly [number, number, number];\nexport type Vec4 = readonly [number, number, number, number];\n\nexport type Matrix3 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\nexport type Matrix4 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\ntype Transform3dName =\n | \"translateX\"\n | \"translateY\"\n | \"translateZ\"\n | \"translate\"\n | \"scale\"\n | \"scaleX\"\n | \"scaleY\"\n | \"skewX\"\n | \"skewY\"\n | \"rotateZ\"\n | \"rotate\"\n | \"perspective\"\n | \"rotateX\"\n | \"rotateY\"\n | \"matrix\";\n\ntype Transformations = {\n [Name in Transform3dName]: Name extends \"matrix\"\n ? Matrix4\n : Name extends \"translate\"\n ? Vec3 | Vec2\n : number;\n};\n\ntype Transform3d =\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"translateZ\">\n | Pick<Transformations, \"translate\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"perspective\">\n | Pick<Transformations, \"rotateX\">\n | Pick<Transformations, \"rotateY\">\n | Pick<Transformations, \"rotateZ\">\n | Pick<Transformations, \"rotate\">\n | Pick<Transformations, \"matrix\">;\n\nexport type Transforms3d = Transform3d[];\n\nconst exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n/**\n * @worklet\n */\nexport const Matrix4 = (): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const translate = (x: number, y: number, z = 0): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const perspective = (p: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p, 1];\n};\n\nconst normalizeVec = (vec: Vec3): Vec3 => {\n \"worklet\";\n const [x, y, z] = vec;\n const length = Math.sqrt(x * x + y * y + z * z);\n // Check for zero length to avoid division by zero\n if (length === 0) {\n return [0, 0, 0];\n }\n return [x / length, y / length, z / length];\n};\n\nconst rotatedUnitSinCos = (\n axisVec: Vec3,\n sinAngle: number,\n cosAngle: number\n): Matrix4 => {\n \"worklet\";\n const x = axisVec[0];\n const y = axisVec[1];\n const z = axisVec[2];\n const c = cosAngle;\n const s = sinAngle;\n const t = 1 - c;\n return [\n t * x * x + c,\n t * x * y - s * z,\n t * x * z + s * y,\n 0,\n t * x * y + s * z,\n t * y * y + c,\n t * y * z - s * x,\n 0,\n t * x * z - s * y,\n t * y * z + s * x,\n t * z * z + c,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n};\n\n/**\n * @worklet\n */\nexport const matrixVecMul4 = (m: Matrix4, v: Vec4): Vec4 => {\n \"worklet\";\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],\n m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],\n m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],\n m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3],\n ];\n};\n\n/**\n * @worklet\n */\nexport const mapPoint3d = (m: Matrix4, v: Vec3) => {\n \"worklet\";\n const r = matrixVecMul4(m, [...v, 1]);\n return [r[0] / r[3], r[1] / r[3], r[2] / r[3]] as const;\n};\n\n/**\n * @worklet\n */\nexport const multiply4 = (a: Matrix4, b: Matrix4): Matrix4 => {\n \"worklet\";\n const result = new Array(16).fill(0);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n result[i * 4 + j] =\n a[i * 4] * b[j] +\n a[i * 4 + 1] * b[j + 4] +\n a[i * 4 + 2] * b[j + 8] +\n a[i * 4 + 3] * b[j + 12];\n }\n }\n return result as unknown as Matrix4;\n};\n\nconst skewY = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\nconst skewX = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const toMatrix3 = (m: Matrix4) => {\n \"worklet\";\n return [m[0], m[1], m[3], m[4], m[5], m[7], m[12], m[13], m[15]];\n};\n\nconst rotate = (axis: Vec3, value: number) => {\n \"worklet\";\n return rotatedUnitSinCos(\n normalizeVec(axis),\n Math.sin(value),\n Math.cos(value)\n );\n};\n\n/**\n * @worklet\n */\nexport const pivot = (m: Matrix4, p: Point) => {\n \"worklet\";\n return multiply4(translate(p.x, p.y), multiply4(m, translate(-p.x, -p.y)));\n};\n\n/**\n * @worklet\n */\nexport const scale = (sx: number, sy: number, sz = 1, p?: Point): Matrix4 => {\n \"worklet\";\n const m4: Matrix4 = [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1];\n if (p) {\n return pivot(m4, p);\n }\n return m4;\n};\n\nconst rotateAxis = (axis: Vec3, angle: number, p?: Point) => {\n \"worklet\";\n const result = rotate(axis, angle);\n if (p) {\n return pivot(result, p);\n }\n return result;\n};\n\n/**\n * @worklet\n */\nexport const rotateZ = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 0, 1], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateX = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([1, 0, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateY = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 1, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const processTransform3d = (transforms: Transforms3d) => {\n \"worklet\";\n return transforms.reduce((acc, val) => {\n const key = Object.keys(val)[0] as Transform3dName;\n const transform = val as Pick<Transformations, typeof key>;\n if (key === \"translateX\") {\n const value = transform[key];\n return multiply4(acc, translate(value, 0, 0));\n }\n if (key === \"translate\") {\n const [x, y, z = 0] = transform[key];\n return multiply4(acc, translate(x, y, z));\n }\n if (key === \"translateY\") {\n const value = transform[key];\n return multiply4(acc, translate(0, value, 0));\n }\n if (key === \"translateZ\") {\n const value = transform[key];\n return multiply4(acc, translate(0, 0, value));\n }\n if (key === \"scale\") {\n const value = transform[key];\n return multiply4(acc, scale(value, value, 1));\n }\n if (key === \"scaleX\") {\n const value = transform[key];\n return multiply4(acc, scale(value, 1, 1));\n }\n if (key === \"scaleY\") {\n const value = transform[key];\n return multiply4(acc, scale(1, value, 1));\n }\n if (key === \"skewX\") {\n const value = transform[key];\n return multiply4(acc, skewX(value));\n }\n if (key === \"skewY\") {\n const value = transform[key];\n return multiply4(acc, skewY(value));\n }\n if (key === \"rotateX\") {\n const value = transform[key];\n return multiply4(acc, rotate([1, 0, 0], value));\n }\n if (key === \"rotateY\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 1, 0], value));\n }\n if (key === \"perspective\") {\n const value = transform[key];\n return multiply4(acc, perspective(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 0, 1], value));\n }\n if (key === \"matrix\") {\n const value = transform[key];\n return multiply4(acc, value);\n }\n return exhaustiveCheck(key);\n }, Matrix4());\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(16);\n const size = 4;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix4;\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor3 = (rowMajorMatrix: Matrix3 | number[]) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(9);\n const size = 3;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix3;\n};\n\n/**\n * @worklet\n */\nexport const convertToAffineMatrix = (m4: Matrix4) => {\n \"worklet\";\n // Extracting the relevant components from the 4x4 matrix\n const a = m4[0]; // Scale X\n const b = m4[1]; // Skew Y\n const c = m4[4]; // Skew X\n const d = m4[5]; // Scale Y\n const tx = m4[12]; // Translate X\n const ty = m4[13]; // Translate Y\n\n // Returning the 6-element affine transformation matrix\n return [a, b, c, d, tx, ty];\n};\n\n/**\n * Calculates the determinant of a 3x3 matrix\n * @worklet\n */\nconst det3x3 = (\n a00: number,\n a01: number,\n a02: number,\n a10: number,\n a11: number,\n a12: number,\n a20: number,\n a21: number,\n a22: number\n): number => {\n \"worklet\";\n return (\n a00 * (a11 * a22 - a12 * a21) +\n a01 * (a12 * a20 - a10 * a22) +\n a02 * (a10 * a21 - a11 * a20)\n );\n};\n\n/**\n * Inverts a 4x4 matrix\n * @worklet\n * @returns The inverted matrix, or the identity matrix if the input is not invertible\n */\nexport const invert4 = (m: Matrix4): Matrix4 => {\n \"worklet\";\n\n const a00 = m[0],\n a01 = m[1],\n a02 = m[2],\n a03 = m[3];\n const a10 = m[4],\n a11 = m[5],\n a12 = m[6],\n a13 = m[7];\n const a20 = m[8],\n a21 = m[9],\n a22 = m[10],\n a23 = m[11];\n const a30 = m[12],\n a31 = m[13],\n a32 = m[14],\n a33 = m[15];\n\n // Calculate cofactors\n const b00 = det3x3(a11, a12, a13, a21, a22, a23, a31, a32, a33);\n const b01 = -det3x3(a10, a12, a13, a20, a22, a23, a30, a32, a33);\n const b02 = det3x3(a10, a11, a13, a20, a21, a23, a30, a31, a33);\n const b03 = -det3x3(a10, a11, a12, a20, a21, a22, a30, a31, a32);\n\n const b10 = -det3x3(a01, a02, a03, a21, a22, a23, a31, a32, a33);\n const b11 = det3x3(a00, a02, a03, a20, a22, a23, a30, a32, a33);\n const b12 = -det3x3(a00, a01, a03, a20, a21, a23, a30, a31, a33);\n const b13 = det3x3(a00, a01, a02, a20, a21, a22, a30, a31, a32);\n\n const b20 = det3x3(a01, a02, a03, a11, a12, a13, a31, a32, a33);\n const b21 = -det3x3(a00, a02, a03, a10, a12, a13, a30, a32, a33);\n const b22 = det3x3(a00, a01, a03, a10, a11, a13, a30, a31, a33);\n const b23 = -det3x3(a00, a01, a02, a10, a11, a12, a30, a31, a32);\n\n const b30 = -det3x3(a01, a02, a03, a11, a12, a13, a21, a22, a23);\n const b31 = det3x3(a00, a02, a03, a10, a12, a13, a20, a22, a23);\n const b32 = -det3x3(a00, a01, a03, a10, a11, a13, a20, a21, a23);\n const b33 = det3x3(a00, a01, a02, a10, a11, a12, a20, a21, a22);\n\n // Calculate determinant\n const det = a00 * b00 + a01 * b01 + a02 * b02 + a03 * b03;\n\n // Check if matrix is invertible\n if (Math.abs(det) < 1e-8) {\n // Return identity matrix if not invertible\n return Matrix4();\n }\n\n const invDet = 1.0 / det;\n\n // Calculate inverse matrix\n return [\n b00 * invDet,\n b10 * invDet,\n b20 * invDet,\n b30 * invDet,\n b01 * invDet,\n b11 * invDet,\n b21 * invDet,\n b31 * invDet,\n b02 * invDet,\n b12 * invDet,\n b22 * invDet,\n b32 * invDet,\n b03 * invDet,\n b13 * invDet,\n b23 * invDet,\n b33 * invDet,\n ] as Matrix4;\n};\n\nconst vecSub = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n};\n\nconst vecCross = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0],\n ];\n};\n\nconst lookat = (eyeVec: Vec3, centerVec: Vec3, upVec: Vec3): Matrix4 => {\n \"worklet\";\n const f = normalizeVec(vecSub(centerVec, eyeVec));\n const u = normalizeVec(upVec);\n const s = normalizeVec(vecCross(f, u));\n const uf = vecCross(s, f);\n\n // Build the look-at matrix directly\n const m: Matrix4 = [\n s[0],\n uf[0],\n -f[0],\n eyeVec[0],\n s[1],\n uf[1],\n -f[1],\n eyeVec[1],\n s[2],\n uf[2],\n -f[2],\n eyeVec[2],\n 0,\n 0,\n 0,\n 1,\n ];\n\n return invert4(m);\n};\n\nconst perspectiveMatrix = (\n near: number,\n far: number,\n angle: number\n): Matrix4 => {\n \"worklet\";\n const dInv = 1 / (far - near);\n const halfAngle = angle / 2;\n const cot = Math.cos(halfAngle) / Math.sin(halfAngle);\n return [\n cot,\n 0,\n 0,\n 0,\n 0,\n cot,\n 0,\n 0,\n 0,\n 0,\n (far + near) * dInv,\n 2 * far * near * dInv,\n 0,\n 0,\n -1,\n 1,\n ];\n};\n\nexport interface CameraConfig {\n eye: Vec3;\n coa: Vec3;\n up: Vec3;\n near: number;\n far: number;\n angle: number;\n}\n\nexport const setupCamera = (\n area: Vec4,\n zscale: number,\n cam: CameraConfig\n): Matrix4 => {\n \"worklet\";\n const camera = lookat(cam.eye, cam.coa, cam.up);\n const p = perspectiveMatrix(cam.near, cam.far, cam.angle);\n const center: Vec3 = [(area[0] + area[2]) / 2, (area[1] + area[3]) / 2, 0];\n const viewScale: Vec3 = [\n (area[2] - area[0]) / 2,\n (area[3] - area[1]) / 2,\n zscale,\n ];\n const viewport = multiply4(\n translate(center[0], center[1], center[2]),\n scale(viewScale[0], viewScale[1], viewScale[2])\n );\n return multiply4(\n multiply4(viewport, p),\n multiply4(camera, invert4(viewport))\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["exhaustiveCheck","a","Error","Matrix4","exports","translate","x","y","z","perspective","p","normalizeVec","vec","length","Math","sqrt","rotatedUnitSinCos","axisVec","sinAngle","cosAngle","c","s","t","matrixVecMul4","m","v","mapPoint3d","r","multiply4","b","result","Array","fill","i","j","skewX","angle","tan","skewY","toMatrix3","rotate","axis","value","sin","cos","pivot","scale","sx","sy","sz","m4","rotateAxis","rotateZ","rotateX","rotateY","processTransform3d","transforms","reduce","acc","val","key","Object","keys","transform","convertToColumnMajor","rowMajorMatrix","colMajorMatrix","size","row","col","convertToColumnMajor3","convertToAffineMatrix","d","tx","ty","det3x3","a00","a01","a02","a10","a11","a12","a20","a21","a22","invert4","a03","a13","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","det","abs","invDet","vecSub","vecCross","lookat","eyeVec","centerVec","upVec","f","u","uf","perspectiveMatrix","near","far","dInv","halfAngle","cot","setupCamera","area","zscale","cam","camera","eye","coa","up","center","viewScale","viewport"],"sources":["Matrix4.ts"],"sourcesContent":["type Point = { x: number; y: number };\ntype Vec2 = readonly [number, number];\nexport type Vec3 = readonly [number, number, number];\nexport type Vec4 = readonly [number, number, number, number];\n\nexport type Matrix3 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\nexport type Matrix4 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\ntype Transform3dName =\n | \"translateX\"\n | \"translateY\"\n | \"translateZ\"\n | \"translate\"\n | \"scale\"\n | \"scaleX\"\n | \"scaleY\"\n | \"skewX\"\n | \"skewY\"\n | \"rotateZ\"\n | \"rotate\"\n | \"perspective\"\n | \"rotateX\"\n | \"rotateY\"\n | \"matrix\";\n\ntype Transformations = {\n [Name in Transform3dName]: Name extends \"matrix\"\n ? Matrix4\n : Name extends \"translate\"\n ? Vec3 | Vec2\n : number;\n};\n\ntype Transform3d =\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"translateZ\">\n | Pick<Transformations, \"translate\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"perspective\">\n | Pick<Transformations, \"rotateX\">\n | Pick<Transformations, \"rotateY\">\n | Pick<Transformations, \"rotateZ\">\n | Pick<Transformations, \"rotate\">\n | Pick<Transformations, \"matrix\">;\n\nexport type Transforms3d = Transform3d[];\n\nconst exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n/**\n * @worklet\n */\nexport const Matrix4 = (): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const translate = (x: number, y: number, z = 0): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const perspective = (p: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p, 1];\n};\n\nconst normalizeVec = (vec: Vec3): Vec3 => {\n \"worklet\";\n const [x, y, z] = vec;\n const length = Math.sqrt(x * x + y * y + z * z);\n // Check for zero length to avoid division by zero\n if (length === 0) {\n return [0, 0, 0];\n }\n return [x / length, y / length, z / length];\n};\n\nconst rotatedUnitSinCos = (\n axisVec: Vec3,\n sinAngle: number,\n cosAngle: number\n): Matrix4 => {\n \"worklet\";\n const x = axisVec[0];\n const y = axisVec[1];\n const z = axisVec[2];\n const c = cosAngle;\n const s = sinAngle;\n const t = 1 - c;\n return [\n t * x * x + c,\n t * x * y - s * z,\n t * x * z + s * y,\n 0,\n t * x * y + s * z,\n t * y * y + c,\n t * y * z - s * x,\n 0,\n t * x * z - s * y,\n t * y * z + s * x,\n t * z * z + c,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n};\n\n/**\n * @worklet\n */\nexport const matrixVecMul4 = (m: Matrix4, v: Vec4): Vec4 => {\n \"worklet\";\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],\n m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],\n m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],\n m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3],\n ];\n};\n\n/**\n * @worklet\n */\nexport const mapPoint3d = (m: Matrix4, v: Vec3) => {\n \"worklet\";\n const r = matrixVecMul4(m, [...v, 1]);\n return [r[0] / r[3], r[1] / r[3], r[2] / r[3]] as const;\n};\n\n/**\n * @worklet\n */\nexport const multiply4 = (a: Matrix4, b: Matrix4): Matrix4 => {\n \"worklet\";\n const result = new Array(16).fill(0);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n result[i * 4 + j] =\n a[i * 4] * b[j] +\n a[i * 4 + 1] * b[j + 4] +\n a[i * 4 + 2] * b[j + 8] +\n a[i * 4 + 3] * b[j + 12];\n }\n }\n return result as unknown as Matrix4;\n};\n\n// These matrices are row-major, so the shear factor of skewX - which offsets x\n// in proportion to y - belongs in row 0, column 1, and skewY's in row 1,\n// column 0. React Native's MatrixMath stores the same transforms column-major,\n// and porting its indices verbatim is what swapped the two axes here.\nconst skewX = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\nconst skewY = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const toMatrix3 = (m: Matrix4) => {\n \"worklet\";\n return [m[0], m[1], m[3], m[4], m[5], m[7], m[12], m[13], m[15]];\n};\n\nconst rotate = (axis: Vec3, value: number) => {\n \"worklet\";\n return rotatedUnitSinCos(\n normalizeVec(axis),\n Math.sin(value),\n Math.cos(value)\n );\n};\n\n/**\n * @worklet\n */\nexport const pivot = (m: Matrix4, p: Point) => {\n \"worklet\";\n return multiply4(translate(p.x, p.y), multiply4(m, translate(-p.x, -p.y)));\n};\n\n/**\n * @worklet\n */\nexport const scale = (sx: number, sy: number, sz = 1, p?: Point): Matrix4 => {\n \"worklet\";\n const m4: Matrix4 = [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1];\n if (p) {\n return pivot(m4, p);\n }\n return m4;\n};\n\nconst rotateAxis = (axis: Vec3, angle: number, p?: Point) => {\n \"worklet\";\n const result = rotate(axis, angle);\n if (p) {\n return pivot(result, p);\n }\n return result;\n};\n\n/**\n * @worklet\n */\nexport const rotateZ = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 0, 1], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateX = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([1, 0, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateY = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 1, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const processTransform3d = (transforms: Transforms3d) => {\n \"worklet\";\n return transforms.reduce((acc, val) => {\n const key = Object.keys(val)[0] as Transform3dName;\n const transform = val as Pick<Transformations, typeof key>;\n if (key === \"translateX\") {\n const value = transform[key];\n return multiply4(acc, translate(value, 0, 0));\n }\n if (key === \"translate\") {\n const [x, y, z = 0] = transform[key];\n return multiply4(acc, translate(x, y, z));\n }\n if (key === \"translateY\") {\n const value = transform[key];\n return multiply4(acc, translate(0, value, 0));\n }\n if (key === \"translateZ\") {\n const value = transform[key];\n return multiply4(acc, translate(0, 0, value));\n }\n if (key === \"scale\") {\n const value = transform[key];\n return multiply4(acc, scale(value, value, 1));\n }\n if (key === \"scaleX\") {\n const value = transform[key];\n return multiply4(acc, scale(value, 1, 1));\n }\n if (key === \"scaleY\") {\n const value = transform[key];\n return multiply4(acc, scale(1, value, 1));\n }\n if (key === \"skewX\") {\n const value = transform[key];\n return multiply4(acc, skewX(value));\n }\n if (key === \"skewY\") {\n const value = transform[key];\n return multiply4(acc, skewY(value));\n }\n if (key === \"rotateX\") {\n const value = transform[key];\n return multiply4(acc, rotate([1, 0, 0], value));\n }\n if (key === \"rotateY\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 1, 0], value));\n }\n if (key === \"perspective\") {\n const value = transform[key];\n return multiply4(acc, perspective(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 0, 1], value));\n }\n if (key === \"matrix\") {\n const value = transform[key];\n return multiply4(acc, value);\n }\n return exhaustiveCheck(key);\n }, Matrix4());\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(16);\n const size = 4;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix4;\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor3 = (rowMajorMatrix: Matrix3 | number[]) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(9);\n const size = 3;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix3;\n};\n\n/**\n * @worklet\n */\nexport const convertToAffineMatrix = (m4: Matrix4) => {\n \"worklet\";\n // Extracting the relevant components from the 4x4 matrix\n const a = m4[0]; // Scale X\n const b = m4[1]; // Skew Y\n const c = m4[4]; // Skew X\n const d = m4[5]; // Scale Y\n const tx = m4[12]; // Translate X\n const ty = m4[13]; // Translate Y\n\n // Returning the 6-element affine transformation matrix\n return [a, b, c, d, tx, ty];\n};\n\n/**\n * Calculates the determinant of a 3x3 matrix\n * @worklet\n */\nconst det3x3 = (\n a00: number,\n a01: number,\n a02: number,\n a10: number,\n a11: number,\n a12: number,\n a20: number,\n a21: number,\n a22: number\n): number => {\n \"worklet\";\n return (\n a00 * (a11 * a22 - a12 * a21) +\n a01 * (a12 * a20 - a10 * a22) +\n a02 * (a10 * a21 - a11 * a20)\n );\n};\n\n/**\n * Inverts a 4x4 matrix\n * @worklet\n * @returns The inverted matrix, or the identity matrix if the input is not invertible\n */\nexport const invert4 = (m: Matrix4): Matrix4 => {\n \"worklet\";\n\n const a00 = m[0],\n a01 = m[1],\n a02 = m[2],\n a03 = m[3];\n const a10 = m[4],\n a11 = m[5],\n a12 = m[6],\n a13 = m[7];\n const a20 = m[8],\n a21 = m[9],\n a22 = m[10],\n a23 = m[11];\n const a30 = m[12],\n a31 = m[13],\n a32 = m[14],\n a33 = m[15];\n\n // Calculate cofactors\n const b00 = det3x3(a11, a12, a13, a21, a22, a23, a31, a32, a33);\n const b01 = -det3x3(a10, a12, a13, a20, a22, a23, a30, a32, a33);\n const b02 = det3x3(a10, a11, a13, a20, a21, a23, a30, a31, a33);\n const b03 = -det3x3(a10, a11, a12, a20, a21, a22, a30, a31, a32);\n\n const b10 = -det3x3(a01, a02, a03, a21, a22, a23, a31, a32, a33);\n const b11 = det3x3(a00, a02, a03, a20, a22, a23, a30, a32, a33);\n const b12 = -det3x3(a00, a01, a03, a20, a21, a23, a30, a31, a33);\n const b13 = det3x3(a00, a01, a02, a20, a21, a22, a30, a31, a32);\n\n const b20 = det3x3(a01, a02, a03, a11, a12, a13, a31, a32, a33);\n const b21 = -det3x3(a00, a02, a03, a10, a12, a13, a30, a32, a33);\n const b22 = det3x3(a00, a01, a03, a10, a11, a13, a30, a31, a33);\n const b23 = -det3x3(a00, a01, a02, a10, a11, a12, a30, a31, a32);\n\n const b30 = -det3x3(a01, a02, a03, a11, a12, a13, a21, a22, a23);\n const b31 = det3x3(a00, a02, a03, a10, a12, a13, a20, a22, a23);\n const b32 = -det3x3(a00, a01, a03, a10, a11, a13, a20, a21, a23);\n const b33 = det3x3(a00, a01, a02, a10, a11, a12, a20, a21, a22);\n\n // Calculate determinant\n const det = a00 * b00 + a01 * b01 + a02 * b02 + a03 * b03;\n\n // Check if matrix is invertible\n if (Math.abs(det) < 1e-8) {\n // Return identity matrix if not invertible\n return Matrix4();\n }\n\n const invDet = 1.0 / det;\n\n // Calculate inverse matrix\n return [\n b00 * invDet,\n b10 * invDet,\n b20 * invDet,\n b30 * invDet,\n b01 * invDet,\n b11 * invDet,\n b21 * invDet,\n b31 * invDet,\n b02 * invDet,\n b12 * invDet,\n b22 * invDet,\n b32 * invDet,\n b03 * invDet,\n b13 * invDet,\n b23 * invDet,\n b33 * invDet,\n ] as Matrix4;\n};\n\nconst vecSub = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n};\n\nconst vecCross = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0],\n ];\n};\n\nconst lookat = (eyeVec: Vec3, centerVec: Vec3, upVec: Vec3): Matrix4 => {\n \"worklet\";\n const f = normalizeVec(vecSub(centerVec, eyeVec));\n const u = normalizeVec(upVec);\n const s = normalizeVec(vecCross(f, u));\n const uf = vecCross(s, f);\n\n // Build the look-at matrix directly\n const m: Matrix4 = [\n s[0],\n uf[0],\n -f[0],\n eyeVec[0],\n s[1],\n uf[1],\n -f[1],\n eyeVec[1],\n s[2],\n uf[2],\n -f[2],\n eyeVec[2],\n 0,\n 0,\n 0,\n 1,\n ];\n\n return invert4(m);\n};\n\nconst perspectiveMatrix = (\n near: number,\n far: number,\n angle: number\n): Matrix4 => {\n \"worklet\";\n const dInv = 1 / (far - near);\n const halfAngle = angle / 2;\n const cot = Math.cos(halfAngle) / Math.sin(halfAngle);\n return [\n cot,\n 0,\n 0,\n 0,\n 0,\n cot,\n 0,\n 0,\n 0,\n 0,\n (far + near) * dInv,\n 2 * far * near * dInv,\n 0,\n 0,\n -1,\n 1,\n ];\n};\n\nexport interface CameraConfig {\n eye: Vec3;\n coa: Vec3;\n up: Vec3;\n near: number;\n far: number;\n angle: number;\n}\n\nexport const setupCamera = (\n area: Vec4,\n zscale: number,\n cam: CameraConfig\n): Matrix4 => {\n \"worklet\";\n const camera = lookat(cam.eye, cam.coa, cam.up);\n const p = perspectiveMatrix(cam.near, cam.far, cam.angle);\n const center: Vec3 = [(area[0] + area[2]) / 2, (area[1] + area[3]) / 2, 0];\n const viewScale: Vec3 = [\n (area[2] - area[0]) / 2,\n (area[3] - area[1]) / 2,\n zscale,\n ];\n const viewport = multiply4(\n translate(center[0], center[1], center[2]),\n scale(viewScale[0], viewScale[1], viewScale[2])\n );\n return multiply4(\n multiply4(viewport, p),\n multiply4(camera, invert4(viewport))\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,7 +17,7 @@ import type { SkVertices, VertexMode } from "./Vertices/Vertices";
|
|
|
17
17
|
import type { DataFactory } from "./Data";
|
|
18
18
|
import type { SVGFactory } from "./SVG";
|
|
19
19
|
import type { TextBlobFactory } from "./TextBlob";
|
|
20
|
-
import type {
|
|
20
|
+
import type { SurfaceFactory } from "./Surface";
|
|
21
21
|
import type { SkRSXform } from "./RSXform";
|
|
22
22
|
import type { SkPath } from "./Path/Path";
|
|
23
23
|
import type { SkContourMeasureIter } from "./ContourMeasure";
|
|
@@ -30,10 +30,6 @@ import type { Video } from "./Video";
|
|
|
30
30
|
import type { NativeBufferFactory } from "./NativeBuffer";
|
|
31
31
|
import type { JsiRecorder } from "./Recorder";
|
|
32
32
|
import type { SkottieFactory } from "./Skottie";
|
|
33
|
-
export interface SkiaContext {
|
|
34
|
-
getSurface(): SkSurface;
|
|
35
|
-
present(): void;
|
|
36
|
-
}
|
|
37
33
|
/**
|
|
38
34
|
* Declares the interface for the native Skia API
|
|
39
35
|
*/
|
|
@@ -82,7 +78,6 @@ export interface Skia {
|
|
|
82
78
|
ParagraphBuilder: ParagraphBuilderFactory;
|
|
83
79
|
Skottie: SkottieFactory;
|
|
84
80
|
Video: (url: string) => Promise<Video> | Video;
|
|
85
|
-
Context(surface: bigint, width: number, height: number): SkiaContext;
|
|
86
81
|
NativeBuffer: NativeBufferFactory;
|
|
87
82
|
Recorder(): JsiRecorder;
|
|
88
83
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["Skia.ts"],"sourcesContent":["import type { ImageFilterFactory } from \"./ImageFilter\";\nimport type { PathFactory, PathBuilderFactory } from \"./Path\";\nimport type { ColorFilterFactory } from \"./ColorFilter\";\nimport type { SkFont, FontMgrFactory } from \"./Font\";\nimport type { SkTypeface, TypefaceFactory } from \"./Typeface\";\nimport type { ImageFactory } from \"./Image\";\nimport type { MaskFilterFactory } from \"./MaskFilter\";\nimport type { SkPaint } from \"./Paint\";\nimport type { SkHostRect, SkRect } from \"./Rect\";\nimport type { SkRRect } from \"./RRect\";\nimport type {\n RuntimeEffectFactory,\n SkRuntimeEffect,\n SkRuntimeShaderBuilder,\n} from \"./RuntimeEffect\";\nimport type { ShaderFactory } from \"./Shader\";\nimport type { SkMatrix } from \"./Matrix\";\nimport type { PathEffectFactory } from \"./PathEffect\";\nimport type { SkPoint } from \"./Point\";\nimport type { SkVertices, VertexMode } from \"./Vertices/Vertices\";\nimport type { DataFactory } from \"./Data\";\nimport type { SVGFactory } from \"./SVG\";\nimport type { TextBlobFactory } from \"./TextBlob\";\nimport type {
|
|
1
|
+
{"version":3,"names":[],"sources":["Skia.ts"],"sourcesContent":["import type { ImageFilterFactory } from \"./ImageFilter\";\nimport type { PathFactory, PathBuilderFactory } from \"./Path\";\nimport type { ColorFilterFactory } from \"./ColorFilter\";\nimport type { SkFont, FontMgrFactory } from \"./Font\";\nimport type { SkTypeface, TypefaceFactory } from \"./Typeface\";\nimport type { ImageFactory } from \"./Image\";\nimport type { MaskFilterFactory } from \"./MaskFilter\";\nimport type { SkPaint } from \"./Paint\";\nimport type { SkHostRect, SkRect } from \"./Rect\";\nimport type { SkRRect } from \"./RRect\";\nimport type {\n RuntimeEffectFactory,\n SkRuntimeEffect,\n SkRuntimeShaderBuilder,\n} from \"./RuntimeEffect\";\nimport type { ShaderFactory } from \"./Shader\";\nimport type { SkMatrix } from \"./Matrix\";\nimport type { PathEffectFactory } from \"./PathEffect\";\nimport type { SkPoint } from \"./Point\";\nimport type { SkVertices, VertexMode } from \"./Vertices/Vertices\";\nimport type { DataFactory } from \"./Data\";\nimport type { SVGFactory } from \"./SVG\";\nimport type { TextBlobFactory } from \"./TextBlob\";\nimport type { SurfaceFactory } from \"./Surface\";\nimport type { SkRSXform } from \"./RSXform\";\nimport type { SkPath } from \"./Path/Path\";\nimport type { SkContourMeasureIter } from \"./ContourMeasure\";\nimport type { PictureFactory, SkPictureRecorder } from \"./Picture\";\nimport type { Color, SkColor } from \"./Color\";\nimport type { TypefaceFontProviderFactory } from \"./Paragraph/TypefaceFontProviderFactory\";\nimport type { AnimatedImageFactory } from \"./AnimatedImage\";\nimport type { ParagraphBuilderFactory } from \"./Paragraph/ParagraphBuilder\";\nimport type { Video } from \"./Video\";\nimport type { NativeBufferFactory } from \"./NativeBuffer\";\nimport type { JsiRecorder } from \"./Recorder\";\nimport type { SkottieFactory } from \"./Skottie\";\n\n/**\n * Declares the interface for the native Skia API\n */\nexport interface Skia {\n Point: (x: number, y: number) => SkPoint;\n XYWHRect: (x: number, y: number, width: number, height: number) => SkHostRect;\n RuntimeShaderBuilder: (rt: SkRuntimeEffect) => SkRuntimeShaderBuilder;\n RRectXY: (rect: SkRect, rx: number, ry: number) => SkRRect;\n RSXform: (scos: number, ssin: number, tx: number, ty: number) => SkRSXform;\n RSXformFromRadians: (\n scale: number,\n radians: number,\n tx: number,\n ty: number,\n px: number,\n py: number\n ) => SkRSXform;\n Color: (color: Color) => SkColor;\n ContourMeasureIter: (\n path: SkPath,\n forceClosed: boolean,\n resScale: number\n ) => SkContourMeasureIter;\n Paint: () => SkPaint;\n PictureRecorder: () => SkPictureRecorder;\n Picture: PictureFactory;\n Path: PathFactory;\n PathBuilder: PathBuilderFactory;\n Matrix: (matrix?: readonly number[]) => SkMatrix;\n ColorFilter: ColorFilterFactory;\n Font: (typeface?: SkTypeface, size?: number) => SkFont;\n Typeface: TypefaceFactory;\n TypefaceFontProvider: TypefaceFontProviderFactory;\n FontMgr: FontMgrFactory;\n MaskFilter: MaskFilterFactory;\n RuntimeEffect: RuntimeEffectFactory;\n ImageFilter: ImageFilterFactory;\n Shader: ShaderFactory;\n PathEffect: PathEffectFactory;\n /**\n * Returns an Vertices based on the given positions and optional parameters.\n * See SkVertices.h (especially the Builder) for more details.\n * @param mode\n * @param positions\n * @param textureCoordinates\n * @param colors - either a list of int colors or a flattened color array.\n * @param indices\n * @param isVolatile\n */\n MakeVertices(\n mode: VertexMode,\n positions: SkPoint[],\n textureCoordinates?: SkPoint[] | null,\n colors?: SkColor[],\n indices?: number[] | null,\n isVolatile?: boolean\n ): SkVertices;\n Data: DataFactory;\n Image: ImageFactory;\n AnimatedImage: AnimatedImageFactory;\n SVG: SVGFactory;\n TextBlob: TextBlobFactory;\n Surface: SurfaceFactory;\n ParagraphBuilder: ParagraphBuilderFactory;\n Skottie: SkottieFactory;\n Video: (url: string) => Promise<Video> | Video;\n NativeBuffer: NativeBufferFactory;\n Recorder(): JsiRecorder;\n /**\n * Raw WGPUDevice pointer of Skia's Graphite device, as a BigInt. Pass it to\n * react-native-webgpu's importDevice() to get a GPUDevice sharing Skia's\n * device (zero-copy interop). Only available on Graphite builds; throws\n * otherwise.\n */\n getNativeDevice(): bigint;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -93,9 +93,6 @@ const JsiSkApi = CanvasKit => ({
|
|
|
93
93
|
NativeBuffer: new _JsiSkNativeBufferFactory.JsiSkNativeBufferFactory(CanvasKit),
|
|
94
94
|
Skottie: new _JsiSkottieFactory.JsiSkottieFactory(CanvasKit),
|
|
95
95
|
Video: _JsiVideo.createVideo.bind(null, CanvasKit),
|
|
96
|
-
Context: (_surface, _width, _height) => {
|
|
97
|
-
return (0, _Host.throwNotImplementedOnRNWeb)();
|
|
98
|
-
},
|
|
99
96
|
Recorder: () => {
|
|
100
97
|
return (0, _Host.throwNotImplementedOnRNWeb)();
|
|
101
98
|
},
|