@shopify/react-native-skia 0.1.157 → 0.1.159

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 (482) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +31 -30
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkContourMeasure.h +7 -5
  11. package/cpp/api/JsiSkHostObjects.h +6 -0
  12. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  13. package/cpp/api/JsiSkPaint.h +9 -2
  14. package/cpp/api/JsiSkPath.h +1 -0
  15. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  16. package/cpp/jsi/JsiHostObject.cpp +16 -28
  17. package/cpp/jsi/JsiHostObject.h +127 -7
  18. package/cpp/jsi/JsiValue.cpp +346 -0
  19. package/cpp/jsi/JsiValue.h +222 -0
  20. package/cpp/jsi/JsiValueWrapper.h +33 -5
  21. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  22. package/cpp/rnskia/RNSkDomView.h +140 -0
  23. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  24. package/cpp/rnskia/RNSkJsView.h +6 -4
  25. package/cpp/rnskia/RNSkManager.cpp +7 -0
  26. package/cpp/rnskia/RNSkPictureView.h +5 -8
  27. package/cpp/rnskia/RNSkView.h +113 -5
  28. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  29. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  30. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  32. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  33. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  34. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  35. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  36. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  37. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  38. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  39. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  40. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  42. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  44. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  45. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  46. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  47. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  48. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  49. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  50. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  51. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  54. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  55. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  56. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  57. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  58. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  59. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  61. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  62. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  63. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  64. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  66. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  69. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  70. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  71. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  72. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  73. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  74. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  75. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  76. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  77. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  78. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  79. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  80. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  81. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  82. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  83. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  84. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  85. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  86. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  87. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  88. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  89. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  90. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  91. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  92. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  93. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  94. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  95. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  96. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  97. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  98. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  99. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  100. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  101. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  102. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  103. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  104. package/cpp/skia/include/codec/SkCodec.h +8 -5
  105. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  106. package/cpp/skia/include/core/SkBitmap.h +52 -1
  107. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  108. package/cpp/skia/include/core/SkCanvas.h +52 -31
  109. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  110. package/cpp/skia/include/core/SkColor.h +7 -0
  111. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  112. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  113. package/cpp/skia/include/core/SkFont.h +4 -0
  114. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  115. package/cpp/skia/include/core/SkGraphics.h +9 -0
  116. package/cpp/skia/include/core/SkImage.h +77 -17
  117. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  118. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  119. package/cpp/skia/include/core/SkM44.h +1 -0
  120. package/cpp/skia/include/core/SkMesh.h +120 -34
  121. package/cpp/skia/include/core/SkMilestone.h +1 -1
  122. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  123. package/cpp/skia/include/core/SkPaint.h +15 -2
  124. package/cpp/skia/include/core/SkPath.h +4 -0
  125. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  126. package/cpp/skia/include/core/SkPicture.h +0 -3
  127. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  128. package/cpp/skia/include/core/SkPixmap.h +19 -0
  129. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  130. package/cpp/skia/include/core/SkRect.h +11 -4
  131. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  132. package/cpp/skia/include/core/SkRegion.h +6 -0
  133. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  134. package/cpp/skia/include/core/SkScalar.h +6 -25
  135. package/cpp/skia/include/core/SkShader.h +20 -12
  136. package/cpp/skia/include/core/SkSpan.h +51 -19
  137. package/cpp/skia/include/core/SkStream.h +2 -2
  138. package/cpp/skia/include/core/SkString.h +11 -3
  139. package/cpp/skia/include/core/SkSurface.h +85 -8
  140. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  141. package/cpp/skia/include/core/SkTypes.h +11 -10
  142. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  143. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  144. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  145. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  146. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  147. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  149. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  150. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  151. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  152. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  153. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  154. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  155. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  156. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  157. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  158. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  159. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  160. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  161. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  162. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  163. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  164. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  165. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  166. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  167. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  168. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  169. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  170. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  171. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  172. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  173. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  174. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  175. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  176. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  177. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  178. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  179. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  180. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  181. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  182. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  183. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  184. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  185. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  186. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  187. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  188. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  189. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  190. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  191. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  192. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  193. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  194. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  195. package/cpp/skia/include/private/SkColorData.h +10 -40
  196. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  197. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  198. package/cpp/skia/include/private/SkHalf.h +5 -52
  199. package/cpp/skia/include/private/SkMacros.h +1 -1
  200. package/cpp/skia/include/private/SkMalloc.h +4 -0
  201. package/cpp/skia/include/private/SkPathRef.h +10 -10
  202. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  203. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  204. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  205. package/cpp/skia/include/private/SkStringView.h +4 -0
  206. package/cpp/skia/include/private/SkTArray.h +21 -7
  207. package/cpp/skia/include/private/SkTDArray.h +173 -285
  208. package/cpp/skia/include/private/SkTHash.h +33 -32
  209. package/cpp/skia/include/private/SkTemplates.h +24 -26
  210. package/cpp/skia/include/private/SkVx.h +218 -135
  211. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  212. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  213. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  214. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  215. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  216. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  217. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  218. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  219. package/cpp/skia/include/sksl/DSL.h +0 -1
  220. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  221. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  222. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  223. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  224. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  225. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  226. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  227. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  228. package/cpp/skia/include/sksl/DSLType.h +20 -12
  229. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  230. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  231. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  232. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  233. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  234. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  235. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  236. package/cpp/skia/include/utils/SkBase64.h +2 -0
  237. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  238. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  239. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  240. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  241. package/cpp/skia/include/utils/SkParse.h +3 -0
  242. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  243. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  244. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  245. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  246. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  247. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  248. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  249. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  250. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  251. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  254. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  255. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  256. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  257. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  258. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  259. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  260. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  261. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  262. package/cpp/utils/RNSkTimingInfo.h +1 -0
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  264. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  266. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  267. package/lib/commonjs/dom/nodes/DrawingNode.js +1 -5
  268. package/lib/commonjs/dom/nodes/DrawingNode.js.map +1 -1
  269. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  270. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  271. package/lib/commonjs/dom/nodes/RenderNode.js +3 -9
  272. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  273. package/lib/commonjs/dom/nodes/drawings/Text.js +4 -9
  274. package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
  275. package/lib/commonjs/dom/types/Common.js.map +1 -1
  276. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  277. package/lib/commonjs/mock/index.js +0 -1
  278. package/lib/commonjs/mock/index.js.map +1 -1
  279. package/lib/commonjs/renderer/Canvas.js +21 -57
  280. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  281. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  282. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  283. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  284. package/lib/commonjs/renderer/components/Mask.js +1 -3
  285. package/lib/commonjs/renderer/components/Mask.js.map +1 -1
  286. package/lib/commonjs/renderer/components/Paint.js +5 -18
  287. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  288. package/lib/commonjs/renderer/useCanvas.js +8 -6
  289. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  290. package/lib/commonjs/skia/core/Picture.js +1 -24
  291. package/lib/commonjs/skia/core/Picture.js.map +1 -1
  292. package/lib/commonjs/skia/core/Rect.js +1 -1
  293. package/lib/commonjs/skia/core/Rect.js.map +1 -1
  294. package/lib/commonjs/skia/types/ContourMeasure.js.map +1 -1
  295. package/lib/commonjs/skia/types/Size.js +2 -0
  296. package/lib/commonjs/skia/types/Size.js.map +1 -0
  297. package/lib/commonjs/skia/types/index.js +13 -0
  298. package/lib/commonjs/skia/types/index.js.map +1 -1
  299. package/lib/commonjs/skia/web/JsiSkColor.js +8 -0
  300. package/lib/commonjs/skia/web/JsiSkColor.js.map +1 -1
  301. package/lib/commonjs/skia/web/JsiSkContourMeasure.js +4 -7
  302. package/lib/commonjs/skia/web/JsiSkContourMeasure.js.map +1 -1
  303. package/lib/commonjs/values/web/RNSkReadonlyValue.js +4 -2
  304. package/lib/commonjs/values/web/RNSkReadonlyValue.js.map +1 -1
  305. package/lib/commonjs/views/SkiaBaseWebView.js +9 -2
  306. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  307. package/lib/commonjs/views/SkiaDomView.js +152 -0
  308. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  309. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  310. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  311. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  312. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  313. package/lib/commonjs/views/SkiaView.js +17 -2
  314. package/lib/commonjs/views/SkiaView.js.map +1 -1
  315. package/lib/commonjs/views/index.js +13 -0
  316. package/lib/commonjs/views/index.js.map +1 -1
  317. package/lib/commonjs/views/types.js.map +1 -1
  318. package/lib/module/dom/nodes/DrawingNode.js +2 -6
  319. package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
  320. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  321. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  322. package/lib/module/dom/nodes/RenderNode.js +2 -5
  323. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  324. package/lib/module/dom/nodes/drawings/Text.js +4 -9
  325. package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
  326. package/lib/module/dom/types/Common.js.map +1 -1
  327. package/lib/module/dom/types/Drawings.js.map +1 -1
  328. package/lib/module/mock/index.js +0 -1
  329. package/lib/module/mock/index.js.map +1 -1
  330. package/lib/module/renderer/Canvas.js +22 -58
  331. package/lib/module/renderer/Canvas.js.map +1 -1
  332. package/lib/module/renderer/DependencyManager.js +0 -5
  333. package/lib/module/renderer/DependencyManager.js.map +1 -1
  334. package/lib/module/renderer/HostComponents.js.map +1 -1
  335. package/lib/module/renderer/components/Mask.js +2 -4
  336. package/lib/module/renderer/components/Mask.js.map +1 -1
  337. package/lib/module/renderer/components/Paint.js +3 -14
  338. package/lib/module/renderer/components/Paint.js.map +1 -1
  339. package/lib/module/renderer/useCanvas.js +6 -4
  340. package/lib/module/renderer/useCanvas.js.map +1 -1
  341. package/lib/module/skia/core/Picture.js +0 -18
  342. package/lib/module/skia/core/Picture.js.map +1 -1
  343. package/lib/module/skia/core/Rect.js +1 -1
  344. package/lib/module/skia/core/Rect.js.map +1 -1
  345. package/lib/module/skia/types/ContourMeasure.js.map +1 -1
  346. package/lib/module/skia/types/Size.js +2 -0
  347. package/lib/module/skia/types/Size.js.map +1 -0
  348. package/lib/module/skia/types/index.js +1 -0
  349. package/lib/module/skia/types/index.js.map +1 -1
  350. package/lib/module/skia/web/JsiSkColor.js +8 -0
  351. package/lib/module/skia/web/JsiSkColor.js.map +1 -1
  352. package/lib/module/skia/web/JsiSkContourMeasure.js +3 -7
  353. package/lib/module/skia/web/JsiSkContourMeasure.js.map +1 -1
  354. package/lib/module/values/web/RNSkReadonlyValue.js +4 -2
  355. package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -1
  356. package/lib/module/views/SkiaBaseWebView.js +9 -2
  357. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  358. package/lib/module/views/SkiaDomView.js +128 -0
  359. package/lib/module/views/SkiaDomView.js.map +1 -0
  360. package/lib/module/views/SkiaDomView.web.js +41 -0
  361. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  362. package/lib/module/views/SkiaPictureView.js +14 -2
  363. package/lib/module/views/SkiaPictureView.js.map +1 -1
  364. package/lib/module/views/SkiaView.js +15 -2
  365. package/lib/module/views/SkiaView.js.map +1 -1
  366. package/lib/module/views/index.js +1 -0
  367. package/lib/module/views/index.js.map +1 -1
  368. package/lib/module/views/types.js.map +1 -1
  369. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  370. package/lib/typescript/src/dom/nodes/RenderNode.d.ts +1 -3
  371. package/lib/typescript/src/dom/types/Common.d.ts +2 -3
  372. package/lib/typescript/src/dom/types/Drawings.d.ts +1 -3
  373. package/lib/typescript/src/renderer/Canvas.d.ts +5 -5
  374. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  375. package/lib/typescript/src/renderer/HostComponents.d.ts +67 -8
  376. package/lib/typescript/src/renderer/components/Paint.d.ts +3 -4
  377. package/lib/typescript/src/renderer/useCanvas.d.ts +1 -6
  378. package/lib/typescript/src/skia/core/Picture.d.ts +0 -8
  379. package/lib/typescript/src/skia/types/ContourMeasure.d.ts +3 -2
  380. package/lib/typescript/src/skia/types/Size.d.ts +4 -0
  381. package/lib/typescript/src/skia/types/index.d.ts +1 -0
  382. package/lib/typescript/src/skia/web/JsiSkContourMeasure.d.ts +2 -6
  383. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  384. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  385. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  386. package/lib/typescript/src/views/index.d.ts +1 -0
  387. package/lib/typescript/src/views/types.d.ts +12 -2
  388. package/libs/android/arm64-v8a/libskia.a +0 -0
  389. package/libs/android/arm64-v8a/libskottie.a +0 -0
  390. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  391. package/libs/android/arm64-v8a/libsksg.a +0 -0
  392. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  393. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  394. package/libs/android/arm64-v8a/libsvg.a +0 -0
  395. package/libs/android/armeabi-v7a/libskia.a +0 -0
  396. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  397. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  398. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  399. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  400. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  401. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  402. package/libs/android/x86/libskia.a +0 -0
  403. package/libs/android/x86/libskottie.a +0 -0
  404. package/libs/android/x86/libskparagraph.a +0 -0
  405. package/libs/android/x86/libsksg.a +0 -0
  406. package/libs/android/x86/libskshaper.a +0 -0
  407. package/libs/android/x86/libskunicode.a +0 -0
  408. package/libs/android/x86/libsvg.a +0 -0
  409. package/libs/android/x86_64/libskia.a +0 -0
  410. package/libs/android/x86_64/libskottie.a +0 -0
  411. package/libs/android/x86_64/libskparagraph.a +0 -0
  412. package/libs/android/x86_64/libsksg.a +0 -0
  413. package/libs/android/x86_64/libskshaper.a +0 -0
  414. package/libs/android/x86_64/libskunicode.a +0 -0
  415. package/libs/android/x86_64/libsvg.a +0 -0
  416. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  417. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  418. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  419. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  420. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  421. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  422. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  423. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  424. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  425. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  426. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  427. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  428. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  429. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  430. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  431. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  432. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  433. package/package.json +6 -4
  434. package/react-native-skia.podspec +3 -1
  435. package/src/dom/nodes/DrawingNode.ts +2 -4
  436. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  437. package/src/dom/nodes/RenderNode.ts +2 -14
  438. package/src/dom/nodes/drawings/Text.ts +4 -4
  439. package/src/dom/types/Common.ts +2 -4
  440. package/src/dom/types/Drawings.ts +1 -4
  441. package/src/mock/index.ts +0 -1
  442. package/src/renderer/Canvas.tsx +32 -51
  443. package/src/renderer/DependencyManager.tsx +0 -5
  444. package/src/renderer/HostComponents.ts +153 -5
  445. package/src/renderer/components/Mask.tsx +2 -2
  446. package/src/renderer/components/Paint.tsx +3 -14
  447. package/src/renderer/useCanvas.ts +5 -5
  448. package/src/skia/core/Picture.ts +0 -24
  449. package/src/skia/core/Rect.ts +1 -1
  450. package/src/skia/types/ContourMeasure.tsx +3 -2
  451. package/src/skia/types/Size.ts +4 -0
  452. package/src/skia/types/index.ts +1 -0
  453. package/src/skia/web/JsiSkColor.ts +11 -0
  454. package/src/skia/web/JsiSkContourMeasure.ts +7 -3
  455. package/src/values/web/RNSkReadonlyValue.ts +4 -2
  456. package/src/views/SkiaBaseWebView.tsx +6 -2
  457. package/src/views/SkiaDomView.tsx +120 -0
  458. package/src/views/SkiaDomView.web.tsx +37 -0
  459. package/src/views/SkiaPictureView.tsx +10 -2
  460. package/src/views/SkiaView.tsx +11 -3
  461. package/src/views/index.ts +1 -0
  462. package/src/views/types.ts +19 -2
  463. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  464. package/cpp/skia/include/c/sk_canvas.h +0 -159
  465. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  466. package/cpp/skia/include/c/sk_data.h +0 -65
  467. package/cpp/skia/include/c/sk_image.h +0 -71
  468. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  469. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  470. package/cpp/skia/include/c/sk_matrix.h +0 -49
  471. package/cpp/skia/include/c/sk_paint.h +0 -145
  472. package/cpp/skia/include/c/sk_path.h +0 -102
  473. package/cpp/skia/include/c/sk_picture.h +0 -70
  474. package/cpp/skia/include/c/sk_shader.h +0 -143
  475. package/cpp/skia/include/c/sk_surface.h +0 -73
  476. package/cpp/skia/include/c/sk_types.h +0 -278
  477. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  478. package/cpp/skia/include/private/SkNx.h +0 -430
  479. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  480. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  481. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  482. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -1,11 +1,6 @@
1
1
  project(RNSkia)
2
2
  cmake_minimum_required(VERSION 3.4.1)
3
3
 
4
- if(${BUILD_TYPE} STREQUAL "debug")
5
- set (CMAKE_BUILD_TYPE Debug)
6
- message("-- Building with Debug Symbols")
7
- endif()
8
-
9
4
  set (CMAKE_VERBOSE_MAKEFILE ON)
10
5
  set (CMAKE_CXX_STANDARD 17)
11
6
  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSK_GL -DSK_BUILD_FOR_ANDROID -DFOLLY_NO_CONFIG=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -DFOLLY_HAVE_MEMRCHR=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_MOBILE=1 -DON_ANDROID -DONANDROID")
@@ -14,12 +9,19 @@ set (PACKAGE_NAME "reactskia")
14
9
  set (SKIA_LIB "skia")
15
10
  set (SKIA_SVG_LIB "svg")
16
11
  set (SKIA_SKSHAPER_LIB "skshaper")
12
+ set (SKIA_SKPARAGRAPH_LIB "skparagraph")
13
+ set (SKIA_SKUNICODE_LIB "skunicode")
17
14
 
18
15
  set(build_DIR ${CMAKE_SOURCE_DIR}/build)
19
16
  file(GLOB LIBRN_DIR "${PREBUILT_DIR}/${ANDROID_ABI}")
20
17
  file(GLOB libfbjni_link_DIRS "${build_DIR}/fbjni*.aar/jni/${ANDROID_ABI}")
21
18
  file(GLOB libfbjni_include_DIRS "${build_DIR}/fbjni-*-headers.jar/")
22
19
 
20
+ message("-- ABI : " ${ANDROID_ABI})
21
+ message("-- PREBUILT: " ${PREBUILT_DIR})
22
+ message("-- BUILD : " ${build_DIR})
23
+ message("-- LIBRN : " ${LIBRN_DIR})
24
+
23
25
  link_directories(../libs/android/${ANDROID_ABI}/)
24
26
 
25
27
  if(${REACT_NATIVE_VERSION} LESS 66)
@@ -41,11 +43,15 @@ add_library(
41
43
  "${PROJECT_SOURCE_DIR}/cpp/rnskia-android/SkiaOpenGLRenderer.cpp"
42
44
 
43
45
  "${PROJECT_SOURCE_DIR}/cpp/jsi/JsiHostObject.cpp"
46
+ "${PROJECT_SOURCE_DIR}/cpp/jsi/JsiValue.cpp"
44
47
 
45
48
  "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkManager.cpp"
46
49
  "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkJsView.cpp"
50
+ "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkDomView.cpp"
47
51
  "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkDispatchQueue.cpp"
48
52
 
53
+ "${PROJECT_SOURCE_DIR}/cpp/rnskia/dom/base/DrawingContext.cpp"
54
+
49
55
  "${PROJECT_SOURCE_DIR}/cpp/api/third_party/CSSColorParser.cpp"
50
56
 
51
57
  )
@@ -66,6 +72,7 @@ target_include_directories(
66
72
  cpp/skia/include/utils/
67
73
  cpp/skia/include/pathops/
68
74
  cpp/skia/modules/
75
+ cpp/skia/modules/skparagraph/include/
69
76
  cpp/skia/include/
70
77
  cpp/skia
71
78
 
@@ -75,6 +82,10 @@ target_include_directories(
75
82
  cpp/rnskia-android
76
83
  cpp/rnskia
77
84
  cpp/rnskia/values
85
+ cpp/rnskia/dom
86
+ cpp/rnskia/dom/base
87
+ cpp/rnskia/dom/nodes
88
+ cpp/rnskia/dom/props
78
89
  cpp/utils
79
90
 
80
91
  ${libfbjni_include_DIRS}
@@ -82,6 +93,7 @@ target_include_directories(
82
93
 
83
94
  # Import prebuilt SKIA libraries
84
95
  set (SKIA_LIBS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../libs/android/${ANDROID_ABI}")
96
+
85
97
  add_library(skia STATIC IMPORTED)
86
98
  set_property(TARGET skia PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskia.a")
87
99
 
@@ -91,18 +103,20 @@ set_property(TARGET svg PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libsvg.a")
91
103
  add_library(skshaper STATIC IMPORTED)
92
104
  set_property(TARGET skshaper PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskshaper.a")
93
105
 
106
+ add_library(skparagraph STATIC IMPORTED)
107
+ set_property(TARGET skparagraph PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskparagraph.a")
108
+
109
+ add_library(skunicode STATIC IMPORTED)
110
+ set_property(TARGET skunicode PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskunicode.a")
111
+
94
112
 
95
113
  find_library(
96
114
  LOG_LIB
97
115
  log
98
116
  )
99
117
 
100
- find_library(
101
- JSI_LIB
102
- jsi
103
- PATHS ${LIBRN_DIR}
104
- NO_CMAKE_FIND_ROOT_PATH
105
- )
118
+ message("-- LOG : " ${LOG_LIB})
119
+
106
120
  if(${REACT_NATIVE_VERSION} LESS 66)
107
121
  # JSI lib didn't exist on RN 0.65 and before. Simply omit it.
108
122
  set (JSI_LIB "")
@@ -116,6 +130,8 @@ find_library(
116
130
  )
117
131
  endif()
118
132
 
133
+ message("-- JSI : " ${JSI_LIB})
134
+
119
135
  find_library(
120
136
  REACT_LIB
121
137
  react_nativemodule_core
@@ -123,6 +139,8 @@ find_library(
123
139
  NO_CMAKE_FIND_ROOT_PATH
124
140
  )
125
141
 
142
+ message("-- REACT : " ${REACT_LIB})
143
+
126
144
  find_library(
127
145
  FBJNI_LIBRARY
128
146
  fbjni
@@ -130,6 +148,8 @@ find_library(
130
148
  NO_CMAKE_FIND_ROOT_PATH
131
149
  )
132
150
 
151
+ message("-- FBJNI : " ${FBJNI_LIBRARY})
152
+
133
153
  find_library(
134
154
  TURBOMODULES_LIB
135
155
  turbomodulejsijni
@@ -137,6 +157,8 @@ find_library(
137
157
  NO_CMAKE_FIND_ROOT_PATH
138
158
  )
139
159
 
160
+ message("-- TURBO : " ${TURBOMODULES_LIB})
161
+
140
162
  # Link
141
163
  target_link_libraries(
142
164
  ${PACKAGE_NAME}
@@ -147,6 +169,8 @@ target_link_libraries(
147
169
  ${TURBOMODULES_LIB}
148
170
  ${SKIA_SVG_LIB}
149
171
  ${SKIA_SKSHAPER_LIB}
172
+ ${SKIA_SKPARAGRAPH_LIB}
173
+ ${SKIA_SKUNICODE_LIB}
150
174
  ${SKIA_LIB}
151
175
  -ljnigraphics
152
176
  -lGLESv2
@@ -48,26 +48,14 @@ logger.warn("react-native-skia: node_modules/ found at: ${nodeModules}")
48
48
 
49
49
  def sourceBuild = false
50
50
  def defaultDir = null
51
- def androidSourcesDir = null
52
- def androidSourcesName = 'React Native sources'
53
-
54
- def buildType = "debug"
55
- tasks.all({ task ->
56
- if (task.name == "buildCMakeRelease") {
57
- buildType = "release"
58
- }
59
- })
60
51
 
61
52
  if (rootProject.ext.has('reactNativeAndroidRoot')) {
62
53
  defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
63
- androidSourcesDir = defaultDir.parentFile.toString()
64
54
  } else if (findProject(':ReactAndroid') != null) {
65
55
  sourceBuild = true
66
56
  defaultDir = project(':ReactAndroid').projectDir
67
- androidSourcesDir = defaultDir.parentFile.toString()
68
57
  } else {
69
58
  defaultDir = file("$nodeModules/react-native/android")
70
- androidSourcesDir = defaultDir.parentFile.toString()
71
59
  }
72
60
 
73
61
  if (!defaultDir.exists()) {
@@ -81,14 +69,24 @@ def prebuiltDir = sourceBuild
81
69
  : "$buildDir/react-native-0*/jni"
82
70
 
83
71
 
72
+ def buildType = "debug"
73
+ if (gradle.startParameter.taskRequests.args[0].toString().contains("Release")) {
74
+ buildType = "release"
75
+ } else if (gradle.startParameter.taskRequests.args[0].toString().contains("Debug")) {
76
+ buildType = "debug"
77
+ }
78
+
84
79
  def reactProperties = new Properties()
85
80
  file("$nodeModules/react-native/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) }
86
- def REACT_NATIVE_VERSION = reactProperties.getProperty("VERSION_NAME").split("\\.")[1].toInteger()
81
+ def FULL_RN_VERSION = reactProperties.getProperty("VERSION_NAME")
82
+ def REACT_NATIVE_VERSION = FULL_RN_VERSION.split("\\.")[1].toInteger()
87
83
 
88
- logger.warn("react-native-skia: React Native version: ${REACT_NATIVE_VERSION}")
89
- logger.warn("react-native-skia: Is Source build: ${sourceBuild}")
90
- logger.warn("react-native-skia: Prebuilt dir: ${prebuiltDir}")
91
- logger.warn("react-native-skia: Build type: ${buildType}")
84
+ logger.warn("react-native-skia: RN Version: ${REACT_NATIVE_VERSION} / ${FULL_RN_VERSION}")
85
+ logger.warn("react-native-skia: isSourceBuild: ${sourceBuild}")
86
+ logger.warn("react-native-skia: PrebuiltDir: ${prebuiltDir}")
87
+ logger.warn("react-native-skia: buildType: ${buildType}")
88
+ logger.warn("react-native-skia: buildDir: ${buildDir}")
89
+ logger.warn("react-native-skia: node_modules: ${nodeModules}")
92
90
 
93
91
  buildscript {
94
92
  // The Android Gradle plugin is only required when opening the android folder stand-alone.
@@ -123,8 +121,7 @@ android {
123
121
  arguments '-DANDROID_STL=c++_shared',
124
122
  "-DREACT_NATIVE_VERSION=${REACT_NATIVE_VERSION}",
125
123
  "-DNODE_MODULES_DIR=${nodeModules}",
126
- "-DPREBUILT_DIR=${prebuiltDir}",
127
- "-DBUILD_TYPE=${buildType}"
124
+ "-DPREBUILT_DIR=${prebuiltDir}"
128
125
 
129
126
  }
130
127
  }
@@ -161,18 +158,23 @@ android {
161
158
  }
162
159
 
163
160
  repositories {
164
- // ref: https://www.baeldung.com/maven-local-repository
165
- jcenter()
166
- mavenLocal()
167
161
  maven {
168
162
  // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
169
- url "$rootDir/../node_modules/react-native/android"
163
+ url("$rootDir/../node_modules/react-native/android")
170
164
  }
171
165
  maven {
172
166
  // Android JSC is installed from npm
173
- url "$rootDir/../node_modules/jsc-android/dist"
167
+ url("$rootDir/../node_modules/jsc-android/dist")
168
+ }
169
+ mavenCentral {
170
+ // We don't want to fetch react-native from Maven Central as there are
171
+ // older versions over there.
172
+ content {
173
+ excludeGroup "com.facebook.react"
174
+ }
174
175
  }
175
176
  google()
177
+ maven { url 'https://www.jitpack.io' }
176
178
  }
177
179
 
178
180
  dependencies {
@@ -184,13 +186,12 @@ dependencies {
184
186
  //noinspection GradleDynamicVersion
185
187
  extractJNI("com.facebook.fbjni:fbjni:0.2.2")
186
188
 
187
- if(REACT_NATIVE_VERSION < 69) {
188
- def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include "**/**/*.aar" }).singleFile
189
- extractJNI(files(rnAAR))
190
- } else {
191
- // React Native >= 0.69
189
+ if (!sourceBuild) {
192
190
  def rnAarMatcher = "**/react-native/**/*${buildType}.aar"
193
- def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include rnAarMatcher }).singleFile
191
+ if (REACT_NATIVE_VERSION < 69) {
192
+ rnAarMatcher = "**/**/*.aar"
193
+ }
194
+ def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include rnAarMatcher }).singleFile
194
195
  extractJNI(files(rnAAR))
195
196
  }
196
197
  }
@@ -1,4 +1,5 @@
1
1
  #include "JniPlatformContext.h"
2
+ #include "JniSkiaDomView.h"
2
3
  #include "JniSkiaDrawView.h"
3
4
  #include "JniSkiaManager.h"
4
5
  #include "JniSkiaPictureView.h"
@@ -10,6 +11,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
10
11
  RNSkia::JniSkiaManager::registerNatives();
11
12
  RNSkia::JniSkiaDrawView::registerNatives();
12
13
  RNSkia::JniSkiaPictureView::registerNatives();
14
+ RNSkia::JniSkiaDomView::registerNatives();
13
15
  RNSkia::JniPlatformContext::registerNatives();
14
16
  });
15
17
  }
@@ -0,0 +1,89 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ #include <fbjni/fbjni.h>
7
+ #include <jni.h>
8
+ #include <jsi/jsi.h>
9
+
10
+ #include <JniSkiaBaseView.h>
11
+ #include <JniSkiaManager.h>
12
+ #include <RNSkAndroidView.h>
13
+ #include <RNSkDomView.h>
14
+
15
+ #include <android/native_window.h>
16
+ #include <android/native_window_jni.h>
17
+ #include <fbjni/detail/Hybrid.h>
18
+
19
+ namespace RNSkia {
20
+
21
+ namespace jsi = facebook::jsi;
22
+ namespace jni = facebook::jni;
23
+
24
+ class JniSkiaDomView : public jni::HybridClass<JniSkiaDomView>,
25
+ public JniSkiaBaseView {
26
+ public:
27
+ static auto constexpr kJavaDescriptor =
28
+ "Lcom/shopify/reactnative/skia/SkiaDomView;";
29
+
30
+ static jni::local_ref<jhybriddata>
31
+ initHybrid(jni::alias_ref<jhybridobject> jThis,
32
+ jni::alias_ref<JniSkiaManager::javaobject> skiaManager) {
33
+ return makeCxxInstance(jThis, skiaManager);
34
+ }
35
+
36
+ static void registerNatives() {
37
+ registerHybrid(
38
+ {makeNativeMethod("initHybrid", JniSkiaDomView::initHybrid),
39
+ makeNativeMethod("surfaceAvailable", JniSkiaDomView::surfaceAvailable),
40
+ makeNativeMethod("surfaceDestroyed", JniSkiaDomView::surfaceDestroyed),
41
+ makeNativeMethod("surfaceSizeChanged",
42
+ JniSkiaDomView::surfaceSizeChanged),
43
+ makeNativeMethod("setMode", JniSkiaDomView::setMode),
44
+ makeNativeMethod("setDebugMode", JniSkiaDomView::setDebugMode),
45
+ makeNativeMethod("updateTouchPoints",
46
+ JniSkiaDomView::updateTouchPoints),
47
+ makeNativeMethod("registerView", JniSkiaDomView::registerView),
48
+ makeNativeMethod("unregisterView", JniSkiaDomView::unregisterView)});
49
+ }
50
+
51
+ protected:
52
+ void updateTouchPoints(jni::JArrayDouble touches) override {
53
+ JniSkiaBaseView::updateTouchPoints(touches);
54
+ }
55
+
56
+ void surfaceAvailable(jobject surface, int width, int height) override {
57
+ JniSkiaBaseView::surfaceAvailable(surface, width, height);
58
+ }
59
+
60
+ void surfaceSizeChanged(int width, int height) override {
61
+ JniSkiaBaseView::surfaceSizeChanged(width, height);
62
+ }
63
+
64
+ void surfaceDestroyed() override { JniSkiaBaseView::surfaceDestroyed(); }
65
+
66
+ void setMode(std::string mode) override { JniSkiaBaseView::setMode(mode); }
67
+
68
+ void setDebugMode(bool show) override { JniSkiaBaseView::setDebugMode(show); }
69
+
70
+ void registerView(int nativeId) override {
71
+ JniSkiaBaseView::registerView(nativeId);
72
+ }
73
+
74
+ void unregisterView() override { JniSkiaBaseView::unregisterView(); }
75
+
76
+ private:
77
+ friend HybridBase;
78
+
79
+ explicit JniSkiaDomView(
80
+ jni::alias_ref<jhybridobject> jThis,
81
+ jni::alias_ref<JniSkiaManager::javaobject> skiaManager)
82
+ : JniSkiaBaseView(skiaManager,
83
+ std::make_shared<RNSkAndroidView<RNSkia::RNSkDomView>>(
84
+ skiaManager->cthis()->getPlatformContext())) {}
85
+
86
+ jni::global_ref<javaobject> javaPart_;
87
+ };
88
+
89
+ } // namespace RNSkia
@@ -6,10 +6,11 @@
6
6
 
7
7
  namespace RNSkia {
8
8
  /** Static members */
9
- std::shared_ptr<DrawingContext> SkiaOpenGLRenderer::getThreadDrawingContext() {
9
+ std::shared_ptr<OpenGLDrawingContext>
10
+ SkiaOpenGLRenderer::getThreadDrawingContext() {
10
11
  auto threadId = std::this_thread::get_id();
11
12
  if (threadContexts.count(threadId) == 0) {
12
- auto drawingContext = std::make_shared<DrawingContext>();
13
+ auto drawingContext = std::make_shared<OpenGLDrawingContext>();
13
14
  drawingContext->glContext = EGL_NO_CONTEXT;
14
15
  drawingContext->glDisplay = EGL_NO_DISPLAY;
15
16
  drawingContext->glConfig = 0;
@@ -64,7 +65,7 @@ void SkiaOpenGLRenderer::run(const std::function<void(SkCanvas *)> &cb,
64
65
  cb(_skSurface->getCanvas());
65
66
 
66
67
  // Flush
67
- _skSurface->flush();
68
+ _skSurface->flushAndSubmit();
68
69
 
69
70
  if (!eglSwapBuffers(getThreadDrawingContext()->glDisplay, _glSurface)) {
70
71
  RNSkLogger::logToConsole("eglSwapBuffers failed: %d\n", eglGetError());
@@ -26,14 +26,15 @@
26
26
  #pragma clang diagnostic pop
27
27
 
28
28
  namespace RNSkia {
29
- using DrawingContext = struct {
29
+ using OpenGLDrawingContext = struct {
30
30
  EGLContext glContext;
31
31
  EGLDisplay glDisplay;
32
32
  EGLConfig glConfig;
33
33
  sk_sp<GrDirectContext> skContext;
34
34
  };
35
35
 
36
- static std::unordered_map<std::thread::id, std::shared_ptr<DrawingContext>>
36
+ static std::unordered_map<std::thread::id,
37
+ std::shared_ptr<OpenGLDrawingContext>>
37
38
  threadContexts;
38
39
 
39
40
  enum RenderState : int {
@@ -113,7 +114,7 @@ private:
113
114
  * each new view, we track the OpenGL and Skia drawing context per thread.
114
115
  * @return The drawing context for the current thread
115
116
  */
116
- static std::shared_ptr<DrawingContext> getThreadDrawingContext();
117
+ static std::shared_ptr<OpenGLDrawingContext> getThreadDrawingContext();
117
118
 
118
119
  EGLSurface _glSurface = EGL_NO_SURFACE;
119
120
 
@@ -18,6 +18,7 @@ public class RNSkiaPackage implements ReactPackage {
18
18
 
19
19
  @Override
20
20
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
21
- return Arrays.<ViewManager>asList(new SkiaDrawViewManager(), new SkiaPictureViewManager());
21
+ return Arrays.<ViewManager>asList(new SkiaDrawViewManager(),
22
+ new SkiaPictureViewManager(), new SkiaDomViewManager());
22
23
  }
23
24
  }
@@ -0,0 +1,45 @@
1
+ package com.shopify.reactnative.skia;
2
+
3
+ import android.content.Context;
4
+
5
+ import com.facebook.jni.HybridData;
6
+ import com.facebook.jni.annotations.DoNotStrip;
7
+ import com.facebook.react.bridge.ReactContext;
8
+
9
+ public class SkiaDomView extends SkiaBaseView {
10
+ @DoNotStrip
11
+ private HybridData mHybridData;
12
+
13
+ public SkiaDomView(Context context) {
14
+ super(context);
15
+ RNSkiaModule skiaModule = ((ReactContext) context).getNativeModule(RNSkiaModule.class);
16
+ mHybridData = initHybrid(skiaModule.getSkiaManager());
17
+ }
18
+
19
+ @Override
20
+ protected void finalize() throws Throwable {
21
+ super.finalize();
22
+ mHybridData.resetNative();
23
+ }
24
+
25
+ private native HybridData initHybrid(SkiaManager skiaManager);
26
+
27
+ protected native void surfaceAvailable(Object surface, int width, int height);
28
+
29
+ protected native void surfaceSizeChanged(int width, int height);
30
+
31
+ protected native void surfaceDestroyed();
32
+
33
+ protected native void setBgColor(int color);
34
+
35
+ protected native void setMode(String mode);
36
+
37
+ protected native void setDebugMode(boolean show);
38
+
39
+ protected native void updateTouchPoints(double[] points);
40
+
41
+ protected native void registerView(int nativeId);
42
+
43
+ protected native void unregisterView();
44
+
45
+ }
@@ -0,0 +1,64 @@
1
+ package com.shopify.reactnative.skia;
2
+
3
+ import com.facebook.react.bridge.ReactContext;
4
+ import com.facebook.react.uimanager.BaseViewManager;
5
+ import com.facebook.react.uimanager.LayoutShadowNode;
6
+ import com.facebook.react.uimanager.ThemedReactContext;
7
+ import com.facebook.react.uimanager.annotations.ReactProp;
8
+
9
+ import androidx.annotation.NonNull;
10
+ import androidx.annotation.Nullable;
11
+
12
+ import java.util.HashMap;
13
+
14
+ public class SkiaDomViewManager extends BaseViewManager<SkiaDomView, LayoutShadowNode> {
15
+
16
+ @NonNull
17
+ @Override
18
+ public String getName() {
19
+ return "SkiaDomView";
20
+ }
21
+
22
+ @Override
23
+ public LayoutShadowNode createShadowNodeInstance() {
24
+ return new LayoutShadowNode();
25
+ }
26
+
27
+ @Override
28
+ public Class<? extends LayoutShadowNode> getShadowNodeClass() {
29
+ return LayoutShadowNode.class;
30
+ }
31
+
32
+ @Override
33
+ public void updateExtraData(SkiaDomView root, Object extraData) {
34
+ }
35
+
36
+ @Override
37
+ public void setNativeId(@NonNull SkiaDomView view, @Nullable String nativeId) {
38
+ super.setNativeId(view, nativeId);
39
+ int nativeIdResolved = Integer.parseInt(nativeId);
40
+ view.registerView(nativeIdResolved);
41
+ }
42
+
43
+ @ReactProp(name = "mode")
44
+ public void setMode(SkiaDomView view, String mode) {
45
+ view.setMode(mode);
46
+ }
47
+
48
+ @ReactProp(name = "debug")
49
+ public void setDebug(SkiaDomView view, boolean show) {
50
+ view.setDebugMode(show);
51
+ }
52
+
53
+ @Override
54
+ public void onDropViewInstance(@NonNull SkiaDomView view) {
55
+ super.onDropViewInstance(view);
56
+ view.unregisterView();
57
+ }
58
+
59
+ @NonNull
60
+ @Override
61
+ protected SkiaDomView createViewInstance(@NonNull ThemedReactContext reactContext) {
62
+ return new SkiaDomView(reactContext);
63
+ }
64
+ }
@@ -40,11 +40,13 @@ public:
40
40
  if (!result) {
41
41
  throw jsi::JSError(runtime, "getSegment() failed");
42
42
  }
43
- auto posTan = jsi::Object(runtime);
44
- posTan.setProperty(runtime, "px", position.x());
45
- posTan.setProperty(runtime, "py", position.y());
46
- posTan.setProperty(runtime, "tx", tangent.x());
47
- posTan.setProperty(runtime, "ty", tangent.y());
43
+ auto posTan = jsi::Array(runtime, 2);
44
+ auto pos = jsi::Object::createFromHostObject(
45
+ runtime, std::make_shared<JsiSkPoint>(getContext(), position));
46
+ auto tan = jsi::Object::createFromHostObject(
47
+ runtime, std::make_shared<JsiSkPoint>(getContext(), tangent));
48
+ posTan.setValueAtIndex(runtime, 0, pos);
49
+ posTan.setValueAtIndex(runtime, 1, tan);
48
50
  return posTan;
49
51
  }
50
52
 
@@ -54,6 +54,12 @@ public:
54
54
  T &getObject() { return _object; }
55
55
  const T &getObject() const { return _object; }
56
56
 
57
+ /**
58
+ Updates the inner object with a new version of the object.
59
+ */
60
+ void setObject(T &object) { _object = object; }
61
+ void setObject(const T &object) { _object = object; }
62
+
57
63
  private:
58
64
  /**
59
65
  * Wrapped object
@@ -204,7 +204,7 @@ public:
204
204
  JSI_HOST_FUNCTION(MakeRuntimeShader) {
205
205
  auto rtb = JsiSkRuntimeShaderBuilder::fromValue(runtime, arguments[0]);
206
206
 
207
- const char *childName = nullptr;
207
+ const char *childName = "";
208
208
  if (!arguments[1].isNull() && !arguments[1].isUndefined()) {
209
209
  childName = arguments[1].asString(runtime).utf8(runtime).c_str();
210
210
  }
@@ -184,8 +184,15 @@ public:
184
184
  std::move(context), std::make_shared<SkPaint>(std::move(paint))) {}
185
185
 
186
186
  /**
187
- Returns the underlying object from a host object of this type
188
- */
187
+ Copy from another paint
188
+ */
189
+ void fromPaint(const SkPaint &paint) {
190
+ setObject(std::make_shared<SkPaint>(std::move(paint)));
191
+ }
192
+
193
+ /**
194
+ Returns the underlying object from a host object of this type
195
+ */
189
196
  static std::shared_ptr<SkPaint> fromValue(jsi::Runtime &runtime,
190
197
  const jsi::Value &obj) {
191
198
  return obj.asObject(runtime).asHostObject<JsiSkPaint>(runtime)->getObject();
@@ -17,6 +17,7 @@
17
17
  #include <SkDashPathEffect.h>
18
18
  #include <SkParsePath.h>
19
19
  #include <SkPath.h>
20
+ #include <SkPathEffect.h>
20
21
  #include <SkPathOps.h>
21
22
  #include <SkPathTypes.h>
22
23
  #include <SkString.h>