@shopify/react-native-skia 0.1.157 → 0.1.159

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