@shopify/react-native-skia 0.1.154 → 0.1.156

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.
Files changed (167) hide show
  1. package/android/cpp/jni/JniLoad.cpp +5 -5
  2. package/android/cpp/jni/JniPlatformContext.cpp +107 -119
  3. package/android/cpp/jni/JniSkiaManager.cpp +18 -20
  4. package/android/cpp/jni/include/JniPlatformContext.h +41 -45
  5. package/android/cpp/jni/include/JniSkiaBaseView.h +52 -55
  6. package/android/cpp/jni/include/JniSkiaDrawView.h +72 -77
  7. package/android/cpp/jni/include/JniSkiaManager.h +51 -53
  8. package/android/cpp/jni/include/JniSkiaPictureView.h +74 -78
  9. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +36 -45
  10. package/android/cpp/rnskia-android/RNSkAndroidView.h +87 -92
  11. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +62 -65
  12. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +20 -17
  13. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +257 -313
  14. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +107 -110
  15. package/cpp/api/JsiSkApi.h +66 -62
  16. package/cpp/api/JsiSkCanvas.h +38 -30
  17. package/cpp/api/JsiSkColor.h +58 -56
  18. package/cpp/api/JsiSkColorFilter.h +5 -3
  19. package/cpp/api/JsiSkColorFilterFactory.h +23 -21
  20. package/cpp/api/JsiSkContourMeasure.h +74 -85
  21. package/cpp/api/JsiSkContourMeasureIter.h +68 -75
  22. package/cpp/api/JsiSkData.h +16 -22
  23. package/cpp/api/JsiSkDataFactory.h +86 -79
  24. package/cpp/api/JsiSkFont.h +286 -311
  25. package/cpp/api/JsiSkHostObjects.h +15 -16
  26. package/cpp/api/JsiSkImage.h +107 -103
  27. package/cpp/api/JsiSkImageFactory.h +34 -36
  28. package/cpp/api/JsiSkImageFilter.h +5 -3
  29. package/cpp/api/JsiSkImageFilterFactory.h +71 -68
  30. package/cpp/api/JsiSkImageInfo.h +41 -38
  31. package/cpp/api/JsiSkMaskFilter.h +5 -3
  32. package/cpp/api/JsiSkMaskFilterFactory.h +2 -3
  33. package/cpp/api/JsiSkMatrix.h +26 -36
  34. package/cpp/api/JsiSkPaint.h +20 -13
  35. package/cpp/api/JsiSkPath.h +70 -85
  36. package/cpp/api/JsiSkPathEffect.h +5 -3
  37. package/cpp/api/JsiSkPathEffectFactory.h +33 -28
  38. package/cpp/api/JsiSkPathFactory.h +68 -67
  39. package/cpp/api/JsiSkPicture.h +28 -22
  40. package/cpp/api/JsiSkPictureFactory.h +13 -12
  41. package/cpp/api/JsiSkPictureRecorder.h +21 -19
  42. package/cpp/api/JsiSkPoint.h +6 -8
  43. package/cpp/api/JsiSkRRect.h +11 -7
  44. package/cpp/api/JsiSkRSXform.h +82 -85
  45. package/cpp/api/JsiSkRect.h +9 -9
  46. package/cpp/api/JsiSkRuntimeEffect.h +182 -186
  47. package/cpp/api/JsiSkRuntimeEffectFactory.h +10 -11
  48. package/cpp/api/JsiSkRuntimeShaderBuilder.h +64 -61
  49. package/cpp/api/JsiSkSVG.h +4 -5
  50. package/cpp/api/JsiSkSVGFactory.h +28 -27
  51. package/cpp/api/JsiSkShader.h +3 -2
  52. package/cpp/api/JsiSkShaderFactory.h +37 -25
  53. package/cpp/api/JsiSkSurface.h +44 -40
  54. package/cpp/api/JsiSkSurfaceFactory.h +22 -22
  55. package/cpp/api/JsiSkTextBlob.h +28 -31
  56. package/cpp/api/JsiSkTextBlobFactory.h +88 -87
  57. package/cpp/api/JsiSkTypeface.h +6 -5
  58. package/cpp/api/JsiSkTypefaceFactory.h +22 -21
  59. package/cpp/api/JsiSkVertices.h +137 -124
  60. package/cpp/api/third_party/CSSColorParser.cpp +161 -174
  61. package/cpp/api/third_party/CSSColorParser.h +172 -96
  62. package/cpp/jsi/JsiHostObject.cpp +11 -9
  63. package/cpp/jsi/JsiHostObject.h +31 -24
  64. package/cpp/jsi/JsiSimpleValueWrapper.h +74 -83
  65. package/cpp/jsi/JsiValueWrapper.h +52 -54
  66. package/cpp/rnskia/RNSkAnimation.h +26 -29
  67. package/cpp/rnskia/RNSkDispatchQueue.cpp +50 -61
  68. package/cpp/rnskia/RNSkDispatchQueue.h +3 -1
  69. package/cpp/rnskia/RNSkInfoParameter.h +12 -12
  70. package/cpp/rnskia/RNSkJsView.cpp +82 -81
  71. package/cpp/rnskia/RNSkJsView.h +45 -41
  72. package/cpp/rnskia/RNSkJsiViewApi.h +99 -89
  73. package/cpp/rnskia/RNSkManager.cpp +8 -7
  74. package/cpp/rnskia/RNSkManager.h +8 -6
  75. package/cpp/rnskia/RNSkPictureView.h +44 -37
  76. package/cpp/rnskia/RNSkPlatformContext.h +39 -28
  77. package/cpp/rnskia/RNSkValueApi.h +33 -34
  78. package/cpp/rnskia/RNSkView.h +108 -93
  79. package/cpp/rnskia/values/RNSkClockValue.h +63 -64
  80. package/cpp/rnskia/values/RNSkComputedValue.h +32 -30
  81. package/cpp/rnskia/values/RNSkReadonlyValue.h +60 -59
  82. package/cpp/rnskia/values/RNSkValue.h +38 -40
  83. package/cpp/utils/RNSkLog.h +9 -7
  84. package/cpp/utils/RNSkMeasureTime.h +7 -7
  85. package/cpp/utils/RNSkTimingInfo.h +27 -24
  86. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +8 -9
  87. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +24 -23
  88. package/ios/RNSkia-iOS/RNSkiOSView.h +16 -13
  89. package/ios/RNSkia-iOS/SkiaUIView.h +9 -8
  90. package/lib/commonjs/dom/nodes/JsiSkDOM.js +6 -0
  91. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  92. package/lib/commonjs/dom/nodes/LayerNode.js +43 -0
  93. package/lib/commonjs/dom/nodes/LayerNode.js.map +1 -0
  94. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  95. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  96. package/lib/commonjs/dom/types/NodeType.js +1 -0
  97. package/lib/commonjs/dom/types/NodeType.js.map +1 -1
  98. package/lib/commonjs/dom/types/SkDOM.js.map +1 -1
  99. package/lib/commonjs/renderer/HostComponents.js +3 -0
  100. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  101. package/lib/commonjs/renderer/components/Group.js +19 -4
  102. package/lib/commonjs/renderer/components/Group.js.map +1 -1
  103. package/lib/commonjs/renderer/components/Paint.js +6 -1
  104. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  105. package/lib/commonjs/views/SkiaPictureView.js +3 -2
  106. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  107. package/lib/commonjs/views/SkiaView.js +6 -3
  108. package/lib/commonjs/views/SkiaView.js.map +1 -1
  109. package/lib/module/dom/nodes/JsiSkDOM.js +5 -0
  110. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  111. package/lib/module/dom/nodes/LayerNode.js +32 -0
  112. package/lib/module/dom/nodes/LayerNode.js.map +1 -0
  113. package/lib/module/dom/nodes/RenderNode.js +1 -1
  114. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  115. package/lib/module/dom/types/NodeType.js +1 -0
  116. package/lib/module/dom/types/NodeType.js.map +1 -1
  117. package/lib/module/dom/types/SkDOM.js.map +1 -1
  118. package/lib/module/renderer/HostComponents.js +3 -0
  119. package/lib/module/renderer/HostComponents.js.map +1 -1
  120. package/lib/module/renderer/components/Group.js +16 -3
  121. package/lib/module/renderer/components/Group.js.map +1 -1
  122. package/lib/module/renderer/components/Paint.js +7 -1
  123. package/lib/module/renderer/components/Paint.js.map +1 -1
  124. package/lib/module/views/SkiaPictureView.js +2 -2
  125. package/lib/module/views/SkiaPictureView.js.map +1 -1
  126. package/lib/module/views/SkiaView.js +4 -2
  127. package/lib/module/views/SkiaView.js.map +1 -1
  128. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +2 -0
  129. package/lib/typescript/src/dom/nodes/LayerNode.d.ts +8 -0
  130. package/lib/typescript/src/dom/types/NodeType.d.ts +1 -0
  131. package/lib/typescript/src/dom/types/SkDOM.d.ts +1 -0
  132. package/lib/typescript/src/renderer/HostComponents.d.ts +2 -1
  133. package/lib/typescript/src/renderer/components/Group.d.ts +5 -1
  134. package/lib/typescript/src/views/SkiaView.d.ts +3 -0
  135. package/libs/android/arm64-v8a/libskottie.a +0 -0
  136. package/libs/android/arm64-v8a/libsksg.a +0 -0
  137. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  138. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  139. package/libs/android/x86/libskottie.a +0 -0
  140. package/libs/android/x86/libsksg.a +0 -0
  141. package/libs/android/x86_64/libskottie.a +0 -0
  142. package/libs/android/x86_64/libsksg.a +0 -0
  143. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  144. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  145. package/libs/ios/libskottie.xcframework/Info.plist +42 -0
  146. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  147. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  148. package/libs/ios/libsksg.xcframework/Info.plist +42 -0
  149. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  150. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  151. package/libs/ios/libskshaper.xcframework/Info.plist +5 -5
  152. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  153. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  154. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  155. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  156. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  157. package/package.json +3 -1
  158. package/src/dom/nodes/JsiSkDOM.ts +5 -0
  159. package/src/dom/nodes/LayerNode.ts +35 -0
  160. package/src/dom/nodes/RenderNode.ts +4 -3
  161. package/src/dom/types/NodeType.ts +1 -0
  162. package/src/dom/types/SkDOM.ts +1 -0
  163. package/src/renderer/HostComponents.ts +3 -0
  164. package/src/renderer/components/Group.tsx +16 -3
  165. package/src/renderer/components/Paint.tsx +7 -1
  166. package/src/views/SkiaPictureView.tsx +2 -3
  167. package/src/views/SkiaView.tsx +2 -2
@@ -1,108 +1,99 @@
1
-
2
1
  #pragma once
3
2
 
3
+ #include <memory>
4
+
4
5
  #include <jsi/jsi.h>
5
6
 
6
- namespace RNJsi
7
- {
8
- using namespace facebook;
7
+ namespace RNJsi {
8
+ namespace jsi = facebook::jsi;
9
9
 
10
10
  /**
11
- Implements a simple wrapper class for JSI primitives like numbers and boolean values. Objects,
12
- strings and arrays are stored as values inside a property holder. The class also provides a method
13
- for comparing values that will compare numbers, booleans and strings.
11
+ Implements a simple wrapper class for JSI primitives like numbers and boolean
12
+ values. Objects, strings and arrays are stored as values inside a property
13
+ holder. The class also provides a method for comparing values that will compare
14
+ numbers, booleans and strings.
14
15
  */
15
- class JsiSimpleValueWrapper
16
- {
16
+ class JsiSimpleValueWrapper {
17
17
  private:
18
- enum ValueType {
19
- NonInitialized,
20
- Undefined,
21
- Null,
22
- Bool,
23
- Number,
24
- JsiValue
25
- };
18
+ enum ValueType { NonInitialized, Undefined, Null, Bool, Number, JsiValue };
26
19
 
27
20
  public:
28
- JsiSimpleValueWrapper(jsi::Runtime& runtime) :
29
- _type(ValueType::NonInitialized),
30
- _propNameId(jsi::PropNameID::forUtf8(runtime, "value"))
31
- {}
21
+ explicit JsiSimpleValueWrapper(jsi::Runtime &runtime)
22
+ : _type(ValueType::NonInitialized),
23
+ _propNameId(jsi::PropNameID::forUtf8(runtime, "value")) {}
32
24
 
33
- jsi::Value getCurrent(jsi::Runtime &runtime)
34
- {
35
- switch (_type)
36
- {
37
- case ValueType::NonInitialized:
38
- return nullptr;
39
- case ValueType::Undefined:
40
- return jsi::Value::undefined();
41
- case ValueType::Null:
42
- return jsi::Value::null();
43
- case ValueType::Bool:
44
- return _boolValue;
45
- case ValueType::Number:
46
- return _numberValue;
47
- case ValueType::JsiValue:
48
- if (_valueHolder == nullptr) {
49
- return jsi::Value::undefined();
50
- }
51
- return _valueHolder->getProperty(runtime, _propNameId);
25
+ jsi::Value getCurrent(jsi::Runtime &runtime) {
26
+ switch (_type) {
27
+ case ValueType::NonInitialized:
28
+ return nullptr;
29
+ case ValueType::Undefined:
30
+ return jsi::Value::undefined();
31
+ case ValueType::Null:
32
+ return jsi::Value::null();
33
+ case ValueType::Bool:
34
+ return _boolValue;
35
+ case ValueType::Number:
36
+ return _numberValue;
37
+ case ValueType::JsiValue:
38
+ if (_valueHolder == nullptr) {
39
+ return jsi::Value::undefined();
52
40
  }
41
+ return _valueHolder->getProperty(runtime, _propNameId);
53
42
  }
43
+ }
54
44
 
55
- void setCurrent(jsi::Runtime &runtime, const jsi::Value &value)
56
- {
57
- if(value.isNumber()) {
58
- _type = ValueType::Number;
59
- _numberValue = value.asNumber();
60
- } else if(value.isBool()) {
61
- _type = ValueType::Bool;
62
- _boolValue = value.getBool();
63
- } else if(value.isUndefined()) {
64
- _type = ValueType::Undefined;
65
- } else if(value.isNull()) {
66
- _type = ValueType::Null;
67
- } else {
68
- _type = ValueType::JsiValue;
69
- // Save as javascript object - we don't want to have to copy strings, objects and values
70
- if(_valueHolder == nullptr) {
71
- _valueHolder = std::make_shared<jsi::Object>(runtime);
72
- }
73
- _valueHolder->setProperty(runtime, _propNameId, value);
45
+ void setCurrent(jsi::Runtime &runtime, const jsi::Value &value) {
46
+ if (value.isNumber()) {
47
+ _type = ValueType::Number;
48
+ _numberValue = value.asNumber();
49
+ } else if (value.isBool()) {
50
+ _type = ValueType::Bool;
51
+ _boolValue = value.getBool();
52
+ } else if (value.isUndefined()) {
53
+ _type = ValueType::Undefined;
54
+ } else if (value.isNull()) {
55
+ _type = ValueType::Null;
56
+ } else {
57
+ _type = ValueType::JsiValue;
58
+ // Save as javascript object - we don't want to have to copy strings,
59
+ // objects and values
60
+ if (_valueHolder == nullptr) {
61
+ _valueHolder = std::make_shared<jsi::Object>(runtime);
74
62
  }
63
+ _valueHolder->setProperty(runtime, _propNameId, value);
75
64
  }
65
+ }
76
66
 
77
- bool equals(jsi::Runtime& runtime, const jsi::Value &value) {
78
- if (_type == ValueType::NonInitialized) {
79
- return false;
80
- }
81
- if(value.isNumber() && _type == ValueType::Number) {
82
- return _numberValue == value.asNumber();
83
- } else if(value.isBool() && _type == ValueType::Bool) {
84
- return _boolValue == value.getBool();
85
- } else if(value.isUndefined()) {
86
- return _type == ValueType::Undefined;
87
- } else if(value.isNull()) {
88
- return _type == ValueType::Null;
89
- } else if(value.isString()) {
90
- auto current = getCurrent(runtime);
91
- if (current.isString()) {
92
- return jsi::String::strictEquals(runtime, value.asString(runtime), current.asString(runtime));
93
- }
94
- return false;
67
+ bool equals(jsi::Runtime &runtime, const jsi::Value &value) {
68
+ if (_type == ValueType::NonInitialized) {
69
+ return false;
70
+ }
71
+ if (value.isNumber() && _type == ValueType::Number) {
72
+ return _numberValue == value.asNumber();
73
+ } else if (value.isBool() && _type == ValueType::Bool) {
74
+ return _boolValue == value.getBool();
75
+ } else if (value.isUndefined()) {
76
+ return _type == ValueType::Undefined;
77
+ } else if (value.isNull()) {
78
+ return _type == ValueType::Null;
79
+ } else if (value.isString()) {
80
+ auto current = getCurrent(runtime);
81
+ if (current.isString()) {
82
+ return jsi::String::strictEquals(runtime, value.asString(runtime),
83
+ current.asString(runtime));
95
84
  }
96
85
  return false;
97
86
  }
87
+ return false;
88
+ }
98
89
 
99
90
  private:
100
- jsi::PropNameID _propNameId;
101
- std::shared_ptr<jsi::Object> _valueHolder;
91
+ jsi::PropNameID _propNameId;
92
+ std::shared_ptr<jsi::Object> _valueHolder;
102
93
 
103
- bool _boolValue;
104
- double _numberValue;
94
+ bool _boolValue;
95
+ double _numberValue;
105
96
 
106
- ValueType _type;
97
+ ValueType _type;
107
98
  };
108
- }
99
+ } // namespace RNJsi
@@ -1,46 +1,42 @@
1
-
2
1
  #pragma once
3
2
 
4
3
  #include <jsi/jsi.h>
4
+ #include <memory>
5
+ #include <string>
6
+
7
+ namespace RNJsi {
8
+ namespace jsi = facebook::jsi;
5
9
 
6
- namespace RNJsi
7
- {
8
- using namespace facebook;
9
-
10
- enum JsiWrapperValueType
11
- {
12
- NonInitialized,
13
- Undefined,
14
- Null,
15
- Bool,
16
- Number,
17
- String,
18
- Object,
19
- Function,
20
- Array,
21
- HostObject,
22
- Unknown
10
+ enum JsiWrapperValueType {
11
+ NonInitialized,
12
+ Undefined,
13
+ Null,
14
+ Bool,
15
+ Number,
16
+ String,
17
+ Object,
18
+ Function,
19
+ Array,
20
+ HostObject,
21
+ Unknown
23
22
  };
24
23
 
25
24
  /**
26
- Implements a simple wrapper class for JSI values where the value can be read without asking the runtime for any assistance
27
- Meaning that we can access members without being on the JS thread.
25
+ Implements a simple wrapper class for JSI values where the value can be read
26
+ without asking the runtime for any assistance Meaning that we can access
27
+ members without being on the JS thread.
28
28
  */
29
- class JsiValueWrapper
30
- {
29
+ class JsiValueWrapper {
31
30
  public:
32
- JsiValueWrapper(jsi::Runtime& runtime) :
33
- _type(JsiWrapperValueType::NonInitialized)
34
- {}
35
-
36
- JsiValueWrapper(jsi::Runtime& runtime, const jsi::Value &value) :
37
- _type(JsiWrapperValueType::NonInitialized)
38
- {
31
+ explicit JsiValueWrapper(jsi::Runtime &runtime)
32
+ : _type(JsiWrapperValueType::NonInitialized) {}
33
+
34
+ JsiValueWrapper(jsi::Runtime &runtime, const jsi::Value &value)
35
+ : _type(JsiWrapperValueType::NonInitialized) {
39
36
  setCurrent(runtime, value);
40
37
  }
41
38
 
42
- void setCurrent(jsi::Runtime &runtime, const jsi::Value &value)
43
- {
39
+ void setCurrent(jsi::Runtime &runtime, const jsi::Value &value) {
44
40
  if (value.isNumber()) {
45
41
  _type = JsiWrapperValueType::Number;
46
42
  _numberValue = value.asNumber();
@@ -59,11 +55,13 @@ public:
59
55
  _objectValue = std::make_shared<jsi::Object>(value.asObject(runtime));
60
56
  if (_objectValue->isFunction(runtime)) {
61
57
  _type = JsiWrapperValueType::Function;
62
- _functionValue = std::make_shared<jsi::Function>(_objectValue->asFunction(runtime));
58
+ _functionValue =
59
+ std::make_shared<jsi::Function>(_objectValue->asFunction(runtime));
63
60
  _objectValue = nullptr;
64
61
  } else if (_objectValue->isArray(runtime)) {
65
62
  _type = JsiWrapperValueType::Array;
66
- _arrayValue = std::make_shared<jsi::Array>(_objectValue->asArray(runtime));
63
+ _arrayValue =
64
+ std::make_shared<jsi::Array>(_objectValue->asArray(runtime));
67
65
  _objectValue = nullptr;
68
66
  } else if (_objectValue->isHostObject(runtime)) {
69
67
  _type = JsiWrapperValueType::HostObject;
@@ -74,7 +72,7 @@ public:
74
72
  throw std::runtime_error("Could not store jsi::Value of provided type");
75
73
  }
76
74
  // Save in value holder as well so that we can return current
77
- if(_valueHolder == nullptr) {
75
+ if (_valueHolder == nullptr) {
78
76
  _valueHolder = std::make_shared<jsi::Object>(runtime);
79
77
  }
80
78
  _valueHolder->setProperty(runtime, "current", value);
@@ -82,57 +80,57 @@ public:
82
80
 
83
81
  bool isUndefinedOrNull() {
84
82
  return _type == JsiWrapperValueType::Undefined ||
85
- _type == JsiWrapperValueType::Null;
83
+ _type == JsiWrapperValueType::Null;
86
84
  }
87
-
85
+
88
86
  bool getAsBool() {
89
87
  assert(_type == JsiWrapperValueType::Bool);
90
88
  return _boolValue;
91
89
  }
92
-
90
+
93
91
  double getAsNumber() {
94
92
  assert(_type == JsiWrapperValueType::Number);
95
93
  return _numberValue;
96
94
  }
97
-
98
- const std::string& getAsString() {
95
+
96
+ const std::string &getAsString() {
99
97
  assert(_type == JsiWrapperValueType::String);
100
98
  return _stringValue;
101
99
  }
102
-
100
+
103
101
  std::shared_ptr<jsi::Function> getAsFunction() {
104
102
  assert(_type == JsiWrapperValueType::Function);
105
103
  return _functionValue;
106
104
  }
107
-
105
+
108
106
  std::shared_ptr<jsi::Array> getAsArray() {
109
107
  assert(_type == JsiWrapperValueType::Array);
110
108
  return _arrayValue;
111
109
  }
112
-
110
+
113
111
  std::shared_ptr<jsi::Object> getAsObject() {
114
112
  assert(_type == JsiWrapperValueType::Object);
115
113
  return _objectValue;
116
114
  }
117
-
115
+
118
116
  std::shared_ptr<jsi::HostObject> getAsHostObject() {
119
117
  assert(_type == JsiWrapperValueType::HostObject);
120
118
  return _hostObjectValue;
121
119
  }
122
-
120
+
123
121
  JsiWrapperValueType getType() { return _type; }
124
122
 
125
123
  private:
126
- std::shared_ptr<jsi::Object> _valueHolder;
124
+ std::shared_ptr<jsi::Object> _valueHolder;
127
125
 
128
- bool _boolValue;
129
- double _numberValue;
130
- std::string _stringValue;
131
- std::shared_ptr<jsi::Object> _objectValue;
132
- std::shared_ptr<jsi::Function> _functionValue;
133
- std::shared_ptr<jsi::Array> _arrayValue;
134
- std::shared_ptr<jsi::HostObject> _hostObjectValue;
126
+ bool _boolValue;
127
+ double _numberValue;
128
+ std::string _stringValue;
129
+ std::shared_ptr<jsi::Object> _objectValue;
130
+ std::shared_ptr<jsi::Function> _functionValue;
131
+ std::shared_ptr<jsi::Array> _arrayValue;
132
+ std::shared_ptr<jsi::HostObject> _hostObjectValue;
135
133
 
136
- JsiWrapperValueType _type;
134
+ JsiWrapperValueType _type;
137
135
  };
138
- }
136
+ } // namespace RNJsi
@@ -1,68 +1,65 @@
1
-
2
1
  #pragma once
3
2
 
4
3
  #include <array>
4
+ #include <memory>
5
5
 
6
6
  #include <JsiHostObject.h>
7
- #include <RNSkPlatformContext.h>
8
7
  #include <RNSkClockValue.h>
8
+ #include <RNSkPlatformContext.h>
9
9
  #include <jsi/jsi.h>
10
10
 
11
- namespace RNSkia
12
- {
13
- using namespace facebook;
11
+ namespace RNSkia {
12
+ namespace jsi = facebook::jsi;
14
13
 
15
14
  /**
16
15
  Implements an animation that can be used to drive other values
17
16
  */
18
- class RNSkAnimation : public RNSkClockValue
19
- {
20
-
17
+ class RNSkAnimation : public RNSkClockValue {
18
+
21
19
  public:
22
20
  RNSkAnimation(std::shared_ptr<RNSkPlatformContext> platformContext,
23
- size_t identifier,
24
- jsi::Runtime& runtime,
25
- const jsi::Value *arguments,
26
- size_t count) :
27
- RNSkClockValue(platformContext, identifier, runtime, arguments, count) {
21
+ size_t identifier, jsi::Runtime &runtime,
22
+ const jsi::Value *arguments, size_t count)
23
+ : RNSkClockValue(platformContext, identifier, runtime, arguments, count) {
28
24
  // Save the update function
29
- _updateFunction = std::make_shared<jsi::Function>(arguments[0].asObject(runtime).asFunction(runtime));
30
-
25
+ _updateFunction = std::make_shared<jsi::Function>(
26
+ arguments[0].asObject(runtime).asFunction(runtime));
27
+
31
28
  // Set state to undefined initially.
32
29
  _args[1] = jsi::Value::undefined();
33
30
  }
34
-
31
+
35
32
  JSI_HOST_FUNCTION(cancel) {
36
33
  stopClock();
37
34
  return jsi::Value::undefined();
38
35
  }
39
-
36
+
40
37
  JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(RNSkAnimation, cancel))
41
38
 
42
-
43
39
  protected:
44
-
45
40
  void tick(jsi::Runtime &runtime, const jsi::Value &value) override {
46
41
  // Set up arguments and call the update function
47
42
  _args[0] = value.asNumber();
48
- _args[1] = _updateFunction->call(runtime, static_cast<const jsi::Value*>(_args.data()), _args.size());
49
-
43
+ _args[1] = _updateFunction->call(
44
+ runtime, static_cast<const jsi::Value *>(_args.data()), _args.size());
45
+
50
46
  // Get finished
51
- auto finished = _args[1].asObject(runtime).getProperty(runtime, "finished").getBool();
52
- if(finished) {
47
+ auto finished =
48
+ _args[1].asObject(runtime).getProperty(runtime, "finished").getBool();
49
+ if (finished) {
53
50
  stopClock();
54
51
  }
55
-
52
+
56
53
  // Get the next value
57
- auto nextValue = _args[1].asObject(runtime).getProperty(runtime, "current").asNumber();
58
-
54
+ auto nextValue =
55
+ _args[1].asObject(runtime).getProperty(runtime, "current").asNumber();
56
+
59
57
  // Update self
60
58
  update(runtime, nextValue);
61
59
  }
62
-
60
+
63
61
  private:
64
-
65
62
  std::shared_ptr<jsi::Function> _updateFunction;
66
63
  std::array<jsi::Value, 2> _args;
67
64
  };
68
- }
65
+ } // namespace RNSkia
@@ -4,81 +4,70 @@
4
4
  #include <mutex>
5
5
  #include <utility>
6
6
 
7
- namespace RNSkia
8
- {
7
+ namespace RNSkia {
9
8
 
10
- RNSkDispatchQueue::~RNSkDispatchQueue()
11
- {
12
- // Signal to dispatch threads that it's time to wrap up
13
- std::unique_lock<std::mutex> lock(lock_);
14
- quit_ = true;
15
- lock.unlock();
16
- cv_.notify_all();
9
+ RNSkDispatchQueue::~RNSkDispatchQueue() {
10
+ // Signal to dispatch threads that it's time to wrap up
11
+ std::unique_lock<std::mutex> lock(lock_);
12
+ quit_ = true;
13
+ lock.unlock();
14
+ cv_.notify_all();
17
15
 
18
- // Wait for threads to finish before we exit
19
- for (size_t i = 0; i < threads_.size(); i++)
20
- {
21
- if (threads_[i].joinable())
22
- {
23
- threads_[i].join();
24
- }
16
+ // Wait for threads to finish before we exit
17
+ for (size_t i = 0; i < threads_.size(); i++) {
18
+ if (threads_[i].joinable()) {
19
+ threads_[i].join();
25
20
  }
26
21
  }
22
+ }
27
23
 
28
- RNSkDispatchQueue::RNSkDispatchQueue(std::string name, size_t thread_cnt)
29
- : name_{std::move(name)}, threads_(thread_cnt)
30
- {
31
- for (size_t i = 0; i < threads_.size(); i++)
32
- {
33
- threads_[i] = std::thread(&RNSkDispatchQueue::dispatch_thread_handler, this);
34
- }
24
+ RNSkDispatchQueue::RNSkDispatchQueue(std::string name, size_t thread_cnt)
25
+ : name_{std::move(name)}, threads_(thread_cnt) {
26
+ for (size_t i = 0; i < threads_.size(); i++) {
27
+ threads_[i] =
28
+ std::thread(&RNSkDispatchQueue::dispatch_thread_handler, this);
35
29
  }
30
+ }
36
31
 
37
- void RNSkDispatchQueue::dispatch(const fp_t &op)
38
- {
39
- std::unique_lock<std::mutex> lock(lock_);
40
- q_.push(op);
32
+ void RNSkDispatchQueue::dispatch(const fp_t &op) {
33
+ std::unique_lock<std::mutex> lock(lock_);
34
+ q_.push(op);
41
35
 
42
- // Manual unlocking is done before notifying, to avoid waking up
43
- // the waiting thread only to block again (see notify_one for details)
44
- lock.unlock();
45
- cv_.notify_one();
46
- }
36
+ // Manual unlocking is done before notifying, to avoid waking up
37
+ // the waiting thread only to block again (see notify_one for details)
38
+ lock.unlock();
39
+ cv_.notify_one();
40
+ }
47
41
 
48
- void RNSkDispatchQueue::dispatch(fp_t &&op)
49
- {
50
- std::unique_lock<std::mutex> lock(lock_);
51
- q_.push(std::move(op));
42
+ void RNSkDispatchQueue::dispatch(fp_t &&op) {
43
+ std::unique_lock<std::mutex> lock(lock_);
44
+ q_.push(std::move(op));
52
45
 
53
- // Manual unlocking is done before notifying, to avoid waking up
54
- // the waiting thread only to block again (see notify_one for details)
55
- lock.unlock();
56
- cv_.notify_one();
57
- }
46
+ // Manual unlocking is done before notifying, to avoid waking up
47
+ // the waiting thread only to block again (see notify_one for details)
48
+ lock.unlock();
49
+ cv_.notify_one();
50
+ }
58
51
 
59
- void RNSkDispatchQueue::dispatch_thread_handler(void)
60
- {
61
- std::unique_lock<std::mutex> lock(lock_);
52
+ void RNSkDispatchQueue::dispatch_thread_handler(void) {
53
+ std::unique_lock<std::mutex> lock(lock_);
62
54
 
63
- do
64
- {
65
- // Wait until we have data or a quit signal
66
- cv_.wait(lock, [this]
67
- { return (q_.size() || quit_); });
55
+ do {
56
+ // Wait until we have data or a quit signal
57
+ cv_.wait(lock, [this] { return (q_.size() || quit_); });
68
58
 
69
- // after wait, we own the lock
70
- if (!quit_ && q_.size())
71
- {
72
- auto op = std::move(q_.front());
73
- q_.pop();
59
+ // after wait, we own the lock
60
+ if (!quit_ && q_.size()) {
61
+ auto op = std::move(q_.front());
62
+ q_.pop();
74
63
 
75
- // unlock now that we're done messing with the queue
76
- lock.unlock();
64
+ // unlock now that we're done messing with the queue
65
+ lock.unlock();
77
66
 
78
- op();
67
+ op();
79
68
 
80
- lock.lock();
81
- }
82
- } while (!quit_);
83
- }
69
+ lock.lock();
70
+ }
71
+ } while (!quit_);
72
+ }
84
73
  } // namespace RNSkia
@@ -1,3 +1,5 @@
1
+ #pragma once
2
+
1
3
  #include <condition_variable>
2
4
  #include <cstdint>
3
5
  #include <cstdio>
@@ -15,7 +17,7 @@ class RNSkDispatchQueue {
15
17
  typedef std::function<void(void)> fp_t;
16
18
 
17
19
  public:
18
- RNSkDispatchQueue(std::string name, size_t thread_cnt = 1);
20
+ explicit RNSkDispatchQueue(std::string name, size_t thread_cnt = 1);
19
21
 
20
22
  ~RNSkDispatchQueue();
21
23
 
@@ -13,11 +13,9 @@
13
13
 
14
14
  namespace RNSkia {
15
15
 
16
- using namespace facebook;
17
- using namespace RNJsi;
18
- using namespace std::chrono;
16
+ namespace jsi = facebook::jsi;
19
17
 
20
- class RNSkInfoObject : public JsiHostObject {
18
+ class RNSkInfoObject : public RNJsi::JsiHostObject {
21
19
  public:
22
20
  JSI_PROPERTY_GET(width) { return _width; }
23
21
  JSI_PROPERTY_GET(height) { return _height; }
@@ -34,9 +32,10 @@ public:
34
32
  touchObj.setProperty(runtime, "x", t.x);
35
33
  touchObj.setProperty(runtime, "y", t.y);
36
34
  touchObj.setProperty(runtime, "force", t.force);
37
- touchObj.setProperty(runtime, "type", (double)t.type);
38
- touchObj.setProperty(runtime, "timestamp", (double)t.timestamp / 1000.0);
39
- touchObj.setProperty(runtime, "id", (double)t.id);
35
+ touchObj.setProperty(runtime, "type", static_cast<double>(t.type));
36
+ touchObj.setProperty(runtime, "timestamp",
37
+ static_cast<double>(t.timestamp / 1000.0));
38
+ touchObj.setProperty(runtime, "id", static_cast<double>(t.id));
40
39
  touches.setValueAtIndex(runtime, n, touchObj);
41
40
  }
42
41
  ops.setValueAtIndex(runtime, i, touches);
@@ -67,13 +66,14 @@ public:
67
66
 
68
67
  void endDrawOperation() { _touchesCache.clear(); }
69
68
 
70
- void updateTouches(std::vector<RNSkTouchInfo>& touches) {
69
+ void updateTouches(std::vector<RNSkTouchInfo> &touches) {
71
70
  std::lock_guard<std::mutex> lock(_mutex);
72
71
  // Add timestamp
73
- auto ms = std::chrono::duration_cast<milliseconds>(
74
- system_clock::now().time_since_epoch()).count();
75
-
76
- for(size_t i=0; i<touches.size(); i++) {
72
+ auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(
73
+ std::chrono::system_clock::now().time_since_epoch())
74
+ .count();
75
+
76
+ for (size_t i = 0; i < touches.size(); i++) {
77
77
  touches.at(i).timestamp = ms;
78
78
  }
79
79
  _currentTouches.push_back(std::move(touches));