@shopify/react-native-skia 0.1.158 → 0.1.159

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +21 -25
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkHostObjects.h +6 -0
  11. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  12. package/cpp/api/JsiSkPaint.h +9 -2
  13. package/cpp/api/JsiSkPath.h +1 -0
  14. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  15. package/cpp/jsi/JsiHostObject.cpp +16 -28
  16. package/cpp/jsi/JsiHostObject.h +127 -7
  17. package/cpp/jsi/JsiValue.cpp +346 -0
  18. package/cpp/jsi/JsiValue.h +222 -0
  19. package/cpp/jsi/JsiValueWrapper.h +33 -5
  20. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  21. package/cpp/rnskia/RNSkDomView.h +140 -0
  22. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  23. package/cpp/rnskia/RNSkJsView.h +6 -4
  24. package/cpp/rnskia/RNSkManager.cpp +7 -0
  25. package/cpp/rnskia/RNSkPictureView.h +5 -8
  26. package/cpp/rnskia/RNSkView.h +113 -5
  27. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  28. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  29. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  30. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  32. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  33. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  34. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  35. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  36. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  37. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  38. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  39. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  40. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  42. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  44. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  45. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  46. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  47. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  48. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  49. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  50. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  51. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  54. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  55. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  56. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  57. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  58. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  59. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  61. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  62. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  63. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  64. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  66. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  69. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  70. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  71. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  72. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  73. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  74. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  75. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  76. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  77. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  78. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  79. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  80. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  81. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  82. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  83. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  84. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  85. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  86. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  87. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  88. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  89. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  90. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  91. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  92. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  93. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  94. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  95. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  96. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  97. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  98. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  99. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  100. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  101. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  102. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  103. package/cpp/skia/include/codec/SkCodec.h +8 -5
  104. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  105. package/cpp/skia/include/core/SkBitmap.h +52 -1
  106. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  107. package/cpp/skia/include/core/SkCanvas.h +52 -31
  108. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  109. package/cpp/skia/include/core/SkColor.h +7 -0
  110. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  111. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  112. package/cpp/skia/include/core/SkFont.h +4 -0
  113. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  114. package/cpp/skia/include/core/SkGraphics.h +9 -0
  115. package/cpp/skia/include/core/SkImage.h +77 -17
  116. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  117. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  118. package/cpp/skia/include/core/SkM44.h +1 -0
  119. package/cpp/skia/include/core/SkMesh.h +120 -34
  120. package/cpp/skia/include/core/SkMilestone.h +1 -1
  121. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  122. package/cpp/skia/include/core/SkPaint.h +15 -2
  123. package/cpp/skia/include/core/SkPath.h +4 -0
  124. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  125. package/cpp/skia/include/core/SkPicture.h +0 -3
  126. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  127. package/cpp/skia/include/core/SkPixmap.h +19 -0
  128. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  129. package/cpp/skia/include/core/SkRect.h +11 -4
  130. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  131. package/cpp/skia/include/core/SkRegion.h +6 -0
  132. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  133. package/cpp/skia/include/core/SkScalar.h +6 -25
  134. package/cpp/skia/include/core/SkShader.h +20 -12
  135. package/cpp/skia/include/core/SkSpan.h +51 -19
  136. package/cpp/skia/include/core/SkStream.h +2 -2
  137. package/cpp/skia/include/core/SkString.h +11 -3
  138. package/cpp/skia/include/core/SkSurface.h +85 -8
  139. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  140. package/cpp/skia/include/core/SkTypes.h +11 -10
  141. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  142. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  143. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  144. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  145. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  146. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  147. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  149. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  150. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  151. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  152. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  153. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  154. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  155. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  156. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  157. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  158. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  159. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  160. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  161. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  162. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  163. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  164. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  165. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  166. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  167. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  168. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  169. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  170. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  171. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  172. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  173. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  174. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  175. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  176. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  177. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  178. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  179. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  180. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  181. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  182. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  183. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  184. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  185. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  186. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  187. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  188. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  189. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  190. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  191. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  192. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  193. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  194. package/cpp/skia/include/private/SkColorData.h +10 -40
  195. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  196. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  197. package/cpp/skia/include/private/SkHalf.h +5 -52
  198. package/cpp/skia/include/private/SkMacros.h +1 -1
  199. package/cpp/skia/include/private/SkMalloc.h +4 -0
  200. package/cpp/skia/include/private/SkPathRef.h +10 -10
  201. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  202. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  203. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  204. package/cpp/skia/include/private/SkStringView.h +4 -0
  205. package/cpp/skia/include/private/SkTArray.h +21 -7
  206. package/cpp/skia/include/private/SkTDArray.h +173 -285
  207. package/cpp/skia/include/private/SkTHash.h +33 -32
  208. package/cpp/skia/include/private/SkTemplates.h +24 -26
  209. package/cpp/skia/include/private/SkVx.h +218 -135
  210. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  211. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  212. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  213. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  214. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  215. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  216. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  217. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  218. package/cpp/skia/include/sksl/DSL.h +0 -1
  219. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  220. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  221. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  222. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  223. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  224. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  225. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  226. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  227. package/cpp/skia/include/sksl/DSLType.h +20 -12
  228. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  229. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  230. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  231. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  232. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  233. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  234. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  235. package/cpp/skia/include/utils/SkBase64.h +2 -0
  236. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  237. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  238. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  239. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  240. package/cpp/skia/include/utils/SkParse.h +3 -0
  241. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  242. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  243. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  244. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  245. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  246. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  247. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  248. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  249. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  250. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  251. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  254. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  255. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  256. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  257. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  258. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  259. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  260. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  261. package/cpp/utils/RNSkTimingInfo.h +1 -0
  262. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  264. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  266. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  267. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  268. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  269. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  270. package/lib/commonjs/renderer/Canvas.js +19 -63
  271. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  272. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  273. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  274. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  275. package/lib/commonjs/renderer/useCanvas.js +4 -18
  276. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  277. package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
  278. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  279. package/lib/commonjs/views/SkiaDomView.js +152 -0
  280. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  281. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  282. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  283. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  284. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  285. package/lib/commonjs/views/SkiaView.js +17 -2
  286. package/lib/commonjs/views/SkiaView.js.map +1 -1
  287. package/lib/commonjs/views/index.js +13 -0
  288. package/lib/commonjs/views/index.js.map +1 -1
  289. package/lib/commonjs/views/types.js.map +1 -1
  290. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  291. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  292. package/lib/module/dom/nodes/RenderNode.js +1 -1
  293. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  294. package/lib/module/renderer/Canvas.js +20 -64
  295. package/lib/module/renderer/Canvas.js.map +1 -1
  296. package/lib/module/renderer/DependencyManager.js +0 -5
  297. package/lib/module/renderer/DependencyManager.js.map +1 -1
  298. package/lib/module/renderer/HostComponents.js.map +1 -1
  299. package/lib/module/renderer/useCanvas.js +2 -13
  300. package/lib/module/renderer/useCanvas.js.map +1 -1
  301. package/lib/module/views/SkiaBaseWebView.js +7 -0
  302. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  303. package/lib/module/views/SkiaDomView.js +128 -0
  304. package/lib/module/views/SkiaDomView.js.map +1 -0
  305. package/lib/module/views/SkiaDomView.web.js +41 -0
  306. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  307. package/lib/module/views/SkiaPictureView.js +14 -2
  308. package/lib/module/views/SkiaPictureView.js.map +1 -1
  309. package/lib/module/views/SkiaView.js +15 -2
  310. package/lib/module/views/SkiaView.js.map +1 -1
  311. package/lib/module/views/index.js +1 -0
  312. package/lib/module/views/index.js.map +1 -1
  313. package/lib/module/views/types.js.map +1 -1
  314. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  315. package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
  316. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  317. package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
  318. package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
  319. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  320. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  321. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  322. package/lib/typescript/src/views/index.d.ts +1 -0
  323. package/lib/typescript/src/views/types.d.ts +12 -2
  324. package/libs/android/arm64-v8a/libskia.a +0 -0
  325. package/libs/android/arm64-v8a/libskottie.a +0 -0
  326. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  327. package/libs/android/arm64-v8a/libsksg.a +0 -0
  328. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  329. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  330. package/libs/android/arm64-v8a/libsvg.a +0 -0
  331. package/libs/android/armeabi-v7a/libskia.a +0 -0
  332. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  333. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  334. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  335. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  336. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  337. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  338. package/libs/android/x86/libskia.a +0 -0
  339. package/libs/android/x86/libskottie.a +0 -0
  340. package/libs/android/x86/libskparagraph.a +0 -0
  341. package/libs/android/x86/libsksg.a +0 -0
  342. package/libs/android/x86/libskshaper.a +0 -0
  343. package/libs/android/x86/libskunicode.a +0 -0
  344. package/libs/android/x86/libsvg.a +0 -0
  345. package/libs/android/x86_64/libskia.a +0 -0
  346. package/libs/android/x86_64/libskottie.a +0 -0
  347. package/libs/android/x86_64/libskparagraph.a +0 -0
  348. package/libs/android/x86_64/libsksg.a +0 -0
  349. package/libs/android/x86_64/libskshaper.a +0 -0
  350. package/libs/android/x86_64/libskunicode.a +0 -0
  351. package/libs/android/x86_64/libsvg.a +0 -0
  352. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  353. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  354. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  355. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  356. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  357. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  358. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  359. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  360. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  361. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  362. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  363. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  364. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  365. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  366. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  367. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  368. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  369. package/package.json +5 -3
  370. package/react-native-skia.podspec +3 -1
  371. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  372. package/src/dom/nodes/RenderNode.ts +1 -1
  373. package/src/renderer/Canvas.tsx +32 -56
  374. package/src/renderer/DependencyManager.tsx +0 -5
  375. package/src/renderer/HostComponents.ts +152 -1
  376. package/src/renderer/useCanvas.ts +1 -15
  377. package/src/views/SkiaBaseWebView.tsx +4 -0
  378. package/src/views/SkiaDomView.tsx +120 -0
  379. package/src/views/SkiaDomView.web.tsx +37 -0
  380. package/src/views/SkiaPictureView.tsx +10 -2
  381. package/src/views/SkiaView.tsx +11 -3
  382. package/src/views/index.ts +1 -0
  383. package/src/views/types.ts +19 -2
  384. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  385. package/cpp/skia/include/c/sk_canvas.h +0 -159
  386. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  387. package/cpp/skia/include/c/sk_data.h +0 -65
  388. package/cpp/skia/include/c/sk_image.h +0 -71
  389. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  390. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  391. package/cpp/skia/include/c/sk_matrix.h +0 -49
  392. package/cpp/skia/include/c/sk_paint.h +0 -145
  393. package/cpp/skia/include/c/sk_path.h +0 -102
  394. package/cpp/skia/include/c/sk_picture.h +0 -70
  395. package/cpp/skia/include/c/sk_shader.h +0 -143
  396. package/cpp/skia/include/c/sk_surface.h +0 -73
  397. package/cpp/skia/include/c/sk_types.h +0 -278
  398. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  399. package/cpp/skia/include/private/SkNx.h +0 -430
  400. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  401. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  402. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  403. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -1,47 +0,0 @@
1
- /*
2
- * Copyright 2021 Google LLC
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 SkStuff_DEFINED
9
- #define SkStuff_DEFINED
10
-
11
- #include "include/core/SkImageInfo.h"
12
- #include "include/core/SkRefCnt.h"
13
-
14
- class SkColorSpace;
15
- class SkSurface;
16
- class SkSurfaceProps;
17
-
18
- namespace skgpu::graphite {
19
- class BackendTexture;
20
- class Recorder;
21
- }
22
-
23
- // TODO: Should be in SkSurface.h
24
- sk_sp<SkSurface> MakeGraphite(skgpu::graphite::Recorder*, const SkImageInfo&);
25
-
26
- /**
27
- * Wraps a GPU-backed texture into SkSurface. Depending on the backend gpu API, the caller may be
28
- * required to ensure the texture is valid for the lifetime of returned SkSurface. The required
29
- * lifetimes for the specific apis are:
30
- * Metal: Skia will call retain on the underlying MTLTexture so the caller can drop it once this
31
- * call returns.
32
- *
33
- * SkSurface is returned if all parameters are valid. BackendTexture is valid if its format agrees
34
- * with colorSpace and context; for instance, if backendTexture has an sRGB configuration, then
35
- * context must support sRGB, and colorSpace must be present. Further, backendTexture width and
36
- * height must not exceed context capabilities, and the context must be able to support back-end
37
- * textures.
38
- *
39
- * If SK_ENABLE_GRAPHITE is not defined, this has no effect and returns nullptr.
40
- */
41
- sk_sp<SkSurface> MakeGraphiteFromBackendTexture(skgpu::graphite::Recorder*,
42
- const skgpu::graphite::BackendTexture&,
43
- SkColorType colorType,
44
- sk_sp<SkColorSpace> colorSpace,
45
- const SkSurfaceProps* props);
46
-
47
- #endif // SkStuff_DEFINED
@@ -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