@shopify/react-native-skia 0.1.158 → 0.1.159

Sign up to get free protection for your applications and to get access to all the features.
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