@shopify/react-native-skia 1.11.1 → 1.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/CMakeLists.txt +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/jsi/ViewProperty.h +5 -16
- package/cpp/rnskia/RNSkManager.cpp +1 -7
- 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
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
#include <vector>
|
|
5
|
-
|
|
6
|
-
#pragma clang diagnostic push
|
|
7
|
-
#pragma clang diagnostic ignored "-Wdocumentation"
|
|
8
|
-
|
|
9
|
-
#include "include/core/SkColorFilter.h"
|
|
10
|
-
#include "include/core/SkImageFilter.h"
|
|
11
|
-
#include "include/core/SkMaskFilter.h"
|
|
12
|
-
#include "include/core/SkPaint.h"
|
|
13
|
-
#include "include/core/SkPathEffect.h"
|
|
14
|
-
#include "include/core/SkShader.h"
|
|
15
|
-
|
|
16
|
-
#pragma clang diagnostic pop
|
|
17
|
-
|
|
18
|
-
namespace RNSkia {
|
|
19
|
-
|
|
20
|
-
class JsiDomNode;
|
|
21
|
-
class PaintProps;
|
|
22
|
-
class DeclarationContext;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
Class for concatenating SkPaint objects.
|
|
26
|
-
*/
|
|
27
|
-
class ConcatablePaint {
|
|
28
|
-
public:
|
|
29
|
-
ConcatablePaint(DeclarationContext *context, PaintProps *paintProps,
|
|
30
|
-
const std::vector<std::shared_ptr<JsiDomNode>> &children);
|
|
31
|
-
|
|
32
|
-
void concatTo(std::shared_ptr<SkPaint> paint);
|
|
33
|
-
bool isEmpty();
|
|
34
|
-
|
|
35
|
-
private:
|
|
36
|
-
DeclarationContext *_declarationContext;
|
|
37
|
-
const std::vector<std::shared_ptr<JsiDomNode>> _children;
|
|
38
|
-
PaintProps *_paintProps;
|
|
39
|
-
|
|
40
|
-
bool _isEmpty{true};
|
|
41
|
-
|
|
42
|
-
sk_sp<SkImageFilter> _imageFilter;
|
|
43
|
-
sk_sp<SkColorFilter> _colorFilter;
|
|
44
|
-
sk_sp<SkPathEffect> _pathEffect;
|
|
45
|
-
sk_sp<SkMaskFilter> _maskFilter;
|
|
46
|
-
sk_sp<SkShader> _shader;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
} // namespace RNSkia
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <algorithm>
|
|
4
|
-
#include <numeric>
|
|
5
|
-
#include <stack>
|
|
6
|
-
#include <utility>
|
|
7
|
-
#include <vector>
|
|
8
|
-
|
|
9
|
-
#pragma clang diagnostic push
|
|
10
|
-
#pragma clang diagnostic ignored "-Wdocumentation"
|
|
11
|
-
|
|
12
|
-
#include "include/core/SkRefCnt.h"
|
|
13
|
-
|
|
14
|
-
#pragma clang diagnostic pop
|
|
15
|
-
|
|
16
|
-
namespace RNSkia {
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
Small container for shaders, filters, masks and effects
|
|
20
|
-
*/
|
|
21
|
-
template <typename T> class Declaration {
|
|
22
|
-
public:
|
|
23
|
-
// Pushes to the stack
|
|
24
|
-
void push(T el) { _elements.push(el); }
|
|
25
|
-
|
|
26
|
-
// Clears and returns all elements
|
|
27
|
-
std::vector<T> popAll() {
|
|
28
|
-
auto size = _elements.size();
|
|
29
|
-
std::vector<T> tmp;
|
|
30
|
-
tmp.reserve(size);
|
|
31
|
-
for (size_t i = 0; i < size; ++i) {
|
|
32
|
-
tmp.push_back(_elements.top());
|
|
33
|
-
_elements.pop();
|
|
34
|
-
}
|
|
35
|
-
std::reverse(std::begin(tmp), std::end(tmp));
|
|
36
|
-
return tmp;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
T pop() {
|
|
40
|
-
if (_elements.size() == 0) {
|
|
41
|
-
return nullptr;
|
|
42
|
-
}
|
|
43
|
-
auto tmp = _elements.top();
|
|
44
|
-
_elements.pop();
|
|
45
|
-
return tmp;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Clears and returns through reducer function in reversed order
|
|
49
|
-
T popAsOne(std::function<T(T inner, T outer)> composer) {
|
|
50
|
-
auto tmp = popAll();
|
|
51
|
-
std::reverse(std::begin(tmp), std::end(tmp));
|
|
52
|
-
return std::accumulate(std::begin(tmp), std::end(tmp),
|
|
53
|
-
static_cast<T>(nullptr), [=](T inner, T outer) {
|
|
54
|
-
if (inner == nullptr) {
|
|
55
|
-
return outer;
|
|
56
|
-
}
|
|
57
|
-
return composer(inner, outer);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Returns the size of the elements
|
|
62
|
-
size_t size() { return _elements.size(); }
|
|
63
|
-
|
|
64
|
-
private:
|
|
65
|
-
std::stack<T> _elements;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
Small container for shaders, filters, masks and effects
|
|
70
|
-
*/
|
|
71
|
-
template <typename T> class ComposableDeclaration : public Declaration<T> {
|
|
72
|
-
public:
|
|
73
|
-
/**
|
|
74
|
-
Constructor
|
|
75
|
-
*/
|
|
76
|
-
explicit ComposableDeclaration(std::function<T(T inner, T outer)> composer)
|
|
77
|
-
: Declaration<T>(), _composer(composer) {}
|
|
78
|
-
|
|
79
|
-
// Clears and returns through reducer function in reversed order
|
|
80
|
-
T popAsOne() { return Declaration<T>::popAsOne(_composer); }
|
|
81
|
-
|
|
82
|
-
private:
|
|
83
|
-
std::function<T(T inner, T outer)> _composer;
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
} // namespace RNSkia
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "Declaration.h"
|
|
4
|
-
|
|
5
|
-
#include <memory>
|
|
6
|
-
#include <stack>
|
|
7
|
-
#include <vector>
|
|
8
|
-
|
|
9
|
-
#pragma clang diagnostic push
|
|
10
|
-
#pragma clang diagnostic ignored "-Wdocumentation"
|
|
11
|
-
|
|
12
|
-
#include "include/core/SkColorFilter.h"
|
|
13
|
-
#include "include/core/SkImageFilter.h"
|
|
14
|
-
#include "include/core/SkMaskFilter.h"
|
|
15
|
-
#include "include/core/SkPaint.h"
|
|
16
|
-
#include "include/core/SkPathEffect.h"
|
|
17
|
-
#include "include/core/SkShader.h"
|
|
18
|
-
#include "include/effects/SkImageFilters.h"
|
|
19
|
-
|
|
20
|
-
#pragma clang diagnostic pop
|
|
21
|
-
|
|
22
|
-
namespace RNSkia {
|
|
23
|
-
|
|
24
|
-
class DeclarationContext {
|
|
25
|
-
public:
|
|
26
|
-
DeclarationContext() { save(); }
|
|
27
|
-
|
|
28
|
-
Declaration<sk_sp<SkShader>> *getShaders() { return &_shaders.top(); }
|
|
29
|
-
ComposableDeclaration<sk_sp<SkImageFilter>> *getImageFilters() {
|
|
30
|
-
return &_imageFilters.top();
|
|
31
|
-
}
|
|
32
|
-
ComposableDeclaration<sk_sp<SkColorFilter>> *getColorFilters() {
|
|
33
|
-
return &_colorFilters.top();
|
|
34
|
-
}
|
|
35
|
-
ComposableDeclaration<sk_sp<SkPathEffect>> *getPathEffects() {
|
|
36
|
-
return &_pathEffects.top();
|
|
37
|
-
}
|
|
38
|
-
Declaration<sk_sp<SkMaskFilter>> *getMaskFilters() {
|
|
39
|
-
return &_maskFilters.top();
|
|
40
|
-
}
|
|
41
|
-
Declaration<std::shared_ptr<SkPaint>> *getPaints() { return &_paints.top(); }
|
|
42
|
-
|
|
43
|
-
void save() {
|
|
44
|
-
_paints.emplace();
|
|
45
|
-
_shaders.emplace();
|
|
46
|
-
_imageFilters.emplace(
|
|
47
|
-
[](sk_sp<SkImageFilter> inner, sk_sp<SkImageFilter> outer) {
|
|
48
|
-
return SkImageFilters::Compose(outer, inner);
|
|
49
|
-
});
|
|
50
|
-
_colorFilters.emplace(
|
|
51
|
-
[](sk_sp<SkColorFilter> inner, sk_sp<SkColorFilter> outer) {
|
|
52
|
-
return SkColorFilters::Compose(outer, inner);
|
|
53
|
-
});
|
|
54
|
-
_pathEffects.emplace(
|
|
55
|
-
[](sk_sp<SkPathEffect> inner, sk_sp<SkPathEffect> outer) {
|
|
56
|
-
return SkPathEffect::MakeCompose(outer, inner);
|
|
57
|
-
});
|
|
58
|
-
_maskFilters.emplace();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
void restore() {
|
|
62
|
-
_shaders.pop();
|
|
63
|
-
_imageFilters.pop();
|
|
64
|
-
_colorFilters.pop();
|
|
65
|
-
_pathEffects.pop();
|
|
66
|
-
_maskFilters.pop();
|
|
67
|
-
_paints.pop();
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
private:
|
|
71
|
-
std::stack<Declaration<sk_sp<SkShader>>> _shaders;
|
|
72
|
-
std::stack<ComposableDeclaration<sk_sp<SkImageFilter>>> _imageFilters;
|
|
73
|
-
std::stack<ComposableDeclaration<sk_sp<SkColorFilter>>> _colorFilters;
|
|
74
|
-
std::stack<ComposableDeclaration<sk_sp<SkPathEffect>>> _pathEffects;
|
|
75
|
-
std::stack<Declaration<sk_sp<SkMaskFilter>>> _maskFilters;
|
|
76
|
-
std::stack<Declaration<std::shared_ptr<SkPaint>>> _paints;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
} // namespace RNSkia
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "BaseNodeProp.h"
|
|
4
|
-
#include "JsiValue.h"
|
|
5
|
-
|
|
6
|
-
#include <memory>
|
|
7
|
-
#include <string>
|
|
8
|
-
#include <utility>
|
|
9
|
-
#include <vector>
|
|
10
|
-
|
|
11
|
-
namespace RNSkia {
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
Class for composing multiple properties into a derived property value
|
|
15
|
-
*/
|
|
16
|
-
class BaseDerivedProp : public BaseNodeProp {
|
|
17
|
-
public:
|
|
18
|
-
explicit BaseDerivedProp(const std::function<void(BaseNodeProp *)> &onChange)
|
|
19
|
-
: _onChange(onChange), BaseNodeProp() {}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
Starts the process of updating and reading props
|
|
23
|
-
*/
|
|
24
|
-
void updatePendingChanges() override {
|
|
25
|
-
auto changed = false;
|
|
26
|
-
for (auto &prop : _properties) {
|
|
27
|
-
prop->updatePendingChanges();
|
|
28
|
-
if (prop->isChanged()) {
|
|
29
|
-
changed = true;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// We only need to update the derived value when any of the derived
|
|
34
|
-
// properties have changed.
|
|
35
|
-
if (changed) {
|
|
36
|
-
updateDerivedValue();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/*
|
|
41
|
-
Marks properties as no longer changed
|
|
42
|
-
*/
|
|
43
|
-
void markAsResolved() override {
|
|
44
|
-
for (auto &prop : _properties) {
|
|
45
|
-
prop->markAsResolved();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
_isChanged = false;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
Returns the changed state of the prop
|
|
53
|
-
*/
|
|
54
|
-
bool isChanged() override { return _isChanged; }
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
Delegate read value to child nodes
|
|
58
|
-
*/
|
|
59
|
-
void readValueFromJs(jsi::Runtime &runtime,
|
|
60
|
-
const ReadPropFunc &read) override {
|
|
61
|
-
for (auto &prop : _properties) {
|
|
62
|
-
prop->readValueFromJs(runtime, read);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
Override to calculate the derived value from child properties
|
|
68
|
-
*/
|
|
69
|
-
virtual void updateDerivedValue() = 0;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
Adds a property to the derived property child props.
|
|
73
|
-
*/
|
|
74
|
-
template <class _Tp, class... _Args,
|
|
75
|
-
class = std::enable_if_t<!std::is_array<_Tp>::value>>
|
|
76
|
-
_Tp *defineProperty(_Args &&...__args) {
|
|
77
|
-
auto prop =
|
|
78
|
-
std::make_shared<_Tp>(std::forward<_Args>(__args)..., _onChange);
|
|
79
|
-
_properties.push_back(prop);
|
|
80
|
-
return prop.get();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/*
|
|
84
|
-
Return name of properties in derived prop as a comma separated list
|
|
85
|
-
*/
|
|
86
|
-
std::string getName() override {
|
|
87
|
-
std::string v = "";
|
|
88
|
-
for (size_t i = 0; i < _properties.size(); ++i) {
|
|
89
|
-
v += _properties[i]->getName() + (i < _properties.size() - 1 ? ", " : "");
|
|
90
|
-
}
|
|
91
|
-
return v;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
Returns true if one or more of the child props has values
|
|
96
|
-
*/
|
|
97
|
-
bool isSet() override {
|
|
98
|
-
for (auto &prop : _properties) {
|
|
99
|
-
if (prop->isSet()) {
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
protected:
|
|
107
|
-
void setIsChanged(bool isChanged) { _isChanged = isChanged; }
|
|
108
|
-
|
|
109
|
-
private:
|
|
110
|
-
std::vector<std::shared_ptr<BaseNodeProp>> _properties;
|
|
111
|
-
std::atomic<bool> _isChanged = {false};
|
|
112
|
-
std::function<void(BaseNodeProp *)> _onChange;
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
Class for composing multiple properties into a derived property value
|
|
117
|
-
*/
|
|
118
|
-
template <typename T> class DerivedProp : public BaseDerivedProp {
|
|
119
|
-
public:
|
|
120
|
-
explicit DerivedProp(const std::function<void(BaseNodeProp *)> &onChange)
|
|
121
|
-
: BaseDerivedProp(onChange) {}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
Returns the derived value
|
|
125
|
-
*/
|
|
126
|
-
std::shared_ptr<const T> getDerivedValue() {
|
|
127
|
-
return std::const_pointer_cast<const T>(_derivedValue);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
Returns a mutable version of the derived value. Used by the paint props to
|
|
132
|
-
keep a drawing context
|
|
133
|
-
*/
|
|
134
|
-
std::shared_ptr<T> getUnsafeDerivedValue() { return _derivedValue; }
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
Returns true if is optional and one of the child props has a value, or all
|
|
138
|
-
props if optional is false.
|
|
139
|
-
*/
|
|
140
|
-
bool isSet() override { return _derivedValue != nullptr; };
|
|
141
|
-
|
|
142
|
-
protected:
|
|
143
|
-
/**
|
|
144
|
-
Set derived value from sub classes
|
|
145
|
-
*/
|
|
146
|
-
void setDerivedValue(std::shared_ptr<T> value) {
|
|
147
|
-
setIsChanged(_derivedValue != value);
|
|
148
|
-
_derivedValue = value;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
Set derived value from sub classes
|
|
153
|
-
*/
|
|
154
|
-
void setDerivedValue(T &&value) {
|
|
155
|
-
setIsChanged(true);
|
|
156
|
-
_derivedValue = std::make_shared<T>(std::move(value));
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
private:
|
|
160
|
-
std::shared_ptr<T> _derivedValue;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
Class for composing multiple properties into a derived property value
|
|
165
|
-
*/
|
|
166
|
-
template <typename T> class DerivedSkProp : public BaseDerivedProp {
|
|
167
|
-
public:
|
|
168
|
-
explicit DerivedSkProp(const std::function<void(BaseNodeProp *)> &onChange)
|
|
169
|
-
: BaseDerivedProp(onChange) {}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
Returns the derived value
|
|
173
|
-
*/
|
|
174
|
-
sk_sp<T> getDerivedValue() { return _derivedValue; }
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
Returns true if is optional and one of the child props has a value, or all
|
|
178
|
-
props if optional is false.
|
|
179
|
-
*/
|
|
180
|
-
bool isSet() override { return _derivedValue != nullptr; };
|
|
181
|
-
|
|
182
|
-
protected:
|
|
183
|
-
/**
|
|
184
|
-
Set derived value from sub classes
|
|
185
|
-
*/
|
|
186
|
-
void setDerivedValue(sk_sp<T> value) {
|
|
187
|
-
setIsChanged(_derivedValue != value);
|
|
188
|
-
_derivedValue = value;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
Set derived value from sub classes
|
|
193
|
-
*/
|
|
194
|
-
void setDerivedValue(const T &&value) {
|
|
195
|
-
setIsChanged(true);
|
|
196
|
-
_derivedValue = sk_make_sp<T>(std::move(value));
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
private:
|
|
200
|
-
sk_sp<T> _derivedValue;
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
} // namespace RNSkia
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#include "DrawingContext.h"
|
|
2
|
-
|
|
3
|
-
#include "ConcatablePaint.h"
|
|
4
|
-
#include "JsiDomNode.h"
|
|
5
|
-
#include "PaintProps.h"
|
|
6
|
-
|
|
7
|
-
#include <numeric>
|
|
8
|
-
|
|
9
|
-
namespace RNSkia {
|
|
10
|
-
|
|
11
|
-
DrawingContext::DrawingContext(std::shared_ptr<SkPaint> paint) {
|
|
12
|
-
_declarationContext = std::make_unique<DeclarationContext>();
|
|
13
|
-
paint->setAntiAlias(true);
|
|
14
|
-
_paints.push_back(paint);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
DrawingContext::DrawingContext()
|
|
18
|
-
: DrawingContext(std::make_shared<SkPaint>()) {}
|
|
19
|
-
|
|
20
|
-
bool DrawingContext::saveAndConcat(
|
|
21
|
-
PaintProps *paintProps,
|
|
22
|
-
const std::vector<std::shared_ptr<JsiDomNode>> &children,
|
|
23
|
-
std::shared_ptr<SkPaint> paintCache) {
|
|
24
|
-
|
|
25
|
-
if (paintCache) {
|
|
26
|
-
_paints.push_back(paintCache);
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
ConcatablePaint paint(_declarationContext.get(), paintProps, children);
|
|
31
|
-
if (!paint.isEmpty()) {
|
|
32
|
-
save();
|
|
33
|
-
paint.concatTo(getPaint());
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
void DrawingContext::save() {
|
|
41
|
-
// Copy paint and push
|
|
42
|
-
_paints.push_back(std::make_shared<SkPaint>(*getPaint()));
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
void DrawingContext::restore() { _paints.pop_back(); }
|
|
46
|
-
|
|
47
|
-
SkCanvas *DrawingContext::getCanvas() { return _canvas; }
|
|
48
|
-
|
|
49
|
-
void DrawingContext::setCanvas(SkCanvas *canvas) { _canvas = canvas; }
|
|
50
|
-
|
|
51
|
-
std::shared_ptr<SkPaint> DrawingContext::getPaint() {
|
|
52
|
-
return _paints[_paints.size() - 1];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
} // namespace RNSkia
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "JsiHostObject.h"
|
|
4
|
-
|
|
5
|
-
#include "Declaration.h"
|
|
6
|
-
#include "DeclarationContext.h"
|
|
7
|
-
|
|
8
|
-
#include <memory>
|
|
9
|
-
#include <string>
|
|
10
|
-
#include <utility>
|
|
11
|
-
#include <vector>
|
|
12
|
-
|
|
13
|
-
#pragma clang diagnostic push
|
|
14
|
-
#pragma clang diagnostic ignored "-Wdocumentation"
|
|
15
|
-
|
|
16
|
-
#include "include/core/SkCanvas.h"
|
|
17
|
-
#include "include/core/SkPaint.h"
|
|
18
|
-
#include "include/core/SkRefCnt.h"
|
|
19
|
-
|
|
20
|
-
#pragma clang diagnostic pop
|
|
21
|
-
|
|
22
|
-
namespace RNSkia {
|
|
23
|
-
|
|
24
|
-
class PaintProps;
|
|
25
|
-
class JsiDomNode;
|
|
26
|
-
|
|
27
|
-
class DomRenderContext {
|
|
28
|
-
public:
|
|
29
|
-
float getScaledWidth() { return _scaledWidth; }
|
|
30
|
-
float getScaledHeight() { return _scaledHeight; }
|
|
31
|
-
|
|
32
|
-
void setScaledWidth(float v) { _scaledWidth = v; }
|
|
33
|
-
void setScaledHeight(float v) { _scaledHeight = v; }
|
|
34
|
-
|
|
35
|
-
void setRequestRedraw(std::function<void()> &&requestRedraw) {
|
|
36
|
-
_requestRedraw = std::move(requestRedraw);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const std::function<void()> &getRequestRedraw() { return _requestRedraw; }
|
|
40
|
-
|
|
41
|
-
private:
|
|
42
|
-
float _scaledWidth = -1;
|
|
43
|
-
float _scaledHeight = -1;
|
|
44
|
-
std::function<void()> _requestRedraw;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
class DrawingContext : public DomRenderContext,
|
|
48
|
-
public std::enable_shared_from_this<DrawingContext> {
|
|
49
|
-
public:
|
|
50
|
-
/**
|
|
51
|
-
Creates a root drawing context with paint and opacity
|
|
52
|
-
*/
|
|
53
|
-
DrawingContext();
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
Creates a drawing context with the given paint as its starting paint object
|
|
57
|
-
*/
|
|
58
|
-
explicit DrawingContext(std::shared_ptr<SkPaint> paint);
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
Factory for saving/restoring the context for a node
|
|
62
|
-
*/
|
|
63
|
-
bool saveAndConcat(PaintProps *paintProps,
|
|
64
|
-
const std::vector<std::shared_ptr<JsiDomNode>> &children,
|
|
65
|
-
std::shared_ptr<SkPaint> paintCache);
|
|
66
|
-
void restore();
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
Returns true if the current cache is changed
|
|
70
|
-
*/
|
|
71
|
-
bool isChanged();
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
Get/Sets the canvas object
|
|
75
|
-
*/
|
|
76
|
-
SkCanvas *getCanvas();
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
Sets the canvas
|
|
80
|
-
*/
|
|
81
|
-
void setCanvas(SkCanvas *canvas);
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
Gets the paint object
|
|
85
|
-
*/
|
|
86
|
-
std::shared_ptr<SkPaint> getPaint();
|
|
87
|
-
|
|
88
|
-
/*
|
|
89
|
-
Returns the root declaratiins object
|
|
90
|
-
*/
|
|
91
|
-
DeclarationContext *getDeclarationContext() {
|
|
92
|
-
return _declarationContext.get();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
private:
|
|
96
|
-
void save();
|
|
97
|
-
|
|
98
|
-
explicit DrawingContext(const char *source);
|
|
99
|
-
SkCanvas *_canvas = nullptr;
|
|
100
|
-
std::vector<std::shared_ptr<SkPaint>> _paints;
|
|
101
|
-
std::unique_ptr<DeclarationContext> _declarationContext;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
} // namespace RNSkia
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
#pragma once
|
|
3
|
-
|
|
4
|
-
#include "DrawingContext.h"
|
|
5
|
-
#include "JsiDomNode.h"
|
|
6
|
-
|
|
7
|
-
#include <memory>
|
|
8
|
-
#include <string>
|
|
9
|
-
|
|
10
|
-
namespace RNSkia {
|
|
11
|
-
|
|
12
|
-
enum DeclarationType {
|
|
13
|
-
Unknown = 0,
|
|
14
|
-
Paint = 1,
|
|
15
|
-
Shader = 2,
|
|
16
|
-
ImageFilter = 3,
|
|
17
|
-
ColorFilter = 4,
|
|
18
|
-
PathEffect = 5,
|
|
19
|
-
MaskFilter = 6,
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
class JsiDomDeclarationNode : public JsiDomNode {
|
|
23
|
-
public:
|
|
24
|
-
JsiDomDeclarationNode(std::shared_ptr<RNSkPlatformContext> context,
|
|
25
|
-
const char *type, DeclarationType declarationType)
|
|
26
|
-
: JsiDomNode(context, type, NodeClass::DeclarationNode),
|
|
27
|
-
_declarationType(declarationType) {}
|
|
28
|
-
|
|
29
|
-
JSI_PROPERTY_GET(declarationType) {
|
|
30
|
-
// FIXME: Shouldn't this be the declaration type instead? It has been
|
|
31
|
-
return jsi::String::createFromUtf8(runtime, std::string(getType()));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
JSI_EXPORT_PROPERTY_GETTERS(JSI_EXPORT_PROP_GET(JsiDomDeclarationNode,
|
|
35
|
-
declarationType),
|
|
36
|
-
JSI_EXPORT_PROP_GET(JsiDomNode, type))
|
|
37
|
-
|
|
38
|
-
JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiDomNode, addChild),
|
|
39
|
-
JSI_EXPORT_FUNC(JsiDomNode, removeChild),
|
|
40
|
-
JSI_EXPORT_FUNC(JsiDomNode, insertChildBefore),
|
|
41
|
-
JSI_EXPORT_FUNC(JsiDomNode, setProps),
|
|
42
|
-
JSI_EXPORT_FUNC(JsiDomNode, setProp),
|
|
43
|
-
JSI_EXPORT_FUNC(JsiDomNode, dispose),
|
|
44
|
-
JSI_EXPORT_FUNC(JsiDomNode, children))
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
Called when rendering the tree to create all derived values from all nodes.
|
|
48
|
-
*/
|
|
49
|
-
void decorateContext(DeclarationContext *context) override {
|
|
50
|
-
JsiDomNode::decorateContext(context);
|
|
51
|
-
|
|
52
|
-
#if SKIA_DOM_DEBUG
|
|
53
|
-
printDebugInfo("Begin decorate " + std::string(getType()));
|
|
54
|
-
#endif
|
|
55
|
-
|
|
56
|
-
// decorate drawing context
|
|
57
|
-
decorate(context);
|
|
58
|
-
|
|
59
|
-
#if SKIA_DOM_DEBUG
|
|
60
|
-
printDebugInfo("End / Commit decorate " + std::string(getType()));
|
|
61
|
-
#endif
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
DeclarationType getDeclarationType() { return _declarationType; }
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
Override to implement materialization
|
|
68
|
-
*/
|
|
69
|
-
virtual void decorate(DeclarationContext *context) = 0;
|
|
70
|
-
|
|
71
|
-
protected:
|
|
72
|
-
/**
|
|
73
|
-
Invalidates and marks then context as changed. The implementation in the
|
|
74
|
-
declaration node is to pass the call upwards to the parent node
|
|
75
|
-
*/
|
|
76
|
-
void invalidateContext() override {
|
|
77
|
-
if (getParent() != nullptr) {
|
|
78
|
-
getParent()->invalidateContext();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
A property changed
|
|
84
|
-
*/
|
|
85
|
-
void onPropertyChanged(BaseNodeProp *prop) override { invalidateContext(); }
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
Validates that only declaration nodes can be children
|
|
89
|
-
*/
|
|
90
|
-
void addChild(std::shared_ptr<JsiDomNode> child) override {
|
|
91
|
-
if (child->getNodeClass() != NodeClass::DeclarationNode) {
|
|
92
|
-
getContext()->raiseError(std::runtime_error(
|
|
93
|
-
"Cannot add a child of type \"" + std::string(child->getType()) +
|
|
94
|
-
"\" to a \"" + std::string(getType()) + "\"."));
|
|
95
|
-
}
|
|
96
|
-
JsiDomNode::addChild(child);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
Validates that only declaration nodes can be children
|
|
101
|
-
*/
|
|
102
|
-
void insertChildBefore(std::shared_ptr<JsiDomNode> child,
|
|
103
|
-
std::shared_ptr<JsiDomNode> before) override {
|
|
104
|
-
if (child->getNodeClass() != NodeClass::DeclarationNode) {
|
|
105
|
-
getContext()->raiseError(std::runtime_error(
|
|
106
|
-
"Cannot add a child of type \"" + std::string(child->getType()) +
|
|
107
|
-
"\" to a \"" + std::string(getType()) + "\"."));
|
|
108
|
-
}
|
|
109
|
-
JsiDomNode::insertChildBefore(child, before);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
private:
|
|
113
|
-
/**
|
|
114
|
-
Type of declaration
|
|
115
|
-
*/
|
|
116
|
-
DeclarationType _declarationType;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
} // namespace RNSkia
|