@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
@@ -0,0 +1,143 @@
1
+ // Copyright 2019 Google LLC.
2
+ #ifndef ParagraphStyle_DEFINED
3
+ #define ParagraphStyle_DEFINED
4
+
5
+ #include "include/core/SkFontStyle.h"
6
+ #include "include/core/SkScalar.h"
7
+ #include "include/core/SkString.h"
8
+ #include "modules/skparagraph/include/DartTypes.h"
9
+ #include "modules/skparagraph/include/TextStyle.h"
10
+
11
+ #include <stddef.h>
12
+ #include <algorithm>
13
+ #include <limits>
14
+ #include <string>
15
+ #include <utility>
16
+ #include <vector>
17
+
18
+ namespace skia {
19
+ namespace textlayout {
20
+
21
+ struct StrutStyle {
22
+ StrutStyle();
23
+
24
+ const std::vector<SkString>& getFontFamilies() const { return fFontFamilies; }
25
+ void setFontFamilies(std::vector<SkString> families) { fFontFamilies = std::move(families); }
26
+
27
+ SkFontStyle getFontStyle() const { return fFontStyle; }
28
+ void setFontStyle(SkFontStyle fontStyle) { fFontStyle = fontStyle; }
29
+
30
+ SkScalar getFontSize() const { return fFontSize; }
31
+ void setFontSize(SkScalar size) { fFontSize = size; }
32
+
33
+ void setHeight(SkScalar height) { fHeight = height; }
34
+ SkScalar getHeight() const { return fHeight; }
35
+
36
+ void setLeading(SkScalar Leading) { fLeading = Leading; }
37
+ SkScalar getLeading() const { return fLeading; }
38
+
39
+ bool getStrutEnabled() const { return fEnabled; }
40
+ void setStrutEnabled(bool v) { fEnabled = v; }
41
+
42
+ bool getForceStrutHeight() const { return fForceHeight; }
43
+ void setForceStrutHeight(bool v) { fForceHeight = v; }
44
+
45
+ bool getHeightOverride() const { return fHeightOverride; }
46
+ void setHeightOverride(bool v) { fHeightOverride = v; }
47
+
48
+ void setHalfLeading(bool halfLeading) { fHalfLeading = halfLeading; }
49
+ bool getHalfLeading() const { return fHalfLeading; }
50
+
51
+ bool operator==(const StrutStyle& rhs) const {
52
+ return this->fEnabled == rhs.fEnabled &&
53
+ this->fHeightOverride == rhs.fHeightOverride &&
54
+ this->fForceHeight == rhs.fForceHeight &&
55
+ this->fHalfLeading == rhs.fHalfLeading &&
56
+ nearlyEqual(this->fLeading, rhs.fLeading) &&
57
+ nearlyEqual(this->fHeight, rhs.fHeight) &&
58
+ nearlyEqual(this->fFontSize, rhs.fFontSize) &&
59
+ this->fFontStyle == rhs.fFontStyle &&
60
+ this->fFontFamilies == rhs.fFontFamilies;
61
+ }
62
+
63
+ private:
64
+
65
+ std::vector<SkString> fFontFamilies;
66
+ SkFontStyle fFontStyle;
67
+ SkScalar fFontSize;
68
+ SkScalar fHeight;
69
+ SkScalar fLeading;
70
+ bool fForceHeight;
71
+ bool fEnabled;
72
+ bool fHeightOverride;
73
+ // true: half leading.
74
+ // false: scale ascent/descent with fHeight.
75
+ bool fHalfLeading;
76
+ };
77
+
78
+ struct ParagraphStyle {
79
+ ParagraphStyle();
80
+
81
+ bool operator==(const ParagraphStyle& rhs) const {
82
+ return this->fHeight == rhs.fHeight &&
83
+ this->fEllipsis == rhs.fEllipsis &&
84
+ this->fEllipsisUtf16 == rhs.fEllipsisUtf16 &&
85
+ this->fTextDirection == rhs.fTextDirection && this->fTextAlign == rhs.fTextAlign &&
86
+ this->fDefaultTextStyle == rhs.fDefaultTextStyle &&
87
+ this->fReplaceTabCharacters == rhs.fReplaceTabCharacters;
88
+ }
89
+
90
+ const StrutStyle& getStrutStyle() const { return fStrutStyle; }
91
+ void setStrutStyle(StrutStyle strutStyle) { fStrutStyle = std::move(strutStyle); }
92
+
93
+ const TextStyle& getTextStyle() const { return fDefaultTextStyle; }
94
+ void setTextStyle(const TextStyle& textStyle) { fDefaultTextStyle = textStyle; }
95
+
96
+ TextDirection getTextDirection() const { return fTextDirection; }
97
+ void setTextDirection(TextDirection direction) { fTextDirection = direction; }
98
+
99
+ TextAlign getTextAlign() const { return fTextAlign; }
100
+ void setTextAlign(TextAlign align) { fTextAlign = align; }
101
+
102
+ size_t getMaxLines() const { return fLinesLimit; }
103
+ void setMaxLines(size_t maxLines) { fLinesLimit = maxLines; }
104
+
105
+ SkString getEllipsis() const { return fEllipsis; }
106
+ std::u16string getEllipsisUtf16() const { return fEllipsisUtf16; }
107
+ void setEllipsis(const std::u16string& ellipsis) { fEllipsisUtf16 = ellipsis; }
108
+ void setEllipsis(const SkString& ellipsis) { fEllipsis = ellipsis; }
109
+
110
+ SkScalar getHeight() const { return fHeight; }
111
+ void setHeight(SkScalar height) { fHeight = height; }
112
+
113
+ TextHeightBehavior getTextHeightBehavior() const { return fTextHeightBehavior; }
114
+ void setTextHeightBehavior(TextHeightBehavior v) { fTextHeightBehavior = v; }
115
+
116
+ bool unlimited_lines() const {
117
+ return fLinesLimit == std::numeric_limits<size_t>::max();
118
+ }
119
+ bool ellipsized() const { return !fEllipsis.isEmpty() || !fEllipsisUtf16.empty(); }
120
+ TextAlign effective_align() const;
121
+ bool hintingIsOn() const { return fHintingIsOn; }
122
+ void turnHintingOff() { fHintingIsOn = false; }
123
+
124
+ bool getReplaceTabCharacters() const { return fReplaceTabCharacters; }
125
+ void setReplaceTabCharacters(bool value) { fReplaceTabCharacters = value; }
126
+
127
+ private:
128
+ StrutStyle fStrutStyle;
129
+ TextStyle fDefaultTextStyle;
130
+ TextAlign fTextAlign;
131
+ TextDirection fTextDirection;
132
+ size_t fLinesLimit;
133
+ std::u16string fEllipsisUtf16;
134
+ SkString fEllipsis;
135
+ SkScalar fHeight;
136
+ TextHeightBehavior fTextHeightBehavior;
137
+ bool fHintingIsOn;
138
+ bool fReplaceTabCharacters;
139
+ };
140
+ } // namespace textlayout
141
+ } // namespace skia
142
+
143
+ #endif // ParagraphStyle_DEFINED
@@ -0,0 +1,30 @@
1
+ // Copyright 2019 Google LLC.
2
+ #ifndef TextShadow_DEFINED
3
+ #define TextShadow_DEFINED
4
+
5
+ #include "include/core/SkColor.h"
6
+ #include "include/core/SkPoint.h"
7
+
8
+ namespace skia {
9
+ namespace textlayout {
10
+
11
+ class TextShadow {
12
+ public:
13
+ SkColor fColor = SK_ColorBLACK;
14
+ SkPoint fOffset;
15
+ double fBlurSigma = 0.0;
16
+
17
+ TextShadow();
18
+
19
+ TextShadow(SkColor color, SkPoint offset, double blurSigma);
20
+
21
+ bool operator==(const TextShadow& other) const;
22
+
23
+ bool operator!=(const TextShadow& other) const;
24
+
25
+ bool hasShadow() const;
26
+ };
27
+ } // namespace textlayout
28
+ } // namespace skia
29
+
30
+ #endif // TextShadow_DEFINED
@@ -0,0 +1,352 @@
1
+ // Copyright 2019 Google LLC.
2
+ #ifndef TextStyle_DEFINED
3
+ #define TextStyle_DEFINED
4
+
5
+ #include <optional>
6
+ #include <vector>
7
+ #include "include/core/SkColor.h"
8
+ #include "include/core/SkFont.h"
9
+ #include "include/core/SkFontMetrics.h"
10
+ #include "include/core/SkFontStyle.h"
11
+ #include "include/core/SkPaint.h"
12
+ #include "include/core/SkScalar.h"
13
+ #include "modules/skparagraph/include/DartTypes.h"
14
+ #include "modules/skparagraph/include/FontArguments.h"
15
+ #include "modules/skparagraph/include/TextShadow.h"
16
+
17
+ // TODO: Make it external so the other platforms (Android) could use it
18
+ #define DEFAULT_FONT_FAMILY "sans-serif"
19
+
20
+ namespace skia {
21
+ namespace textlayout {
22
+
23
+ static inline bool nearlyZero(SkScalar x, SkScalar tolerance = SK_ScalarNearlyZero) {
24
+ if (SkScalarIsFinite(x)) {
25
+ return SkScalarNearlyZero(x, tolerance);
26
+ }
27
+ return false;
28
+ }
29
+
30
+ static inline bool nearlyEqual(SkScalar x, SkScalar y, SkScalar tolerance = SK_ScalarNearlyZero) {
31
+ if (SkScalarIsFinite(x) && SkScalarIsFinite(x)) {
32
+ return SkScalarNearlyEqual(x, y, tolerance);
33
+ }
34
+ // Inf == Inf, anything else is false
35
+ return x == y;
36
+ }
37
+
38
+ // Multiple decorations can be applied at once. Ex: Underline and overline is
39
+ // (0x1 | 0x2)
40
+ enum TextDecoration {
41
+ kNoDecoration = 0x0,
42
+ kUnderline = 0x1,
43
+ kOverline = 0x2,
44
+ kLineThrough = 0x4,
45
+ };
46
+ constexpr TextDecoration AllTextDecorations[] = {
47
+ kNoDecoration,
48
+ kUnderline,
49
+ kOverline,
50
+ kLineThrough,
51
+ };
52
+
53
+ enum TextDecorationStyle { kSolid, kDouble, kDotted, kDashed, kWavy };
54
+
55
+ enum TextDecorationMode { kGaps, kThrough };
56
+
57
+ enum StyleType {
58
+ kNone,
59
+ kAllAttributes,
60
+ kFont,
61
+ kForeground,
62
+ kBackground,
63
+ kShadow,
64
+ kDecorations,
65
+ kLetterSpacing,
66
+ kWordSpacing
67
+ };
68
+
69
+ struct Decoration {
70
+ TextDecoration fType;
71
+ TextDecorationMode fMode;
72
+ SkColor fColor;
73
+ TextDecorationStyle fStyle;
74
+ SkScalar fThicknessMultiplier;
75
+
76
+ bool operator==(const Decoration& other) const {
77
+ return this->fType == other.fType &&
78
+ this->fMode == other.fMode &&
79
+ this->fColor == other.fColor &&
80
+ this->fStyle == other.fStyle &&
81
+ this->fThicknessMultiplier == other.fThicknessMultiplier;
82
+ }
83
+ };
84
+
85
+ /// Where to vertically align the placeholder relative to the surrounding text.
86
+ enum class PlaceholderAlignment {
87
+ /// Match the baseline of the placeholder with the baseline.
88
+ kBaseline,
89
+
90
+ /// Align the bottom edge of the placeholder with the baseline such that the
91
+ /// placeholder sits on top of the baseline.
92
+ kAboveBaseline,
93
+
94
+ /// Align the top edge of the placeholder with the baseline specified in
95
+ /// such that the placeholder hangs below the baseline.
96
+ kBelowBaseline,
97
+
98
+ /// Align the top edge of the placeholder with the top edge of the font.
99
+ /// When the placeholder is very tall, the extra space will hang from
100
+ /// the top and extend through the bottom of the line.
101
+ kTop,
102
+
103
+ /// Align the bottom edge of the placeholder with the top edge of the font.
104
+ /// When the placeholder is very tall, the extra space will rise from
105
+ /// the bottom and extend through the top of the line.
106
+ kBottom,
107
+
108
+ /// Align the middle of the placeholder with the middle of the text. When the
109
+ /// placeholder is very tall, the extra space will grow equally from
110
+ /// the top and bottom of the line.
111
+ kMiddle,
112
+ };
113
+
114
+ struct FontFeature {
115
+ FontFeature(const SkString name, int value) : fName(name), fValue(value) {}
116
+ bool operator==(const FontFeature& that) const {
117
+ return fName == that.fName && fValue == that.fValue;
118
+ }
119
+ SkString fName;
120
+ int fValue;
121
+ };
122
+
123
+ struct PlaceholderStyle {
124
+ PlaceholderStyle() = default;
125
+ PlaceholderStyle(SkScalar width, SkScalar height, PlaceholderAlignment alignment,
126
+ TextBaseline baseline, SkScalar offset)
127
+ : fWidth(width)
128
+ , fHeight(height)
129
+ , fAlignment(alignment)
130
+ , fBaseline(baseline)
131
+ , fBaselineOffset(offset) {}
132
+
133
+ bool equals(const PlaceholderStyle&) const;
134
+
135
+ SkScalar fWidth = 0;
136
+ SkScalar fHeight = 0;
137
+ PlaceholderAlignment fAlignment = PlaceholderAlignment::kBaseline;
138
+ TextBaseline fBaseline = TextBaseline::kAlphabetic;
139
+ // Distance from the top edge of the rect to the baseline position. This
140
+ // baseline will be aligned against the alphabetic baseline of the surrounding
141
+ // text.
142
+ //
143
+ // Positive values drop the baseline lower (positions the rect higher) and
144
+ // small or negative values will cause the rect to be positioned underneath
145
+ // the line. When baseline == height, the bottom edge of the rect will rest on
146
+ // the alphabetic baseline.
147
+ SkScalar fBaselineOffset = 0;
148
+ };
149
+
150
+ class TextStyle {
151
+ public:
152
+ TextStyle() = default;
153
+ TextStyle(const TextStyle& other) = default;
154
+ TextStyle& operator=(const TextStyle& other) = default;
155
+
156
+ TextStyle cloneForPlaceholder();
157
+
158
+ bool equals(const TextStyle& other) const;
159
+ bool equalsByFonts(const TextStyle& that) const;
160
+ bool matchOneAttribute(StyleType styleType, const TextStyle& other) const;
161
+ bool operator==(const TextStyle& rhs) const { return this->equals(rhs); }
162
+
163
+ // Colors
164
+ SkColor getColor() const { return fColor; }
165
+ void setColor(SkColor color) { fColor = color; }
166
+
167
+ bool hasForeground() const { return fHasForeground; }
168
+ SkPaint getForeground() const { return fForeground; }
169
+ void setForegroundColor(SkPaint paint) {
170
+ fHasForeground = true;
171
+ fForeground = std::move(paint);
172
+ }
173
+ void clearForegroundColor() { fHasForeground = false; }
174
+
175
+ bool hasBackground() const { return fHasBackground; }
176
+ SkPaint getBackground() const { return fBackground; }
177
+ void setBackgroundColor(SkPaint paint) {
178
+ fHasBackground = true;
179
+ fBackground = std::move(paint);
180
+ }
181
+ void clearBackgroundColor() { fHasBackground = false; }
182
+
183
+ // Decorations
184
+ Decoration getDecoration() const { return fDecoration; }
185
+ TextDecoration getDecorationType() const { return fDecoration.fType; }
186
+ TextDecorationMode getDecorationMode() const { return fDecoration.fMode; }
187
+ SkColor getDecorationColor() const { return fDecoration.fColor; }
188
+ TextDecorationStyle getDecorationStyle() const { return fDecoration.fStyle; }
189
+ SkScalar getDecorationThicknessMultiplier() const {
190
+ return fDecoration.fThicknessMultiplier;
191
+ }
192
+ void setDecoration(TextDecoration decoration) { fDecoration.fType = decoration; }
193
+ void setDecorationMode(TextDecorationMode mode) { fDecoration.fMode = mode; }
194
+ void setDecorationStyle(TextDecorationStyle style) { fDecoration.fStyle = style; }
195
+ void setDecorationColor(SkColor color) { fDecoration.fColor = color; }
196
+ void setDecorationThicknessMultiplier(SkScalar m) { fDecoration.fThicknessMultiplier = m; }
197
+
198
+ // Weight/Width/Slant
199
+ SkFontStyle getFontStyle() const { return fFontStyle; }
200
+ void setFontStyle(SkFontStyle fontStyle) { fFontStyle = fontStyle; }
201
+
202
+ // Shadows
203
+ size_t getShadowNumber() const { return fTextShadows.size(); }
204
+ std::vector<TextShadow> getShadows() const { return fTextShadows; }
205
+ void addShadow(TextShadow shadow) { fTextShadows.emplace_back(shadow); }
206
+ void resetShadows() { fTextShadows.clear(); }
207
+
208
+ // Font features
209
+ size_t getFontFeatureNumber() const { return fFontFeatures.size(); }
210
+ std::vector<FontFeature> getFontFeatures() const { return fFontFeatures; }
211
+ void addFontFeature(const SkString& fontFeature, int value)
212
+ { fFontFeatures.emplace_back(fontFeature, value); }
213
+ void resetFontFeatures() { fFontFeatures.clear(); }
214
+
215
+ // Font arguments
216
+ const std::optional<FontArguments>& getFontArguments() const { return fFontArguments; }
217
+ // The contents of the SkFontArguments will be copied into the TextStyle,
218
+ // and the SkFontArguments can be safely deleted after setFontArguments returns.
219
+ void setFontArguments(const std::optional<SkFontArguments>& args);
220
+
221
+ SkScalar getFontSize() const { return fFontSize; }
222
+ void setFontSize(SkScalar size) { fFontSize = size; }
223
+
224
+ const std::vector<SkString>& getFontFamilies() const { return fFontFamilies; }
225
+ void setFontFamilies(std::vector<SkString> families) {
226
+ fFontFamilies = std::move(families);
227
+ }
228
+
229
+ SkScalar getBaselineShift() const { return fBaselineShift; }
230
+ void setBaselineShift(SkScalar baselineShift) { fBaselineShift = baselineShift; }
231
+
232
+ void setHeight(SkScalar height) { fHeight = height; }
233
+ SkScalar getHeight() const { return fHeightOverride ? fHeight : 0; }
234
+
235
+ void setHeightOverride(bool heightOverride) { fHeightOverride = heightOverride; }
236
+ bool getHeightOverride() const { return fHeightOverride; }
237
+
238
+ void setHalfLeading(bool halfLeading) { fHalfLeading = halfLeading; }
239
+ bool getHalfLeading() const { return fHalfLeading; }
240
+
241
+ void setLetterSpacing(SkScalar letterSpacing) { fLetterSpacing = letterSpacing; }
242
+ SkScalar getLetterSpacing() const { return fLetterSpacing; }
243
+
244
+ void setWordSpacing(SkScalar wordSpacing) { fWordSpacing = wordSpacing; }
245
+ SkScalar getWordSpacing() const { return fWordSpacing; }
246
+
247
+ SkTypeface* getTypeface() const { return fTypeface.get(); }
248
+ sk_sp<SkTypeface> refTypeface() const { return fTypeface; }
249
+ void setTypeface(sk_sp<SkTypeface> typeface) { fTypeface = std::move(typeface); }
250
+
251
+ SkString getLocale() const { return fLocale; }
252
+ void setLocale(const SkString& locale) { fLocale = locale; }
253
+
254
+ TextBaseline getTextBaseline() const { return fTextBaseline; }
255
+ void setTextBaseline(TextBaseline baseline) { fTextBaseline = baseline; }
256
+
257
+ void getFontMetrics(SkFontMetrics* metrics) const;
258
+
259
+ bool isPlaceholder() const { return fIsPlaceholder; }
260
+ void setPlaceholder() { fIsPlaceholder = true; }
261
+
262
+ private:
263
+ static const std::vector<SkString>* kDefaultFontFamilies;
264
+
265
+ Decoration fDecoration = {
266
+ TextDecoration::kNoDecoration,
267
+ // TODO: switch back to kGaps when (if) switching flutter to skparagraph
268
+ TextDecorationMode::kThrough,
269
+ // It does not make sense to draw a transparent object, so we use this as a default
270
+ // value to indicate no decoration color was set.
271
+ SK_ColorTRANSPARENT, TextDecorationStyle::kSolid,
272
+ // Thickness is applied as a multiplier to the default thickness of the font.
273
+ 1.0f};
274
+
275
+ SkFontStyle fFontStyle;
276
+
277
+ std::vector<SkString> fFontFamilies = *kDefaultFontFamilies;
278
+
279
+ SkScalar fFontSize = 14.0;
280
+ SkScalar fHeight = 1.0;
281
+ bool fHeightOverride = false;
282
+ SkScalar fBaselineShift = 0.0f;
283
+ // true: half leading.
284
+ // false: scale ascent/descent with fHeight.
285
+ bool fHalfLeading = false;
286
+ SkString fLocale = {};
287
+ SkScalar fLetterSpacing = 0.0;
288
+ SkScalar fWordSpacing = 0.0;
289
+
290
+ TextBaseline fTextBaseline = TextBaseline::kAlphabetic;
291
+
292
+ SkColor fColor = SK_ColorWHITE;
293
+ bool fHasBackground = false;
294
+ SkPaint fBackground;
295
+ bool fHasForeground = false;
296
+ SkPaint fForeground;
297
+
298
+ std::vector<TextShadow> fTextShadows;
299
+
300
+ sk_sp<SkTypeface> fTypeface;
301
+ bool fIsPlaceholder = false;
302
+
303
+ std::vector<FontFeature> fFontFeatures;
304
+
305
+ std::optional<FontArguments> fFontArguments;
306
+ };
307
+
308
+ typedef size_t TextIndex;
309
+ typedef SkRange<size_t> TextRange;
310
+ const SkRange<size_t> EMPTY_TEXT = EMPTY_RANGE;
311
+
312
+ struct Block {
313
+ Block() = default;
314
+ Block(size_t start, size_t end, const TextStyle& style) : fRange(start, end), fStyle(style) {}
315
+ Block(TextRange textRange, const TextStyle& style) : fRange(textRange), fStyle(style) {}
316
+
317
+ void add(TextRange tail) {
318
+ SkASSERT(fRange.end == tail.start);
319
+ fRange = TextRange(fRange.start, fRange.start + fRange.width() + tail.width());
320
+ }
321
+
322
+ TextRange fRange = EMPTY_RANGE;
323
+ TextStyle fStyle;
324
+ };
325
+
326
+
327
+ typedef size_t BlockIndex;
328
+ typedef SkRange<size_t> BlockRange;
329
+ const size_t EMPTY_BLOCK = EMPTY_INDEX;
330
+ const SkRange<size_t> EMPTY_BLOCKS = EMPTY_RANGE;
331
+
332
+ struct Placeholder {
333
+ Placeholder() = default;
334
+ Placeholder(size_t start, size_t end, const PlaceholderStyle& style, const TextStyle& textStyle,
335
+ BlockRange blocksBefore, TextRange textBefore)
336
+ : fRange(start, end)
337
+ , fStyle(style)
338
+ , fTextStyle(textStyle)
339
+ , fBlocksBefore(blocksBefore)
340
+ , fTextBefore(textBefore) {}
341
+
342
+ TextRange fRange = EMPTY_RANGE;
343
+ PlaceholderStyle fStyle;
344
+ TextStyle fTextStyle;
345
+ BlockRange fBlocksBefore;
346
+ TextRange fTextBefore;
347
+ };
348
+
349
+ } // namespace textlayout
350
+ } // namespace skia
351
+
352
+ #endif // TextStyle_DEFINED
@@ -0,0 +1,81 @@
1
+ // Copyright 2019 Google LLC.
2
+ #ifndef TypefaceFontProvider_DEFINED
3
+ #define TypefaceFontProvider_DEFINED
4
+
5
+ #include "include/private/SkTArray.h"
6
+ #include "include/private/SkTHash.h"
7
+ #include <string>
8
+ #include <unordered_map>
9
+ #include <vector>
10
+ #include "include/core/SkFontMgr.h"
11
+ #include "include/core/SkStream.h"
12
+ #include "include/core/SkString.h"
13
+
14
+ namespace skia {
15
+ namespace textlayout {
16
+
17
+ class TypefaceFontStyleSet : public SkFontStyleSet {
18
+ public:
19
+ explicit TypefaceFontStyleSet(const SkString& familyName);
20
+
21
+ int count() override;
22
+ void getStyle(int index, SkFontStyle*, SkString* name) override;
23
+ SkTypeface* createTypeface(int index) override;
24
+ SkTypeface* matchStyle(const SkFontStyle& pattern) override;
25
+
26
+ SkString getFamilyName() const { return fFamilyName; }
27
+ SkString getAlias() const { return fAlias; }
28
+ void appendTypeface(sk_sp<SkTypeface> typeface);
29
+
30
+ private:
31
+ SkTArray<sk_sp<SkTypeface>> fStyles;
32
+ SkString fFamilyName;
33
+ SkString fAlias;
34
+ };
35
+
36
+ class TypefaceFontProvider : public SkFontMgr {
37
+ public:
38
+ size_t registerTypeface(sk_sp<SkTypeface> typeface);
39
+ size_t registerTypeface(sk_sp<SkTypeface> typeface, const SkString& alias);
40
+
41
+ int onCountFamilies() const override;
42
+
43
+ void onGetFamilyName(int index, SkString* familyName) const override;
44
+
45
+ SkFontStyleSet* onMatchFamily(const char familyName[]) const override;
46
+
47
+ SkFontStyleSet* onCreateStyleSet(int) const override { return nullptr; }
48
+ SkTypeface* onMatchFamilyStyle(const char[], const SkFontStyle&) const override {
49
+ return nullptr;
50
+ }
51
+ SkTypeface* onMatchFamilyStyleCharacter(const char[], const SkFontStyle&,
52
+ const char*[], int,
53
+ SkUnichar) const override {
54
+ return nullptr;
55
+ }
56
+
57
+ sk_sp<SkTypeface> onMakeFromData(sk_sp<SkData>, int) const override { return nullptr; }
58
+ sk_sp<SkTypeface> onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset>, int) const override {
59
+ return nullptr;
60
+ }
61
+ sk_sp<SkTypeface> onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset>,
62
+ const SkFontArguments&) const override {
63
+ return nullptr;
64
+ }
65
+ sk_sp<SkTypeface> onMakeFromFile(const char[], int) const override {
66
+ return nullptr;
67
+ }
68
+
69
+ sk_sp<SkTypeface> onLegacyMakeTypeface(const char[], SkFontStyle) const override {
70
+ return nullptr;
71
+ }
72
+
73
+ private:
74
+ SkTHashMap<SkString, sk_sp<TypefaceFontStyleSet>> fRegisteredFamilies;
75
+ SkTArray<SkString> fFamilyNames;
76
+ };
77
+
78
+ } // namespace textlayout
79
+ } // namespace skia
80
+
81
+ #endif // TypefaceFontProvider_DEFINED
@@ -141,7 +141,7 @@ private:
141
141
 
142
142
  template <typename T, typename TArray>
143
143
  bool parseEnumMap(const TArray& arr, T* result) {
144
- for (size_t i = 0; i < SK_ARRAY_COUNT(arr); ++i) {
144
+ for (size_t i = 0; i < std::size(arr); ++i) {
145
145
  if (this->parseExpectedStringToken(std::get<0>(arr[i]))) {
146
146
  *result = std::get<1>(arr[i]);
147
147
  return true;
@@ -204,10 +204,10 @@ public:
204
204
  Type type() const { return fType; }
205
205
  const SkSVGColorType& color() const { SkASSERT(fType == Type::kColor); return fColor; }
206
206
  SkSpan<const SkString> vars() const {
207
- return fVars ? SkMakeSpan<const Vars>(fVars->fData) : SkSpan<const SkString>{nullptr, 0};
207
+ return fVars ? SkSpan<const SkString>(fVars->fData) : SkSpan<const SkString>();
208
208
  }
209
- SkSpan< SkString> vars() {
210
- return fVars ? SkMakeSpan< Vars>(fVars->fData) : SkSpan< SkString>{nullptr, 0};
209
+ SkSpan<SkString> vars() {
210
+ return fVars ? SkSpan<SkString>(fVars->fData) : SkSpan<SkString>();
211
211
  }
212
212
 
213
213
  private: