@shopify/react-native-skia 1.11.0 → 1.11.2
Sign up to get free protection for your applications and to get access to all the features.
- package/android/CMakeLists.txt +0 -8
- package/android/cpp/jni/JniLoad.cpp +0 -2
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -1
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerDelegate.java +4 -2
- package/cpp/api/recorder/Convertor.h +2 -1
- package/cpp/api/recorder/DataTypes.h +70 -72
- package/cpp/api/recorder/Drawings.h +25 -24
- package/cpp/api/recorder/RNRecorder.h +12 -10
- package/cpp/api/recorder/Shaders.h +5 -5
- package/cpp/jsi/ViewProperty.h +5 -16
- package/cpp/rnskia/RNSkManager.cpp +1 -7
- package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +8 -4
- package/lib/commonjs/dom/nodes/index.d.ts +0 -1
- package/lib/commonjs/dom/nodes/index.js +0 -11
- package/lib/commonjs/dom/nodes/index.js.map +1 -1
- package/lib/commonjs/external/reanimated/renderHelpers.d.ts +0 -6
- package/lib/commonjs/external/reanimated/renderHelpers.js +0 -73
- package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/commonjs/index.d.ts +0 -1
- package/lib/commonjs/index.js +0 -12
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.d.ts +10 -1
- package/lib/commonjs/renderer/Canvas.js +3 -1
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/sksg/Container.d.ts +2 -0
- package/lib/commonjs/sksg/Container.js +10 -0
- package/lib/commonjs/sksg/Container.js.map +1 -1
- package/lib/commonjs/sksg/Elements.d.ts +65 -0
- package/lib/commonjs/sksg/Elements.js +6 -0
- package/lib/commonjs/sksg/Elements.js.map +1 -0
- package/lib/commonjs/sksg/Reconciler.d.ts +1 -0
- package/lib/commonjs/sksg/Reconciler.js +2 -0
- package/lib/commonjs/sksg/Reconciler.js.map +1 -1
- package/lib/commonjs/views/index.d.ts +0 -1
- package/lib/commonjs/views/index.js +0 -11
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/module/dom/nodes/index.d.ts +0 -1
- package/lib/module/dom/nodes/index.js +0 -1
- package/lib/module/dom/nodes/index.js.map +1 -1
- package/lib/module/external/reanimated/renderHelpers.d.ts +0 -6
- package/lib/module/external/reanimated/renderHelpers.js +0 -68
- package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/module/index.d.ts +0 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/renderer/Canvas.d.ts +10 -1
- package/lib/module/renderer/Canvas.js +1 -0
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/sksg/Container.d.ts +2 -0
- package/lib/module/sksg/Container.js +10 -0
- package/lib/module/sksg/Container.js.map +1 -1
- package/lib/module/sksg/Elements.d.ts +65 -0
- package/lib/module/sksg/Elements.js +2 -0
- package/lib/module/sksg/Elements.js.map +1 -0
- package/lib/module/sksg/Reconciler.d.ts +1 -0
- package/lib/module/sksg/Reconciler.js +2 -0
- package/lib/module/sksg/Reconciler.js.map +1 -1
- package/lib/module/views/index.d.ts +0 -1
- package/lib/module/views/index.js +0 -1
- package/lib/module/views/index.js.map +1 -1
- package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +0 -3
- package/lib/typescript/lib/commonjs/renderer/Canvas.d.ts +1 -0
- package/lib/typescript/lib/commonjs/sksg/Container.d.ts +2 -0
- package/lib/typescript/lib/commonjs/sksg/Elements.d.ts +1 -0
- package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +6 -0
- package/lib/typescript/lib/module/dom/nodes/index.d.ts +0 -1
- package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +0 -3
- package/lib/typescript/lib/module/index.d.ts +0 -1
- package/lib/typescript/lib/module/mock/index.d.ts +0 -1
- package/lib/typescript/lib/module/renderer/Canvas.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/Container.d.ts +2 -0
- package/lib/typescript/lib/module/sksg/Elements.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/Reconciler.d.ts +6 -0
- package/lib/typescript/lib/module/views/index.d.ts +0 -1
- package/lib/typescript/src/dom/nodes/index.d.ts +0 -1
- package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +0 -6
- package/lib/typescript/src/index.d.ts +0 -1
- package/lib/typescript/src/renderer/Canvas.d.ts +10 -1
- package/lib/typescript/src/sksg/Container.d.ts +2 -0
- package/lib/typescript/src/sksg/Elements.d.ts +65 -0
- package/lib/typescript/src/sksg/Reconciler.d.ts +1 -0
- package/lib/typescript/src/views/index.d.ts +0 -1
- package/package.json +1 -1
- package/src/dom/nodes/index.ts +0 -1
- package/src/external/reanimated/renderHelpers.ts +1 -78
- package/src/index.ts +0 -1
- package/src/renderer/Canvas.tsx +11 -1
- package/src/sksg/Container.ts +11 -0
- package/src/sksg/Elements.tsx +136 -0
- package/src/sksg/Reconciler.ts +2 -0
- package/src/views/index.ts +0 -1
- package/android/cpp/jni/include/JniSkiaDomView.h +0 -82
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +0 -41
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +0 -32
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerDelegate.java +0 -34
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerInterface.java +0 -18
- package/cpp/rnskia/RNSkDomView.cpp +0 -121
- package/cpp/rnskia/RNSkDomView.h +0 -97
- package/cpp/rnskia/dom/JsiDomApi.h +0 -165
- package/cpp/rnskia/dom/base/BaseNodeProp.h +0 -72
- package/cpp/rnskia/dom/base/ConcatablePaint.cpp +0 -117
- package/cpp/rnskia/dom/base/ConcatablePaint.h +0 -49
- package/cpp/rnskia/dom/base/Declaration.h +0 -86
- package/cpp/rnskia/dom/base/DeclarationContext.h +0 -79
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +0 -203
- package/cpp/rnskia/dom/base/DrawingContext.cpp +0 -55
- package/cpp/rnskia/dom/base/DrawingContext.h +0 -104
- package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +0 -119
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +0 -71
- package/cpp/rnskia/dom/base/JsiDomNode.h +0 -572
- package/cpp/rnskia/dom/base/JsiDomRenderNode.h +0 -262
- package/cpp/rnskia/dom/base/NodeProp.h +0 -139
- package/cpp/rnskia/dom/base/NodePropsContainer.h +0 -158
- package/cpp/rnskia/dom/nodes/JsiAtlasNode.h +0 -64
- package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +0 -49
- package/cpp/rnskia/dom/nodes/JsiBlendNode.h +0 -94
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +0 -75
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +0 -94
- package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +0 -33
- package/cpp/rnskia/dom/nodes/JsiCircleNode.h +0 -35
- package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +0 -164
- package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +0 -37
- package/cpp/rnskia/dom/nodes/JsiFillNode.h +0 -22
- package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +0 -53
- package/cpp/rnskia/dom/nodes/JsiGroupNode.h +0 -25
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +0 -361
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +0 -43
- package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +0 -63
- package/cpp/rnskia/dom/nodes/JsiLayerNode.h +0 -74
- package/cpp/rnskia/dom/nodes/JsiLineNode.h +0 -38
- package/cpp/rnskia/dom/nodes/JsiOvalNode.h +0 -32
- package/cpp/rnskia/dom/nodes/JsiPaintNode.h +0 -119
- package/cpp/rnskia/dom/nodes/JsiParagraphNode.h +0 -62
- package/cpp/rnskia/dom/nodes/JsiPatchNode.h +0 -50
- package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +0 -268
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +0 -181
- package/cpp/rnskia/dom/nodes/JsiPictureNode.h +0 -31
- package/cpp/rnskia/dom/nodes/JsiPointsNode.h +0 -48
- package/cpp/rnskia/dom/nodes/JsiRRectNode.h +0 -33
- package/cpp/rnskia/dom/nodes/JsiRectNode.h +0 -33
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +0 -434
- package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +0 -44
- package/cpp/rnskia/dom/nodes/JsiTextNode.h +0 -51
- package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +0 -33
- package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +0 -41
- package/cpp/rnskia/dom/props/BezierProps.h +0 -65
- package/cpp/rnskia/dom/props/BlendModeProp.h +0 -103
- package/cpp/rnskia/dom/props/BoxShadowProps.h +0 -62
- package/cpp/rnskia/dom/props/CircleProp.h +0 -49
- package/cpp/rnskia/dom/props/ClipProp.h +0 -57
- package/cpp/rnskia/dom/props/ColorProp.h +0 -96
- package/cpp/rnskia/dom/props/FontProp.h +0 -42
- package/cpp/rnskia/dom/props/GlyphsProp.h +0 -55
- package/cpp/rnskia/dom/props/LayerProp.h +0 -52
- package/cpp/rnskia/dom/props/MatrixProp.h +0 -54
- package/cpp/rnskia/dom/props/NumbersProp.h +0 -67
- package/cpp/rnskia/dom/props/PaintProps.h +0 -133
- package/cpp/rnskia/dom/props/ParagraphProp.h +0 -45
- package/cpp/rnskia/dom/props/PathProp.h +0 -59
- package/cpp/rnskia/dom/props/PictureProp.h +0 -40
- package/cpp/rnskia/dom/props/PointProp.h +0 -65
- package/cpp/rnskia/dom/props/PointsProp.h +0 -81
- package/cpp/rnskia/dom/props/RRectProp.h +0 -222
- package/cpp/rnskia/dom/props/RSXformProp.h +0 -52
- package/cpp/rnskia/dom/props/RadiusProp.h +0 -43
- package/cpp/rnskia/dom/props/RectProp.h +0 -164
- package/cpp/rnskia/dom/props/SamplingProp.h +0 -54
- package/cpp/rnskia/dom/props/SkImageProps.h +0 -196
- package/cpp/rnskia/dom/props/StrokeProps.h +0 -79
- package/cpp/rnskia/dom/props/SvgProp.h +0 -45
- package/cpp/rnskia/dom/props/TextBlobProp.h +0 -133
- package/cpp/rnskia/dom/props/TileModeProp.h +0 -52
- package/cpp/rnskia/dom/props/TransformProp.h +0 -147
- package/cpp/rnskia/dom/props/TransformsProps.h +0 -66
- package/cpp/rnskia/dom/props/UniformsProp.h +0 -159
- package/cpp/rnskia/dom/props/VertexModeProp.h +0 -49
- package/cpp/rnskia/dom/props/VerticesProps.h +0 -63
- package/ios/RNSkia-iOS/SkiaDomView.h +0 -7
- package/ios/RNSkia-iOS/SkiaDomView.mm +0 -63
- package/ios/RNSkia-iOS/SkiaDomViewManager.h +0 -8
- package/ios/RNSkia-iOS/SkiaDomViewManager.mm +0 -51
- package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +0 -64
- package/lib/commonjs/dom/nodes/JsiSkDOM.js +0 -196
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +0 -1
- package/lib/commonjs/renderer/CanvasOld.d.ts +0 -11
- package/lib/commonjs/renderer/CanvasOld.js +0 -96
- package/lib/commonjs/renderer/CanvasOld.js.map +0 -1
- package/lib/commonjs/renderer/Container.d.ts +0 -10
- package/lib/commonjs/renderer/Container.js +0 -26
- package/lib/commonjs/renderer/Container.js.map +0 -1
- package/lib/commonjs/renderer/HostComponents.d.ts +0 -129
- package/lib/commonjs/renderer/HostComponents.js +0 -141
- package/lib/commonjs/renderer/HostComponents.js.map +0 -1
- package/lib/commonjs/renderer/HostConfig.d.ts +0 -18
- package/lib/commonjs/renderer/HostConfig.js +0 -157
- package/lib/commonjs/renderer/HostConfig.js.map +0 -1
- package/lib/commonjs/renderer/Reconciler.d.ts +0 -9
- package/lib/commonjs/renderer/Reconciler.js +0 -44
- package/lib/commonjs/renderer/Reconciler.js.map +0 -1
- package/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -6
- package/lib/commonjs/specs/SkiaDomViewNativeComponent.js +0 -11
- package/lib/commonjs/specs/SkiaDomViewNativeComponent.js.map +0 -1
- package/lib/commonjs/views/SkiaDomView.d.ts +0 -33
- package/lib/commonjs/views/SkiaDomView.js +0 -119
- package/lib/commonjs/views/SkiaDomView.js.map +0 -1
- package/lib/commonjs/views/SkiaDomView.web.d.ts +0 -0
- package/lib/commonjs/views/SkiaDomView.web.js +0 -2
- package/lib/commonjs/views/SkiaDomView.web.js.map +0 -1
- package/lib/module/dom/nodes/JsiSkDOM.d.ts +0 -64
- package/lib/module/dom/nodes/JsiSkDOM.js +0 -189
- package/lib/module/dom/nodes/JsiSkDOM.js.map +0 -1
- package/lib/module/renderer/CanvasOld.d.ts +0 -11
- package/lib/module/renderer/CanvasOld.js +0 -87
- package/lib/module/renderer/CanvasOld.js.map +0 -1
- package/lib/module/renderer/Container.d.ts +0 -10
- package/lib/module/renderer/Container.js +0 -19
- package/lib/module/renderer/Container.js.map +0 -1
- package/lib/module/renderer/HostComponents.d.ts +0 -129
- package/lib/module/renderer/HostComponents.js +0 -134
- package/lib/module/renderer/HostComponents.js.map +0 -1
- package/lib/module/renderer/HostConfig.d.ts +0 -18
- package/lib/module/renderer/HostConfig.js +0 -150
- package/lib/module/renderer/HostConfig.js.map +0 -1
- package/lib/module/renderer/Reconciler.d.ts +0 -9
- package/lib/module/renderer/Reconciler.js +0 -36
- package/lib/module/renderer/Reconciler.js.map +0 -1
- package/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -6
- package/lib/module/specs/SkiaDomViewNativeComponent.js +0 -4
- package/lib/module/specs/SkiaDomViewNativeComponent.js.map +0 -1
- package/lib/module/views/SkiaDomView.d.ts +0 -33
- package/lib/module/views/SkiaDomView.js +0 -111
- package/lib/module/views/SkiaDomView.js.map +0 -1
- package/lib/module/views/SkiaDomView.web.d.ts +0 -0
- package/lib/module/views/SkiaDomView.web.js +0 -2
- package/lib/module/views/SkiaDomView.web.js.map +0 -1
- package/lib/typescript/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +0 -60
- package/lib/typescript/lib/commonjs/renderer/CanvasOld.d.ts +0 -3
- package/lib/typescript/lib/commonjs/renderer/Container.d.ts +0 -9
- package/lib/typescript/lib/commonjs/renderer/HostComponents.d.ts +0 -2
- package/lib/typescript/lib/commonjs/renderer/HostConfig.d.ts +0 -40
- package/lib/typescript/lib/commonjs/renderer/Reconciler.d.ts +0 -10
- package/lib/typescript/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -3
- package/lib/typescript/lib/commonjs/views/SkiaDomView.d.ts +0 -30
- package/lib/typescript/lib/commonjs/views/SkiaDomView.web.d.ts +0 -0
- package/lib/typescript/lib/module/dom/nodes/JsiSkDOM.d.ts +0 -59
- package/lib/typescript/lib/module/renderer/CanvasOld.d.ts +0 -3
- package/lib/typescript/lib/module/renderer/Container.d.ts +0 -9
- package/lib/typescript/lib/module/renderer/HostComponents.d.ts +0 -1
- package/lib/typescript/lib/module/renderer/HostConfig.d.ts +0 -39
- package/lib/typescript/lib/module/renderer/Reconciler.d.ts +0 -9
- package/lib/typescript/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -2
- package/lib/typescript/lib/module/views/SkiaDomView.d.ts +0 -27
- package/lib/typescript/lib/module/views/SkiaDomView.web.d.ts +0 -0
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +0 -64
- package/lib/typescript/src/renderer/CanvasOld.d.ts +0 -11
- package/lib/typescript/src/renderer/Container.d.ts +0 -10
- package/lib/typescript/src/renderer/HostComponents.d.ts +0 -129
- package/lib/typescript/src/renderer/HostConfig.d.ts +0 -18
- package/lib/typescript/src/renderer/Reconciler.d.ts +0 -9
- package/lib/typescript/src/specs/SkiaDomViewNativeComponent.d.ts +0 -6
- package/lib/typescript/src/views/SkiaDomView.d.ts +0 -33
- package/lib/typescript/src/views/SkiaDomView.web.d.ts +0 -0
- package/src/dom/nodes/JsiSkDOM.ts +0 -298
- package/src/renderer/CanvasOld.tsx +0 -126
- package/src/renderer/Container.tsx +0 -19
- package/src/renderer/HostComponents.ts +0 -399
- package/src/renderer/HostConfig.ts +0 -258
- package/src/renderer/Reconciler.tsx +0 -54
- package/src/specs/SkiaDomViewNativeComponent.ts +0 -9
- package/src/views/SkiaDomView.tsx +0 -124
- package/src/views/SkiaDomView.web.tsx +0 -0
- /package/cpp/api/recorder/{Image.h → ImageFit.h} +0 -0
@@ -1,196 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include "DerivedNodeProp.h"
|
4
|
-
|
5
|
-
#include "JsiSkImage.h"
|
6
|
-
|
7
|
-
#include <algorithm>
|
8
|
-
#include <memory>
|
9
|
-
#include <string>
|
10
|
-
|
11
|
-
namespace RNSkia {
|
12
|
-
|
13
|
-
struct FitSizes {
|
14
|
-
SkSize src;
|
15
|
-
SkSize dst;
|
16
|
-
};
|
17
|
-
|
18
|
-
struct FitRects {
|
19
|
-
SkRect src;
|
20
|
-
SkRect dst;
|
21
|
-
};
|
22
|
-
|
23
|
-
static PropId PropNameImage = JsiPropId::get("image");
|
24
|
-
static PropId PropNameFit = JsiPropId::get("fit");
|
25
|
-
|
26
|
-
class ImageProp : public DerivedSkProp<SkImage> {
|
27
|
-
public:
|
28
|
-
explicit ImageProp(PropId name,
|
29
|
-
const std::function<void(BaseNodeProp *)> &onChange)
|
30
|
-
: DerivedSkProp<SkImage>(onChange) {
|
31
|
-
_imageProp = defineProperty<NodeProp>(name);
|
32
|
-
}
|
33
|
-
|
34
|
-
void updateDerivedValue() override {
|
35
|
-
if (_imageProp->isSet()) {
|
36
|
-
// Check for host object
|
37
|
-
if (_imageProp->value().getType() == PropType::HostObject) {
|
38
|
-
// This should be an SkImage wrapper:
|
39
|
-
auto ptr = std::dynamic_pointer_cast<JsiSkImage>(
|
40
|
-
_imageProp->value().getAsHostObject());
|
41
|
-
if (ptr == nullptr) {
|
42
|
-
// If not - throw an exception
|
43
|
-
throw std::runtime_error("Expected SkImage object for the " +
|
44
|
-
std::string(getName()) +
|
45
|
-
" property. Got a " +
|
46
|
-
_imageProp->value().getTypeAsString(
|
47
|
-
_imageProp->value().getType()) +
|
48
|
-
".");
|
49
|
-
}
|
50
|
-
setDerivedValue(ptr->getObject());
|
51
|
-
} else {
|
52
|
-
// Should be a host object if set
|
53
|
-
throw std::runtime_error(
|
54
|
-
"Expected SkImage object or null/undefined for the " +
|
55
|
-
std::string(getName()) + " property.");
|
56
|
-
}
|
57
|
-
} else {
|
58
|
-
// Set to null
|
59
|
-
setDerivedValue(nullptr);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
|
63
|
-
private:
|
64
|
-
NodeProp *_imageProp;
|
65
|
-
};
|
66
|
-
|
67
|
-
class ImageProps : public DerivedProp<FitRects> {
|
68
|
-
public:
|
69
|
-
explicit ImageProps(const std::function<void(BaseNodeProp *)> &onChange)
|
70
|
-
: DerivedProp<FitRects>(onChange) {
|
71
|
-
_fitProp = defineProperty<NodeProp>(PropNameFit);
|
72
|
-
_imageProp = defineProperty<ImageProp>(PropNameImage);
|
73
|
-
_rectProp = defineProperty<RectProps>(PropNameRect);
|
74
|
-
}
|
75
|
-
|
76
|
-
void updateDerivedValue() override {
|
77
|
-
auto image = _imageProp->getDerivedValue();
|
78
|
-
if (image == nullptr) {
|
79
|
-
setDerivedValue(nullptr);
|
80
|
-
return;
|
81
|
-
}
|
82
|
-
|
83
|
-
auto imageRect = SkRect::MakeXYWH(0, 0, image->width(), image->height());
|
84
|
-
|
85
|
-
auto rect = _rectProp->getDerivedValue() ? *_rectProp->getDerivedValue()
|
86
|
-
: imageRect;
|
87
|
-
auto fit = _fitProp->isSet() ? _fitProp->value().getAsString() : "contain";
|
88
|
-
|
89
|
-
setDerivedValue(fitRects(fit, imageRect, rect));
|
90
|
-
}
|
91
|
-
|
92
|
-
sk_sp<SkImage> getImage() { return _imageProp->getDerivedValue(); }
|
93
|
-
|
94
|
-
std::shared_ptr<const SkRect> getRect() {
|
95
|
-
return _rectProp->getDerivedValue();
|
96
|
-
}
|
97
|
-
|
98
|
-
SkMatrix rect2rect(SkRect src, SkRect dst) {
|
99
|
-
auto sx = dst.width() / src.width();
|
100
|
-
auto sy = dst.height() / src.height();
|
101
|
-
auto tx = dst.x() - src.x() * sx;
|
102
|
-
auto ty = dst.y() - src.y() * sy;
|
103
|
-
SkMatrix m3;
|
104
|
-
m3.preTranslate(tx, ty);
|
105
|
-
m3.preScale(sx, sy);
|
106
|
-
return m3;
|
107
|
-
}
|
108
|
-
|
109
|
-
private:
|
110
|
-
SkSize size(double width, double height) {
|
111
|
-
return SkSize::Make(width, height);
|
112
|
-
}
|
113
|
-
|
114
|
-
FitRects fitRects(const std::string &fit, SkRect rect, SkRect rect2) {
|
115
|
-
auto sizes = applyBoxFit(fit, size(rect.width(), rect.height()),
|
116
|
-
size(rect2.width(), rect2.height()));
|
117
|
-
|
118
|
-
auto src = inscribe(sizes.src, rect);
|
119
|
-
auto dst = inscribe(sizes.dst, rect2);
|
120
|
-
|
121
|
-
return {.src = src, .dst = dst};
|
122
|
-
}
|
123
|
-
|
124
|
-
SkRect inscribe(SkSize size, SkRect rect) {
|
125
|
-
auto halfWidthDelta = (rect.width() - size.width()) / 2.0;
|
126
|
-
auto halfHeightDelta = (rect.height() - size.height()) / 2.0;
|
127
|
-
return SkRect::MakeXYWH(rect.x() + halfWidthDelta,
|
128
|
-
rect.y() + halfHeightDelta, size.width(),
|
129
|
-
size.height());
|
130
|
-
}
|
131
|
-
|
132
|
-
FitSizes applyBoxFit(const std::string fit, SkSize input, SkSize output) {
|
133
|
-
SkSize src = size(0, 0);
|
134
|
-
SkSize dst = size(0, 0);
|
135
|
-
|
136
|
-
if (input.height() <= 0.0 || input.width() <= 0.0 ||
|
137
|
-
output.height() <= 0.0 || output.width() <= 0.0) {
|
138
|
-
return {.src = src, .dst = dst};
|
139
|
-
}
|
140
|
-
|
141
|
-
if (fit == "fill") {
|
142
|
-
src = input;
|
143
|
-
dst = output;
|
144
|
-
} else if (fit == "contain") {
|
145
|
-
src = input;
|
146
|
-
if (output.width() / output.height() > src.width() / src.height()) {
|
147
|
-
dst = size((src.width() * output.height()) / src.height(),
|
148
|
-
output.height());
|
149
|
-
} else {
|
150
|
-
dst =
|
151
|
-
size(output.width(), (src.height() * output.width()) / src.width());
|
152
|
-
}
|
153
|
-
} else if (fit == "cover") {
|
154
|
-
if (output.width() / output.height() > input.width() / input.height()) {
|
155
|
-
src = size(input.width(),
|
156
|
-
(input.width() * output.height()) / output.width());
|
157
|
-
} else {
|
158
|
-
src = size((input.height() * output.width()) / output.height(),
|
159
|
-
input.height());
|
160
|
-
}
|
161
|
-
dst = output;
|
162
|
-
} else if (fit == "fitWidth") {
|
163
|
-
src = size(input.width(),
|
164
|
-
(input.width() * output.height()) / output.width());
|
165
|
-
dst = size(output.width(), (src.height() * output.width()) / src.width());
|
166
|
-
} else if (fit == "fitHeight") {
|
167
|
-
src = size((input.height() * output.width()) / output.height(),
|
168
|
-
input.height());
|
169
|
-
dst =
|
170
|
-
size((src.width() * output.height()) / src.height(), output.height());
|
171
|
-
} else if (fit == "none") {
|
172
|
-
src = size(std::min(input.width(), output.width()),
|
173
|
-
std::min(input.height(), output.height()));
|
174
|
-
dst = src;
|
175
|
-
} else if (fit == "scaleDown") {
|
176
|
-
src = input;
|
177
|
-
dst = input;
|
178
|
-
auto aspectRatio = input.width() / input.height();
|
179
|
-
if (dst.height() > output.height()) {
|
180
|
-
dst = size(output.height() * aspectRatio, output.height());
|
181
|
-
}
|
182
|
-
if (dst.width() > output.width()) {
|
183
|
-
dst = size(output.width(), output.width() / aspectRatio);
|
184
|
-
}
|
185
|
-
} else {
|
186
|
-
throw std::runtime_error("The value \"" + fit +
|
187
|
-
"\" is not a valid fit value.");
|
188
|
-
}
|
189
|
-
return {.src = src, .dst = dst};
|
190
|
-
}
|
191
|
-
|
192
|
-
NodeProp *_fitProp;
|
193
|
-
ImageProp *_imageProp;
|
194
|
-
RectProps *_rectProp;
|
195
|
-
};
|
196
|
-
} // namespace RNSkia
|
@@ -1,79 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include "DerivedNodeProp.h"
|
4
|
-
|
5
|
-
#include <memory>
|
6
|
-
#include <string>
|
7
|
-
|
8
|
-
#pragma clang diagnostic push
|
9
|
-
#pragma clang diagnostic ignored "-Wdocumentation"
|
10
|
-
|
11
|
-
#include "include/core/SkPaint.h"
|
12
|
-
|
13
|
-
#pragma clang diagnostic pop
|
14
|
-
|
15
|
-
namespace RNSkia {
|
16
|
-
|
17
|
-
class StrokeCapProp : public DerivedProp<SkPaint::Cap> {
|
18
|
-
public:
|
19
|
-
explicit StrokeCapProp(PropId name,
|
20
|
-
const std::function<void(BaseNodeProp *)> &onChange)
|
21
|
-
: DerivedProp<SkPaint::Cap>(onChange) {
|
22
|
-
_strokeCap = defineProperty<NodeProp>(name);
|
23
|
-
}
|
24
|
-
|
25
|
-
void updateDerivedValue() override {
|
26
|
-
if (_strokeCap->isSet() && (_strokeCap->isChanged())) {
|
27
|
-
auto capValue = _strokeCap->value().getAsString();
|
28
|
-
setDerivedValue(getCapFromString(capValue));
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
|
-
static SkPaint::Cap getCapFromString(const std::string &value) {
|
33
|
-
if (value == "round") {
|
34
|
-
return SkPaint::Cap::kRound_Cap;
|
35
|
-
} else if (value == "butt") {
|
36
|
-
return SkPaint::Cap::kButt_Cap;
|
37
|
-
} else if (value == "square") {
|
38
|
-
return SkPaint::Cap::kSquare_Cap;
|
39
|
-
}
|
40
|
-
throw std::runtime_error("Property value \"" + value +
|
41
|
-
"\" is not a legal stroke cap.");
|
42
|
-
}
|
43
|
-
|
44
|
-
private:
|
45
|
-
NodeProp *_strokeCap;
|
46
|
-
};
|
47
|
-
|
48
|
-
class StrokeJoinProp : public DerivedProp<SkPaint::Join> {
|
49
|
-
public:
|
50
|
-
explicit StrokeJoinProp(PropId name,
|
51
|
-
const std::function<void(BaseNodeProp *)> &onChange)
|
52
|
-
: DerivedProp<SkPaint::Join>(onChange) {
|
53
|
-
_strokeJoin = defineProperty<NodeProp>(name);
|
54
|
-
}
|
55
|
-
|
56
|
-
void updateDerivedValue() override {
|
57
|
-
if (_strokeJoin->isSet() && (_strokeJoin->isChanged())) {
|
58
|
-
auto joinValue = _strokeJoin->value().getAsString();
|
59
|
-
setDerivedValue(getJoinFromString(joinValue));
|
60
|
-
}
|
61
|
-
}
|
62
|
-
|
63
|
-
static SkPaint::Join getJoinFromString(const std::string &value) {
|
64
|
-
if (value == "miter") {
|
65
|
-
return SkPaint::Join::kMiter_Join;
|
66
|
-
} else if (value == "round") {
|
67
|
-
return SkPaint::Join::kRound_Join;
|
68
|
-
} else if (value == "bevel") {
|
69
|
-
return SkPaint::Join::kBevel_Join;
|
70
|
-
}
|
71
|
-
throw std::runtime_error("Property value \"" + value +
|
72
|
-
"\" is not a legal stroke join.");
|
73
|
-
}
|
74
|
-
|
75
|
-
private:
|
76
|
-
NodeProp *_strokeJoin;
|
77
|
-
};
|
78
|
-
|
79
|
-
} // namespace RNSkia
|
@@ -1,45 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include "DerivedNodeProp.h"
|
4
|
-
|
5
|
-
#include "JsiSkSVG.h"
|
6
|
-
|
7
|
-
#include <memory>
|
8
|
-
|
9
|
-
namespace RNSkia {
|
10
|
-
|
11
|
-
class SvgProp : public DerivedSkProp<SkSVGDOM> {
|
12
|
-
public:
|
13
|
-
explicit SvgProp(PropId name,
|
14
|
-
const std::function<void(BaseNodeProp *)> &onChange)
|
15
|
-
: DerivedSkProp<SkSVGDOM>(onChange) {
|
16
|
-
_imageSvgProp = defineProperty<NodeProp>(name);
|
17
|
-
}
|
18
|
-
|
19
|
-
void updateDerivedValue() override {
|
20
|
-
if (_imageSvgProp->isSet()) {
|
21
|
-
|
22
|
-
if (_imageSvgProp->value().getType() == PropType::HostObject) {
|
23
|
-
|
24
|
-
auto ptr = std::dynamic_pointer_cast<JsiSkSVG>(
|
25
|
-
_imageSvgProp->value().getAsHostObject());
|
26
|
-
if (ptr == nullptr) {
|
27
|
-
throw std::runtime_error(
|
28
|
-
"Expected SkSvgDom object for the svg property.");
|
29
|
-
}
|
30
|
-
setDerivedValue(ptr->getObject());
|
31
|
-
} else {
|
32
|
-
throw std::runtime_error(
|
33
|
-
"Expected SkSvgDom object or null/undefined for the svg property.");
|
34
|
-
}
|
35
|
-
|
36
|
-
} else {
|
37
|
-
setDerivedValue(nullptr);
|
38
|
-
}
|
39
|
-
}
|
40
|
-
|
41
|
-
private:
|
42
|
-
NodeProp *_imageSvgProp;
|
43
|
-
};
|
44
|
-
|
45
|
-
} // namespace RNSkia
|
@@ -1,133 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include "DerivedNodeProp.h"
|
4
|
-
|
5
|
-
#include "JsiSkTextBlob.h"
|
6
|
-
|
7
|
-
#include <memory>
|
8
|
-
#include <string>
|
9
|
-
#include <vector>
|
10
|
-
|
11
|
-
namespace RNSkia {
|
12
|
-
|
13
|
-
class TextBlobProp : public DerivedSkProp<SkTextBlob> {
|
14
|
-
public:
|
15
|
-
explicit TextBlobProp(PropId name,
|
16
|
-
const std::function<void(BaseNodeProp *)> &onChange)
|
17
|
-
: DerivedSkProp<SkTextBlob>(onChange) {
|
18
|
-
_textBlobProp = defineProperty<NodeProp>(name);
|
19
|
-
}
|
20
|
-
|
21
|
-
void updateDerivedValue() override {
|
22
|
-
if (_textBlobProp->value().getType() != PropType::HostObject) {
|
23
|
-
throw std::runtime_error("Expected SkTextBlob object for the " +
|
24
|
-
std::string(getName()) + " property.");
|
25
|
-
}
|
26
|
-
|
27
|
-
auto ptr = _textBlobProp->value().getAs<JsiSkTextBlob>();
|
28
|
-
if (ptr == nullptr) {
|
29
|
-
throw std::runtime_error("Expected SkTextBlob object for the " +
|
30
|
-
std::string(getName()) + " property.");
|
31
|
-
}
|
32
|
-
|
33
|
-
setDerivedValue(ptr->getObject());
|
34
|
-
}
|
35
|
-
|
36
|
-
private:
|
37
|
-
NodeProp *_textBlobProp;
|
38
|
-
};
|
39
|
-
|
40
|
-
class TextPathBlobProp : public DerivedSkProp<SkTextBlob> {
|
41
|
-
public:
|
42
|
-
explicit TextPathBlobProp(const std::function<void(BaseNodeProp *)> &onChange)
|
43
|
-
: DerivedSkProp<SkTextBlob>(onChange) {
|
44
|
-
_fontProp = defineProperty<FontProp>("font");
|
45
|
-
_textProp = defineProperty<NodeProp>("text");
|
46
|
-
_pathProp = defineProperty<PathProp>("path");
|
47
|
-
_offsetProp = defineProperty<NodeProp>("initialOffset");
|
48
|
-
|
49
|
-
_textProp->require();
|
50
|
-
_pathProp->require();
|
51
|
-
_offsetProp->require();
|
52
|
-
}
|
53
|
-
|
54
|
-
void updateDerivedValue() override {
|
55
|
-
auto font = _fontProp->getDerivedValue();
|
56
|
-
auto text = _textProp->value().getAsString();
|
57
|
-
auto path = _pathProp->getDerivedValue();
|
58
|
-
auto offset = _offsetProp->value().getAsNumber();
|
59
|
-
|
60
|
-
if (font != nullptr) {
|
61
|
-
// Get glyphs
|
62
|
-
auto numGlyphIds =
|
63
|
-
font->countText(text.c_str(), text.length(), SkTextEncoding::kUTF8);
|
64
|
-
|
65
|
-
std::vector<SkGlyphID> glyphIds;
|
66
|
-
glyphIds.reserve(numGlyphIds);
|
67
|
-
auto ids = font->textToGlyphs(
|
68
|
-
text.c_str(), text.length(), SkTextEncoding::kUTF8,
|
69
|
-
static_cast<SkGlyphID *>(glyphIds.data()), numGlyphIds);
|
70
|
-
|
71
|
-
// Get glyph widths
|
72
|
-
int glyphsSize = static_cast<int>(ids);
|
73
|
-
std::vector<SkScalar> widthPtrs;
|
74
|
-
widthPtrs.resize(glyphsSize);
|
75
|
-
font->getWidthsBounds(glyphIds.data(), numGlyphIds,
|
76
|
-
static_cast<SkScalar *>(widthPtrs.data()), nullptr,
|
77
|
-
nullptr); // TODO: Should we use paint somehow here?
|
78
|
-
|
79
|
-
std::vector<SkRSXform> rsx;
|
80
|
-
SkContourMeasureIter meas(*path, false, 1);
|
81
|
-
|
82
|
-
auto cont = meas.next();
|
83
|
-
auto dist = offset;
|
84
|
-
|
85
|
-
for (size_t i = 0; i < text.length() && cont != nullptr; ++i) {
|
86
|
-
auto width = widthPtrs[i];
|
87
|
-
dist += width / 2;
|
88
|
-
if (dist > cont->length()) {
|
89
|
-
// jump to next contour
|
90
|
-
cont = meas.next();
|
91
|
-
if (cont == nullptr) {
|
92
|
-
// We have come to the end of the path - terminate the string
|
93
|
-
// right here.
|
94
|
-
text = text.substr(0, i);
|
95
|
-
break;
|
96
|
-
}
|
97
|
-
dist = width / 2;
|
98
|
-
}
|
99
|
-
// Gives us the (x, y) coordinates as well as the cos/sin of the tangent
|
100
|
-
// line at that position.
|
101
|
-
SkPoint pos;
|
102
|
-
SkVector tan;
|
103
|
-
if (!cont->getPosTan(dist, &pos, &tan)) {
|
104
|
-
throw std::runtime_error(
|
105
|
-
"Could not calculate distance when resolving text path");
|
106
|
-
}
|
107
|
-
auto px = pos.x();
|
108
|
-
auto py = pos.y();
|
109
|
-
auto tx = tan.x();
|
110
|
-
auto ty = tan.y();
|
111
|
-
|
112
|
-
auto adjustedX = px - (width / 2) * tx;
|
113
|
-
auto adjustedY = py - (width / 2) * ty;
|
114
|
-
|
115
|
-
rsx.push_back(SkRSXform::Make(tx, ty, adjustedX, adjustedY));
|
116
|
-
dist += width / 2;
|
117
|
-
}
|
118
|
-
|
119
|
-
setDerivedValue(SkTextBlob::MakeFromRSXform(text.c_str(), text.length(),
|
120
|
-
rsx.data(), *font));
|
121
|
-
} else {
|
122
|
-
setDerivedValue(nullptr);
|
123
|
-
}
|
124
|
-
}
|
125
|
-
|
126
|
-
private:
|
127
|
-
FontProp *_fontProp;
|
128
|
-
NodeProp *_textProp;
|
129
|
-
PathProp *_pathProp;
|
130
|
-
NodeProp *_offsetProp;
|
131
|
-
};
|
132
|
-
|
133
|
-
} // namespace RNSkia
|
@@ -1,52 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include "DerivedNodeProp.h"
|
4
|
-
|
5
|
-
#pragma clang diagnostic push
|
6
|
-
#pragma clang diagnostic ignored "-Wdocumentation"
|
7
|
-
|
8
|
-
#include "include/core/SkTileMode.h"
|
9
|
-
|
10
|
-
#include <memory>
|
11
|
-
#include <string>
|
12
|
-
|
13
|
-
#pragma clang diagnostic pop
|
14
|
-
|
15
|
-
namespace RNSkia {
|
16
|
-
|
17
|
-
class TileModeProp : public DerivedProp<SkTileMode> {
|
18
|
-
public:
|
19
|
-
explicit TileModeProp(PropId name,
|
20
|
-
const std::function<void(BaseNodeProp *)> &onChange)
|
21
|
-
: DerivedProp<SkTileMode>(onChange) {
|
22
|
-
_tileModeProp = defineProperty<NodeProp>(name);
|
23
|
-
}
|
24
|
-
|
25
|
-
void updateDerivedValue() override {
|
26
|
-
if (_tileModeProp->isSet()) {
|
27
|
-
setDerivedValue(
|
28
|
-
getTileModeFromStringValue(_tileModeProp->value().getAsString()));
|
29
|
-
} else {
|
30
|
-
setDerivedValue(nullptr);
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
private:
|
35
|
-
SkTileMode getTileModeFromStringValue(const std::string &value) {
|
36
|
-
if (value == "clamp") {
|
37
|
-
return SkTileMode::kClamp;
|
38
|
-
} else if (value == "repeat") {
|
39
|
-
return SkTileMode::kRepeat;
|
40
|
-
} else if (value == "mirror") {
|
41
|
-
return SkTileMode::kMirror;
|
42
|
-
} else if (value == "decal") {
|
43
|
-
return SkTileMode::kDecal;
|
44
|
-
}
|
45
|
-
throw std::runtime_error("Value \"" + value +
|
46
|
-
"\" is not a valid tile mode.");
|
47
|
-
}
|
48
|
-
|
49
|
-
NodeProp *_tileModeProp;
|
50
|
-
};
|
51
|
-
|
52
|
-
} // namespace RNSkia
|
@@ -1,147 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include "DerivedNodeProp.h"
|
4
|
-
#include "JsiSkMatrix.h"
|
5
|
-
|
6
|
-
#include <memory>
|
7
|
-
#include <string>
|
8
|
-
|
9
|
-
namespace RNSkia {
|
10
|
-
|
11
|
-
static PropId PropNameTranslateX = JsiPropId::get("translateX");
|
12
|
-
static PropId PropNameTranslateY = JsiPropId::get("translateY");
|
13
|
-
static PropId PropNameTranslateZ = JsiPropId::get("translateZ");
|
14
|
-
static PropId PropNameTranslate = JsiPropId::get("translate");
|
15
|
-
static PropId PropNameScale = JsiPropId::get("scale");
|
16
|
-
static PropId PropNameScaleX = JsiPropId::get("scaleX");
|
17
|
-
static PropId PropNameScaleY = JsiPropId::get("scaleY");
|
18
|
-
static PropId PropNameSkewX = JsiPropId::get("skewX");
|
19
|
-
static PropId PropNameSkewY = JsiPropId::get("skewY");
|
20
|
-
static PropId PropNameRotate = JsiPropId::get("rotate");
|
21
|
-
static PropId PropNameRotateZ = JsiPropId::get("rotateZ");
|
22
|
-
static PropId PropNameRotateX = JsiPropId::get("rotateX");
|
23
|
-
static PropId PropNameRotateY = JsiPropId::get("rotateY");
|
24
|
-
static PropId PropNamePerspective = JsiPropId::get("perspective");
|
25
|
-
static PropId PropNameMatrix4 = JsiPropId::get("matrix");
|
26
|
-
|
27
|
-
class TransformProp : public DerivedProp<SkMatrix> {
|
28
|
-
public:
|
29
|
-
explicit TransformProp(PropId name,
|
30
|
-
const std::function<void(BaseNodeProp *)> &onChange)
|
31
|
-
: DerivedProp<SkMatrix>(onChange) {
|
32
|
-
_transformProp = defineProperty<NodeProp>(name);
|
33
|
-
}
|
34
|
-
|
35
|
-
void updateDerivedValue() override {
|
36
|
-
if (!_transformProp->isSet()) {
|
37
|
-
setDerivedValue(nullptr);
|
38
|
-
} else if (_transformProp->value().getType() != PropType::Array) {
|
39
|
-
throw std::runtime_error(
|
40
|
-
"Expected array for transform property, got " +
|
41
|
-
JsiValue::getTypeAsString(_transformProp->value().getType()));
|
42
|
-
} else {
|
43
|
-
SkM44 m4;
|
44
|
-
auto m = std::make_shared<SkMatrix>(SkMatrix());
|
45
|
-
for (auto &el : _transformProp->value().getAsArray()) {
|
46
|
-
auto keys = el.getKeys();
|
47
|
-
if (keys.size() == 0) {
|
48
|
-
throw std::runtime_error(
|
49
|
-
"Empty value in transform. Expected translateX, translateY, "
|
50
|
-
"scale, "
|
51
|
-
"scaleX, scaleY, skewX, skewY, rotate or rotateZ.");
|
52
|
-
}
|
53
|
-
auto key = el.getKeys().at(0);
|
54
|
-
if (key == PropNameTranslateX) {
|
55
|
-
auto x = el.getValue(key).getAsNumber();
|
56
|
-
SkM44 trX(1, 0, 0, x, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
|
57
|
-
m4.preConcat(trX);
|
58
|
-
} else if (key == PropNameTranslateY) {
|
59
|
-
auto y = el.getValue(key).getAsNumber();
|
60
|
-
SkM44 trY(1, 0, 0, 0, 0, 1, 0, y, 0, 0, 1, 0, 0, 0, 0, 1);
|
61
|
-
m4.preConcat(trY);
|
62
|
-
} else if (key == PropNameTranslateZ) {
|
63
|
-
auto z = el.getValue(key).getAsNumber();
|
64
|
-
SkM44 trZ(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, z, 0, 0, 0, 1);
|
65
|
-
m4.preConcat(trZ);
|
66
|
-
} else if (key == PropNameTranslate) {
|
67
|
-
auto arr = el.getValue(key).getAsArray();
|
68
|
-
double x = 0, y = 0, z = 0;
|
69
|
-
for (size_t i = 0; i < arr.size(); ++i) {
|
70
|
-
if (i == 0) {
|
71
|
-
x = arr[i].getAsNumber();
|
72
|
-
} else if (i == 1) {
|
73
|
-
y = arr[i].getAsNumber();
|
74
|
-
} else if (i == 2) {
|
75
|
-
z = arr[i].getAsNumber();
|
76
|
-
}
|
77
|
-
}
|
78
|
-
SkM44 tr(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);
|
79
|
-
m4.preConcat(tr);
|
80
|
-
} else if (key == PropNameScale) {
|
81
|
-
auto s = el.getValue(key).getAsNumber();
|
82
|
-
SkM44 scale(s, 0, 0, 0, 0, s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
|
83
|
-
m4.preConcat(scale);
|
84
|
-
} else if (key == PropNameScaleX) {
|
85
|
-
auto s = el.getValue(key).getAsNumber();
|
86
|
-
SkM44 scale(s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
|
87
|
-
m4.preConcat(scale);
|
88
|
-
} else if (key == PropNameScaleY) {
|
89
|
-
auto s = el.getValue(key).getAsNumber();
|
90
|
-
SkM44 scale(1, 0, 0, 0, 0, s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
|
91
|
-
m4.preConcat(scale);
|
92
|
-
} else if (key == PropNameSkewX) {
|
93
|
-
auto angle = el.getValue(key).getAsNumber();
|
94
|
-
SkM44 skewX(1, 0, 0, 0, std::tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
|
95
|
-
1);
|
96
|
-
m4.preConcat(skewX);
|
97
|
-
} else if (key == PropNameSkewY) {
|
98
|
-
auto angle = el.getValue(key).getAsNumber();
|
99
|
-
SkM44 skewY(1, std::tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
|
100
|
-
1);
|
101
|
-
m4.preConcat(skewY);
|
102
|
-
} else if (key == PropNameRotate || key == PropNameRotateZ) {
|
103
|
-
auto angle = el.getValue(key).getAsNumber();
|
104
|
-
SkM44 rotate;
|
105
|
-
rotate.setRotateUnit({0, 0, 1}, angle);
|
106
|
-
m4.preConcat(rotate);
|
107
|
-
} else if (key == PropNameRotateY) {
|
108
|
-
auto angle = el.getValue(key).getAsNumber();
|
109
|
-
SkM44 rotate;
|
110
|
-
rotate.setRotateUnit({0, 1, 0}, angle);
|
111
|
-
m4.preConcat(rotate);
|
112
|
-
} else if (key == PropNameRotateX) {
|
113
|
-
auto angle = el.getValue(key).getAsNumber();
|
114
|
-
SkM44 rotate;
|
115
|
-
rotate.setRotateUnit({1, 0, 0}, angle);
|
116
|
-
m4.preConcat(rotate);
|
117
|
-
} else if (key == PropNamePerspective) {
|
118
|
-
auto p = el.getValue(key).getAsNumber();
|
119
|
-
SkM44 perspective(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p,
|
120
|
-
1);
|
121
|
-
m4.preConcat(perspective);
|
122
|
-
} else if (key == PropNameMatrix4) {
|
123
|
-
auto arr = el.getValue(key).getAsArray();
|
124
|
-
SkM44 m44;
|
125
|
-
for (size_t i = 0; i < arr.size(); ++i) {
|
126
|
-
auto obj = arr[i];
|
127
|
-
m44.setRC(i / 4, i % 4, obj.getAsNumber());
|
128
|
-
}
|
129
|
-
m4.preConcat(m44);
|
130
|
-
} else {
|
131
|
-
throw std::runtime_error(
|
132
|
-
"Unknown key in transform. Expected translateX, translateY, "
|
133
|
-
"scale, "
|
134
|
-
"scaleX, scaleY, skewX, skewY, rotate or rotateZ - got " +
|
135
|
-
std::string(key) + ".");
|
136
|
-
}
|
137
|
-
}
|
138
|
-
m->preConcat(m4.asM33());
|
139
|
-
setDerivedValue(m);
|
140
|
-
}
|
141
|
-
}
|
142
|
-
|
143
|
-
private:
|
144
|
-
NodeProp *_transformProp;
|
145
|
-
};
|
146
|
-
|
147
|
-
} // namespace RNSkia
|