@shopify/react-native-skia 0.1.165 → 0.1.166
Sign up to get free protection for your applications and to get access to all the features.
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +16 -5
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseViewManager.java +34 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +2 -47
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDrawViewManager.java +2 -44
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaPictureViewManager.java +2 -47
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +4 -4
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +4 -4
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +12 -5
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +17 -7
- package/cpp/rnskia/dom/props/ClipProp.h +6 -6
- package/cpp/rnskia/dom/props/ImageProps.h +3 -1
- package/cpp/rnskia/dom/props/PaintProps.h +0 -16
- package/cpp/rnskia/dom/props/VerticesProps.h +2 -2
- package/lib/commonjs/dom/nodes/drawings/Box.js +1 -1
- package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js +1 -1
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/Shaders.js +5 -2
- package/lib/commonjs/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/commonjs/skia/types/Shader/Shader.js +26 -27
- package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Box.js +1 -1
- package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/module/dom/nodes/paint/ImageFilters.js +1 -1
- package/lib/module/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/module/dom/nodes/paint/Shaders.js +5 -4
- package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/module/skia/types/Shader/Shader.js +26 -27
- package/lib/module/skia/types/Shader/Shader.js.map +1 -1
- package/lib/typescript/src/skia/types/Shader/Shader.d.ts +1 -2
- package/package.json +1 -1
- package/src/dom/nodes/drawings/Box.ts +1 -1
- package/src/dom/nodes/paint/ImageFilters.ts +1 -1
- package/src/dom/nodes/paint/Shaders.ts +5 -5
- package/src/skia/types/Shader/Shader.ts +30 -38
@@ -7,25 +7,36 @@ import android.view.Surface;
|
|
7
7
|
import android.view.TextureView;
|
8
8
|
|
9
9
|
import com.facebook.jni.annotations.DoNotStrip;
|
10
|
+
import com.facebook.react.uimanager.PointerEvents;
|
11
|
+
import com.facebook.react.views.view.ReactViewGroup;
|
10
12
|
|
11
|
-
public abstract class SkiaBaseView extends
|
13
|
+
public abstract class SkiaBaseView extends ReactViewGroup implements TextureView.SurfaceTextureListener {
|
12
14
|
|
13
15
|
@DoNotStrip
|
14
16
|
private Surface mSurface;
|
17
|
+
private TextureView mTexture;
|
15
18
|
|
16
19
|
public SkiaBaseView(Context context) {
|
17
20
|
super(context);
|
18
|
-
|
19
|
-
|
21
|
+
mTexture = new TextureView(context);
|
22
|
+
mTexture.setSurfaceTextureListener(this);
|
23
|
+
mTexture.setOpaque(false);
|
24
|
+
addView(mTexture);
|
20
25
|
}
|
21
26
|
|
22
27
|
@Override
|
23
|
-
|
24
|
-
|
28
|
+
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
29
|
+
super.onLayout(changed, left, top, right, bottom);
|
30
|
+
mTexture.layout(0, 0, this.getMeasuredWidth(), this.getMeasuredHeight());
|
25
31
|
}
|
26
32
|
|
27
33
|
@Override
|
28
34
|
public boolean onTouchEvent(MotionEvent ev) {
|
35
|
+
// We do not accept the touch event if this view is not supposed to receive it.
|
36
|
+
if (!PointerEvents.canBeTouchTarget(getPointerEvents())) {
|
37
|
+
return false;
|
38
|
+
}
|
39
|
+
|
29
40
|
// https://developer.android.com/training/gestures/multi
|
30
41
|
int action = ev.getActionMasked();
|
31
42
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
package com.shopify.reactnative.skia;
|
2
|
+
|
3
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
4
|
+
import com.facebook.react.views.view.ReactViewGroup;
|
5
|
+
import com.facebook.react.views.view.ReactViewManager;
|
6
|
+
|
7
|
+
import androidx.annotation.NonNull;
|
8
|
+
import androidx.annotation.Nullable;
|
9
|
+
|
10
|
+
public abstract class SkiaBaseViewManager extends ReactViewManager {
|
11
|
+
|
12
|
+
@Override
|
13
|
+
public void setNativeId(@NonNull ReactViewGroup view, @Nullable String nativeId) {
|
14
|
+
super.setNativeId(view, nativeId);
|
15
|
+
int nativeIdResolved = Integer.parseInt(nativeId);
|
16
|
+
((SkiaBaseView)view).registerView(nativeIdResolved);
|
17
|
+
}
|
18
|
+
|
19
|
+
@ReactProp(name = "mode")
|
20
|
+
public void setMode(ReactViewGroup view, String mode) {
|
21
|
+
((SkiaBaseView)view).setMode(mode);
|
22
|
+
}
|
23
|
+
|
24
|
+
@ReactProp(name = "debug")
|
25
|
+
public void setDebug(ReactViewGroup view, boolean show) {
|
26
|
+
((SkiaBaseView)view).setDebugMode(show);
|
27
|
+
}
|
28
|
+
|
29
|
+
@Override
|
30
|
+
public void onDropViewInstance(@NonNull ReactViewGroup view) {
|
31
|
+
super.onDropViewInstance(view);
|
32
|
+
((SkiaBaseView)view).unregisterView();
|
33
|
+
}
|
34
|
+
}
|
@@ -1,17 +1,9 @@
|
|
1
1
|
package com.shopify.reactnative.skia;
|
2
2
|
|
3
|
-
import com.facebook.react.bridge.ReactContext;
|
4
|
-
import com.facebook.react.uimanager.BaseViewManager;
|
5
|
-
import com.facebook.react.uimanager.LayoutShadowNode;
|
6
3
|
import com.facebook.react.uimanager.ThemedReactContext;
|
7
|
-
import com.facebook.react.uimanager.annotations.ReactProp;
|
8
|
-
|
9
4
|
import androidx.annotation.NonNull;
|
10
|
-
import androidx.annotation.Nullable;
|
11
|
-
|
12
|
-
import java.util.HashMap;
|
13
5
|
|
14
|
-
public class SkiaDomViewManager extends
|
6
|
+
public class SkiaDomViewManager extends SkiaBaseViewManager {
|
15
7
|
|
16
8
|
@NonNull
|
17
9
|
@Override
|
@@ -19,46 +11,9 @@ public class SkiaDomViewManager extends BaseViewManager<SkiaDomView, LayoutShado
|
|
19
11
|
return "SkiaDomView";
|
20
12
|
}
|
21
13
|
|
22
|
-
@Override
|
23
|
-
public LayoutShadowNode createShadowNodeInstance() {
|
24
|
-
return new LayoutShadowNode();
|
25
|
-
}
|
26
|
-
|
27
|
-
@Override
|
28
|
-
public Class<? extends LayoutShadowNode> getShadowNodeClass() {
|
29
|
-
return LayoutShadowNode.class;
|
30
|
-
}
|
31
|
-
|
32
|
-
@Override
|
33
|
-
public void updateExtraData(SkiaDomView root, Object extraData) {
|
34
|
-
}
|
35
|
-
|
36
|
-
@Override
|
37
|
-
public void setNativeId(@NonNull SkiaDomView view, @Nullable String nativeId) {
|
38
|
-
super.setNativeId(view, nativeId);
|
39
|
-
int nativeIdResolved = Integer.parseInt(nativeId);
|
40
|
-
view.registerView(nativeIdResolved);
|
41
|
-
}
|
42
|
-
|
43
|
-
@ReactProp(name = "mode")
|
44
|
-
public void setMode(SkiaDomView view, String mode) {
|
45
|
-
view.setMode(mode);
|
46
|
-
}
|
47
|
-
|
48
|
-
@ReactProp(name = "debug")
|
49
|
-
public void setDebug(SkiaDomView view, boolean show) {
|
50
|
-
view.setDebugMode(show);
|
51
|
-
}
|
52
|
-
|
53
|
-
@Override
|
54
|
-
public void onDropViewInstance(@NonNull SkiaDomView view) {
|
55
|
-
super.onDropViewInstance(view);
|
56
|
-
view.unregisterView();
|
57
|
-
}
|
58
|
-
|
59
14
|
@NonNull
|
60
15
|
@Override
|
61
|
-
|
16
|
+
public SkiaDomView createViewInstance(@NonNull ThemedReactContext reactContext) {
|
62
17
|
return new SkiaDomView(reactContext);
|
63
18
|
}
|
64
19
|
}
|
@@ -1,14 +1,9 @@
|
|
1
1
|
package com.shopify.reactnative.skia;
|
2
2
|
|
3
|
-
import com.facebook.react.uimanager.BaseViewManager;
|
4
|
-
import com.facebook.react.uimanager.LayoutShadowNode;
|
5
3
|
import com.facebook.react.uimanager.ThemedReactContext;
|
6
|
-
import com.facebook.react.uimanager.annotations.ReactProp;
|
7
|
-
|
8
4
|
import androidx.annotation.NonNull;
|
9
|
-
import androidx.annotation.Nullable;
|
10
5
|
|
11
|
-
public class SkiaDrawViewManager extends
|
6
|
+
public class SkiaDrawViewManager extends SkiaBaseViewManager {
|
12
7
|
|
13
8
|
@NonNull
|
14
9
|
@Override
|
@@ -16,46 +11,9 @@ public class SkiaDrawViewManager extends BaseViewManager<SkiaDrawView, LayoutSha
|
|
16
11
|
return "SkiaDrawView";
|
17
12
|
}
|
18
13
|
|
19
|
-
@Override
|
20
|
-
public LayoutShadowNode createShadowNodeInstance() {
|
21
|
-
return new LayoutShadowNode();
|
22
|
-
}
|
23
|
-
|
24
|
-
@Override
|
25
|
-
public Class<? extends LayoutShadowNode> getShadowNodeClass() {
|
26
|
-
return LayoutShadowNode.class;
|
27
|
-
}
|
28
|
-
|
29
|
-
@Override
|
30
|
-
public void updateExtraData(SkiaDrawView root, Object extraData) {
|
31
|
-
}
|
32
|
-
|
33
|
-
@Override
|
34
|
-
public void setNativeId(@NonNull SkiaDrawView view, @Nullable String nativeId) {
|
35
|
-
super.setNativeId(view, nativeId);
|
36
|
-
int nativeIdResolved = Integer.parseInt(nativeId);
|
37
|
-
view.registerView(nativeIdResolved);
|
38
|
-
}
|
39
|
-
|
40
|
-
@ReactProp(name = "mode")
|
41
|
-
public void setMode(SkiaDrawView view, String mode) {
|
42
|
-
view.setMode(mode);
|
43
|
-
}
|
44
|
-
|
45
|
-
@ReactProp(name = "debug")
|
46
|
-
public void setDebug(SkiaDrawView view, boolean show) {
|
47
|
-
view.setDebugMode(show);
|
48
|
-
}
|
49
|
-
|
50
|
-
@Override
|
51
|
-
public void onDropViewInstance(@NonNull SkiaDrawView view) {
|
52
|
-
super.onDropViewInstance(view);
|
53
|
-
view.unregisterView();
|
54
|
-
}
|
55
|
-
|
56
14
|
@NonNull
|
57
15
|
@Override
|
58
|
-
|
16
|
+
public SkiaDrawView createViewInstance(@NonNull ThemedReactContext reactContext) {
|
59
17
|
return new SkiaDrawView(reactContext);
|
60
18
|
}
|
61
19
|
}
|
@@ -1,17 +1,9 @@
|
|
1
1
|
package com.shopify.reactnative.skia;
|
2
2
|
|
3
|
-
import com.facebook.react.bridge.ReactContext;
|
4
|
-
import com.facebook.react.uimanager.BaseViewManager;
|
5
|
-
import com.facebook.react.uimanager.LayoutShadowNode;
|
6
3
|
import com.facebook.react.uimanager.ThemedReactContext;
|
7
|
-
import com.facebook.react.uimanager.annotations.ReactProp;
|
8
|
-
|
9
4
|
import androidx.annotation.NonNull;
|
10
|
-
import androidx.annotation.Nullable;
|
11
|
-
|
12
|
-
import java.util.HashMap;
|
13
5
|
|
14
|
-
public class SkiaPictureViewManager extends
|
6
|
+
public class SkiaPictureViewManager extends SkiaBaseViewManager {
|
15
7
|
|
16
8
|
@NonNull
|
17
9
|
@Override
|
@@ -19,46 +11,9 @@ public class SkiaPictureViewManager extends BaseViewManager<SkiaPictureView, Lay
|
|
19
11
|
return "SkiaPictureView";
|
20
12
|
}
|
21
13
|
|
22
|
-
@Override
|
23
|
-
public LayoutShadowNode createShadowNodeInstance() {
|
24
|
-
return new LayoutShadowNode();
|
25
|
-
}
|
26
|
-
|
27
|
-
@Override
|
28
|
-
public Class<? extends LayoutShadowNode> getShadowNodeClass() {
|
29
|
-
return LayoutShadowNode.class;
|
30
|
-
}
|
31
|
-
|
32
|
-
@Override
|
33
|
-
public void updateExtraData(SkiaPictureView root, Object extraData) {
|
34
|
-
}
|
35
|
-
|
36
|
-
@Override
|
37
|
-
public void setNativeId(@NonNull SkiaPictureView view, @Nullable String nativeId) {
|
38
|
-
super.setNativeId(view, nativeId);
|
39
|
-
int nativeIdResolved = Integer.parseInt(nativeId);
|
40
|
-
view.registerView(nativeIdResolved);
|
41
|
-
}
|
42
|
-
|
43
|
-
@ReactProp(name = "mode")
|
44
|
-
public void setMode(SkiaPictureView view, String mode) {
|
45
|
-
view.setMode(mode);
|
46
|
-
}
|
47
|
-
|
48
|
-
@ReactProp(name = "debug")
|
49
|
-
public void setDebug(SkiaPictureView view, boolean show) {
|
50
|
-
view.setDebugMode(show);
|
51
|
-
}
|
52
|
-
|
53
|
-
@Override
|
54
|
-
public void onDropViewInstance(@NonNull SkiaPictureView view) {
|
55
|
-
super.onDropViewInstance(view);
|
56
|
-
view.unregisterView();
|
57
|
-
}
|
58
|
-
|
59
14
|
@NonNull
|
60
15
|
@Override
|
61
|
-
|
16
|
+
public SkiaPictureView createViewInstance(@NonNull ThemedReactContext reactContext) {
|
62
17
|
return new SkiaPictureView(reactContext);
|
63
18
|
}
|
64
19
|
}
|
@@ -116,7 +116,7 @@ public:
|
|
116
116
|
/**
|
117
117
|
Returns the derived value
|
118
118
|
*/
|
119
|
-
std::shared_ptr<T> getDerivedValue() { return _derivedValue; }
|
119
|
+
std::shared_ptr<const T> getDerivedValue() { return _derivedValue; }
|
120
120
|
|
121
121
|
/**
|
122
122
|
Returns true if is optional and one of the child props has a value, or all
|
@@ -128,7 +128,7 @@ protected:
|
|
128
128
|
/**
|
129
129
|
Set derived value from sub classes
|
130
130
|
*/
|
131
|
-
void setDerivedValue(std::shared_ptr<T> value) {
|
131
|
+
void setDerivedValue(std::shared_ptr<const T> value) {
|
132
132
|
setIsChanged(_derivedValue != value);
|
133
133
|
_derivedValue = value;
|
134
134
|
}
|
@@ -138,11 +138,11 @@ protected:
|
|
138
138
|
*/
|
139
139
|
void setDerivedValue(const T &&value) {
|
140
140
|
setIsChanged(true);
|
141
|
-
_derivedValue = std::make_shared<T>(std::move(value));
|
141
|
+
_derivedValue = std::make_shared<const T>(std::move(value));
|
142
142
|
}
|
143
143
|
|
144
144
|
private:
|
145
|
-
std::shared_ptr<T> _derivedValue;
|
145
|
+
std::shared_ptr<const T> _derivedValue;
|
146
146
|
};
|
147
147
|
|
148
148
|
/**
|
@@ -81,8 +81,8 @@ protected:
|
|
81
81
|
}
|
82
82
|
|
83
83
|
private:
|
84
|
-
SkRRect inflate(const SkRRect &box, SkScalar dx, SkScalar dy,
|
85
|
-
|
84
|
+
SkRRect inflate(const SkRRect &box, SkScalar dx, SkScalar dy, SkScalar tx = 0,
|
85
|
+
SkScalar ty = 0) {
|
86
86
|
return SkRRect::MakeRectXY(
|
87
87
|
SkRect::MakeXYWH(box.rect().x() - dx + tx, box.rect().y() - dy + ty,
|
88
88
|
box.rect().width() + 2 * dx,
|
@@ -90,8 +90,8 @@ private:
|
|
90
90
|
box.getSimpleRadii().x() + dx, box.getSimpleRadii().y() + dy);
|
91
91
|
}
|
92
92
|
|
93
|
-
SkRRect deflate(const SkRRect &box, SkScalar dx, SkScalar dy,
|
94
|
-
|
93
|
+
SkRRect deflate(const SkRRect &box, SkScalar dx, SkScalar dy, SkScalar tx = 0,
|
94
|
+
SkScalar ty = 0) {
|
95
95
|
return inflate(box, -dx, -dy, tx, ty);
|
96
96
|
}
|
97
97
|
|
@@ -59,20 +59,22 @@ protected:
|
|
59
59
|
", end: " + std::to_string(_endProp->value().getAsNumber()));
|
60
60
|
}
|
61
61
|
filteredPath.swap(filteredPath);
|
62
|
-
_path = std::make_shared<SkPath>(filteredPath);
|
62
|
+
_path = std::make_shared<const SkPath>(filteredPath);
|
63
63
|
} else if (hasStartOffset || hasEndOffset) {
|
64
64
|
throw std::runtime_error(
|
65
65
|
"Failed trimming path with parameters start: " +
|
66
66
|
std::to_string(_startProp->value().getAsNumber()) +
|
67
67
|
", end: " + std::to_string(_endProp->value().getAsNumber()));
|
68
68
|
} else {
|
69
|
-
_path = std::make_shared<SkPath>(filteredPath);
|
69
|
+
_path = std::make_shared<const SkPath>(filteredPath);
|
70
70
|
}
|
71
71
|
|
72
72
|
// Set fill style
|
73
73
|
if (_fillTypeProp->isSet()) {
|
74
74
|
auto fillType = _fillTypeProp->value().getAsString();
|
75
|
-
_path
|
75
|
+
auto p = std::make_shared<SkPath>(*_path.get());
|
76
|
+
p->setFillType(getFillTypeFromStringValue(fillType));
|
77
|
+
_path = std::const_pointer_cast<const SkPath>(p);
|
76
78
|
}
|
77
79
|
|
78
80
|
// do we have a special paint here?
|
@@ -105,9 +107,14 @@ protected:
|
|
105
107
|
precision = opts.getValue(PropNamePrecision).getAsNumber();
|
106
108
|
}
|
107
109
|
|
108
|
-
|
110
|
+
// _path is const so we can't mutate it directly, let's replace the
|
111
|
+
// path like this:
|
112
|
+
auto p = std::make_shared<SkPath>(*_path.get());
|
113
|
+
if (!strokePaint.getFillPath(*_path.get(), p.get(), nullptr,
|
109
114
|
precision)) {
|
110
115
|
_path = nullptr;
|
116
|
+
} else {
|
117
|
+
_path = std::const_pointer_cast<const SkPath>(p);
|
111
118
|
}
|
112
119
|
}
|
113
120
|
|
@@ -157,7 +164,7 @@ private:
|
|
157
164
|
NodeProp *_fillTypeProp;
|
158
165
|
NodeProp *_strokeOptsProp;
|
159
166
|
|
160
|
-
std::shared_ptr<SkPath> _path;
|
167
|
+
std::shared_ptr<const SkPath> _path;
|
161
168
|
};
|
162
169
|
|
163
170
|
class StrokeOptsProps : public BaseDerivedProp {
|
@@ -121,8 +121,16 @@ protected:
|
|
121
121
|
if (rect != nullptr && lm != nullptr) {
|
122
122
|
auto rc = _imageProps->getDerivedValue();
|
123
123
|
auto m3 = _imageProps->rect2rect(rc->src, rc->dst);
|
124
|
-
|
125
|
-
|
124
|
+
if (_transformProp->isChanged()) {
|
125
|
+
// To modify the matrix we need to copy it since we're not allowed to
|
126
|
+
// modify values contained in properties - this would have caused the
|
127
|
+
// matrix to be translated and scaled more and more for each render
|
128
|
+
// even thought the matrix prop did not change.
|
129
|
+
_matrix.reset();
|
130
|
+
_matrix.preConcat(*lm);
|
131
|
+
_matrix.preTranslate(m3.x(), m3.y());
|
132
|
+
_matrix.preScale(m3.width(), m3.height());
|
133
|
+
}
|
126
134
|
}
|
127
135
|
|
128
136
|
setShader(
|
@@ -133,7 +141,7 @@ protected:
|
|
133
141
|
_filterModeProp->value().getAsString()),
|
134
142
|
getMipmapModeFromString(
|
135
143
|
_mipmapModeProp->value().getAsString())),
|
136
|
-
|
144
|
+
&_matrix));
|
137
145
|
}
|
138
146
|
}
|
139
147
|
|
@@ -185,6 +193,8 @@ private:
|
|
185
193
|
"\" is not a valid Mipmap Mode.");
|
186
194
|
}
|
187
195
|
|
196
|
+
SkMatrix _matrix;
|
197
|
+
|
188
198
|
TileModeProp *_txProp;
|
189
199
|
TileModeProp *_tyProp;
|
190
200
|
NodeProp *_filterModeProp;
|
@@ -328,12 +338,12 @@ protected:
|
|
328
338
|
}
|
329
339
|
}
|
330
340
|
|
331
|
-
SkColor *_colors;
|
332
|
-
SkTileMode _mode;
|
341
|
+
const SkColor *_colors;
|
333
342
|
double _flags;
|
334
|
-
SkScalar *_positions;
|
335
|
-
SkMatrix *_matrix;
|
336
343
|
int _colorCount;
|
344
|
+
SkTileMode _mode;
|
345
|
+
const SkScalar *_positions;
|
346
|
+
const SkMatrix *_matrix;
|
337
347
|
|
338
348
|
private:
|
339
349
|
TransformsProps *_transformsProps;
|
@@ -45,18 +45,18 @@ public:
|
|
45
45
|
return _pathProp->isSet() || _rectProp->isSet() || _rrectProp->isSet();
|
46
46
|
}
|
47
47
|
|
48
|
-
SkPath *getPath() { return _path.get(); }
|
49
|
-
SkRect *getRect() { return _rect.get(); }
|
50
|
-
SkRRect *getRRect() { return _rrect.get(); }
|
48
|
+
const SkPath *getPath() { return _path.get(); }
|
49
|
+
const SkRect *getRect() { return _rect.get(); }
|
50
|
+
const SkRRect *getRRect() { return _rrect.get(); }
|
51
51
|
|
52
52
|
private:
|
53
53
|
PathProp *_pathProp;
|
54
54
|
RectProp *_rectProp;
|
55
55
|
RRectProp *_rrectProp;
|
56
56
|
|
57
|
-
std::shared_ptr<SkPath> _path;
|
58
|
-
std::shared_ptr<SkRect> _rect;
|
59
|
-
std::shared_ptr<SkRRect> _rrect;
|
57
|
+
std::shared_ptr<const SkPath> _path;
|
58
|
+
std::shared_ptr<const SkRect> _rect;
|
59
|
+
std::shared_ptr<const SkRRect> _rrect;
|
60
60
|
};
|
61
61
|
|
62
62
|
} // namespace RNSkia
|
@@ -74,7 +74,9 @@ public:
|
|
74
74
|
}
|
75
75
|
|
76
76
|
sk_sp<SkImage> getImage() { return _imageProp->getDerivedValue(); }
|
77
|
-
std::shared_ptr<SkRect> getRect() {
|
77
|
+
std::shared_ptr<const SkRect> getRect() {
|
78
|
+
return _rectProp->getDerivedValue();
|
79
|
+
}
|
78
80
|
|
79
81
|
SkRect rect2rect(SkRect src, SkRect dst) {
|
80
82
|
auto scaleX = dst.width() / src.width();
|
@@ -19,8 +19,6 @@
|
|
19
19
|
|
20
20
|
namespace RNSkia {
|
21
21
|
|
22
|
-
static PropId PropNameCurrent = JsiPropId::get("current");
|
23
|
-
|
24
22
|
class PaintProp : public DerivedProp<SkPaint> {
|
25
23
|
public:
|
26
24
|
explicit PaintProp(PropId name) : DerivedProp<SkPaint>() {
|
@@ -40,20 +38,6 @@ public:
|
|
40
38
|
throw std::runtime_error("Expected SkPaint object, got unknown "
|
41
39
|
"object when reading paint property.");
|
42
40
|
}
|
43
|
-
} else if (_paintProp->value().getType() == PropType::Object) {
|
44
|
-
// We have a JS object - is it a ref?
|
45
|
-
auto ref = _paintProp->value().getValue(PropNameCurrent);
|
46
|
-
if (ref.getType() == PropType::HostObject) {
|
47
|
-
auto ptr = ref.getAs<JsiSkPaint>();
|
48
|
-
if (ptr != nullptr) {
|
49
|
-
// Update the local paint for the current context
|
50
|
-
setDerivedValue(ptr->getObject());
|
51
|
-
} else {
|
52
|
-
throw std::runtime_error(
|
53
|
-
"Expected reference to a SkPaint object, got unknown object "
|
54
|
-
"when reading paint property.");
|
55
|
-
}
|
56
|
-
}
|
57
41
|
} else {
|
58
42
|
setDerivedValue(nullptr);
|
59
43
|
}
|
@@ -40,9 +40,9 @@ public:
|
|
40
40
|
bool hasColors() { return _colorsProp->isSet(); }
|
41
41
|
|
42
42
|
void updateDerivedValue() override {
|
43
|
-
SkVertices::VertexMode *vertextMode =
|
43
|
+
const SkVertices::VertexMode *vertextMode =
|
44
44
|
_vertexModeProp->getDerivedValue().get();
|
45
|
-
std::vector<SkColor> *colors = _colorsProp->getDerivedValue().get();
|
45
|
+
const std::vector<SkColor> *colors = _colorsProp->getDerivedValue().get();
|
46
46
|
auto vertices = _verticesProp->getDerivedValue();
|
47
47
|
auto textures = _texturesProp->getDerivedValue();
|
48
48
|
auto indices = _indicesProp->getDerivedValue();
|
@@ -27,7 +27,7 @@ const deflate = function (Skia, box, dx, dy) {
|
|
27
27
|
|
28
28
|
class BoxShadowNode extends _Node.JsiDeclarationNode {
|
29
29
|
constructor(ctx, props) {
|
30
|
-
super(ctx, _types2.DeclarationType.Unknown, _types2.NodeType.
|
30
|
+
super(ctx, _types2.DeclarationType.Unknown, _types2.NodeType.BoxShadow, props);
|
31
31
|
}
|
32
32
|
|
33
33
|
materialize() {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["inflate","Skia","box","dx","dy","tx","ty","RRectXY","XYWHRect","rect","x","y","width","height","rx","ry","deflate","BoxShadowNode","JsiDeclarationNode","constructor","ctx","props","DeclarationType","Unknown","NodeType","
|
1
|
+
{"version":3,"names":["inflate","Skia","box","dx","dy","tx","ty","RRectXY","XYWHRect","rect","x","y","width","height","rx","ry","deflate","BoxShadowNode","JsiDeclarationNode","constructor","ctx","props","DeclarationType","Unknown","NodeType","BoxShadow","materialize","BoxNode","JsiRenderNode","Box","renderNode","canvas","paint","defaultBox","opacity","getAlphaf","isRRect","shadows","_children","map","node","filter","n","shadow","inner","color","blur","spread","lPaint","Paint","setColor","Color","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","BlurStyle","Normal","drawRRect","delta","Point","Math","abs","save","clipRRect","ClipOp","Intersect","outer","drawDRRect","restore"],"sources":["Box.ts"],"sourcesContent":["import type { SkRRect, Skia } from \"../../../skia/types\";\nimport { BlurStyle, ClipOp, isRRect } from \"../../../skia/types\";\nimport type { DrawingContext } from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport type { BoxShadowProps, BoxProps } from \"../../types/Drawings\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport { JsiRenderNode } from \"../RenderNode\";\n\nconst inflate = (\n Skia: Skia,\n box: SkRRect,\n dx: number,\n dy: number,\n tx = 0,\n ty = 0\n) =>\n Skia.RRectXY(\n Skia.XYWHRect(\n box.rect.x - dx + tx,\n box.rect.y - dy + ty,\n box.rect.width + 2 * dx,\n box.rect.height + 2 * dy\n ),\n box.rx + dx,\n box.ry + dy\n );\n\nconst deflate = (\n Skia: Skia,\n box: SkRRect,\n dx: number,\n dy: number,\n tx = 0,\n ty = 0\n) => inflate(Skia, box, -dx, -dy, tx, ty);\n\nexport class BoxShadowNode extends JsiDeclarationNode<\n BoxShadowProps,\n BoxShadowProps\n> {\n constructor(ctx: NodeContext, props: BoxShadowProps) {\n super(ctx, DeclarationType.Unknown, NodeType.BoxShadow, props);\n }\n\n materialize() {\n return this.props;\n }\n}\n\nexport class BoxNode extends JsiRenderNode<BoxProps> {\n constructor(ctx: NodeContext, props: BoxProps) {\n super(ctx, NodeType.Box, props);\n }\n\n renderNode({ canvas, paint }: DrawingContext) {\n const { box: defaultBox } = this.props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox)\n ? defaultBox\n : this.Skia.RRectXY(defaultBox, 0, 0);\n const shadows = this._children\n .map((node) => {\n if (node instanceof BoxShadowNode) {\n return node.materialize();\n }\n return null;\n })\n .filter((n): n is BoxShadowProps => n !== null);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = this.Skia.Paint();\n lPaint.setColor(this.Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(\n inflate(this.Skia, box, spread, spread, dx, dy),\n lPaint\n );\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = this.Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = this.Skia.Paint();\n lPaint.setColor(this.Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(this.Skia, box, spread, spread, dx, dy);\n const outer = inflate(this.Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n }\n}\n"],"mappings":"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"}
|
@@ -122,7 +122,7 @@ exports.BlurImageFilterNode = BlurImageFilterNode;
|
|
122
122
|
|
123
123
|
class DropShadowImageFilterNode extends ImageFilterDeclaration {
|
124
124
|
constructor(ctx, props) {
|
125
|
-
super(ctx, _types2.NodeType.
|
125
|
+
super(ctx, _types2.NodeType.DropShadowImageFilter, props);
|
126
126
|
}
|
127
127
|
|
128
128
|
materialize() {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","ImageFilterDeclaration","JsiDeclarationNode","constructor","ctx","type","props","DeclarationType","getOptionalChildInstance","index","child","_children","getMandatoryChildInstance","isImageFilter","materialize","isShader","MakeShader","declarationType","Error","OffsetImageFilterNode","NodeType","OffsetImageFilter","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","MakeDisplacementMap","ColorChannel","enumKey","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","processRadius","DropShadowImageFilterNode","cl","inner","Color","factory","bind","MakeDropShadowOnly","MakeDropShadow","MorphologyOperator","MorphologyImageFilterNode","MorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","BlendImageFilterNode","BlendImageFilter","a","b","RuntimeShaderImageFilterNode","RuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader"],"sources":["ImageFilters.ts"],"sourcesContent":["import type { SkImageFilter, SkColor, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processRadius, enumKey } from \"../datatypes\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nexport abstract class ImageFilterDeclaration<\n P,\n Nullable extends null | never = never\n> extends JsiDeclarationNode<P, SkImageFilter, Nullable> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n getOptionalChildInstance(index: number) {\n const child = this._children[index];\n if (!child) {\n return null;\n }\n return this.getMandatoryChildInstance(index);\n }\n\n getMandatoryChildInstance(index: number) {\n const child = this._children[index];\n if (child instanceof JsiDeclarationNode) {\n if (child.isImageFilter()) {\n return child.materialize();\n } else if (child.isShader()) {\n return this.Skia.ImageFilter.MakeShader(child.materialize(), null);\n } else if (child.declarationType === DeclarationType.ColorFilter) {\n return this.Skia.ImageFilter.MakeColorFilter(child.materialize(), null);\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n materialize() {\n const { x, y } = this.props;\n return this.Skia.ImageFilter.MakeOffset(\n x,\n y,\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n materialize() {\n const { channelX, channelY, scale } = this.props;\n return this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n this.getMandatoryChildInstance(0),\n this.getOptionalChildInstance(1)\n );\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n return this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n const input = this.getOptionalChildInstance(0);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, this.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? this.Skia.ImageFilter.MakeDropShadowOnly.bind(this.Skia.ImageFilter)\n : this.Skia.ImageFilter.MakeDropShadow.bind(this.Skia.ImageFilter);\n }\n return factory(dx, dy, blur, blur, color, input);\n }\n}\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nexport class MorphologyImageFilterNode extends ImageFilterDeclaration<MorphologyImageFilterProps> {\n constructor(ctx: NodeContext, props: MorphologyImageFilterProps) {\n super(ctx, NodeType.MorphologyImageFilter, props);\n }\n\n materialize() {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n const input = this.getOptionalChildInstance(0);\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n return this.Skia.ImageFilter.MakeErode(r.x, r.y, input);\n }\n return this.Skia.ImageFilter.MakeDilate(r.x, r.y, input);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n materialize() {\n const { mode } = this.props;\n const a = this.getMandatoryChildInstance(0);\n const b = this.getMandatoryChildInstance(1);\n return this.Skia.ImageFilter.MakeBlend(mode, a, b);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n materialize() {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const input = this.getOptionalChildInstance(0);\n return this.Skia.ImageFilter.MakeRuntimeShader(rtb, null, input);\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","ImageFilterDeclaration","JsiDeclarationNode","constructor","ctx","type","props","DeclarationType","getOptionalChildInstance","index","child","_children","getMandatoryChildInstance","isImageFilter","materialize","isShader","MakeShader","declarationType","Error","OffsetImageFilterNode","NodeType","OffsetImageFilter","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","MakeDisplacementMap","ColorChannel","enumKey","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","processRadius","DropShadowImageFilterNode","DropShadowImageFilter","cl","inner","Color","factory","bind","MakeDropShadowOnly","MakeDropShadow","MorphologyOperator","MorphologyImageFilterNode","MorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","BlendImageFilterNode","BlendImageFilter","a","b","RuntimeShaderImageFilterNode","RuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader"],"sources":["ImageFilters.ts"],"sourcesContent":["import type { SkImageFilter, SkColor, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processRadius, enumKey } from \"../datatypes\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nexport abstract class ImageFilterDeclaration<\n P,\n Nullable extends null | never = never\n> extends JsiDeclarationNode<P, SkImageFilter, Nullable> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n getOptionalChildInstance(index: number) {\n const child = this._children[index];\n if (!child) {\n return null;\n }\n return this.getMandatoryChildInstance(index);\n }\n\n getMandatoryChildInstance(index: number) {\n const child = this._children[index];\n if (child instanceof JsiDeclarationNode) {\n if (child.isImageFilter()) {\n return child.materialize();\n } else if (child.isShader()) {\n return this.Skia.ImageFilter.MakeShader(child.materialize(), null);\n } else if (child.declarationType === DeclarationType.ColorFilter) {\n return this.Skia.ImageFilter.MakeColorFilter(child.materialize(), null);\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n materialize() {\n const { x, y } = this.props;\n return this.Skia.ImageFilter.MakeOffset(\n x,\n y,\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n materialize() {\n const { channelX, channelY, scale } = this.props;\n return this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n this.getMandatoryChildInstance(0),\n this.getOptionalChildInstance(1)\n );\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n return this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.DropShadowImageFilter, props);\n }\n\n materialize() {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n const input = this.getOptionalChildInstance(0);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, this.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? this.Skia.ImageFilter.MakeDropShadowOnly.bind(this.Skia.ImageFilter)\n : this.Skia.ImageFilter.MakeDropShadow.bind(this.Skia.ImageFilter);\n }\n return factory(dx, dy, blur, blur, color, input);\n }\n}\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nexport class MorphologyImageFilterNode extends ImageFilterDeclaration<MorphologyImageFilterProps> {\n constructor(ctx: NodeContext, props: MorphologyImageFilterProps) {\n super(ctx, NodeType.MorphologyImageFilter, props);\n }\n\n materialize() {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n const input = this.getOptionalChildInstance(0);\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n return this.Skia.ImageFilter.MakeErode(r.x, r.y, input);\n }\n return this.Skia.ImageFilter.MakeDilate(r.x, r.y, input);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n materialize() {\n const { mode } = this.props;\n const a = this.getMandatoryChildInstance(0);\n const b = this.getMandatoryChildInstance(1);\n return this.Skia.ImageFilter.MakeBlend(mode, a, b);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n materialize() {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const input = this.getOptionalChildInstance(0);\n return this.Skia.ImageFilter.MakeRuntimeShader(rtb, null, input);\n }\n}\n"],"mappings":"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"}
|