@shopify/react-native-skia 0.1.164 → 0.1.165
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/cpp/api/JsiSkRuntimeEffect.h +7 -2
- package/cpp/rnskia/RNSkDomView.cpp +1 -1
- package/cpp/rnskia/RNSkPlatformContext.h +2 -6
- package/cpp/rnskia/dom/base/DrawingContext.cpp +5 -38
- package/cpp/rnskia/dom/base/DrawingContext.h +3 -17
- package/cpp/rnskia/dom/nodes/JsiCircleNode.h +0 -2
- package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +1 -3
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +2 -2
- package/cpp/rnskia/dom/props/CircleProp.h +2 -0
- package/cpp/rnskia/dom/props/ColorProp.h +9 -4
- package/cpp/rnskia/dom/props/ImageProps.h +3 -2
- package/cpp/rnskia/dom/props/PaintProps.h +15 -6
- package/cpp/rnskia/dom/props/RectProp.h +11 -4
- package/cpp/rnskia/dom/props/UniformsProp.h +86 -123
- package/cpp/rnskia/values/RNSkReadonlyValue.h +2 -6
- package/lib/commonjs/dom/nodes/datatypes/Circle.js +6 -1
- package/lib/commonjs/dom/nodes/datatypes/Circle.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Rect.js +3 -3
- package/lib/commonjs/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/ImageNode.js +2 -2
- package/lib/commonjs/dom/nodes/drawings/ImageNode.js.map +1 -1
- package/lib/commonjs/dom/types/Common.js.map +1 -1
- package/lib/commonjs/dom/types/Drawings.js.map +1 -1
- package/lib/commonjs/renderer/components/Mask.js +2 -6
- package/lib/commonjs/renderer/components/Mask.js.map +1 -1
- package/lib/commonjs/renderer/components/image/Image.js +0 -5
- package/lib/commonjs/renderer/components/image/Image.js.map +1 -1
- package/lib/commonjs/renderer/components/image/ImageShader.js +20 -10
- package/lib/commonjs/renderer/components/image/ImageShader.js.map +1 -1
- package/lib/commonjs/renderer/components/imageFilters/Blur.js +10 -5
- package/lib/commonjs/renderer/components/imageFilters/Blur.js.map +1 -1
- package/lib/commonjs/renderer/components/imageFilters/Morphology.js +10 -5
- package/lib/commonjs/renderer/components/imageFilters/Morphology.js.map +1 -1
- package/lib/commonjs/renderer/components/imageFilters/Offset.js +12 -6
- package/lib/commonjs/renderer/components/imageFilters/Offset.js.map +1 -1
- package/lib/commonjs/renderer/components/maskFilters/Blur.js +12 -6
- package/lib/commonjs/renderer/components/maskFilters/Blur.js.map +1 -1
- package/lib/commonjs/renderer/components/pathEffects/Discrete.js +10 -5
- package/lib/commonjs/renderer/components/pathEffects/Discrete.js.map +1 -1
- package/lib/commonjs/renderer/components/shaders/FractalNoise.js +14 -7
- package/lib/commonjs/renderer/components/shaders/FractalNoise.js.map +1 -1
- package/lib/commonjs/renderer/components/shaders/Shader.js +10 -5
- package/lib/commonjs/renderer/components/shaders/Shader.js.map +1 -1
- package/lib/commonjs/renderer/components/shaders/Turbulence.js +14 -7
- package/lib/commonjs/renderer/components/shaders/Turbulence.js.map +1 -1
- package/lib/commonjs/renderer/components/shapes/Circle.js +0 -6
- package/lib/commonjs/renderer/components/shapes/Circle.js.map +1 -1
- package/lib/commonjs/renderer/components/shapes/FitBox.js +1 -4
- package/lib/commonjs/renderer/components/shapes/FitBox.js.map +1 -1
- package/lib/commonjs/renderer/components/shapes/Oval.js +0 -4
- package/lib/commonjs/renderer/components/shapes/Oval.js.map +1 -1
- package/lib/commonjs/renderer/components/shapes/Path.js +12 -6
- package/lib/commonjs/renderer/components/shapes/Path.js.map +1 -1
- package/lib/commonjs/renderer/components/shapes/Points.js +10 -5
- package/lib/commonjs/renderer/components/shapes/Points.js.map +1 -1
- package/lib/commonjs/renderer/components/shapes/RoundedRect.js +0 -3
- package/lib/commonjs/renderer/components/shapes/RoundedRect.js.map +1 -1
- package/lib/commonjs/renderer/components/shapes/Vertices.js +10 -5
- package/lib/commonjs/renderer/components/shapes/Vertices.js.map +1 -1
- package/lib/commonjs/renderer/components/text/Glyphs.js +12 -6
- package/lib/commonjs/renderer/components/text/Glyphs.js.map +1 -1
- package/lib/commonjs/renderer/components/text/Text.js +12 -6
- package/lib/commonjs/renderer/components/text/Text.js.map +1 -1
- package/lib/commonjs/renderer/components/text/TextBlob.js +12 -6
- package/lib/commonjs/renderer/components/text/TextBlob.js.map +1 -1
- package/lib/commonjs/renderer/components/text/TextPath.js +10 -5
- package/lib/commonjs/renderer/components/text/TextPath.js.map +1 -1
- package/lib/commonjs/renderer/processors/Animations/Animations.js.map +1 -1
- package/lib/commonjs/skia/types/RuntimeEffect/RuntimeEffect.js.map +1 -1
- package/lib/commonjs/skia/types/Shader/Shader.js +3 -2
- package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkRuntimeEffect.js +6 -1
- package/lib/commonjs/skia/web/JsiSkRuntimeEffect.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkRuntimeEffectFactory.js +1 -1
- package/lib/commonjs/skia/web/JsiSkRuntimeEffectFactory.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Circle.js +8 -1
- package/lib/module/dom/nodes/datatypes/Circle.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Rect.js +7 -3
- package/lib/module/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/module/dom/nodes/drawings/ImageNode.js +4 -2
- package/lib/module/dom/nodes/drawings/ImageNode.js.map +1 -1
- package/lib/module/dom/types/Common.js.map +1 -1
- package/lib/module/dom/types/Drawings.js.map +1 -1
- package/lib/module/renderer/components/Mask.js +2 -6
- package/lib/module/renderer/components/Mask.js.map +1 -1
- package/lib/module/renderer/components/image/Image.js +0 -5
- package/lib/module/renderer/components/image/Image.js.map +1 -1
- package/lib/module/renderer/components/image/ImageShader.js +20 -10
- package/lib/module/renderer/components/image/ImageShader.js.map +1 -1
- package/lib/module/renderer/components/imageFilters/Blur.js +10 -5
- package/lib/module/renderer/components/imageFilters/Blur.js.map +1 -1
- package/lib/module/renderer/components/imageFilters/Morphology.js +10 -5
- package/lib/module/renderer/components/imageFilters/Morphology.js.map +1 -1
- package/lib/module/renderer/components/imageFilters/Offset.js +12 -6
- package/lib/module/renderer/components/imageFilters/Offset.js.map +1 -1
- package/lib/module/renderer/components/maskFilters/Blur.js +12 -6
- package/lib/module/renderer/components/maskFilters/Blur.js.map +1 -1
- package/lib/module/renderer/components/pathEffects/Discrete.js +10 -5
- package/lib/module/renderer/components/pathEffects/Discrete.js.map +1 -1
- package/lib/module/renderer/components/shaders/FractalNoise.js +14 -7
- package/lib/module/renderer/components/shaders/FractalNoise.js.map +1 -1
- package/lib/module/renderer/components/shaders/Shader.js +10 -5
- package/lib/module/renderer/components/shaders/Shader.js.map +1 -1
- package/lib/module/renderer/components/shaders/Turbulence.js +14 -7
- package/lib/module/renderer/components/shaders/Turbulence.js.map +1 -1
- package/lib/module/renderer/components/shapes/Circle.js +0 -6
- package/lib/module/renderer/components/shapes/Circle.js.map +1 -1
- package/lib/module/renderer/components/shapes/FitBox.js +1 -4
- package/lib/module/renderer/components/shapes/FitBox.js.map +1 -1
- package/lib/module/renderer/components/shapes/Oval.js +0 -4
- package/lib/module/renderer/components/shapes/Oval.js.map +1 -1
- package/lib/module/renderer/components/shapes/Path.js +12 -6
- package/lib/module/renderer/components/shapes/Path.js.map +1 -1
- package/lib/module/renderer/components/shapes/Points.js +10 -5
- package/lib/module/renderer/components/shapes/Points.js.map +1 -1
- package/lib/module/renderer/components/shapes/RoundedRect.js +0 -3
- package/lib/module/renderer/components/shapes/RoundedRect.js.map +1 -1
- package/lib/module/renderer/components/shapes/Vertices.js +10 -5
- package/lib/module/renderer/components/shapes/Vertices.js.map +1 -1
- package/lib/module/renderer/components/text/Glyphs.js +12 -6
- package/lib/module/renderer/components/text/Glyphs.js.map +1 -1
- package/lib/module/renderer/components/text/Text.js +12 -6
- package/lib/module/renderer/components/text/Text.js.map +1 -1
- package/lib/module/renderer/components/text/TextBlob.js +12 -6
- package/lib/module/renderer/components/text/TextBlob.js.map +1 -1
- package/lib/module/renderer/components/text/TextPath.js +10 -5
- package/lib/module/renderer/components/text/TextPath.js.map +1 -1
- package/lib/module/renderer/processors/Animations/Animations.js.map +1 -1
- package/lib/module/skia/types/RuntimeEffect/RuntimeEffect.js.map +1 -1
- package/lib/module/skia/types/Shader/Shader.js +3 -2
- package/lib/module/skia/types/Shader/Shader.js.map +1 -1
- package/lib/module/skia/web/JsiSkRuntimeEffect.js +6 -1
- package/lib/module/skia/web/JsiSkRuntimeEffect.js.map +1 -1
- package/lib/module/skia/web/JsiSkRuntimeEffectFactory.js +1 -1
- package/lib/module/skia/web/JsiSkRuntimeEffectFactory.js.map +1 -1
- package/lib/typescript/src/dom/nodes/datatypes/Circle.d.ts +4 -1
- package/lib/typescript/src/dom/types/Common.d.ts +4 -4
- package/lib/typescript/src/dom/types/Drawings.d.ts +1 -1
- package/lib/typescript/src/renderer/components/Mask.d.ts +3 -9
- package/lib/typescript/src/renderer/components/image/Image.d.ts +1 -8
- package/lib/typescript/src/renderer/components/image/ImageShader.d.ts +2 -12
- package/lib/typescript/src/renderer/components/imageFilters/Blur.d.ts +2 -7
- package/lib/typescript/src/renderer/components/imageFilters/Morphology.d.ts +2 -7
- package/lib/typescript/src/renderer/components/imageFilters/Offset.d.ts +2 -8
- package/lib/typescript/src/renderer/components/maskFilters/Blur.d.ts +2 -8
- package/lib/typescript/src/renderer/components/pathEffects/Discrete.d.ts +2 -7
- package/lib/typescript/src/renderer/components/shaders/FractalNoise.d.ts +2 -9
- package/lib/typescript/src/renderer/components/shaders/Shader.d.ts +2 -7
- package/lib/typescript/src/renderer/components/shaders/Turbulence.d.ts +2 -9
- package/lib/typescript/src/renderer/components/shapes/Circle.d.ts +1 -9
- package/lib/typescript/src/renderer/components/shapes/FitBox.d.ts +2 -7
- package/lib/typescript/src/renderer/components/shapes/Oval.d.ts +1 -7
- package/lib/typescript/src/renderer/components/shapes/Path.d.ts +2 -8
- package/lib/typescript/src/renderer/components/shapes/Points.d.ts +2 -7
- package/lib/typescript/src/renderer/components/shapes/RoundedRect.d.ts +1 -6
- package/lib/typescript/src/renderer/components/shapes/Vertices.d.ts +2 -7
- package/lib/typescript/src/renderer/components/text/Glyphs.d.ts +2 -8
- package/lib/typescript/src/renderer/components/text/Text.d.ts +2 -8
- package/lib/typescript/src/renderer/components/text/TextBlob.d.ts +2 -8
- package/lib/typescript/src/renderer/components/text/TextPath.d.ts +2 -7
- package/lib/typescript/src/renderer/processors/Animations/Animations.d.ts +5 -0
- package/lib/typescript/src/skia/types/RuntimeEffect/RuntimeEffect.d.ts +4 -0
- package/lib/typescript/src/skia/types/Shader/Shader.d.ts +1 -1
- package/lib/typescript/src/skia/web/JsiSkRuntimeEffect.d.ts +3 -1
- package/package.json +1 -1
- package/src/dom/nodes/datatypes/Circle.ts +1 -1
- package/src/dom/nodes/datatypes/Rect.ts +3 -3
- package/src/dom/nodes/drawings/ImageNode.ts +2 -1
- package/src/dom/types/Common.ts +4 -4
- package/src/dom/types/Drawings.ts +1 -1
- package/src/renderer/components/Mask.tsx +8 -8
- package/src/renderer/components/image/Image.tsx +0 -6
- package/src/renderer/components/image/ImageShader.tsx +24 -12
- package/src/renderer/components/imageFilters/Blur.tsx +6 -7
- package/src/renderer/components/imageFilters/Morphology.tsx +6 -7
- package/src/renderer/components/imageFilters/Offset.tsx +7 -8
- package/src/renderer/components/maskFilters/Blur.tsx +7 -8
- package/src/renderer/components/pathEffects/Discrete.tsx +6 -9
- package/src/renderer/components/shaders/FractalNoise.tsx +18 -9
- package/src/renderer/components/shaders/Shader.tsx +6 -7
- package/src/renderer/components/shaders/Turbulence.tsx +15 -9
- package/src/renderer/components/shapes/Circle.tsx +0 -4
- package/src/renderer/components/shapes/FitBox.tsx +2 -6
- package/src/renderer/components/shapes/Oval.tsx +0 -5
- package/src/renderer/components/shapes/Path.tsx +7 -8
- package/src/renderer/components/shapes/Points.tsx +6 -7
- package/src/renderer/components/shapes/RoundedRect.tsx +0 -4
- package/src/renderer/components/shapes/Vertices.tsx +6 -7
- package/src/renderer/components/text/Glyphs.tsx +7 -8
- package/src/renderer/components/text/Text.tsx +7 -8
- package/src/renderer/components/text/TextBlob.tsx +7 -8
- package/src/renderer/components/text/TextPath.tsx +6 -7
- package/src/renderer/processors/Animations/Animations.ts +9 -3
- package/src/skia/types/RuntimeEffect/RuntimeEffect.ts +5 -0
- package/src/skia/types/Shader/Shader.ts +5 -3
- package/src/skia/web/JsiSkRuntimeEffect.ts +5 -1
- package/src/skia/web/JsiSkRuntimeEffectFactory.ts +1 -1
|
@@ -117,6 +117,10 @@ public:
|
|
|
117
117
|
return result;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
+
JSI_HOST_FUNCTION(source) {
|
|
121
|
+
return jsi::String::createFromAscii(runtime, getObject()->source());
|
|
122
|
+
}
|
|
123
|
+
|
|
120
124
|
JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkRuntimeEffect, makeShader),
|
|
121
125
|
JSI_EXPORT_FUNC(JsiSkRuntimeEffect,
|
|
122
126
|
makeShaderWithChildren),
|
|
@@ -124,7 +128,8 @@ public:
|
|
|
124
128
|
JSI_EXPORT_FUNC(JsiSkRuntimeEffect,
|
|
125
129
|
getUniformFloatCount),
|
|
126
130
|
JSI_EXPORT_FUNC(JsiSkRuntimeEffect, getUniformName),
|
|
127
|
-
JSI_EXPORT_FUNC(JsiSkRuntimeEffect, getUniform)
|
|
131
|
+
JSI_EXPORT_FUNC(JsiSkRuntimeEffect, getUniform),
|
|
132
|
+
JSI_EXPORT_FUNC(JsiSkRuntimeEffect, source))
|
|
128
133
|
|
|
129
134
|
JsiSkRuntimeEffect(std::shared_ptr<RNSkPlatformContext> context,
|
|
130
135
|
sk_sp<SkRuntimeEffect> rt)
|
|
@@ -206,7 +211,7 @@ private:
|
|
|
206
211
|
const std::size_t offset = reu.slot + j;
|
|
207
212
|
float fValue = jsiUniforms.getValueAtIndex(runtime, offset).asNumber();
|
|
208
213
|
int iValue = static_cast<int>(fValue);
|
|
209
|
-
auto value = reu.isInteger ? iValue : fValue;
|
|
214
|
+
auto value = reu.isInteger ? SkBits2Float(iValue) : fValue;
|
|
210
215
|
memcpy(SkTAddOffset<void>(uniforms->writable_data(),
|
|
211
216
|
offset * sizeof(value)),
|
|
212
217
|
&value, sizeof(value));
|
|
@@ -86,7 +86,7 @@ void RNSkDomRenderer::renderCanvas(SkCanvas *canvas, float scaledWidth,
|
|
|
86
86
|
if (_drawingContext == nullptr) {
|
|
87
87
|
auto paint = std::make_shared<SkPaint>();
|
|
88
88
|
paint->setAntiAlias(true);
|
|
89
|
-
_drawingContext = std::make_shared<DrawingContext>(paint
|
|
89
|
+
_drawingContext = std::make_shared<DrawingContext>(paint);
|
|
90
90
|
|
|
91
91
|
_drawingContext->setRequestRedraw([weakSelf = weak_from_this()]() {
|
|
92
92
|
auto self = weakSelf.lock();
|
|
@@ -178,12 +178,8 @@ public:
|
|
|
178
178
|
if (!_isValid) {
|
|
179
179
|
return;
|
|
180
180
|
}
|
|
181
|
-
std::
|
|
182
|
-
{
|
|
183
|
-
std::lock_guard<std::mutex> lock(_drawCallbacksLock);
|
|
184
|
-
tmp.insert(_drawCallbacks.cbegin(), _drawCallbacks.cend());
|
|
185
|
-
}
|
|
186
|
-
for (auto it = tmp.begin(); it != tmp.end(); it++) {
|
|
181
|
+
std::lock_guard<std::mutex> lock(_drawCallbacksLock);
|
|
182
|
+
for (auto it = _drawCallbacks.begin(); it != _drawCallbacks.end(); it++) {
|
|
187
183
|
it->second(invalidated);
|
|
188
184
|
}
|
|
189
185
|
}
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
namespace RNSkia {
|
|
4
4
|
|
|
5
|
-
DrawingContext::DrawingContext(std::shared_ptr<SkPaint> paint
|
|
5
|
+
DrawingContext::DrawingContext(std::shared_ptr<SkPaint> paint)
|
|
6
6
|
: DrawingContext("root") {
|
|
7
7
|
_paint = paint;
|
|
8
|
-
_opacity = opacity;
|
|
9
8
|
}
|
|
10
9
|
|
|
11
10
|
DrawingContext::DrawingContext(DrawingContext *parent, const char *source)
|
|
@@ -43,7 +42,8 @@ std::string DrawingContext::getDebugDescription() {
|
|
|
43
42
|
v += " blendMode:" + std::to_string(static_cast<size_t>(blendMode));
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
auto opacity = _paint->getAlphaf();
|
|
46
|
+
v += " opacity:" + std::to_string(opacity);
|
|
47
47
|
|
|
48
48
|
if (_paint->getPathEffect() != nullptr) {
|
|
49
49
|
v += " [PathEffect]";
|
|
@@ -148,7 +148,6 @@ std::shared_ptr<SkPaint> DrawingContext::getMutablePaint() {
|
|
|
148
148
|
if (_paint == nullptr) {
|
|
149
149
|
auto parentPaint = _parent->getPaint();
|
|
150
150
|
_paint = std::make_shared<SkPaint>(*parentPaint);
|
|
151
|
-
_opacity = _parent->getOpacity();
|
|
152
151
|
}
|
|
153
152
|
// Calling the getMutablePaint accessor implies that the paint
|
|
154
153
|
// is about to be mutatet and will therefore invalidate
|
|
@@ -165,40 +164,6 @@ void DrawingContext::setMutablePaint(std::shared_ptr<SkPaint> paint) {
|
|
|
165
164
|
_paint = paint;
|
|
166
165
|
}
|
|
167
166
|
|
|
168
|
-
/**
|
|
169
|
-
Getd the opacity value
|
|
170
|
-
*/
|
|
171
|
-
double DrawingContext::getOpacity() {
|
|
172
|
-
if (_paint == nullptr) {
|
|
173
|
-
return _parent->getOpacity();
|
|
174
|
-
}
|
|
175
|
-
return _opacity;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
Sets the opacity value
|
|
180
|
-
*/
|
|
181
|
-
void DrawingContext::setOpacity(double opacity) {
|
|
182
|
-
auto currentOpacity = opacity;
|
|
183
|
-
if (_parent != nullptr) {
|
|
184
|
-
currentOpacity *= _parent->getOpacity();
|
|
185
|
-
}
|
|
186
|
-
getMutablePaint()->setAlphaf(currentOpacity);
|
|
187
|
-
_opacity = currentOpacity;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
Clears the opacity value
|
|
192
|
-
*/
|
|
193
|
-
void DrawingContext::clearOpacity() {
|
|
194
|
-
if (_parent != nullptr) {
|
|
195
|
-
_opacity = _parent->getOpacity();
|
|
196
|
-
} else {
|
|
197
|
-
_opacity = 1.0;
|
|
198
|
-
}
|
|
199
|
-
markChildrenAsChanged();
|
|
200
|
-
}
|
|
201
|
-
|
|
202
167
|
float DrawingContext::getScaledWidth() {
|
|
203
168
|
if (_parent != nullptr) {
|
|
204
169
|
return _parent->getScaledWidth();
|
|
@@ -213,6 +178,8 @@ float DrawingContext::getScaledHeight() {
|
|
|
213
178
|
return _scaledHeight;
|
|
214
179
|
}
|
|
215
180
|
|
|
181
|
+
DrawingContext *DrawingContext::getParent() { return _parent; }
|
|
182
|
+
|
|
216
183
|
void DrawingContext::setScaledWidth(float v) { _scaledWidth = v; }
|
|
217
184
|
void DrawingContext::setScaledHeight(float v) { _scaledHeight = v; }
|
|
218
185
|
|
|
@@ -22,7 +22,7 @@ public:
|
|
|
22
22
|
/**
|
|
23
23
|
Creates a root drawing context with paint and opacity
|
|
24
24
|
*/
|
|
25
|
-
DrawingContext(std::shared_ptr<SkPaint> paint
|
|
25
|
+
explicit DrawingContext(std::shared_ptr<SkPaint> paint);
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
Initilalizes a new draw context.
|
|
@@ -87,21 +87,6 @@ public:
|
|
|
87
87
|
*/
|
|
88
88
|
void setMutablePaint(std::shared_ptr<SkPaint> paint);
|
|
89
89
|
|
|
90
|
-
/**
|
|
91
|
-
Getd the opacity value
|
|
92
|
-
*/
|
|
93
|
-
double getOpacity();
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
Sets the opacity value
|
|
97
|
-
*/
|
|
98
|
-
void setOpacity(double opacity);
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
Clears the opacity
|
|
102
|
-
*/
|
|
103
|
-
void clearOpacity();
|
|
104
|
-
|
|
105
90
|
float getScaledWidth();
|
|
106
91
|
|
|
107
92
|
float getScaledHeight();
|
|
@@ -112,6 +97,8 @@ public:
|
|
|
112
97
|
void setRequestRedraw(std::function<void()> &&requestRedraw);
|
|
113
98
|
const std::function<void()> &getRequestRedraw();
|
|
114
99
|
|
|
100
|
+
DrawingContext *getParent();
|
|
101
|
+
|
|
115
102
|
private:
|
|
116
103
|
explicit DrawingContext(const char *source);
|
|
117
104
|
|
|
@@ -120,7 +107,6 @@ private:
|
|
|
120
107
|
bool _isChanged = true;
|
|
121
108
|
|
|
122
109
|
std::shared_ptr<SkPaint> _paint;
|
|
123
|
-
double _opacity = 1.0f;
|
|
124
110
|
|
|
125
111
|
SkCanvas *_canvas = nullptr;
|
|
126
112
|
const char *_source;
|
|
@@ -28,7 +28,6 @@ protected:
|
|
|
28
28
|
float scaledWidth = context->getScaledWidth();
|
|
29
29
|
float scaledHeight = context->getScaledHeight();
|
|
30
30
|
auto paint = context->getPaint();
|
|
31
|
-
auto opacity = context->getOpacity();
|
|
32
31
|
auto platformContext = getContext();
|
|
33
32
|
auto requestRedraw = context->getRequestRedraw();
|
|
34
33
|
|
|
@@ -44,7 +43,7 @@ protected:
|
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
// Run rendering on the javascript thread
|
|
47
|
-
getContext()->runOnJavascriptThread([this, platformContext,
|
|
46
|
+
getContext()->runOnJavascriptThread([this, platformContext,
|
|
48
47
|
requestRedraw, scaledWidth,
|
|
49
48
|
scaledHeight]() {
|
|
50
49
|
// Get the runtime
|
|
@@ -65,7 +64,6 @@ protected:
|
|
|
65
64
|
*runtime, "paint",
|
|
66
65
|
jsi::Object::createFromHostObject(*runtime, this->_jsiPaint));
|
|
67
66
|
|
|
68
|
-
jsiCtx.setProperty(*runtime, "opacity", opacity);
|
|
69
67
|
jsiCtx.setProperty(
|
|
70
68
|
*runtime, "canvas",
|
|
71
69
|
jsi::Object::createFromHostObject(*runtime, jsiCanvas));
|
|
@@ -384,14 +384,14 @@ protected:
|
|
|
384
384
|
JsiBaseDomDeclarationNode::defineProperties(container);
|
|
385
385
|
_sourceProp = container->defineProperty<NodeProp>("source");
|
|
386
386
|
_uniformsProp =
|
|
387
|
-
container->defineProperty<
|
|
387
|
+
container->defineProperty<UniformsProp>("uniforms", _sourceProp);
|
|
388
388
|
|
|
389
389
|
_sourceProp->require();
|
|
390
390
|
}
|
|
391
391
|
|
|
392
392
|
private:
|
|
393
393
|
NodeProp *_sourceProp;
|
|
394
|
-
|
|
394
|
+
UniformsProp *_uniformsProp;
|
|
395
395
|
};
|
|
396
396
|
|
|
397
397
|
} // namespace RNSkia
|
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
namespace RNSkia {
|
|
11
11
|
|
|
12
|
+
static PropId PropName0 = JsiPropId::get("0");
|
|
13
|
+
static PropId PropName1 = JsiPropId::get("1");
|
|
14
|
+
static PropId PropName2 = JsiPropId::get("2");
|
|
15
|
+
static PropId PropName3 = JsiPropId::get("3");
|
|
16
|
+
|
|
12
17
|
class ColorProp : public DerivedProp<SkColor> {
|
|
13
18
|
public:
|
|
14
19
|
explicit ColorProp(PropId name) : DerivedProp<SkColor>() {
|
|
@@ -28,10 +33,10 @@ public:
|
|
|
28
33
|
static SkColor parseColorValue(const JsiValue &color) {
|
|
29
34
|
if (color.getType() == PropType::Object) {
|
|
30
35
|
// Float array
|
|
31
|
-
auto r = color.getValue(
|
|
32
|
-
auto g = color.getValue(
|
|
33
|
-
auto b = color.getValue(
|
|
34
|
-
auto a = color.getValue(
|
|
36
|
+
auto r = color.getValue(PropName0);
|
|
37
|
+
auto g = color.getValue(PropName1);
|
|
38
|
+
auto b = color.getValue(PropName2);
|
|
39
|
+
auto a = color.getValue(PropName3);
|
|
35
40
|
return SkColorSetARGB(a.getAsNumber() * 255.0f, r.getAsNumber() * 255.0f,
|
|
36
41
|
g.getAsNumber() * 255.0f, b.getAsNumber() * 255.0f);
|
|
37
42
|
|
|
@@ -30,7 +30,8 @@ public:
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
void updateDerivedValue() override {
|
|
33
|
-
if (_imageProp->
|
|
33
|
+
if (!_imageProp->isSet() ||
|
|
34
|
+
_imageProp->value().getType() != PropType::HostObject) {
|
|
34
35
|
throw std::runtime_error("Expected SkImage object for the " +
|
|
35
36
|
std::string(getName()) + " property.");
|
|
36
37
|
}
|
|
@@ -67,7 +68,7 @@ public:
|
|
|
67
68
|
|
|
68
69
|
auto rect = _rectProp->getDerivedValue() ? *_rectProp->getDerivedValue()
|
|
69
70
|
: imageRect;
|
|
70
|
-
auto fit = _fitProp->isSet() ? _fitProp->value().getAsString() : "
|
|
71
|
+
auto fit = _fitProp->isSet() ? _fitProp->value().getAsString() : "contain";
|
|
71
72
|
|
|
72
73
|
setDerivedValue(fitRects(fit, imageRect, rect));
|
|
73
74
|
}
|
|
@@ -92,22 +92,31 @@ public:
|
|
|
92
92
|
|
|
93
93
|
// Opacity
|
|
94
94
|
if (_opacity->isChanged() || context->isChanged()) {
|
|
95
|
+
auto parent = context->getParent();
|
|
96
|
+
auto paint = context->getMutablePaint();
|
|
95
97
|
if (_opacity->isSet()) {
|
|
96
|
-
|
|
98
|
+
auto currentOpacity = _opacity->value().getAsNumber();
|
|
99
|
+
auto parent = context->getParent();
|
|
100
|
+
if (parent != nullptr) {
|
|
101
|
+
currentOpacity *= parent->getPaint()->getAlphaf();
|
|
102
|
+
}
|
|
103
|
+
paint->setAlphaf(currentOpacity);
|
|
97
104
|
} else {
|
|
98
|
-
|
|
105
|
+
if (parent != nullptr) {
|
|
106
|
+
paint->setAlphaf(parent->getPaint()->getAlphaf());
|
|
107
|
+
} else {
|
|
108
|
+
paint->setAlphaf(1.0);
|
|
109
|
+
}
|
|
99
110
|
}
|
|
100
111
|
}
|
|
101
112
|
|
|
102
113
|
// COLOR
|
|
103
114
|
if (_color->isSet() && (_color->isChanged() || context->isChanged())) {
|
|
104
115
|
auto paint = context->getMutablePaint();
|
|
116
|
+
auto opacity = paint->getAlphaf();
|
|
105
117
|
paint->setShader(nullptr);
|
|
106
118
|
paint->setColor(*_color->getDerivedValue());
|
|
107
|
-
paint->setAlphaf(
|
|
108
|
-
} else if (context->isChanged()) {
|
|
109
|
-
auto paint = context->getMutablePaint();
|
|
110
|
-
paint->setAlphaf(context->getOpacity());
|
|
119
|
+
paint->setAlphaf(opacity * paint->getColor4f().fA);
|
|
111
120
|
}
|
|
112
121
|
|
|
113
122
|
// Style
|
|
@@ -76,10 +76,17 @@ public:
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
void updateDerivedValue() override {
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
if (_width->isSet() && _height->isSet()) {
|
|
80
|
+
auto x = 0.0;
|
|
81
|
+
auto y = 0.0;
|
|
82
|
+
if (_x->isSet()) {
|
|
83
|
+
x = _x->value().getAsNumber();
|
|
84
|
+
}
|
|
85
|
+
if (_y->isSet()) {
|
|
86
|
+
y = _y->value().getAsNumber();
|
|
87
|
+
}
|
|
88
|
+
setDerivedValue(SkRect::MakeXYWH(x, y, _width->value().getAsNumber(),
|
|
89
|
+
_height->value().getAsNumber()));
|
|
83
90
|
}
|
|
84
91
|
}
|
|
85
92
|
|
|
@@ -16,6 +16,68 @@
|
|
|
16
16
|
|
|
17
17
|
namespace RNSkia {
|
|
18
18
|
|
|
19
|
+
bool isJSPoint(const JsiValue &value) {
|
|
20
|
+
return value.getType() == PropType::Object && value.hasValue(PropNameX) &&
|
|
21
|
+
value.hasValue(PropNameY);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
bool isSkPoint(const JsiValue &value) {
|
|
25
|
+
return value.getType() == PropType::HostObject &&
|
|
26
|
+
std::dynamic_pointer_cast<JsiSkPoint>(value.getAsHostObject()) !=
|
|
27
|
+
nullptr;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
bool isIndexable(const JsiValue &value) {
|
|
31
|
+
return value.getType() == PropType::Object && value.hasValue(PropName0);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
void processValue(std::vector<SkScalar> &values, const JsiValue &value) {
|
|
35
|
+
if (value.getType() == PropType::Number) {
|
|
36
|
+
auto n = value.getAsNumber();
|
|
37
|
+
values.push_back(n);
|
|
38
|
+
} else if (value.getType() == PropType::Array) {
|
|
39
|
+
auto arrayValue = value.getAsArray();
|
|
40
|
+
for (size_t i = 0; i < arrayValue.size(); ++i) {
|
|
41
|
+
auto a = arrayValue[i];
|
|
42
|
+
processValue(values, a);
|
|
43
|
+
}
|
|
44
|
+
} else if (isJSPoint(value) || isSkPoint(value)) {
|
|
45
|
+
auto pointValue = PointProp::processValue(value);
|
|
46
|
+
values.push_back(pointValue.x());
|
|
47
|
+
values.push_back(pointValue.y());
|
|
48
|
+
} else if (isIndexable(value)) {
|
|
49
|
+
auto length = value.getKeys().size();
|
|
50
|
+
for (size_t i = 0; i < length; ++i) {
|
|
51
|
+
values.push_back(
|
|
52
|
+
value.getValue(JsiPropId::get(std::to_string(i))).getAsNumber());
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
void processUniform(std::vector<SkScalar> &values, SkRuntimeEffect *source,
|
|
58
|
+
const JsiValue &uniforms, SkRuntimeShaderBuilder *rtb) {
|
|
59
|
+
auto uniformsCount = source->uniforms().size();
|
|
60
|
+
for (size_t i = 0; i < uniformsCount; ++i) {
|
|
61
|
+
auto it = source->uniforms().begin() + i;
|
|
62
|
+
auto name = JsiPropId::get(std::string(it->name));
|
|
63
|
+
if (!uniforms.hasValue(name)) {
|
|
64
|
+
throw std::runtime_error("The runtime effect has the uniform value \"" +
|
|
65
|
+
std::string(name) +
|
|
66
|
+
"\" declared, but it is missing from the "
|
|
67
|
+
"uniforms property of the Runtime effect.");
|
|
68
|
+
}
|
|
69
|
+
auto value = uniforms.getValue(name);
|
|
70
|
+
if (rtb == nullptr) {
|
|
71
|
+
processValue(values, value);
|
|
72
|
+
} else {
|
|
73
|
+
std::vector<SkScalar> uniformValue;
|
|
74
|
+
processValue(uniformValue, value);
|
|
75
|
+
rtb->uniform(name).set(uniformValue.data(),
|
|
76
|
+
static_cast<int>(uniformValue.size()));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
19
81
|
class UniformsProp : public DerivedSkProp<SkData> {
|
|
20
82
|
public:
|
|
21
83
|
UniformsProp(PropId name, NodeProp *sourceProp) : DerivedSkProp<SkData>() {
|
|
@@ -32,7 +94,9 @@ public:
|
|
|
32
94
|
auto source = _sourceProp->value().getAs<JsiSkRuntimeEffect>()->getObject();
|
|
33
95
|
|
|
34
96
|
// Flatten uniforms from property
|
|
35
|
-
|
|
97
|
+
std::vector<SkScalar> uniformValues;
|
|
98
|
+
processUniform(uniformValues, source.get(), _uniformsProp->value(),
|
|
99
|
+
nullptr);
|
|
36
100
|
|
|
37
101
|
// Cast uniforms according to the declaration in the shader
|
|
38
102
|
auto uniformsData = castUniforms(source.get(), uniformValues);
|
|
@@ -41,11 +105,30 @@ public:
|
|
|
41
105
|
setDerivedValue(uniformsData);
|
|
42
106
|
}
|
|
43
107
|
|
|
108
|
+
void processUniforms(SkRuntimeShaderBuilder &rtb) {
|
|
109
|
+
if (!_uniformsProp->isSet()) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Get the effect
|
|
114
|
+
auto source = _sourceProp->value().getAs<JsiSkRuntimeEffect>()->getObject();
|
|
115
|
+
// Flatten uniforms from property
|
|
116
|
+
std::vector<SkScalar> uniformValues;
|
|
117
|
+
processUniform(uniformValues, source.get(), _uniformsProp->value(), &rtb);
|
|
118
|
+
}
|
|
119
|
+
|
|
44
120
|
private:
|
|
45
121
|
sk_sp<SkData> castUniforms(SkRuntimeEffect *source,
|
|
46
122
|
const std::vector<SkScalar> &values) {
|
|
47
123
|
// Create memory for uniforms
|
|
48
|
-
auto
|
|
124
|
+
auto uniformSize = source->uniformSize();
|
|
125
|
+
if (values.size() * sizeof(float) != uniformSize) {
|
|
126
|
+
throw std::runtime_error(
|
|
127
|
+
"Uniforms size differs from effect's uniform size. Received " +
|
|
128
|
+
std::to_string(values.size()) + " expected " +
|
|
129
|
+
std::to_string(uniformSize / sizeof(float)));
|
|
130
|
+
}
|
|
131
|
+
auto uniformsData = SkData::MakeUninitialized(uniformSize);
|
|
49
132
|
|
|
50
133
|
// Loop through all uniforms in the effect and load data from the flattened
|
|
51
134
|
// array of values
|
|
@@ -57,7 +140,7 @@ private:
|
|
|
57
140
|
const std::size_t offset = reu.slot + j;
|
|
58
141
|
float fValue = values.at(offset);
|
|
59
142
|
int iValue = static_cast<int>(fValue);
|
|
60
|
-
auto value = reu.isInteger ? iValue : fValue;
|
|
143
|
+
auto value = reu.isInteger ? SkBits2Float(iValue) : fValue;
|
|
61
144
|
memcpy(SkTAddOffset<void>(uniformsData->writable_data(),
|
|
62
145
|
offset * sizeof(value)),
|
|
63
146
|
&value, sizeof(value));
|
|
@@ -67,126 +150,6 @@ private:
|
|
|
67
150
|
return uniformsData;
|
|
68
151
|
}
|
|
69
152
|
|
|
70
|
-
std::vector<SkScalar> flattenUniforms(SkRuntimeEffect *source,
|
|
71
|
-
const JsiValue &propObject) {
|
|
72
|
-
auto uniformsCount = source->uniforms().size();
|
|
73
|
-
std::vector<SkScalar> uniformValues;
|
|
74
|
-
|
|
75
|
-
for (size_t i = 0; i < uniformsCount; ++i) {
|
|
76
|
-
auto it = source->uniforms().begin() + i;
|
|
77
|
-
auto name = JsiPropId::get(std::string(it->name));
|
|
78
|
-
|
|
79
|
-
if (!propObject.hasValue(name)) {
|
|
80
|
-
throw std::runtime_error("The runtime effect has the uniform value \"" +
|
|
81
|
-
std::string(name) +
|
|
82
|
-
"\" declared, but it is missing from the "
|
|
83
|
-
"uniforms property of the Runtime effect.");
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
auto value = propObject.getValue(name);
|
|
87
|
-
|
|
88
|
-
// A uniform value can be a single number, a vector or an array of numbers
|
|
89
|
-
// Or an array of the above
|
|
90
|
-
if (value.getType() == PropType::Number) {
|
|
91
|
-
// Set numeric uniform
|
|
92
|
-
uniformValues.push_back(value.getAsNumber());
|
|
93
|
-
} else if (value.getType() == PropType::Array) {
|
|
94
|
-
// Array
|
|
95
|
-
auto arrayValue = value.getAsArray();
|
|
96
|
-
for (size_t n = 0; n < arrayValue.size(); ++n) {
|
|
97
|
-
auto a = arrayValue[n];
|
|
98
|
-
if (a.getType() == PropType::Number) {
|
|
99
|
-
uniformValues.push_back(a.getAsNumber());
|
|
100
|
-
} else {
|
|
101
|
-
for (size_t j = 0; j < a.getAsArray().size(); ++j) {
|
|
102
|
-
uniformValues.push_back(a.getAsArray()[j].getAsNumber());
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
} else if (value.getType() == PropType::HostObject ||
|
|
107
|
-
value.getType() == PropType::Object) {
|
|
108
|
-
// Vector (JsiSkPoint / JsiSkRect)
|
|
109
|
-
auto pointValue = PointProp::processValue(value);
|
|
110
|
-
uniformValues.push_back(pointValue.x());
|
|
111
|
-
uniformValues.push_back(pointValue.y());
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return uniformValues;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
NodeProp *_uniformsProp;
|
|
118
|
-
NodeProp *_sourceProp;
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
class SimpleUniformsProp : public BaseDerivedProp {
|
|
122
|
-
public:
|
|
123
|
-
SimpleUniformsProp(PropId name, NodeProp *sourceProp) : BaseDerivedProp() {
|
|
124
|
-
_uniformsProp = addProperty(std::make_shared<NodeProp>(name));
|
|
125
|
-
_sourceProp = sourceProp;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
void processUniforms(SkRuntimeShaderBuilder &rtb) {
|
|
129
|
-
if (!_uniformsProp->isSet()) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
auto propObject = _uniformsProp->value();
|
|
134
|
-
auto source = _sourceProp->value().getAs<JsiSkRuntimeEffect>()->getObject();
|
|
135
|
-
|
|
136
|
-
auto uniformsCount = source->uniforms().size();
|
|
137
|
-
|
|
138
|
-
for (size_t i = 0; i < uniformsCount; ++i) {
|
|
139
|
-
auto it = source->uniforms().begin() + i;
|
|
140
|
-
auto name = JsiPropId::get(std::string(it->name));
|
|
141
|
-
|
|
142
|
-
if (!propObject.hasValue(name)) {
|
|
143
|
-
throw std::runtime_error("The runtime effect has the uniform value \"" +
|
|
144
|
-
std::string(name) +
|
|
145
|
-
"\" declared, but it is missing from the "
|
|
146
|
-
"uniforms property of the Runtime effect.");
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
auto value = propObject.getValue(name);
|
|
150
|
-
|
|
151
|
-
// A uniform value can be a single number, a vector or an array of numbers
|
|
152
|
-
// Or an array of the above
|
|
153
|
-
if (value.getType() == PropType::Number) {
|
|
154
|
-
// Set numeric uniform
|
|
155
|
-
rtb.uniform(name) = value.getAsNumber();
|
|
156
|
-
} else if (value.getType() == PropType::Array) {
|
|
157
|
-
// Array
|
|
158
|
-
auto arrayValue = value.getAsArray();
|
|
159
|
-
std::vector<SkScalar> set;
|
|
160
|
-
for (size_t n = 0; n < arrayValue.size(); ++n) {
|
|
161
|
-
auto a = arrayValue[n];
|
|
162
|
-
if (a.getType() == PropType::Number) {
|
|
163
|
-
set.push_back(a.getAsNumber());
|
|
164
|
-
} else {
|
|
165
|
-
for (size_t j = 0; j < a.getAsArray().size(); ++j) {
|
|
166
|
-
set.push_back(a.getAsArray()[j].getAsNumber());
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
rtb.uniform(name).set(set.data(), static_cast<int>(set.size()));
|
|
171
|
-
|
|
172
|
-
} else if (value.getType() == PropType::HostObject ||
|
|
173
|
-
value.getType() == PropType::Object) {
|
|
174
|
-
// Vector (JsiSkPoint / JsiSkRect)
|
|
175
|
-
auto pointValue = PointProp::processValue(value);
|
|
176
|
-
std::vector<SkScalar> set = {pointValue.x(), pointValue.y()};
|
|
177
|
-
|
|
178
|
-
rtb.uniform(name).set(set.data(), static_cast<int>(set.size()));
|
|
179
|
-
} else {
|
|
180
|
-
throw std::runtime_error("Unexpected type for uniform prop \"" +
|
|
181
|
-
std::string(name) + "\". Got " +
|
|
182
|
-
value.getTypeAsString(value.getType()));
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
void updateDerivedValue() override {}
|
|
188
|
-
|
|
189
|
-
private:
|
|
190
153
|
NodeProp *_uniformsProp;
|
|
191
154
|
NodeProp *_sourceProp;
|
|
192
155
|
};
|
|
@@ -142,12 +142,8 @@ protected:
|
|
|
142
142
|
@param runtime Current JS Runtime
|
|
143
143
|
*/
|
|
144
144
|
void notifyListeners(jsi::Runtime &runtime) {
|
|
145
|
-
std::
|
|
146
|
-
{
|
|
147
|
-
std::lock_guard<std::mutex> lock(_mutex);
|
|
148
|
-
tmp.insert(_listeners.cbegin(), _listeners.cend());
|
|
149
|
-
}
|
|
150
|
-
for (const auto &listener : tmp) {
|
|
145
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
|
146
|
+
for (const auto &listener : _listeners) {
|
|
151
147
|
listener.second(runtime);
|
|
152
148
|
}
|
|
153
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isCircleScalarDef","def","cx","undefined","processCircle","Skia","c","Point","cy","r"],"sources":["Circle.ts"],"sourcesContent":["import type { Skia } from \"../../../skia/types\";\nimport type { CircleDef, ScalarCircleDef } from \"../../types\";\n\nexport const isCircleScalarDef = (def: CircleDef): def is ScalarCircleDef =>\n // We have an issue to check property existence on JSI backed instances\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (def as any).cx !== undefined;\n\nexport const processCircle = (Skia: Skia, def: CircleDef) => {\n if (isCircleScalarDef(def)) {\n return { c: Skia.Point(def.cx, def.cy), r: def.r };\n }\n return def;\n};\n"],"mappings":";;;;;;;AAGO,MAAMA,iBAAiB,GAAIC,GAAD,IAC/B;AACA;AACCA,GAAD,CAAaC,EAAb,KAAoBC,SAHf;;;;AAKA,MAAMC,aAAa,GAAG,CAACC,IAAD,EAAaJ,GAAb,KAAgC;EAC3D,IAAID,iBAAiB,CAACC,GAAD,CAArB,EAA4B;IAC1B,OAAO;MAAEK,CAAC,EAAED,IAAI,CAACE,KAAL,CAAWN,GAAG,CAACC,EAAf,EAAmBD,GAAG,CAACO,EAAvB,CAAL;MAAiCC,CAAC,EAAER,GAAG,CAACQ;IAAxC,CAAP;EACD;;EACD,
|
|
1
|
+
{"version":3,"names":["isCircleScalarDef","def","cx","undefined","processCircle","Skia","c","Point","cy","r","x","y"],"sources":["Circle.ts"],"sourcesContent":["import type { Skia } from \"../../../skia/types\";\nimport type { CircleDef, ScalarCircleDef } from \"../../types\";\n\nexport const isCircleScalarDef = (def: CircleDef): def is ScalarCircleDef =>\n // We have an issue to check property existence on JSI backed instances\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (def as any).cx !== undefined;\n\nexport const processCircle = (Skia: Skia, def: CircleDef) => {\n if (isCircleScalarDef(def)) {\n return { c: Skia.Point(def.cx, def.cy), r: def.r };\n }\n return { ...def, c: def.c ?? { x: 0, y: 0 } };\n};\n"],"mappings":";;;;;;;AAGO,MAAMA,iBAAiB,GAAIC,GAAD,IAC/B;AACA;AACCA,GAAD,CAAaC,EAAb,KAAoBC,SAHf;;;;AAKA,MAAMC,aAAa,GAAG,CAACC,IAAD,EAAaJ,GAAb,KAAgC;EAC3D,IAAID,iBAAiB,CAACC,GAAD,CAArB,EAA4B;IAC1B,OAAO;MAAEK,CAAC,EAAED,IAAI,CAACE,KAAL,CAAWN,GAAG,CAACC,EAAf,EAAmBD,GAAG,CAACO,EAAvB,CAAL;MAAiCC,CAAC,EAAER,GAAG,CAACQ;IAAxC,CAAP;EACD;;EACD,OAAO,EAAE,GAAGR,GAAL;IAAUK,CAAC,EAAEL,GAAG,CAACK,CAAJ,IAAS;MAAEI,CAAC,EAAE,CAAL;MAAQC,CAAC,EAAE;IAAX;EAAtB,CAAP;AACD,CALM"}
|
|
@@ -20,7 +20,7 @@ const isRectCtor = def => def.rect === undefined;
|
|
|
20
20
|
|
|
21
21
|
const processRect = (Skia, def) => {
|
|
22
22
|
if (isRectCtor(def)) {
|
|
23
|
-
return Skia.XYWHRect(def.x, def.y, def.width, def.height);
|
|
23
|
+
return Skia.XYWHRect(def.x ?? 0, def.y ?? 0, def.width, def.height);
|
|
24
24
|
} else {
|
|
25
25
|
return def.rect;
|
|
26
26
|
}
|
|
@@ -30,8 +30,8 @@ exports.processRect = processRect;
|
|
|
30
30
|
|
|
31
31
|
const processRRect = (Skia, def) => {
|
|
32
32
|
if (isRRectCtor(def)) {
|
|
33
|
-
const r = (0, _Radius.processRadius)(Skia, def.r);
|
|
34
|
-
return Skia.RRectXY(Skia.XYWHRect(def.x, def.y, def.width, def.height), r.x, r.y);
|
|
33
|
+
const r = (0, _Radius.processRadius)(Skia, def.r ?? 0);
|
|
34
|
+
return Skia.RRectXY(Skia.XYWHRect(def.x ?? 0, def.y ?? 0, def.width, def.height), r.x, r.y);
|
|
35
35
|
} else {
|
|
36
36
|
return def.rect;
|
|
37
37
|
}
|