@shopify/react-native-skia 0.1.158 → 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 (403) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +21 -25
  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/JsiSkHostObjects.h +6 -0
  11. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  12. package/cpp/api/JsiSkPaint.h +9 -2
  13. package/cpp/api/JsiSkPath.h +1 -0
  14. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  15. package/cpp/jsi/JsiHostObject.cpp +16 -28
  16. package/cpp/jsi/JsiHostObject.h +127 -7
  17. package/cpp/jsi/JsiValue.cpp +346 -0
  18. package/cpp/jsi/JsiValue.h +222 -0
  19. package/cpp/jsi/JsiValueWrapper.h +33 -5
  20. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  21. package/cpp/rnskia/RNSkDomView.h +140 -0
  22. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  23. package/cpp/rnskia/RNSkJsView.h +6 -4
  24. package/cpp/rnskia/RNSkManager.cpp +7 -0
  25. package/cpp/rnskia/RNSkPictureView.h +5 -8
  26. package/cpp/rnskia/RNSkView.h +113 -5
  27. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  28. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  29. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  30. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  32. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  33. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  34. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  35. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  36. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  37. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  38. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  39. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  40. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  42. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  44. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  45. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  46. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  47. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  48. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  49. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  50. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  51. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  54. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  55. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  56. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  57. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  58. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  59. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  61. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  62. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  63. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  64. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  66. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  69. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  70. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  71. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  72. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  73. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  74. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  75. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  76. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  77. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  78. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  79. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  80. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  81. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  82. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  83. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  84. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  85. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  86. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  87. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  88. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  89. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  90. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  91. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  92. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  93. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  94. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  95. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  96. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  97. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  98. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  99. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  100. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  101. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  102. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  103. package/cpp/skia/include/codec/SkCodec.h +8 -5
  104. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  105. package/cpp/skia/include/core/SkBitmap.h +52 -1
  106. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  107. package/cpp/skia/include/core/SkCanvas.h +52 -31
  108. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  109. package/cpp/skia/include/core/SkColor.h +7 -0
  110. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  111. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  112. package/cpp/skia/include/core/SkFont.h +4 -0
  113. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  114. package/cpp/skia/include/core/SkGraphics.h +9 -0
  115. package/cpp/skia/include/core/SkImage.h +77 -17
  116. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  117. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  118. package/cpp/skia/include/core/SkM44.h +1 -0
  119. package/cpp/skia/include/core/SkMesh.h +120 -34
  120. package/cpp/skia/include/core/SkMilestone.h +1 -1
  121. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  122. package/cpp/skia/include/core/SkPaint.h +15 -2
  123. package/cpp/skia/include/core/SkPath.h +4 -0
  124. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  125. package/cpp/skia/include/core/SkPicture.h +0 -3
  126. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  127. package/cpp/skia/include/core/SkPixmap.h +19 -0
  128. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  129. package/cpp/skia/include/core/SkRect.h +11 -4
  130. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  131. package/cpp/skia/include/core/SkRegion.h +6 -0
  132. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  133. package/cpp/skia/include/core/SkScalar.h +6 -25
  134. package/cpp/skia/include/core/SkShader.h +20 -12
  135. package/cpp/skia/include/core/SkSpan.h +51 -19
  136. package/cpp/skia/include/core/SkStream.h +2 -2
  137. package/cpp/skia/include/core/SkString.h +11 -3
  138. package/cpp/skia/include/core/SkSurface.h +85 -8
  139. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  140. package/cpp/skia/include/core/SkTypes.h +11 -10
  141. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  142. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  143. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  144. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  145. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  146. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  147. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  149. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  150. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  151. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  152. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  153. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  154. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  155. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  156. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  157. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  158. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  159. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  160. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  161. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  162. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  163. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  164. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  165. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  166. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  167. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  168. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  169. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  170. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  171. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  172. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  173. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  174. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  175. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  176. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  177. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  178. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  179. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  180. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  181. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  182. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  183. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  184. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  185. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  186. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  187. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  188. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  189. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  190. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  191. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  192. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  193. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  194. package/cpp/skia/include/private/SkColorData.h +10 -40
  195. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  196. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  197. package/cpp/skia/include/private/SkHalf.h +5 -52
  198. package/cpp/skia/include/private/SkMacros.h +1 -1
  199. package/cpp/skia/include/private/SkMalloc.h +4 -0
  200. package/cpp/skia/include/private/SkPathRef.h +10 -10
  201. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  202. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  203. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  204. package/cpp/skia/include/private/SkStringView.h +4 -0
  205. package/cpp/skia/include/private/SkTArray.h +21 -7
  206. package/cpp/skia/include/private/SkTDArray.h +173 -285
  207. package/cpp/skia/include/private/SkTHash.h +33 -32
  208. package/cpp/skia/include/private/SkTemplates.h +24 -26
  209. package/cpp/skia/include/private/SkVx.h +218 -135
  210. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  211. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  212. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  213. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  214. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  215. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  216. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  217. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  218. package/cpp/skia/include/sksl/DSL.h +0 -1
  219. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  220. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  221. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  222. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  223. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  224. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  225. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  226. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  227. package/cpp/skia/include/sksl/DSLType.h +20 -12
  228. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  229. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  230. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  231. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  232. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  233. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  234. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  235. package/cpp/skia/include/utils/SkBase64.h +2 -0
  236. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  237. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  238. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  239. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  240. package/cpp/skia/include/utils/SkParse.h +3 -0
  241. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  242. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  243. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  244. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  245. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  246. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  247. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  248. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  249. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  250. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  251. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  254. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  255. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  256. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  257. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  258. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  259. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  260. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  261. package/cpp/utils/RNSkTimingInfo.h +1 -0
  262. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  264. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  266. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  267. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  268. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  269. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  270. package/lib/commonjs/renderer/Canvas.js +19 -63
  271. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  272. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  273. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  274. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  275. package/lib/commonjs/renderer/useCanvas.js +4 -18
  276. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  277. package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
  278. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  279. package/lib/commonjs/views/SkiaDomView.js +152 -0
  280. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  281. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  282. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  283. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  284. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  285. package/lib/commonjs/views/SkiaView.js +17 -2
  286. package/lib/commonjs/views/SkiaView.js.map +1 -1
  287. package/lib/commonjs/views/index.js +13 -0
  288. package/lib/commonjs/views/index.js.map +1 -1
  289. package/lib/commonjs/views/types.js.map +1 -1
  290. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  291. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  292. package/lib/module/dom/nodes/RenderNode.js +1 -1
  293. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  294. package/lib/module/renderer/Canvas.js +20 -64
  295. package/lib/module/renderer/Canvas.js.map +1 -1
  296. package/lib/module/renderer/DependencyManager.js +0 -5
  297. package/lib/module/renderer/DependencyManager.js.map +1 -1
  298. package/lib/module/renderer/HostComponents.js.map +1 -1
  299. package/lib/module/renderer/useCanvas.js +2 -13
  300. package/lib/module/renderer/useCanvas.js.map +1 -1
  301. package/lib/module/views/SkiaBaseWebView.js +7 -0
  302. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  303. package/lib/module/views/SkiaDomView.js +128 -0
  304. package/lib/module/views/SkiaDomView.js.map +1 -0
  305. package/lib/module/views/SkiaDomView.web.js +41 -0
  306. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  307. package/lib/module/views/SkiaPictureView.js +14 -2
  308. package/lib/module/views/SkiaPictureView.js.map +1 -1
  309. package/lib/module/views/SkiaView.js +15 -2
  310. package/lib/module/views/SkiaView.js.map +1 -1
  311. package/lib/module/views/index.js +1 -0
  312. package/lib/module/views/index.js.map +1 -1
  313. package/lib/module/views/types.js.map +1 -1
  314. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  315. package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
  316. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  317. package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
  318. package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
  319. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  320. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  321. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  322. package/lib/typescript/src/views/index.d.ts +1 -0
  323. package/lib/typescript/src/views/types.d.ts +12 -2
  324. package/libs/android/arm64-v8a/libskia.a +0 -0
  325. package/libs/android/arm64-v8a/libskottie.a +0 -0
  326. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  327. package/libs/android/arm64-v8a/libsksg.a +0 -0
  328. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  329. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  330. package/libs/android/arm64-v8a/libsvg.a +0 -0
  331. package/libs/android/armeabi-v7a/libskia.a +0 -0
  332. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  333. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  334. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  335. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  336. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  337. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  338. package/libs/android/x86/libskia.a +0 -0
  339. package/libs/android/x86/libskottie.a +0 -0
  340. package/libs/android/x86/libskparagraph.a +0 -0
  341. package/libs/android/x86/libsksg.a +0 -0
  342. package/libs/android/x86/libskshaper.a +0 -0
  343. package/libs/android/x86/libskunicode.a +0 -0
  344. package/libs/android/x86/libsvg.a +0 -0
  345. package/libs/android/x86_64/libskia.a +0 -0
  346. package/libs/android/x86_64/libskottie.a +0 -0
  347. package/libs/android/x86_64/libskparagraph.a +0 -0
  348. package/libs/android/x86_64/libsksg.a +0 -0
  349. package/libs/android/x86_64/libskshaper.a +0 -0
  350. package/libs/android/x86_64/libskunicode.a +0 -0
  351. package/libs/android/x86_64/libsvg.a +0 -0
  352. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  353. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  354. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  355. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  356. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  357. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  358. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  359. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  360. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  361. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  362. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  363. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  364. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  365. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  366. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  367. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  368. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  369. package/package.json +5 -3
  370. package/react-native-skia.podspec +3 -1
  371. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  372. package/src/dom/nodes/RenderNode.ts +1 -1
  373. package/src/renderer/Canvas.tsx +32 -56
  374. package/src/renderer/DependencyManager.tsx +0 -5
  375. package/src/renderer/HostComponents.ts +152 -1
  376. package/src/renderer/useCanvas.ts +1 -15
  377. package/src/views/SkiaBaseWebView.tsx +4 -0
  378. package/src/views/SkiaDomView.tsx +120 -0
  379. package/src/views/SkiaDomView.web.tsx +37 -0
  380. package/src/views/SkiaPictureView.tsx +10 -2
  381. package/src/views/SkiaView.tsx +11 -3
  382. package/src/views/index.ts +1 -0
  383. package/src/views/types.ts +19 -2
  384. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  385. package/cpp/skia/include/c/sk_canvas.h +0 -159
  386. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  387. package/cpp/skia/include/c/sk_data.h +0 -65
  388. package/cpp/skia/include/c/sk_image.h +0 -71
  389. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  390. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  391. package/cpp/skia/include/c/sk_matrix.h +0 -49
  392. package/cpp/skia/include/c/sk_paint.h +0 -145
  393. package/cpp/skia/include/c/sk_path.h +0 -102
  394. package/cpp/skia/include/c/sk_picture.h +0 -70
  395. package/cpp/skia/include/c/sk_shader.h +0 -143
  396. package/cpp/skia/include/c/sk_surface.h +0 -73
  397. package/cpp/skia/include/c/sk_types.h +0 -278
  398. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  399. package/cpp/skia/include/private/SkNx.h +0 -430
  400. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  401. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  402. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  403. 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
  }
@@ -189,13 +186,12 @@ dependencies {
189
186
  //noinspection GradleDynamicVersion
190
187
  extractJNI("com.facebook.fbjni:fbjni:0.2.2")
191
188
 
192
- if(REACT_NATIVE_VERSION < 69) {
193
- def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include "**/**/*.aar" }).singleFile
194
- extractJNI(files(rnAAR))
195
- } else {
196
- // React Native >= 0.69
189
+ if (!sourceBuild) {
197
190
  def rnAarMatcher = "**/react-native/**/*${buildType}.aar"
198
- 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
199
195
  extractJNI(files(rnAAR))
200
196
  }
201
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
+ }
@@ -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>
@@ -99,7 +99,7 @@ public:
99
99
  throw jsi::JSError(runtime, "invalid uniform index");
100
100
  }
101
101
  auto it = getObject()->uniforms().begin() + i;
102
- return jsi::String::createFromAscii(runtime, it->name.c_str());
102
+ return jsi::String::createFromAscii(runtime, std::string(it->name));
103
103
  }
104
104
 
105
105
  JSI_HOST_FUNCTION(getUniform) {
@@ -131,41 +131,7 @@ public:
131
131
  : JsiSkWrappingSkPtrHostObject<SkRuntimeEffect>(std::move(context),
132
132
  std::move(rt)) {}
133
133
 
134
- private:
135
- sk_sp<SkData> castUniforms(jsi::Runtime &runtime, const jsi::Value &value) {
136
- auto jsiUniforms = value.asObject(runtime).asArray(runtime);
137
- auto jsiUniformsSize = jsiUniforms.size(runtime);
138
-
139
- // verify size of input uniforms
140
- if (jsiUniformsSize * sizeof(float) != getObject()->uniformSize()) {
141
- std::string msg =
142
- "Uniforms size differs from effect's uniform size. Received " +
143
- std::to_string(jsiUniformsSize) + " expected " +
144
- std::to_string(getObject()->uniformSize() / sizeof(float));
145
- throw jsi::JSError(runtime, msg.c_str());
146
- }
147
-
148
- auto uniforms = SkData::MakeUninitialized(getObject()->uniformSize());
149
-
150
- // Convert to skia uniforms
151
- const auto &u = getObject()->uniforms();
152
- for (std::size_t i = 0; i < u.size(); i++) {
153
- auto it = getObject()->uniforms().begin() + i;
154
- RuntimeEffectUniform reu = fromUniform(*it);
155
- for (std::size_t j = 0; j < reu.columns * reu.rows; ++j) {
156
- const std::size_t offset = reu.slot + j;
157
- float fValue = jsiUniforms.getValueAtIndex(runtime, offset).asNumber();
158
- int iValue = static_cast<int>(fValue);
159
- auto value = reu.isInteger ? iValue : fValue;
160
- memcpy(SkTAddOffset<void>(uniforms->writable_data(),
161
- offset * sizeof(value)),
162
- &value, sizeof(value));
163
- }
164
- }
165
- return uniforms;
166
- }
167
-
168
- RuntimeEffectUniform fromUniform(const SkRuntimeEffect::Uniform &u) {
134
+ static RuntimeEffectUniform fromUniform(const SkRuntimeEffect::Uniform &u) {
169
135
  RuntimeEffectUniform su;
170
136
  su.rows = u.count; // arrayLength
171
137
  su.columns = 1;
@@ -214,5 +180,39 @@ private:
214
180
  su.slot = static_cast<int>(u.offset / sizeof(float));
215
181
  return su;
216
182
  }
183
+
184
+ private:
185
+ sk_sp<SkData> castUniforms(jsi::Runtime &runtime, const jsi::Value &value) {
186
+ auto jsiUniforms = value.asObject(runtime).asArray(runtime);
187
+ auto jsiUniformsSize = jsiUniforms.size(runtime);
188
+
189
+ // verify size of input uniforms
190
+ if (jsiUniformsSize * sizeof(float) != getObject()->uniformSize()) {
191
+ std::string msg =
192
+ "Uniforms size differs from effect's uniform size. Received " +
193
+ std::to_string(jsiUniformsSize) + " expected " +
194
+ std::to_string(getObject()->uniformSize() / sizeof(float));
195
+ throw jsi::JSError(runtime, msg.c_str());
196
+ }
197
+
198
+ auto uniforms = SkData::MakeUninitialized(getObject()->uniformSize());
199
+
200
+ // Convert to skia uniforms
201
+ const auto &u = getObject()->uniforms();
202
+ for (std::size_t i = 0; i < u.size(); i++) {
203
+ auto it = getObject()->uniforms().begin() + i;
204
+ RuntimeEffectUniform reu = fromUniform(*it);
205
+ for (std::size_t j = 0; j < reu.columns * reu.rows; ++j) {
206
+ const std::size_t offset = reu.slot + j;
207
+ float fValue = jsiUniforms.getValueAtIndex(runtime, offset).asNumber();
208
+ int iValue = static_cast<int>(fValue);
209
+ auto value = reu.isInteger ? iValue : fValue;
210
+ memcpy(SkTAddOffset<void>(uniforms->writable_data(),
211
+ offset * sizeof(value)),
212
+ &value, sizeof(value));
213
+ }
214
+ }
215
+ return uniforms;
216
+ }
217
217
  };
218
218
  } // namespace RNSkia