@shopify/react-native-skia 0.1.157 → 0.1.159

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +31 -30
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkContourMeasure.h +7 -5
  11. package/cpp/api/JsiSkHostObjects.h +6 -0
  12. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  13. package/cpp/api/JsiSkPaint.h +9 -2
  14. package/cpp/api/JsiSkPath.h +1 -0
  15. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  16. package/cpp/jsi/JsiHostObject.cpp +16 -28
  17. package/cpp/jsi/JsiHostObject.h +127 -7
  18. package/cpp/jsi/JsiValue.cpp +346 -0
  19. package/cpp/jsi/JsiValue.h +222 -0
  20. package/cpp/jsi/JsiValueWrapper.h +33 -5
  21. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  22. package/cpp/rnskia/RNSkDomView.h +140 -0
  23. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  24. package/cpp/rnskia/RNSkJsView.h +6 -4
  25. package/cpp/rnskia/RNSkManager.cpp +7 -0
  26. package/cpp/rnskia/RNSkPictureView.h +5 -8
  27. package/cpp/rnskia/RNSkView.h +113 -5
  28. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  29. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  30. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  32. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  33. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  34. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  35. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  36. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  37. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  38. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  39. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  40. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  42. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  44. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  45. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  46. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  47. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  48. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  49. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  50. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  51. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  54. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  55. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  56. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  57. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  58. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  59. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  61. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  62. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  63. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  64. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  66. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  69. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  70. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  71. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  72. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  73. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  74. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  75. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  76. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  77. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  78. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  79. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  80. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  81. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  82. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  83. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  84. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  85. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  86. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  87. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  88. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  89. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  90. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  91. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  92. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  93. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  94. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  95. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  96. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  97. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  98. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  99. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  100. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  101. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  102. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  103. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  104. package/cpp/skia/include/codec/SkCodec.h +8 -5
  105. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  106. package/cpp/skia/include/core/SkBitmap.h +52 -1
  107. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  108. package/cpp/skia/include/core/SkCanvas.h +52 -31
  109. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  110. package/cpp/skia/include/core/SkColor.h +7 -0
  111. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  112. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  113. package/cpp/skia/include/core/SkFont.h +4 -0
  114. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  115. package/cpp/skia/include/core/SkGraphics.h +9 -0
  116. package/cpp/skia/include/core/SkImage.h +77 -17
  117. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  118. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  119. package/cpp/skia/include/core/SkM44.h +1 -0
  120. package/cpp/skia/include/core/SkMesh.h +120 -34
  121. package/cpp/skia/include/core/SkMilestone.h +1 -1
  122. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  123. package/cpp/skia/include/core/SkPaint.h +15 -2
  124. package/cpp/skia/include/core/SkPath.h +4 -0
  125. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  126. package/cpp/skia/include/core/SkPicture.h +0 -3
  127. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  128. package/cpp/skia/include/core/SkPixmap.h +19 -0
  129. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  130. package/cpp/skia/include/core/SkRect.h +11 -4
  131. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  132. package/cpp/skia/include/core/SkRegion.h +6 -0
  133. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  134. package/cpp/skia/include/core/SkScalar.h +6 -25
  135. package/cpp/skia/include/core/SkShader.h +20 -12
  136. package/cpp/skia/include/core/SkSpan.h +51 -19
  137. package/cpp/skia/include/core/SkStream.h +2 -2
  138. package/cpp/skia/include/core/SkString.h +11 -3
  139. package/cpp/skia/include/core/SkSurface.h +85 -8
  140. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  141. package/cpp/skia/include/core/SkTypes.h +11 -10
  142. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  143. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  144. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  145. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  146. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  147. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  149. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  150. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  151. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  152. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  153. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  154. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  155. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  156. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  157. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  158. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  159. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  160. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  161. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  162. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  163. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  164. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  165. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  166. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  167. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  168. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  169. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  170. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  171. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  172. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  173. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  174. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  175. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  176. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  177. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  178. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  179. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  180. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  181. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  182. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  183. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  184. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  185. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  186. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  187. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  188. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  189. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  190. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  191. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  192. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  193. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  194. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  195. package/cpp/skia/include/private/SkColorData.h +10 -40
  196. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  197. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  198. package/cpp/skia/include/private/SkHalf.h +5 -52
  199. package/cpp/skia/include/private/SkMacros.h +1 -1
  200. package/cpp/skia/include/private/SkMalloc.h +4 -0
  201. package/cpp/skia/include/private/SkPathRef.h +10 -10
  202. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  203. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  204. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  205. package/cpp/skia/include/private/SkStringView.h +4 -0
  206. package/cpp/skia/include/private/SkTArray.h +21 -7
  207. package/cpp/skia/include/private/SkTDArray.h +173 -285
  208. package/cpp/skia/include/private/SkTHash.h +33 -32
  209. package/cpp/skia/include/private/SkTemplates.h +24 -26
  210. package/cpp/skia/include/private/SkVx.h +218 -135
  211. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  212. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  213. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  214. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  215. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  216. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  217. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  218. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  219. package/cpp/skia/include/sksl/DSL.h +0 -1
  220. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  221. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  222. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  223. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  224. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  225. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  226. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  227. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  228. package/cpp/skia/include/sksl/DSLType.h +20 -12
  229. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  230. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  231. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  232. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  233. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  234. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  235. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  236. package/cpp/skia/include/utils/SkBase64.h +2 -0
  237. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  238. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  239. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  240. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  241. package/cpp/skia/include/utils/SkParse.h +3 -0
  242. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  243. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  244. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  245. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  246. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  247. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  248. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  249. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  250. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  251. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  254. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  255. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  256. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  257. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  258. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  259. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  260. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  261. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  262. package/cpp/utils/RNSkTimingInfo.h +1 -0
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  264. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  266. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  267. package/lib/commonjs/dom/nodes/DrawingNode.js +1 -5
  268. package/lib/commonjs/dom/nodes/DrawingNode.js.map +1 -1
  269. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  270. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  271. package/lib/commonjs/dom/nodes/RenderNode.js +3 -9
  272. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  273. package/lib/commonjs/dom/nodes/drawings/Text.js +4 -9
  274. package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
  275. package/lib/commonjs/dom/types/Common.js.map +1 -1
  276. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  277. package/lib/commonjs/mock/index.js +0 -1
  278. package/lib/commonjs/mock/index.js.map +1 -1
  279. package/lib/commonjs/renderer/Canvas.js +21 -57
  280. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  281. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  282. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  283. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  284. package/lib/commonjs/renderer/components/Mask.js +1 -3
  285. package/lib/commonjs/renderer/components/Mask.js.map +1 -1
  286. package/lib/commonjs/renderer/components/Paint.js +5 -18
  287. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  288. package/lib/commonjs/renderer/useCanvas.js +8 -6
  289. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  290. package/lib/commonjs/skia/core/Picture.js +1 -24
  291. package/lib/commonjs/skia/core/Picture.js.map +1 -1
  292. package/lib/commonjs/skia/core/Rect.js +1 -1
  293. package/lib/commonjs/skia/core/Rect.js.map +1 -1
  294. package/lib/commonjs/skia/types/ContourMeasure.js.map +1 -1
  295. package/lib/commonjs/skia/types/Size.js +2 -0
  296. package/lib/commonjs/skia/types/Size.js.map +1 -0
  297. package/lib/commonjs/skia/types/index.js +13 -0
  298. package/lib/commonjs/skia/types/index.js.map +1 -1
  299. package/lib/commonjs/skia/web/JsiSkColor.js +8 -0
  300. package/lib/commonjs/skia/web/JsiSkColor.js.map +1 -1
  301. package/lib/commonjs/skia/web/JsiSkContourMeasure.js +4 -7
  302. package/lib/commonjs/skia/web/JsiSkContourMeasure.js.map +1 -1
  303. package/lib/commonjs/values/web/RNSkReadonlyValue.js +4 -2
  304. package/lib/commonjs/values/web/RNSkReadonlyValue.js.map +1 -1
  305. package/lib/commonjs/views/SkiaBaseWebView.js +9 -2
  306. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  307. package/lib/commonjs/views/SkiaDomView.js +152 -0
  308. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  309. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  310. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  311. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  312. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  313. package/lib/commonjs/views/SkiaView.js +17 -2
  314. package/lib/commonjs/views/SkiaView.js.map +1 -1
  315. package/lib/commonjs/views/index.js +13 -0
  316. package/lib/commonjs/views/index.js.map +1 -1
  317. package/lib/commonjs/views/types.js.map +1 -1
  318. package/lib/module/dom/nodes/DrawingNode.js +2 -6
  319. package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
  320. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  321. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  322. package/lib/module/dom/nodes/RenderNode.js +2 -5
  323. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  324. package/lib/module/dom/nodes/drawings/Text.js +4 -9
  325. package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
  326. package/lib/module/dom/types/Common.js.map +1 -1
  327. package/lib/module/dom/types/Drawings.js.map +1 -1
  328. package/lib/module/mock/index.js +0 -1
  329. package/lib/module/mock/index.js.map +1 -1
  330. package/lib/module/renderer/Canvas.js +22 -58
  331. package/lib/module/renderer/Canvas.js.map +1 -1
  332. package/lib/module/renderer/DependencyManager.js +0 -5
  333. package/lib/module/renderer/DependencyManager.js.map +1 -1
  334. package/lib/module/renderer/HostComponents.js.map +1 -1
  335. package/lib/module/renderer/components/Mask.js +2 -4
  336. package/lib/module/renderer/components/Mask.js.map +1 -1
  337. package/lib/module/renderer/components/Paint.js +3 -14
  338. package/lib/module/renderer/components/Paint.js.map +1 -1
  339. package/lib/module/renderer/useCanvas.js +6 -4
  340. package/lib/module/renderer/useCanvas.js.map +1 -1
  341. package/lib/module/skia/core/Picture.js +0 -18
  342. package/lib/module/skia/core/Picture.js.map +1 -1
  343. package/lib/module/skia/core/Rect.js +1 -1
  344. package/lib/module/skia/core/Rect.js.map +1 -1
  345. package/lib/module/skia/types/ContourMeasure.js.map +1 -1
  346. package/lib/module/skia/types/Size.js +2 -0
  347. package/lib/module/skia/types/Size.js.map +1 -0
  348. package/lib/module/skia/types/index.js +1 -0
  349. package/lib/module/skia/types/index.js.map +1 -1
  350. package/lib/module/skia/web/JsiSkColor.js +8 -0
  351. package/lib/module/skia/web/JsiSkColor.js.map +1 -1
  352. package/lib/module/skia/web/JsiSkContourMeasure.js +3 -7
  353. package/lib/module/skia/web/JsiSkContourMeasure.js.map +1 -1
  354. package/lib/module/values/web/RNSkReadonlyValue.js +4 -2
  355. package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -1
  356. package/lib/module/views/SkiaBaseWebView.js +9 -2
  357. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  358. package/lib/module/views/SkiaDomView.js +128 -0
  359. package/lib/module/views/SkiaDomView.js.map +1 -0
  360. package/lib/module/views/SkiaDomView.web.js +41 -0
  361. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  362. package/lib/module/views/SkiaPictureView.js +14 -2
  363. package/lib/module/views/SkiaPictureView.js.map +1 -1
  364. package/lib/module/views/SkiaView.js +15 -2
  365. package/lib/module/views/SkiaView.js.map +1 -1
  366. package/lib/module/views/index.js +1 -0
  367. package/lib/module/views/index.js.map +1 -1
  368. package/lib/module/views/types.js.map +1 -1
  369. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  370. package/lib/typescript/src/dom/nodes/RenderNode.d.ts +1 -3
  371. package/lib/typescript/src/dom/types/Common.d.ts +2 -3
  372. package/lib/typescript/src/dom/types/Drawings.d.ts +1 -3
  373. package/lib/typescript/src/renderer/Canvas.d.ts +5 -5
  374. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  375. package/lib/typescript/src/renderer/HostComponents.d.ts +67 -8
  376. package/lib/typescript/src/renderer/components/Paint.d.ts +3 -4
  377. package/lib/typescript/src/renderer/useCanvas.d.ts +1 -6
  378. package/lib/typescript/src/skia/core/Picture.d.ts +0 -8
  379. package/lib/typescript/src/skia/types/ContourMeasure.d.ts +3 -2
  380. package/lib/typescript/src/skia/types/Size.d.ts +4 -0
  381. package/lib/typescript/src/skia/types/index.d.ts +1 -0
  382. package/lib/typescript/src/skia/web/JsiSkContourMeasure.d.ts +2 -6
  383. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  384. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  385. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  386. package/lib/typescript/src/views/index.d.ts +1 -0
  387. package/lib/typescript/src/views/types.d.ts +12 -2
  388. package/libs/android/arm64-v8a/libskia.a +0 -0
  389. package/libs/android/arm64-v8a/libskottie.a +0 -0
  390. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  391. package/libs/android/arm64-v8a/libsksg.a +0 -0
  392. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  393. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  394. package/libs/android/arm64-v8a/libsvg.a +0 -0
  395. package/libs/android/armeabi-v7a/libskia.a +0 -0
  396. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  397. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  398. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  399. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  400. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  401. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  402. package/libs/android/x86/libskia.a +0 -0
  403. package/libs/android/x86/libskottie.a +0 -0
  404. package/libs/android/x86/libskparagraph.a +0 -0
  405. package/libs/android/x86/libsksg.a +0 -0
  406. package/libs/android/x86/libskshaper.a +0 -0
  407. package/libs/android/x86/libskunicode.a +0 -0
  408. package/libs/android/x86/libsvg.a +0 -0
  409. package/libs/android/x86_64/libskia.a +0 -0
  410. package/libs/android/x86_64/libskottie.a +0 -0
  411. package/libs/android/x86_64/libskparagraph.a +0 -0
  412. package/libs/android/x86_64/libsksg.a +0 -0
  413. package/libs/android/x86_64/libskshaper.a +0 -0
  414. package/libs/android/x86_64/libskunicode.a +0 -0
  415. package/libs/android/x86_64/libsvg.a +0 -0
  416. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  417. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  418. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  419. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  420. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  421. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  422. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  423. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  424. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  425. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  426. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  427. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  428. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  429. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  430. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  431. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  432. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  433. package/package.json +6 -4
  434. package/react-native-skia.podspec +3 -1
  435. package/src/dom/nodes/DrawingNode.ts +2 -4
  436. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  437. package/src/dom/nodes/RenderNode.ts +2 -14
  438. package/src/dom/nodes/drawings/Text.ts +4 -4
  439. package/src/dom/types/Common.ts +2 -4
  440. package/src/dom/types/Drawings.ts +1 -4
  441. package/src/mock/index.ts +0 -1
  442. package/src/renderer/Canvas.tsx +32 -51
  443. package/src/renderer/DependencyManager.tsx +0 -5
  444. package/src/renderer/HostComponents.ts +153 -5
  445. package/src/renderer/components/Mask.tsx +2 -2
  446. package/src/renderer/components/Paint.tsx +3 -14
  447. package/src/renderer/useCanvas.ts +5 -5
  448. package/src/skia/core/Picture.ts +0 -24
  449. package/src/skia/core/Rect.ts +1 -1
  450. package/src/skia/types/ContourMeasure.tsx +3 -2
  451. package/src/skia/types/Size.ts +4 -0
  452. package/src/skia/types/index.ts +1 -0
  453. package/src/skia/web/JsiSkColor.ts +11 -0
  454. package/src/skia/web/JsiSkContourMeasure.ts +7 -3
  455. package/src/values/web/RNSkReadonlyValue.ts +4 -2
  456. package/src/views/SkiaBaseWebView.tsx +6 -2
  457. package/src/views/SkiaDomView.tsx +120 -0
  458. package/src/views/SkiaDomView.web.tsx +37 -0
  459. package/src/views/SkiaPictureView.tsx +10 -2
  460. package/src/views/SkiaView.tsx +11 -3
  461. package/src/views/index.ts +1 -0
  462. package/src/views/types.ts +19 -2
  463. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  464. package/cpp/skia/include/c/sk_canvas.h +0 -159
  465. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  466. package/cpp/skia/include/c/sk_data.h +0 -65
  467. package/cpp/skia/include/c/sk_image.h +0 -71
  468. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  469. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  470. package/cpp/skia/include/c/sk_matrix.h +0 -49
  471. package/cpp/skia/include/c/sk_paint.h +0 -145
  472. package/cpp/skia/include/c/sk_path.h +0 -102
  473. package/cpp/skia/include/c/sk_picture.h +0 -70
  474. package/cpp/skia/include/c/sk_shader.h +0 -143
  475. package/cpp/skia/include/c/sk_surface.h +0 -73
  476. package/cpp/skia/include/c/sk_types.h +0 -278
  477. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  478. package/cpp/skia/include/private/SkNx.h +0 -430
  479. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  480. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  481. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  482. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -1,430 +0,0 @@
1
- /*
2
- * Copyright 2015 Google Inc.
3
- *
4
- * Use of this source code is governed by a BSD-style license that can be
5
- * found in the LICENSE file.
6
- */
7
-
8
- #ifndef SkNx_DEFINED
9
- #define SkNx_DEFINED
10
-
11
- #include "include/core/SkScalar.h"
12
- #include "include/core/SkTypes.h"
13
- #include "include/private/SkSafe_math.h"
14
-
15
- #include <algorithm>
16
- #include <limits>
17
- #include <type_traits>
18
-
19
- // Every single SkNx method wants to be fully inlined. (We know better than MSVC).
20
- #define AI SK_ALWAYS_INLINE
21
-
22
- namespace { // NOLINT(google-build-namespaces)
23
-
24
- // The default SkNx<N,T> just proxies down to a pair of SkNx<N/2, T>.
25
- template <int N, typename T>
26
- struct SkNx {
27
- typedef SkNx<N/2, T> Half;
28
-
29
- Half fLo, fHi;
30
-
31
- AI SkNx() = default;
32
- AI SkNx(const Half& lo, const Half& hi) : fLo(lo), fHi(hi) {}
33
-
34
- AI SkNx(T v) : fLo(v), fHi(v) {}
35
-
36
- AI SkNx(T a, T b) : fLo(a) , fHi(b) { static_assert(N==2, ""); }
37
- AI SkNx(T a, T b, T c, T d) : fLo(a,b), fHi(c,d) { static_assert(N==4, ""); }
38
- AI SkNx(T a, T b, T c, T d, T e, T f, T g, T h) : fLo(a,b,c,d), fHi(e,f,g,h) {
39
- static_assert(N==8, "");
40
- }
41
- AI SkNx(T a, T b, T c, T d, T e, T f, T g, T h,
42
- T i, T j, T k, T l, T m, T n, T o, T p)
43
- : fLo(a,b,c,d, e,f,g,h), fHi(i,j,k,l, m,n,o,p) {
44
- static_assert(N==16, "");
45
- }
46
-
47
- AI T operator[](int k) const {
48
- SkASSERT(0 <= k && k < N);
49
- return k < N/2 ? fLo[k] : fHi[k-N/2];
50
- }
51
-
52
- AI static SkNx Load(const void* vptr) {
53
- auto ptr = (const char*)vptr;
54
- return { Half::Load(ptr), Half::Load(ptr + N/2*sizeof(T)) };
55
- }
56
- AI void store(void* vptr) const {
57
- auto ptr = (char*)vptr;
58
- fLo.store(ptr);
59
- fHi.store(ptr + N/2*sizeof(T));
60
- }
61
-
62
- AI static void Load4(const void* vptr, SkNx* a, SkNx* b, SkNx* c, SkNx* d) {
63
- auto ptr = (const char*)vptr;
64
- Half al, bl, cl, dl,
65
- ah, bh, ch, dh;
66
- Half::Load4(ptr , &al, &bl, &cl, &dl);
67
- Half::Load4(ptr + 4*N/2*sizeof(T), &ah, &bh, &ch, &dh);
68
- *a = SkNx{al, ah};
69
- *b = SkNx{bl, bh};
70
- *c = SkNx{cl, ch};
71
- *d = SkNx{dl, dh};
72
- }
73
- AI static void Load3(const void* vptr, SkNx* a, SkNx* b, SkNx* c) {
74
- auto ptr = (const char*)vptr;
75
- Half al, bl, cl,
76
- ah, bh, ch;
77
- Half::Load3(ptr , &al, &bl, &cl);
78
- Half::Load3(ptr + 3*N/2*sizeof(T), &ah, &bh, &ch);
79
- *a = SkNx{al, ah};
80
- *b = SkNx{bl, bh};
81
- *c = SkNx{cl, ch};
82
- }
83
- AI static void Load2(const void* vptr, SkNx* a, SkNx* b) {
84
- auto ptr = (const char*)vptr;
85
- Half al, bl,
86
- ah, bh;
87
- Half::Load2(ptr , &al, &bl);
88
- Half::Load2(ptr + 2*N/2*sizeof(T), &ah, &bh);
89
- *a = SkNx{al, ah};
90
- *b = SkNx{bl, bh};
91
- }
92
- AI static void Store4(void* vptr, const SkNx& a, const SkNx& b, const SkNx& c, const SkNx& d) {
93
- auto ptr = (char*)vptr;
94
- Half::Store4(ptr, a.fLo, b.fLo, c.fLo, d.fLo);
95
- Half::Store4(ptr + 4*N/2*sizeof(T), a.fHi, b.fHi, c.fHi, d.fHi);
96
- }
97
- AI static void Store3(void* vptr, const SkNx& a, const SkNx& b, const SkNx& c) {
98
- auto ptr = (char*)vptr;
99
- Half::Store3(ptr, a.fLo, b.fLo, c.fLo);
100
- Half::Store3(ptr + 3*N/2*sizeof(T), a.fHi, b.fHi, c.fHi);
101
- }
102
- AI static void Store2(void* vptr, const SkNx& a, const SkNx& b) {
103
- auto ptr = (char*)vptr;
104
- Half::Store2(ptr, a.fLo, b.fLo);
105
- Half::Store2(ptr + 2*N/2*sizeof(T), a.fHi, b.fHi);
106
- }
107
-
108
- AI T min() const { return std::min(fLo.min(), fHi.min()); }
109
- AI T max() const { return std::max(fLo.max(), fHi.max()); }
110
- AI bool anyTrue() const { return fLo.anyTrue() || fHi.anyTrue(); }
111
- AI bool allTrue() const { return fLo.allTrue() && fHi.allTrue(); }
112
-
113
- AI SkNx abs() const { return { fLo. abs(), fHi. abs() }; }
114
- AI SkNx sqrt() const { return { fLo. sqrt(), fHi. sqrt() }; }
115
- AI SkNx floor() const { return { fLo. floor(), fHi. floor() }; }
116
-
117
- AI SkNx operator!() const { return { !fLo, !fHi }; }
118
- AI SkNx operator-() const { return { -fLo, -fHi }; }
119
- AI SkNx operator~() const { return { ~fLo, ~fHi }; }
120
-
121
- AI SkNx operator<<(int bits) const { return { fLo << bits, fHi << bits }; }
122
- AI SkNx operator>>(int bits) const { return { fLo >> bits, fHi >> bits }; }
123
-
124
- AI SkNx operator+(const SkNx& y) const { return { fLo + y.fLo, fHi + y.fHi }; }
125
- AI SkNx operator-(const SkNx& y) const { return { fLo - y.fLo, fHi - y.fHi }; }
126
- AI SkNx operator*(const SkNx& y) const { return { fLo * y.fLo, fHi * y.fHi }; }
127
- AI SkNx operator/(const SkNx& y) const { return { fLo / y.fLo, fHi / y.fHi }; }
128
-
129
- AI SkNx operator&(const SkNx& y) const { return { fLo & y.fLo, fHi & y.fHi }; }
130
- AI SkNx operator|(const SkNx& y) const { return { fLo | y.fLo, fHi | y.fHi }; }
131
- AI SkNx operator^(const SkNx& y) const { return { fLo ^ y.fLo, fHi ^ y.fHi }; }
132
-
133
- AI SkNx operator==(const SkNx& y) const { return { fLo == y.fLo, fHi == y.fHi }; }
134
- AI SkNx operator!=(const SkNx& y) const { return { fLo != y.fLo, fHi != y.fHi }; }
135
- AI SkNx operator<=(const SkNx& y) const { return { fLo <= y.fLo, fHi <= y.fHi }; }
136
- AI SkNx operator>=(const SkNx& y) const { return { fLo >= y.fLo, fHi >= y.fHi }; }
137
- AI SkNx operator< (const SkNx& y) const { return { fLo < y.fLo, fHi < y.fHi }; }
138
- AI SkNx operator> (const SkNx& y) const { return { fLo > y.fLo, fHi > y.fHi }; }
139
-
140
- AI SkNx saturatedAdd(const SkNx& y) const {
141
- return { fLo.saturatedAdd(y.fLo), fHi.saturatedAdd(y.fHi) };
142
- }
143
-
144
- AI SkNx mulHi(const SkNx& m) const {
145
- return { fLo.mulHi(m.fLo), fHi.mulHi(m.fHi) };
146
- }
147
- AI SkNx thenElse(const SkNx& t, const SkNx& e) const {
148
- return { fLo.thenElse(t.fLo, e.fLo), fHi.thenElse(t.fHi, e.fHi) };
149
- }
150
- AI static SkNx Min(const SkNx& x, const SkNx& y) {
151
- return { Half::Min(x.fLo, y.fLo), Half::Min(x.fHi, y.fHi) };
152
- }
153
- AI static SkNx Max(const SkNx& x, const SkNx& y) {
154
- return { Half::Max(x.fLo, y.fLo), Half::Max(x.fHi, y.fHi) };
155
- }
156
- };
157
-
158
- // The N -> N/2 recursion bottoms out at N == 1, a scalar value.
159
- template <typename T>
160
- struct SkNx<1,T> {
161
- T fVal;
162
-
163
- AI SkNx() = default;
164
- AI SkNx(T v) : fVal(v) {}
165
-
166
- // Android complains against unused parameters, so we guard it
167
- AI T operator[](int SkDEBUGCODE(k)) const {
168
- SkASSERT(k == 0);
169
- return fVal;
170
- }
171
-
172
- AI static SkNx Load(const void* ptr) {
173
- SkNx v;
174
- memcpy(&v, ptr, sizeof(T));
175
- return v;
176
- }
177
- AI void store(void* ptr) const { memcpy(ptr, &fVal, sizeof(T)); }
178
-
179
- AI static void Load4(const void* vptr, SkNx* a, SkNx* b, SkNx* c, SkNx* d) {
180
- auto ptr = (const char*)vptr;
181
- *a = Load(ptr + 0*sizeof(T));
182
- *b = Load(ptr + 1*sizeof(T));
183
- *c = Load(ptr + 2*sizeof(T));
184
- *d = Load(ptr + 3*sizeof(T));
185
- }
186
- AI static void Load3(const void* vptr, SkNx* a, SkNx* b, SkNx* c) {
187
- auto ptr = (const char*)vptr;
188
- *a = Load(ptr + 0*sizeof(T));
189
- *b = Load(ptr + 1*sizeof(T));
190
- *c = Load(ptr + 2*sizeof(T));
191
- }
192
- AI static void Load2(const void* vptr, SkNx* a, SkNx* b) {
193
- auto ptr = (const char*)vptr;
194
- *a = Load(ptr + 0*sizeof(T));
195
- *b = Load(ptr + 1*sizeof(T));
196
- }
197
- AI static void Store4(void* vptr, const SkNx& a, const SkNx& b, const SkNx& c, const SkNx& d) {
198
- auto ptr = (char*)vptr;
199
- a.store(ptr + 0*sizeof(T));
200
- b.store(ptr + 1*sizeof(T));
201
- c.store(ptr + 2*sizeof(T));
202
- d.store(ptr + 3*sizeof(T));
203
- }
204
- AI static void Store3(void* vptr, const SkNx& a, const SkNx& b, const SkNx& c) {
205
- auto ptr = (char*)vptr;
206
- a.store(ptr + 0*sizeof(T));
207
- b.store(ptr + 1*sizeof(T));
208
- c.store(ptr + 2*sizeof(T));
209
- }
210
- AI static void Store2(void* vptr, const SkNx& a, const SkNx& b) {
211
- auto ptr = (char*)vptr;
212
- a.store(ptr + 0*sizeof(T));
213
- b.store(ptr + 1*sizeof(T));
214
- }
215
-
216
- AI T min() const { return fVal; }
217
- AI T max() const { return fVal; }
218
- AI bool anyTrue() const { return fVal != 0; }
219
- AI bool allTrue() const { return fVal != 0; }
220
-
221
- AI SkNx abs() const { return Abs(fVal); }
222
- AI SkNx sqrt() const { return Sqrt(fVal); }
223
- AI SkNx floor() const { return Floor(fVal); }
224
-
225
- AI SkNx operator!() const { return !fVal; }
226
- AI SkNx operator-() const { return -fVal; }
227
- AI SkNx operator~() const { return FromBits(~ToBits(fVal)); }
228
-
229
- AI SkNx operator<<(int bits) const { return fVal << bits; }
230
- AI SkNx operator>>(int bits) const { return fVal >> bits; }
231
-
232
- AI SkNx operator+(const SkNx& y) const { return fVal + y.fVal; }
233
- AI SkNx operator-(const SkNx& y) const { return fVal - y.fVal; }
234
- AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
235
- AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
236
-
237
- AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
238
- AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
239
- AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
240
-
241
- AI SkNx operator==(const SkNx& y) const { return FromBits(fVal == y.fVal ? ~0 : 0); }
242
- AI SkNx operator!=(const SkNx& y) const { return FromBits(fVal != y.fVal ? ~0 : 0); }
243
- AI SkNx operator<=(const SkNx& y) const { return FromBits(fVal <= y.fVal ? ~0 : 0); }
244
- AI SkNx operator>=(const SkNx& y) const { return FromBits(fVal >= y.fVal ? ~0 : 0); }
245
- AI SkNx operator< (const SkNx& y) const { return FromBits(fVal < y.fVal ? ~0 : 0); }
246
- AI SkNx operator> (const SkNx& y) const { return FromBits(fVal > y.fVal ? ~0 : 0); }
247
-
248
- AI static SkNx Min(const SkNx& x, const SkNx& y) { return x.fVal < y.fVal ? x : y; }
249
- AI static SkNx Max(const SkNx& x, const SkNx& y) { return x.fVal > y.fVal ? x : y; }
250
-
251
- AI SkNx saturatedAdd(const SkNx& y) const {
252
- static_assert(std::is_unsigned<T>::value, "");
253
- T sum = fVal + y.fVal;
254
- return sum < fVal ? std::numeric_limits<T>::max() : sum;
255
- }
256
-
257
- AI SkNx mulHi(const SkNx& m) const {
258
- static_assert(std::is_unsigned<T>::value, "");
259
- static_assert(sizeof(T) <= 4, "");
260
- return static_cast<T>((static_cast<uint64_t>(fVal) * m.fVal) >> (sizeof(T)*8));
261
- }
262
-
263
- AI SkNx thenElse(const SkNx& t, const SkNx& e) const { return fVal != 0 ? t : e; }
264
-
265
- private:
266
- // Helper functions to choose the right float/double methods. (In <cmath> madness lies...)
267
- AI static int Abs(int val) { return val < 0 ? -val : val; }
268
-
269
- AI static float Abs(float val) { return ::fabsf(val); }
270
- AI static float Sqrt(float val) { return ::sqrtf(val); }
271
- AI static float Floor(float val) { return ::floorf(val); }
272
-
273
- AI static double Abs(double val) { return ::fabs(val); }
274
- AI static double Sqrt(double val) { return ::sqrt(val); }
275
- AI static double Floor(double val) { return ::floor(val); }
276
-
277
- // Helper functions for working with floats/doubles as bit patterns.
278
- template <typename U>
279
- AI static U ToBits(U v) { return v; }
280
- AI static int32_t ToBits(float v) { int32_t bits; memcpy(&bits, &v, sizeof(v)); return bits; }
281
- AI static int64_t ToBits(double v) { int64_t bits; memcpy(&bits, &v, sizeof(v)); return bits; }
282
-
283
- template <typename Bits>
284
- AI static T FromBits(Bits bits) {
285
- static_assert(std::is_pod<T >::value &&
286
- std::is_pod<Bits>::value &&
287
- sizeof(T) <= sizeof(Bits), "");
288
- T val;
289
- memcpy(&val, &bits, sizeof(T));
290
- return val;
291
- }
292
- };
293
-
294
- // Allow scalars on the left or right of binary operators, and things like +=, &=, etc.
295
- #define V template <int N, typename T> AI static SkNx<N,T>
296
- V operator+ (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) + y; }
297
- V operator- (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) - y; }
298
- V operator* (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) * y; }
299
- V operator/ (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) / y; }
300
- V operator& (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) & y; }
301
- V operator| (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) | y; }
302
- V operator^ (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) ^ y; }
303
- V operator==(T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) == y; }
304
- V operator!=(T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) != y; }
305
- V operator<=(T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) <= y; }
306
- V operator>=(T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) >= y; }
307
- V operator< (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) < y; }
308
- V operator> (T x, const SkNx<N,T>& y) { return SkNx<N,T>(x) > y; }
309
-
310
- V operator+ (const SkNx<N,T>& x, T y) { return x + SkNx<N,T>(y); }
311
- V operator- (const SkNx<N,T>& x, T y) { return x - SkNx<N,T>(y); }
312
- V operator* (const SkNx<N,T>& x, T y) { return x * SkNx<N,T>(y); }
313
- V operator/ (const SkNx<N,T>& x, T y) { return x / SkNx<N,T>(y); }
314
- V operator& (const SkNx<N,T>& x, T y) { return x & SkNx<N,T>(y); }
315
- V operator| (const SkNx<N,T>& x, T y) { return x | SkNx<N,T>(y); }
316
- V operator^ (const SkNx<N,T>& x, T y) { return x ^ SkNx<N,T>(y); }
317
- V operator==(const SkNx<N,T>& x, T y) { return x == SkNx<N,T>(y); }
318
- V operator!=(const SkNx<N,T>& x, T y) { return x != SkNx<N,T>(y); }
319
- V operator<=(const SkNx<N,T>& x, T y) { return x <= SkNx<N,T>(y); }
320
- V operator>=(const SkNx<N,T>& x, T y) { return x >= SkNx<N,T>(y); }
321
- V operator< (const SkNx<N,T>& x, T y) { return x < SkNx<N,T>(y); }
322
- V operator> (const SkNx<N,T>& x, T y) { return x > SkNx<N,T>(y); }
323
-
324
- V& operator<<=(SkNx<N,T>& x, int bits) { return (x = x << bits); }
325
- V& operator>>=(SkNx<N,T>& x, int bits) { return (x = x >> bits); }
326
-
327
- V& operator +=(SkNx<N,T>& x, const SkNx<N,T>& y) { return (x = x + y); }
328
- V& operator -=(SkNx<N,T>& x, const SkNx<N,T>& y) { return (x = x - y); }
329
- V& operator *=(SkNx<N,T>& x, const SkNx<N,T>& y) { return (x = x * y); }
330
- V& operator /=(SkNx<N,T>& x, const SkNx<N,T>& y) { return (x = x / y); }
331
- V& operator &=(SkNx<N,T>& x, const SkNx<N,T>& y) { return (x = x & y); }
332
- V& operator |=(SkNx<N,T>& x, const SkNx<N,T>& y) { return (x = x | y); }
333
- V& operator ^=(SkNx<N,T>& x, const SkNx<N,T>& y) { return (x = x ^ y); }
334
-
335
- V& operator +=(SkNx<N,T>& x, T y) { return (x = x + SkNx<N,T>(y)); }
336
- V& operator -=(SkNx<N,T>& x, T y) { return (x = x - SkNx<N,T>(y)); }
337
- V& operator *=(SkNx<N,T>& x, T y) { return (x = x * SkNx<N,T>(y)); }
338
- V& operator /=(SkNx<N,T>& x, T y) { return (x = x / SkNx<N,T>(y)); }
339
- V& operator &=(SkNx<N,T>& x, T y) { return (x = x & SkNx<N,T>(y)); }
340
- V& operator |=(SkNx<N,T>& x, T y) { return (x = x | SkNx<N,T>(y)); }
341
- V& operator ^=(SkNx<N,T>& x, T y) { return (x = x ^ SkNx<N,T>(y)); }
342
- #undef V
343
-
344
- // SkNx<N,T> ~~> SkNx<N/2,T> + SkNx<N/2,T>
345
- template <int N, typename T>
346
- AI static void SkNx_split(const SkNx<N,T>& v, SkNx<N/2,T>* lo, SkNx<N/2,T>* hi) {
347
- *lo = v.fLo;
348
- *hi = v.fHi;
349
- }
350
-
351
- // SkNx<N/2,T> + SkNx<N/2,T> ~~> SkNx<N,T>
352
- template <int N, typename T>
353
- AI static SkNx<N*2,T> SkNx_join(const SkNx<N,T>& lo, const SkNx<N,T>& hi) {
354
- return { lo, hi };
355
- }
356
-
357
- // A very generic shuffle. Can reorder, duplicate, contract, expand...
358
- // Sk4f v = { R,G,B,A };
359
- // SkNx_shuffle<2,1,0,3>(v) ~~> {B,G,R,A}
360
- // SkNx_shuffle<2,1>(v) ~~> {B,G}
361
- // SkNx_shuffle<2,1,2,1,2,1,2,1>(v) ~~> {B,G,B,G,B,G,B,G}
362
- // SkNx_shuffle<3,3,3,3>(v) ~~> {A,A,A,A}
363
- template <int... Ix, int N, typename T>
364
- AI static SkNx<sizeof...(Ix),T> SkNx_shuffle(const SkNx<N,T>& v) {
365
- return { v[Ix]... };
366
- }
367
-
368
- // Cast from SkNx<N, Src> to SkNx<N, Dst>, as if you called static_cast<Dst>(Src).
369
- template <typename Dst, typename Src, int N>
370
- AI static SkNx<N,Dst> SkNx_cast(const SkNx<N,Src>& v) {
371
- return { SkNx_cast<Dst>(v.fLo), SkNx_cast<Dst>(v.fHi) };
372
- }
373
- template <typename Dst, typename Src>
374
- AI static SkNx<1,Dst> SkNx_cast(const SkNx<1,Src>& v) {
375
- return static_cast<Dst>(v.fVal);
376
- }
377
-
378
- template <int N, typename T>
379
- AI static SkNx<N,T> SkNx_fma(const SkNx<N,T>& f, const SkNx<N,T>& m, const SkNx<N,T>& a) {
380
- return f*m+a;
381
- }
382
-
383
- } // namespace
384
-
385
- typedef SkNx<2, float> Sk2f;
386
- typedef SkNx<4, float> Sk4f;
387
- typedef SkNx<8, float> Sk8f;
388
- typedef SkNx<16, float> Sk16f;
389
-
390
- typedef SkNx<2, SkScalar> Sk2s;
391
- typedef SkNx<4, SkScalar> Sk4s;
392
- typedef SkNx<8, SkScalar> Sk8s;
393
- typedef SkNx<16, SkScalar> Sk16s;
394
-
395
- typedef SkNx<4, uint8_t> Sk4b;
396
- typedef SkNx<8, uint8_t> Sk8b;
397
- typedef SkNx<16, uint8_t> Sk16b;
398
-
399
- typedef SkNx<4, uint16_t> Sk4h;
400
- typedef SkNx<8, uint16_t> Sk8h;
401
- typedef SkNx<16, uint16_t> Sk16h;
402
-
403
- typedef SkNx<4, int32_t> Sk4i;
404
- typedef SkNx<8, int32_t> Sk8i;
405
- typedef SkNx<4, uint32_t> Sk4u;
406
-
407
- // Include platform specific specializations if available.
408
- #if !defined(SKNX_NO_SIMD) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
409
- #include "include/private/SkNx_sse.h"
410
- #elif !defined(SKNX_NO_SIMD) && defined(SK_ARM_HAS_NEON)
411
- #include "include/private/SkNx_neon.h"
412
- #else
413
-
414
- AI static Sk4i Sk4f_round(const Sk4f& x) {
415
- return { (int) lrintf (x[0]),
416
- (int) lrintf (x[1]),
417
- (int) lrintf (x[2]),
418
- (int) lrintf (x[3]), };
419
- }
420
-
421
- #endif
422
-
423
- AI static void Sk4f_ToBytes(uint8_t p[16],
424
- const Sk4f& a, const Sk4f& b, const Sk4f& c, const Sk4f& d) {
425
- SkNx_cast<uint8_t>(SkNx_join(SkNx_join(a,b), SkNx_join(c,d))).store(p);
426
- }
427
-
428
- #undef AI
429
-
430
- #endif//SkNx_DEFINED