@shopify/react-native-skia 0.1.158 → 0.1.159

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +21 -25
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkHostObjects.h +6 -0
  11. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  12. package/cpp/api/JsiSkPaint.h +9 -2
  13. package/cpp/api/JsiSkPath.h +1 -0
  14. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  15. package/cpp/jsi/JsiHostObject.cpp +16 -28
  16. package/cpp/jsi/JsiHostObject.h +127 -7
  17. package/cpp/jsi/JsiValue.cpp +346 -0
  18. package/cpp/jsi/JsiValue.h +222 -0
  19. package/cpp/jsi/JsiValueWrapper.h +33 -5
  20. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  21. package/cpp/rnskia/RNSkDomView.h +140 -0
  22. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  23. package/cpp/rnskia/RNSkJsView.h +6 -4
  24. package/cpp/rnskia/RNSkManager.cpp +7 -0
  25. package/cpp/rnskia/RNSkPictureView.h +5 -8
  26. package/cpp/rnskia/RNSkView.h +113 -5
  27. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  28. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  29. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  30. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  32. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  33. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  34. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  35. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  36. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  37. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  38. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  39. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  40. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  42. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  44. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  45. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  46. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  47. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  48. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  49. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  50. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  51. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  54. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  55. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  56. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  57. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  58. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  59. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  61. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  62. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  63. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  64. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  66. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  69. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  70. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  71. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  72. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  73. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  74. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  75. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  76. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  77. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  78. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  79. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  80. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  81. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  82. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  83. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  84. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  85. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  86. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  87. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  88. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  89. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  90. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  91. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  92. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  93. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  94. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  95. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  96. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  97. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  98. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  99. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  100. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  101. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  102. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  103. package/cpp/skia/include/codec/SkCodec.h +8 -5
  104. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  105. package/cpp/skia/include/core/SkBitmap.h +52 -1
  106. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  107. package/cpp/skia/include/core/SkCanvas.h +52 -31
  108. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  109. package/cpp/skia/include/core/SkColor.h +7 -0
  110. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  111. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  112. package/cpp/skia/include/core/SkFont.h +4 -0
  113. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  114. package/cpp/skia/include/core/SkGraphics.h +9 -0
  115. package/cpp/skia/include/core/SkImage.h +77 -17
  116. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  117. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  118. package/cpp/skia/include/core/SkM44.h +1 -0
  119. package/cpp/skia/include/core/SkMesh.h +120 -34
  120. package/cpp/skia/include/core/SkMilestone.h +1 -1
  121. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  122. package/cpp/skia/include/core/SkPaint.h +15 -2
  123. package/cpp/skia/include/core/SkPath.h +4 -0
  124. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  125. package/cpp/skia/include/core/SkPicture.h +0 -3
  126. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  127. package/cpp/skia/include/core/SkPixmap.h +19 -0
  128. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  129. package/cpp/skia/include/core/SkRect.h +11 -4
  130. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  131. package/cpp/skia/include/core/SkRegion.h +6 -0
  132. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  133. package/cpp/skia/include/core/SkScalar.h +6 -25
  134. package/cpp/skia/include/core/SkShader.h +20 -12
  135. package/cpp/skia/include/core/SkSpan.h +51 -19
  136. package/cpp/skia/include/core/SkStream.h +2 -2
  137. package/cpp/skia/include/core/SkString.h +11 -3
  138. package/cpp/skia/include/core/SkSurface.h +85 -8
  139. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  140. package/cpp/skia/include/core/SkTypes.h +11 -10
  141. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  142. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  143. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  144. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  145. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  146. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  147. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  149. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  150. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  151. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  152. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  153. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  154. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  155. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  156. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  157. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  158. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  159. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  160. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  161. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  162. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  163. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  164. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  165. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  166. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  167. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  168. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  169. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  170. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  171. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  172. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  173. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  174. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  175. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  176. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  177. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  178. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  179. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  180. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  181. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  182. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  183. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  184. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  185. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  186. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  187. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  188. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  189. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  190. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  191. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  192. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  193. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  194. package/cpp/skia/include/private/SkColorData.h +10 -40
  195. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  196. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  197. package/cpp/skia/include/private/SkHalf.h +5 -52
  198. package/cpp/skia/include/private/SkMacros.h +1 -1
  199. package/cpp/skia/include/private/SkMalloc.h +4 -0
  200. package/cpp/skia/include/private/SkPathRef.h +10 -10
  201. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  202. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  203. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  204. package/cpp/skia/include/private/SkStringView.h +4 -0
  205. package/cpp/skia/include/private/SkTArray.h +21 -7
  206. package/cpp/skia/include/private/SkTDArray.h +173 -285
  207. package/cpp/skia/include/private/SkTHash.h +33 -32
  208. package/cpp/skia/include/private/SkTemplates.h +24 -26
  209. package/cpp/skia/include/private/SkVx.h +218 -135
  210. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  211. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  212. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  213. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  214. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  215. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  216. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  217. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  218. package/cpp/skia/include/sksl/DSL.h +0 -1
  219. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  220. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  221. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  222. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  223. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  224. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  225. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  226. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  227. package/cpp/skia/include/sksl/DSLType.h +20 -12
  228. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  229. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  230. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  231. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  232. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  233. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  234. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  235. package/cpp/skia/include/utils/SkBase64.h +2 -0
  236. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  237. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  238. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  239. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  240. package/cpp/skia/include/utils/SkParse.h +3 -0
  241. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  242. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  243. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  244. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  245. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  246. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  247. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  248. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  249. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  250. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  251. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  254. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  255. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  256. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  257. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  258. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  259. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  260. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  261. package/cpp/utils/RNSkTimingInfo.h +1 -0
  262. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  264. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  266. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  267. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  268. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  269. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  270. package/lib/commonjs/renderer/Canvas.js +19 -63
  271. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  272. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  273. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  274. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  275. package/lib/commonjs/renderer/useCanvas.js +4 -18
  276. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  277. package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
  278. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  279. package/lib/commonjs/views/SkiaDomView.js +152 -0
  280. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  281. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  282. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  283. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  284. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  285. package/lib/commonjs/views/SkiaView.js +17 -2
  286. package/lib/commonjs/views/SkiaView.js.map +1 -1
  287. package/lib/commonjs/views/index.js +13 -0
  288. package/lib/commonjs/views/index.js.map +1 -1
  289. package/lib/commonjs/views/types.js.map +1 -1
  290. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  291. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  292. package/lib/module/dom/nodes/RenderNode.js +1 -1
  293. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  294. package/lib/module/renderer/Canvas.js +20 -64
  295. package/lib/module/renderer/Canvas.js.map +1 -1
  296. package/lib/module/renderer/DependencyManager.js +0 -5
  297. package/lib/module/renderer/DependencyManager.js.map +1 -1
  298. package/lib/module/renderer/HostComponents.js.map +1 -1
  299. package/lib/module/renderer/useCanvas.js +2 -13
  300. package/lib/module/renderer/useCanvas.js.map +1 -1
  301. package/lib/module/views/SkiaBaseWebView.js +7 -0
  302. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  303. package/lib/module/views/SkiaDomView.js +128 -0
  304. package/lib/module/views/SkiaDomView.js.map +1 -0
  305. package/lib/module/views/SkiaDomView.web.js +41 -0
  306. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  307. package/lib/module/views/SkiaPictureView.js +14 -2
  308. package/lib/module/views/SkiaPictureView.js.map +1 -1
  309. package/lib/module/views/SkiaView.js +15 -2
  310. package/lib/module/views/SkiaView.js.map +1 -1
  311. package/lib/module/views/index.js +1 -0
  312. package/lib/module/views/index.js.map +1 -1
  313. package/lib/module/views/types.js.map +1 -1
  314. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  315. package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
  316. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  317. package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
  318. package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
  319. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  320. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  321. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  322. package/lib/typescript/src/views/index.d.ts +1 -0
  323. package/lib/typescript/src/views/types.d.ts +12 -2
  324. package/libs/android/arm64-v8a/libskia.a +0 -0
  325. package/libs/android/arm64-v8a/libskottie.a +0 -0
  326. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  327. package/libs/android/arm64-v8a/libsksg.a +0 -0
  328. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  329. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  330. package/libs/android/arm64-v8a/libsvg.a +0 -0
  331. package/libs/android/armeabi-v7a/libskia.a +0 -0
  332. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  333. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  334. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  335. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  336. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  337. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  338. package/libs/android/x86/libskia.a +0 -0
  339. package/libs/android/x86/libskottie.a +0 -0
  340. package/libs/android/x86/libskparagraph.a +0 -0
  341. package/libs/android/x86/libsksg.a +0 -0
  342. package/libs/android/x86/libskshaper.a +0 -0
  343. package/libs/android/x86/libskunicode.a +0 -0
  344. package/libs/android/x86/libsvg.a +0 -0
  345. package/libs/android/x86_64/libskia.a +0 -0
  346. package/libs/android/x86_64/libskottie.a +0 -0
  347. package/libs/android/x86_64/libskparagraph.a +0 -0
  348. package/libs/android/x86_64/libsksg.a +0 -0
  349. package/libs/android/x86_64/libskshaper.a +0 -0
  350. package/libs/android/x86_64/libskunicode.a +0 -0
  351. package/libs/android/x86_64/libsvg.a +0 -0
  352. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  353. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  354. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  355. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  356. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  357. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  358. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  359. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  360. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  361. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  362. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  363. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  364. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  365. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  366. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  367. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  368. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  369. package/package.json +5 -3
  370. package/react-native-skia.podspec +3 -1
  371. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  372. package/src/dom/nodes/RenderNode.ts +1 -1
  373. package/src/renderer/Canvas.tsx +32 -56
  374. package/src/renderer/DependencyManager.tsx +0 -5
  375. package/src/renderer/HostComponents.ts +152 -1
  376. package/src/renderer/useCanvas.ts +1 -15
  377. package/src/views/SkiaBaseWebView.tsx +4 -0
  378. package/src/views/SkiaDomView.tsx +120 -0
  379. package/src/views/SkiaDomView.web.tsx +37 -0
  380. package/src/views/SkiaPictureView.tsx +10 -2
  381. package/src/views/SkiaView.tsx +11 -3
  382. package/src/views/index.ts +1 -0
  383. package/src/views/types.ts +19 -2
  384. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  385. package/cpp/skia/include/c/sk_canvas.h +0 -159
  386. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  387. package/cpp/skia/include/c/sk_data.h +0 -65
  388. package/cpp/skia/include/c/sk_image.h +0 -71
  389. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  390. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  391. package/cpp/skia/include/c/sk_matrix.h +0 -49
  392. package/cpp/skia/include/c/sk_paint.h +0 -145
  393. package/cpp/skia/include/c/sk_path.h +0 -102
  394. package/cpp/skia/include/c/sk_picture.h +0 -70
  395. package/cpp/skia/include/c/sk_shader.h +0 -143
  396. package/cpp/skia/include/c/sk_surface.h +0 -73
  397. package/cpp/skia/include/c/sk_types.h +0 -278
  398. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  399. package/cpp/skia/include/private/SkNx.h +0 -430
  400. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  401. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  402. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  403. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -16,6 +16,7 @@
16
16
  #include <memory>
17
17
  #include <string>
18
18
  #include <string_view>
19
+ #include <type_traits>
19
20
 
20
21
  #if defined(__has_cpp_attribute) && __has_cpp_attribute(clang::reinitializes)
21
22
  #define SK_CLANG_REINITIALIZES [[clang::reinitializes]]
@@ -30,10 +31,8 @@ class ExpressionArray;
30
31
 
31
32
  namespace dsl {
32
33
 
33
- class DSLPossibleExpression;
34
34
  class DSLType;
35
35
  class DSLVarBase;
36
- template <typename T> class DSLWrapper;
37
36
 
38
37
  /**
39
38
  * Represents an expression such as 'cos(x)' or 'a + b'.
@@ -84,12 +83,8 @@ public:
84
83
 
85
84
  DSLExpression(DSLVarBase&& var, Position pos = {});
86
85
 
87
- DSLExpression(DSLPossibleExpression expr, Position pos = {});
88
-
89
- explicit DSLExpression(std::unique_ptr<SkSL::Expression> expression);
90
-
91
- // If expression is null, returns Poison(pos)
92
- DSLExpression(std::unique_ptr<SkSL::Expression> expression, Position pos);
86
+ // If expression is null, returns Poison
87
+ explicit DSLExpression(std::unique_ptr<SkSL::Expression> expression, Position pos = {});
93
88
 
94
89
  static DSLExpression Poison(Position pos = {});
95
90
 
@@ -104,9 +99,9 @@ public:
104
99
  void setPosition(Position pos);
105
100
 
106
101
  /**
107
- * Overloads the '=' operator to create an SkSL assignment statement.
102
+ * Performs assignment, like the '=' operator.
108
103
  */
109
- DSLPossibleExpression operator=(DSLExpression other);
104
+ DSLExpression assign(DSLExpression other);
110
105
 
111
106
  DSLExpression x(Position pos = {});
112
107
 
@@ -132,13 +127,11 @@ public:
132
127
  /**
133
128
  * Creates an SkSL array index expression.
134
129
  */
135
- DSLPossibleExpression operator[](DSLExpression index);
130
+ DSLExpression operator[](DSLExpression index);
136
131
 
137
- DSLPossibleExpression operator()(SkTArray<DSLWrapper<DSLExpression>> args,
138
- Position pos = {});
132
+ DSLExpression operator()(SkTArray<DSLExpression, true> args, Position pos = {});
139
133
 
140
- DSLPossibleExpression operator()(ExpressionArray args,
141
- Position pos = {});
134
+ DSLExpression operator()(ExpressionArray args, Position pos = {});
142
135
 
143
136
  /**
144
137
  * Invokes a prefix operator.
@@ -193,140 +186,56 @@ private:
193
186
  friend DSLExpression SampleChild(int index, DSLExpression coords);
194
187
 
195
188
  friend class DSLCore;
196
- friend class DSLFunction;
197
- friend class DSLPossibleExpression;
198
- friend class DSLType;
199
189
  friend class DSLVarBase;
200
190
  friend class DSLWriter;
201
- template<typename T> friend class DSLWrapper;
202
191
  };
203
192
 
204
- DSLPossibleExpression operator+(DSLExpression left, DSLExpression right);
205
- DSLPossibleExpression operator+(DSLExpression expr);
206
- DSLPossibleExpression operator+=(DSLExpression left, DSLExpression right);
207
- DSLPossibleExpression operator-(DSLExpression left, DSLExpression right);
208
- DSLPossibleExpression operator-(DSLExpression expr);
209
- DSLPossibleExpression operator-=(DSLExpression left, DSLExpression right);
210
- DSLPossibleExpression operator*(DSLExpression left, DSLExpression right);
211
- DSLPossibleExpression operator*=(DSLExpression left, DSLExpression right);
212
- DSLPossibleExpression operator/(DSLExpression left, DSLExpression right);
213
- DSLPossibleExpression operator/=(DSLExpression left, DSLExpression right);
214
- DSLPossibleExpression operator%(DSLExpression left, DSLExpression right);
215
- DSLPossibleExpression operator%=(DSLExpression left, DSLExpression right);
216
- DSLPossibleExpression operator<<(DSLExpression left, DSLExpression right);
217
- DSLPossibleExpression operator<<=(DSLExpression left, DSLExpression right);
218
- DSLPossibleExpression operator>>(DSLExpression left, DSLExpression right);
219
- DSLPossibleExpression operator>>=(DSLExpression left, DSLExpression right);
220
- DSLPossibleExpression operator&&(DSLExpression left, DSLExpression right);
221
- DSLPossibleExpression operator||(DSLExpression left, DSLExpression right);
222
- DSLPossibleExpression operator&(DSLExpression left, DSLExpression right);
223
- DSLPossibleExpression operator&=(DSLExpression left, DSLExpression right);
224
- DSLPossibleExpression operator|(DSLExpression left, DSLExpression right);
225
- DSLPossibleExpression operator|=(DSLExpression left, DSLExpression right);
226
- DSLPossibleExpression operator^(DSLExpression left, DSLExpression right);
227
- DSLPossibleExpression operator^=(DSLExpression left, DSLExpression right);
228
- DSLPossibleExpression LogicalXor(DSLExpression left, DSLExpression right);
229
- DSLPossibleExpression operator,(DSLExpression left, DSLExpression right);
230
- DSLPossibleExpression operator,(DSLPossibleExpression left, DSLExpression right);
231
- DSLPossibleExpression operator,(DSLExpression left, DSLPossibleExpression right);
232
- DSLPossibleExpression operator,(DSLPossibleExpression left, DSLPossibleExpression right);
233
- DSLPossibleExpression operator==(DSLExpression left, DSLExpression right);
234
- DSLPossibleExpression operator!=(DSLExpression left, DSLExpression right);
235
- DSLPossibleExpression operator>(DSLExpression left, DSLExpression right);
236
- DSLPossibleExpression operator<(DSLExpression left, DSLExpression right);
237
- DSLPossibleExpression operator>=(DSLExpression left, DSLExpression right);
238
- DSLPossibleExpression operator<=(DSLExpression left, DSLExpression right);
239
- DSLPossibleExpression operator!(DSLExpression expr);
240
- DSLPossibleExpression operator~(DSLExpression expr);
241
- DSLPossibleExpression operator++(DSLExpression expr);
242
- DSLPossibleExpression operator++(DSLExpression expr, int);
243
- DSLPossibleExpression operator--(DSLExpression expr);
244
- DSLPossibleExpression operator--(DSLExpression expr, int);
245
-
246
- /**
247
- * Represents an Expression which may have failed and/or have pending errors to report. Converting a
248
- * PossibleExpression into an Expression requires a Position so that any pending errors can be
249
- * reported at the correct position.
250
- *
251
- * PossibleExpression is used instead of Expression in situations where it is not possible to
252
- * capture the Position at the time of Expression construction (notably in operator overloads, where
253
- * we cannot add default parameters).
254
- */
255
- class DSLPossibleExpression {
256
- public:
257
- DSLPossibleExpression(std::unique_ptr<SkSL::Expression> expression);
258
-
259
- DSLPossibleExpression(DSLPossibleExpression&& other);
260
-
261
- ~DSLPossibleExpression();
262
-
263
- bool valid() const {
264
- return fExpression != nullptr;
265
- }
266
-
267
- /**
268
- * Reports any pending errors at the specified position.
269
- */
270
- void reportErrors(Position pos);
271
-
272
- DSLType type() const;
273
-
274
- std::string description() const;
275
-
276
- Position position() const;
277
-
278
- DSLExpression x(Position pos = {});
279
-
280
- DSLExpression y(Position pos = {});
281
-
282
- DSLExpression z(Position pos = {});
283
-
284
- DSLExpression w(Position pos = {});
285
-
286
- DSLExpression r(Position pos = {});
287
-
288
- DSLExpression g(Position pos = {});
289
-
290
- DSLExpression b(Position pos = {});
291
-
292
- DSLExpression a(Position pos = {});
293
-
294
- DSLExpression field(std::string_view name, Position pos = {});
295
-
296
- DSLPossibleExpression operator=(DSLExpression expr);
297
-
298
- DSLPossibleExpression operator=(int expr);
299
-
300
- DSLPossibleExpression operator=(float expr);
301
-
302
- DSLPossibleExpression operator=(double expr);
303
-
304
- DSLPossibleExpression operator[](DSLExpression index);
305
-
306
- DSLPossibleExpression operator()(SkTArray<DSLWrapper<DSLExpression>> args,
307
- Position pos = {});
308
-
309
- DSLPossibleExpression operator()(ExpressionArray args,
310
- Position pos = {});
311
-
312
- DSLPossibleExpression operator++();
313
-
314
- DSLPossibleExpression operator++(int);
315
-
316
- DSLPossibleExpression operator--();
317
-
318
- DSLPossibleExpression operator--(int);
319
-
320
- std::unique_ptr<SkSL::Expression> release(Position pos = {});
321
-
322
- private:
323
- std::unique_ptr<SkSL::Expression> fExpression;
324
-
325
- friend class DSLExpression;
326
- };
193
+ DSLExpression operator+(DSLExpression left, DSLExpression right);
194
+ DSLExpression operator+(DSLExpression expr);
195
+ DSLExpression operator+=(DSLExpression left, DSLExpression right);
196
+ DSLExpression operator-(DSLExpression left, DSLExpression right);
197
+ DSLExpression operator-(DSLExpression expr);
198
+ DSLExpression operator-=(DSLExpression left, DSLExpression right);
199
+ DSLExpression operator*(DSLExpression left, DSLExpression right);
200
+ DSLExpression operator*=(DSLExpression left, DSLExpression right);
201
+ DSLExpression operator/(DSLExpression left, DSLExpression right);
202
+ DSLExpression operator/=(DSLExpression left, DSLExpression right);
203
+ DSLExpression operator%(DSLExpression left, DSLExpression right);
204
+ DSLExpression operator%=(DSLExpression left, DSLExpression right);
205
+ DSLExpression operator<<(DSLExpression left, DSLExpression right);
206
+ DSLExpression operator<<=(DSLExpression left, DSLExpression right);
207
+ DSLExpression operator>>(DSLExpression left, DSLExpression right);
208
+ DSLExpression operator>>=(DSLExpression left, DSLExpression right);
209
+ DSLExpression operator&&(DSLExpression left, DSLExpression right);
210
+ DSLExpression operator||(DSLExpression left, DSLExpression right);
211
+ DSLExpression operator&(DSLExpression left, DSLExpression right);
212
+ DSLExpression operator&=(DSLExpression left, DSLExpression right);
213
+ DSLExpression operator|(DSLExpression left, DSLExpression right);
214
+ DSLExpression operator|=(DSLExpression left, DSLExpression right);
215
+ DSLExpression operator^(DSLExpression left, DSLExpression right);
216
+ DSLExpression operator^=(DSLExpression left, DSLExpression right);
217
+ DSLExpression LogicalXor(DSLExpression left, DSLExpression right);
218
+ DSLExpression operator,(DSLExpression left, DSLExpression right);
219
+ DSLExpression operator==(DSLExpression left, DSLExpression right);
220
+ DSLExpression operator!=(DSLExpression left, DSLExpression right);
221
+ DSLExpression operator>(DSLExpression left, DSLExpression right);
222
+ DSLExpression operator<(DSLExpression left, DSLExpression right);
223
+ DSLExpression operator>=(DSLExpression left, DSLExpression right);
224
+ DSLExpression operator<=(DSLExpression left, DSLExpression right);
225
+ DSLExpression operator!(DSLExpression expr);
226
+ DSLExpression operator~(DSLExpression expr);
227
+ DSLExpression operator++(DSLExpression expr);
228
+ DSLExpression operator++(DSLExpression expr, int);
229
+ DSLExpression operator--(DSLExpression expr);
230
+ DSLExpression operator--(DSLExpression expr, int);
327
231
 
328
232
  } // namespace dsl
329
233
 
330
234
  } // namespace SkSL
331
235
 
236
+ template <typename T> struct sk_is_trivially_relocatable;
237
+
238
+ template <>
239
+ struct sk_is_trivially_relocatable<SkSL::dsl::DSLExpression> : std::true_type {};
240
+
332
241
  #endif
@@ -27,7 +27,6 @@ class FunctionDeclaration;
27
27
  namespace dsl {
28
28
 
29
29
  class DSLType;
30
- template <typename T> class DSLWrapper;
31
30
 
32
31
  class DSLFunction {
33
32
  public:
@@ -40,27 +39,19 @@ public:
40
39
  Parameters&... parameters) {
41
40
  SkTArray<DSLParameter*> parameterArray;
42
41
  parameterArray.reserve_back(sizeof...(parameters));
42
+ (parameterArray.push_back(&parameters), ...);
43
43
 
44
- // in C++17, we could just do:
45
- // (parameterArray.push_back(&parameters), ...);
46
- int unused[] = {0, (static_cast<void>(parameterArray.push_back(&parameters)), 0)...};
47
- static_cast<void>(unused);
48
44
  // We can't have a default parameter and a template parameter pack at the same time, so
49
45
  // unfortunately we can't capture position from this overload.
50
46
  this->init(modifiers, returnType, name, std::move(parameterArray), Position());
51
47
  }
52
48
 
53
- DSLFunction(const DSLType& returnType, std::string_view name,
54
- SkTArray<DSLParameter*> parameters, Position pos = {}) {
55
- this->init(DSLModifiers(), returnType, name, std::move(parameters), pos);
56
- }
57
-
58
- DSLFunction(const DSLModifiers& modifiers, const DSLType& returnType, std::string_view name,
49
+ DSLFunction(std::string_view name, const DSLModifiers& modifiers, const DSLType& returnType,
59
50
  SkTArray<DSLParameter*> parameters, Position pos = {}) {
60
51
  this->init(modifiers, returnType, name, std::move(parameters), pos);
61
52
  }
62
53
 
63
- DSLFunction(const SkSL::FunctionDeclaration* decl)
54
+ DSLFunction(SkSL::FunctionDeclaration* decl)
64
55
  : fDecl(decl) {}
65
56
 
66
57
  virtual ~DSLFunction() = default;
@@ -73,6 +64,8 @@ public:
73
64
 
74
65
  void define(DSLBlock block, Position pos = {});
75
66
 
67
+ void prototype();
68
+
76
69
  /**
77
70
  * Invokes the function with the given arguments.
78
71
  */
@@ -87,8 +80,7 @@ public:
87
80
  /**
88
81
  * Invokes the function with the given arguments.
89
82
  */
90
- DSLExpression call(SkTArray<DSLWrapper<DSLExpression>> args,
91
- Position pos = {});
83
+ DSLExpression call(SkTArray<DSLExpression> args, Position pos = {});
92
84
 
93
85
  DSLExpression call(ExpressionArray args, Position pos = {});
94
86
 
@@ -110,7 +102,7 @@ private:
110
102
  void init(DSLModifiers modifiers, const DSLType& returnType, std::string_view name,
111
103
  SkTArray<DSLParameter*> params, Position pos);
112
104
 
113
- const SkSL::FunctionDeclaration* fDecl = nullptr;
105
+ SkSL::FunctionDeclaration* fDecl = nullptr;
114
106
  SkSL::Position fPosition;
115
107
  };
116
108
 
@@ -39,7 +39,11 @@ public:
39
39
  : fModifiers(layout.fSkSLLayout, flags)
40
40
  , fPosition(pos) {}
41
41
 
42
- int flags() const {
42
+ int& flags() {
43
+ return fModifiers.fFlags;
44
+ }
45
+
46
+ const int& flags() const {
43
47
  return fModifiers.fFlags;
44
48
  }
45
49
 
@@ -55,7 +59,6 @@ private:
55
59
  friend class DSLCore;
56
60
  friend class DSLFunction;
57
61
  friend class DSLType;
58
- friend class DSLVarBase;
59
62
  friend class DSLWriter;
60
63
  };
61
64
 
@@ -23,8 +23,6 @@ namespace dsl {
23
23
 
24
24
  class DSLBlock;
25
25
  class DSLExpression;
26
- class DSLPossibleExpression;
27
- class DSLPossibleStatement;
28
26
 
29
27
  class DSLStatement {
30
28
  public:
@@ -32,18 +30,16 @@ public:
32
30
 
33
31
  DSLStatement(DSLExpression expr);
34
32
 
35
- DSLStatement(DSLPossibleExpression expr, Position pos = {});
36
-
37
- DSLStatement(DSLPossibleStatement stmt, Position pos = {});
38
-
39
33
  DSLStatement(DSLBlock block);
40
34
 
41
35
  DSLStatement(DSLStatement&&) = default;
42
36
 
43
- DSLStatement(std::unique_ptr<SkSL::Statement> stmt);
44
-
45
37
  DSLStatement(std::unique_ptr<SkSL::Expression> expr);
46
38
 
39
+ DSLStatement(std::unique_ptr<SkSL::Statement> stmt, Position pos);
40
+
41
+ DSLStatement(std::unique_ptr<SkSL::Statement> stmt);
42
+
47
43
  ~DSLStatement();
48
44
 
49
45
  DSLStatement& operator=(DSLStatement&& other) = default;
@@ -72,42 +68,11 @@ private:
72
68
 
73
69
  std::unique_ptr<SkSL::Statement> fStatement;
74
70
 
75
- friend class DSLBlock;
76
71
  friend class DSLCore;
77
- friend class DSLExpression;
78
- friend class DSLPossibleStatement;
79
72
  friend class DSLWriter;
80
73
  friend DSLStatement operator,(DSLStatement left, DSLStatement right);
81
74
  };
82
75
 
83
- /**
84
- * Represents a Statement which may have failed and/or have pending errors to report. Converting a
85
- * PossibleStatement into a Statement requires a Position so that any pending errors can be
86
- * reported at the correct position.
87
- *
88
- * PossibleStatement is used instead of Statement in situations where it is not possible to capture
89
- * the Position at the time of Statement construction.
90
- */
91
- class DSLPossibleStatement {
92
- public:
93
- DSLPossibleStatement(std::unique_ptr<SkSL::Statement> stmt);
94
-
95
- DSLPossibleStatement(DSLPossibleStatement&& other) = default;
96
-
97
- ~DSLPossibleStatement();
98
-
99
- bool hasValue() { return fStatement != nullptr; }
100
-
101
- std::unique_ptr<SkSL::Statement> release() {
102
- return DSLStatement(std::move(*this)).release();
103
- }
104
-
105
- private:
106
- std::unique_ptr<SkSL::Statement> fStatement;
107
-
108
- friend class DSLStatement;
109
- };
110
-
111
76
  DSLStatement operator,(DSLStatement left, DSLStatement right);
112
77
 
113
78
  } // namespace dsl
@@ -24,7 +24,7 @@ class DSLVarBase;
24
24
 
25
25
  // This header provides methods for manually managing symbol tables in DSL code. They should not be
26
26
  // used by normal hand-written DSL code, where we rely on C++ to manage symbols, but are instead
27
- // needed when DSL objects are being constructed programmatically (as in DSLParser).
27
+ // needed when DSL objects are being constructed programmatically (as in Parser).
28
28
 
29
29
  /**
30
30
  * Pushes a new symbol table onto the symbol table stack.
@@ -49,16 +49,6 @@ std::shared_ptr<SymbolTable> CurrentSymbolTable();
49
49
  */
50
50
  DSLExpression Symbol(std::string_view name, Position pos = {});
51
51
 
52
- /**
53
- * Returns true if the name refers to a type (user or built-in) in the current symbol table.
54
- */
55
- bool IsType(std::string_view name);
56
-
57
- /**
58
- * Returns true if the name refers to a builtin type.
59
- */
60
- bool IsBuiltinType(std::string_view name);
61
-
62
52
  /**
63
53
  * Adds a variable to the current symbol table.
64
54
  */
@@ -9,6 +9,7 @@
9
9
  #define SKSL_DSL_TYPE
10
10
 
11
11
  #include "include/core/SkSpan.h"
12
+ #include "include/core/SkTypes.h"
12
13
  #include "include/sksl/DSLExpression.h"
13
14
  #include "include/sksl/DSLModifiers.h"
14
15
  #include "include/sksl/SkSLPosition.h"
@@ -82,9 +83,7 @@ enum TypeConstant : uint8_t {
82
83
 
83
84
  class DSLType {
84
85
  public:
85
- DSLType(TypeConstant tc, Position pos = {})
86
- : fTypeConstant(tc)
87
- , fPosition(pos) {}
86
+ DSLType(TypeConstant tc, Position pos = {});
88
87
 
89
88
  DSLType(const SkSL::Type* type, Position pos = {});
90
89
 
@@ -94,6 +93,11 @@ public:
94
93
  DSLModifiers* modifiers,
95
94
  Position pos = {});
96
95
 
96
+ /**
97
+ * Returns true if the SkSL type is non-null.
98
+ */
99
+ bool hasValue() const { return fSkSLType != nullptr; }
100
+
97
101
  /**
98
102
  * Returns true if this type is a bool.
99
103
  */
@@ -155,28 +159,30 @@ public:
155
159
  bool isEffectChild() const;
156
160
 
157
161
  template<typename... Args>
158
- static DSLPossibleExpression Construct(DSLType type, DSLVarBase& var, Args&&... args) {
162
+ static DSLExpression Construct(DSLType type, DSLVarBase& var, Args&&... args) {
159
163
  DSLExpression argArray[] = {var, args...};
160
- return Construct(type, SkMakeSpan(argArray));
164
+ return Construct(type, SkSpan(argArray));
161
165
  }
162
166
 
163
167
  template<typename... Args>
164
- static DSLPossibleExpression Construct(DSLType type, DSLExpression expr, Args&&... args) {
168
+ static DSLExpression Construct(DSLType type, DSLExpression expr, Args&&... args) {
165
169
  DSLExpression argArray[] = {std::move(expr), std::move(args)...};
166
- return Construct(type, SkMakeSpan(argArray));
170
+ return Construct(type, SkSpan(argArray));
167
171
  }
168
172
 
169
- static DSLPossibleExpression Construct(DSLType type, SkSpan<DSLExpression> argArray);
173
+ static DSLExpression Construct(DSLType type, SkSpan<DSLExpression> argArray);
170
174
 
171
175
  private:
172
- const SkSL::Type& skslType() const;
176
+ const SkSL::Type& skslType() const {
177
+ SkASSERT(fSkSLType);
178
+ return *fSkSLType;
179
+ }
173
180
 
174
181
  const SkSL::Type* fSkSLType = nullptr;
175
- TypeConstant fTypeConstant = kPoison_Type;
176
- Position fPosition;
177
182
 
178
183
  friend DSLType Array(const DSLType& base, int count, Position pos);
179
184
  friend DSLType Struct(std::string_view name, SkSpan<DSLField> fields, Position pos);
185
+ friend DSLType UnsizedArray(const DSLType& base, Position pos);
180
186
  friend class DSLCore;
181
187
  friend class DSLFunction;
182
188
  friend class DSLVarBase;
@@ -224,6 +230,8 @@ MATRIX_TYPE(Half)
224
230
 
225
231
  DSLType Array(const DSLType& base, int count, Position pos = {});
226
232
 
233
+ DSLType UnsizedArray(const DSLType& base, Position pos = {});
234
+
227
235
  class DSLField {
228
236
  public:
229
237
  DSLField(const DSLType type, std::string_view name,
@@ -253,7 +261,7 @@ DSLType Struct(std::string_view name, SkSpan<DSLField> fields,
253
261
  template<typename... Field>
254
262
  DSLType Struct(std::string_view name, Field... fields) {
255
263
  DSLField fieldTypes[] = {std::move(fields)...};
256
- return Struct(name, SkMakeSpan(fieldTypes), Position());
264
+ return Struct(name, SkSpan(fieldTypes), Position());
257
265
  }
258
266
 
259
267
  } // namespace dsl