@react-native-ohos/react-native-svg 15.12.1-rc.1

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 (280) hide show
  1. package/LICENSE +21 -0
  2. package/README.OpenSource +11 -0
  3. package/README.md +13 -0
  4. package/css/package.json +6 -0
  5. package/harmony/svg/BuildProfile.ets +17 -0
  6. package/harmony/svg/build-profile.json5 +9 -0
  7. package/harmony/svg/hvigorfile.ts +2 -0
  8. package/harmony/svg/index.ets +7 -0
  9. package/harmony/svg/oh-package.json5 +13 -0
  10. package/harmony/svg/src/main/cpp/Attribute.h +52 -0
  11. package/harmony/svg/src/main/cpp/CMakeLists.txt +32 -0
  12. package/harmony/svg/src/main/cpp/FallbackProps.h +0 -0
  13. package/harmony/svg/src/main/cpp/FontHolderBase.cpp +22 -0
  14. package/harmony/svg/src/main/cpp/FontHolderBase.h +54 -0
  15. package/harmony/svg/src/main/cpp/SVGPackage.cpp +135 -0
  16. package/harmony/svg/src/main/cpp/SVGPackage.h +153 -0
  17. package/harmony/svg/src/main/cpp/SvgArkUINode.cpp +75 -0
  18. package/harmony/svg/src/main/cpp/SvgArkUINode.h +45 -0
  19. package/harmony/svg/src/main/cpp/SvgBaseAttribute.h +83 -0
  20. package/harmony/svg/src/main/cpp/SvgCircle.cpp +29 -0
  21. package/harmony/svg/src/main/cpp/SvgCircle.h +29 -0
  22. package/harmony/svg/src/main/cpp/SvgClipPath.h +22 -0
  23. package/harmony/svg/src/main/cpp/SvgContext.cpp +56 -0
  24. package/harmony/svg/src/main/cpp/SvgContext.h +71 -0
  25. package/harmony/svg/src/main/cpp/SvgDefs.h +46 -0
  26. package/harmony/svg/src/main/cpp/SvgEllipse.cpp +32 -0
  27. package/harmony/svg/src/main/cpp/SvgEllipse.h +34 -0
  28. package/harmony/svg/src/main/cpp/SvgFilter.cpp +505 -0
  29. package/harmony/svg/src/main/cpp/SvgFilter.h +112 -0
  30. package/harmony/svg/src/main/cpp/SvgGradient.cpp +116 -0
  31. package/harmony/svg/src/main/cpp/SvgGradient.h +49 -0
  32. package/harmony/svg/src/main/cpp/SvgGraphic.cpp +553 -0
  33. package/harmony/svg/src/main/cpp/SvgGraphic.h +77 -0
  34. package/harmony/svg/src/main/cpp/SvgGroup.cpp +86 -0
  35. package/harmony/svg/src/main/cpp/SvgGroup.h +41 -0
  36. package/harmony/svg/src/main/cpp/SvgHost.cpp +27 -0
  37. package/harmony/svg/src/main/cpp/SvgHost.h +38 -0
  38. package/harmony/svg/src/main/cpp/SvgImage.cpp +168 -0
  39. package/harmony/svg/src/main/cpp/SvgImage.h +52 -0
  40. package/harmony/svg/src/main/cpp/SvgLine.cpp +28 -0
  41. package/harmony/svg/src/main/cpp/SvgLine.h +32 -0
  42. package/harmony/svg/src/main/cpp/SvgMarker.cpp +61 -0
  43. package/harmony/svg/src/main/cpp/SvgMarker.h +86 -0
  44. package/harmony/svg/src/main/cpp/SvgMask.cpp +72 -0
  45. package/harmony/svg/src/main/cpp/SvgMask.h +68 -0
  46. package/harmony/svg/src/main/cpp/SvgNode.cpp +289 -0
  47. package/harmony/svg/src/main/cpp/SvgNode.h +347 -0
  48. package/harmony/svg/src/main/cpp/SvgPath.cpp +42 -0
  49. package/harmony/svg/src/main/cpp/SvgPath.h +29 -0
  50. package/harmony/svg/src/main/cpp/SvgPattern.cpp +77 -0
  51. package/harmony/svg/src/main/cpp/SvgPattern.h +64 -0
  52. package/harmony/svg/src/main/cpp/SvgQuote.h +87 -0
  53. package/harmony/svg/src/main/cpp/SvgRect.cpp +58 -0
  54. package/harmony/svg/src/main/cpp/SvgRect.h +33 -0
  55. package/harmony/svg/src/main/cpp/SvgSvg.cpp +83 -0
  56. package/harmony/svg/src/main/cpp/SvgSvg.h +52 -0
  57. package/harmony/svg/src/main/cpp/SvgSymbol.cpp +25 -0
  58. package/harmony/svg/src/main/cpp/SvgSymbol.h +37 -0
  59. package/harmony/svg/src/main/cpp/SvgTSpan.cpp +501 -0
  60. package/harmony/svg/src/main/cpp/SvgTSpan.h +101 -0
  61. package/harmony/svg/src/main/cpp/SvgText.cpp +48 -0
  62. package/harmony/svg/src/main/cpp/SvgText.h +29 -0
  63. package/harmony/svg/src/main/cpp/SvgTextPath.cpp +35 -0
  64. package/harmony/svg/src/main/cpp/SvgTextPath.h +51 -0
  65. package/harmony/svg/src/main/cpp/SvgUse.cpp +65 -0
  66. package/harmony/svg/src/main/cpp/SvgUse.h +46 -0
  67. package/harmony/svg/src/main/cpp/SvgViewManager.cpp +36 -0
  68. package/harmony/svg/src/main/cpp/SvgViewManager.h +37 -0
  69. package/harmony/svg/src/main/cpp/TextBase.cpp +20 -0
  70. package/harmony/svg/src/main/cpp/TextBase.h +114 -0
  71. package/harmony/svg/src/main/cpp/componentInstances/RNSVGBaseComponentInstance.h +212 -0
  72. package/harmony/svg/src/main/cpp/componentInstances/RNSVGCircleComponentInstance.cpp +31 -0
  73. package/harmony/svg/src/main/cpp/componentInstances/RNSVGCircleComponentInstance.h +27 -0
  74. package/harmony/svg/src/main/cpp/componentInstances/RNSVGClipPathComponentInstance.cpp +23 -0
  75. package/harmony/svg/src/main/cpp/componentInstances/RNSVGClipPathComponentInstance.h +27 -0
  76. package/harmony/svg/src/main/cpp/componentInstances/RNSVGDefsComponentInstance.cpp +23 -0
  77. package/harmony/svg/src/main/cpp/componentInstances/RNSVGDefsComponentInstance.h +28 -0
  78. package/harmony/svg/src/main/cpp/componentInstances/RNSVGEllipseComponentInstance.cpp +27 -0
  79. package/harmony/svg/src/main/cpp/componentInstances/RNSVGEllipseComponentInstance.h +27 -0
  80. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeBlendComponentInstance.cpp +40 -0
  81. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeBlendComponentInstance.h +48 -0
  82. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeColorMatrixComponentInstance.cpp +33 -0
  83. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeColorMatrixComponentInstance.h +48 -0
  84. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeCompositeComponentInstance.cpp +39 -0
  85. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeCompositeComponentInstance.h +55 -0
  86. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeFloodComponentInstance.cpp +33 -0
  87. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeFloodComponentInstance.h +49 -0
  88. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeGaussianBlurComponentInstance.cpp +34 -0
  89. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeGaussianBlurComponentInstance.h +48 -0
  90. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeOffsetComponentInstance.cpp +35 -0
  91. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFeOffsetComponentInstance.h +46 -0
  92. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFilterComponentInstance.cpp +199 -0
  93. package/harmony/svg/src/main/cpp/componentInstances/RNSVGFilterComponentInstance.h +48 -0
  94. package/harmony/svg/src/main/cpp/componentInstances/RNSVGGroupComponentInstance.cpp +32 -0
  95. package/harmony/svg/src/main/cpp/componentInstances/RNSVGGroupComponentInstance.h +27 -0
  96. package/harmony/svg/src/main/cpp/componentInstances/RNSVGImageComponentInstance.cpp +100 -0
  97. package/harmony/svg/src/main/cpp/componentInstances/RNSVGImageComponentInstance.h +43 -0
  98. package/harmony/svg/src/main/cpp/componentInstances/RNSVGLineComponentInstance.cpp +27 -0
  99. package/harmony/svg/src/main/cpp/componentInstances/RNSVGLineComponentInstance.h +27 -0
  100. package/harmony/svg/src/main/cpp/componentInstances/RNSVGLinearGradientComponentInstance.cpp +30 -0
  101. package/harmony/svg/src/main/cpp/componentInstances/RNSVGLinearGradientComponentInstance.h +28 -0
  102. package/harmony/svg/src/main/cpp/componentInstances/RNSVGMarkerComponentInstance.cpp +35 -0
  103. package/harmony/svg/src/main/cpp/componentInstances/RNSVGMarkerComponentInstance.h +27 -0
  104. package/harmony/svg/src/main/cpp/componentInstances/RNSVGMaskComponentInstance.cpp +30 -0
  105. package/harmony/svg/src/main/cpp/componentInstances/RNSVGMaskComponentInstance.h +27 -0
  106. package/harmony/svg/src/main/cpp/componentInstances/RNSVGPathComponentInstance.cpp +33 -0
  107. package/harmony/svg/src/main/cpp/componentInstances/RNSVGPathComponentInstance.h +29 -0
  108. package/harmony/svg/src/main/cpp/componentInstances/RNSVGPatternComponentInstance.cpp +40 -0
  109. package/harmony/svg/src/main/cpp/componentInstances/RNSVGPatternComponentInstance.h +27 -0
  110. package/harmony/svg/src/main/cpp/componentInstances/RNSVGRadialGradientComponentInstance.cpp +32 -0
  111. package/harmony/svg/src/main/cpp/componentInstances/RNSVGRadialGradientComponentInstance.h +28 -0
  112. package/harmony/svg/src/main/cpp/componentInstances/RNSVGRectComponentInstance.cpp +36 -0
  113. package/harmony/svg/src/main/cpp/componentInstances/RNSVGRectComponentInstance.h +27 -0
  114. package/harmony/svg/src/main/cpp/componentInstances/RNSVGSvgViewComponentInstance.cpp +86 -0
  115. package/harmony/svg/src/main/cpp/componentInstances/RNSVGSvgViewComponentInstance.h +47 -0
  116. package/harmony/svg/src/main/cpp/componentInstances/RNSVGSymbolComponentInstance.cpp +30 -0
  117. package/harmony/svg/src/main/cpp/componentInstances/RNSVGSymbolComponentInstance.h +27 -0
  118. package/harmony/svg/src/main/cpp/componentInstances/RNSVGTSpanComponentInstance.cpp +27 -0
  119. package/harmony/svg/src/main/cpp/componentInstances/RNSVGTSpanComponentInstance.h +27 -0
  120. package/harmony/svg/src/main/cpp/componentInstances/RNSVGTextComponentInstance.cpp +25 -0
  121. package/harmony/svg/src/main/cpp/componentInstances/RNSVGTextComponentInstance.h +27 -0
  122. package/harmony/svg/src/main/cpp/componentInstances/RNSVGTextPathComponentInstance.cpp +32 -0
  123. package/harmony/svg/src/main/cpp/componentInstances/RNSVGTextPathComponentInstance.h +27 -0
  124. package/harmony/svg/src/main/cpp/componentInstances/RNSVGUseComponentInstance.cpp +32 -0
  125. package/harmony/svg/src/main/cpp/componentInstances/RNSVGUseComponentInstance.h +32 -0
  126. package/harmony/svg/src/main/cpp/downloadUtils/HttpTaskProcessor.cpp +207 -0
  127. package/harmony/svg/src/main/cpp/downloadUtils/HttpTaskProcessor.h +88 -0
  128. package/harmony/svg/src/main/cpp/downloadUtils/ImageSourceResolver.cpp +106 -0
  129. package/harmony/svg/src/main/cpp/downloadUtils/ImageSourceResolver.h +97 -0
  130. package/harmony/svg/src/main/cpp/downloadUtils/LRUCache.h +98 -0
  131. package/harmony/svg/src/main/cpp/drawing/Brush.cpp +50 -0
  132. package/harmony/svg/src/main/cpp/drawing/Brush.h +52 -0
  133. package/harmony/svg/src/main/cpp/drawing/GlyPathBag.cpp +20 -0
  134. package/harmony/svg/src/main/cpp/drawing/GlyPathBag.h +31 -0
  135. package/harmony/svg/src/main/cpp/drawing/Matrix.cpp +100 -0
  136. package/harmony/svg/src/main/cpp/drawing/Matrix.h +68 -0
  137. package/harmony/svg/src/main/cpp/drawing/Path.cpp +173 -0
  138. package/harmony/svg/src/main/cpp/drawing/Path.h +127 -0
  139. package/harmony/svg/src/main/cpp/drawing/Pen.cpp +57 -0
  140. package/harmony/svg/src/main/cpp/drawing/Pen.h +59 -0
  141. package/harmony/svg/src/main/cpp/drawing/Rect.cpp +47 -0
  142. package/harmony/svg/src/main/cpp/drawing/Rect.h +56 -0
  143. package/harmony/svg/src/main/cpp/drawing/RoundRect.cpp +24 -0
  144. package/harmony/svg/src/main/cpp/drawing/RoundRect.h +39 -0
  145. package/harmony/svg/src/main/cpp/drawing/ShaderEffect.cpp +37 -0
  146. package/harmony/svg/src/main/cpp/drawing/ShaderEffect.h +51 -0
  147. package/harmony/svg/src/main/cpp/drawing/TextStyle.cpp +49 -0
  148. package/harmony/svg/src/main/cpp/drawing/TextStyle.h +41 -0
  149. package/harmony/svg/src/main/cpp/drawing/Typography.cpp +9 -0
  150. package/harmony/svg/src/main/cpp/drawing/Typography.h +25 -0
  151. package/harmony/svg/src/main/cpp/drawing/TypographyStyle.cpp +31 -0
  152. package/harmony/svg/src/main/cpp/drawing/TypographyStyle.h +41 -0
  153. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGCircleJSIBinder.h +54 -0
  154. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGClipPathJSIBinder.h +54 -0
  155. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGDefsJSIBinder.h +38 -0
  156. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGEllipseJSIBinder.h +55 -0
  157. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGFeBlendJSIBinder.h +26 -0
  158. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGFeColorMatrixJSIBinder.h +26 -0
  159. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGFeCompositeJSIBinder.h +30 -0
  160. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGFeFloodJSIBinder.h +26 -0
  161. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGFeGaussianBlurJSIBinder.h +27 -0
  162. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGFeOffsetJSIBinder.h +26 -0
  163. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGFilterJSIBinder.h +44 -0
  164. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGForeignObjectJSIBinder.h +57 -0
  165. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGGroupJSIBinder.h +54 -0
  166. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGImageJSIBinder.h +58 -0
  167. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGLineJSIBinder.h +55 -0
  168. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGLinearGradientJSIBinder.h +45 -0
  169. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGMarkerJSIBinder.h +66 -0
  170. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGMaskJSIBinder.h +60 -0
  171. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGPathJSIBinder.h +52 -0
  172. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGPatternJSIBinder.h +67 -0
  173. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGRadialGradientJSIBinder.h +47 -0
  174. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGRectJSIBinder.h +57 -0
  175. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGSvgViewAndroidJSIBinder.h +67 -0
  176. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGSvgViewJSIBinder.h +36 -0
  177. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGSymbolJSIBinder.h +60 -0
  178. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGTSpanJSIBinder.h +66 -0
  179. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGTextJSIBinder.h +65 -0
  180. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGTextPathJSIBinder.h +71 -0
  181. package/harmony/svg/src/main/cpp/generated/RNOH/generated/components/RNSVGUseJSIBinder.h +56 -0
  182. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/ComponentDescriptors.h +48 -0
  183. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/EventEmitters.cpp +20 -0
  184. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/EventEmitters.h +253 -0
  185. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/Props.cpp +977 -0
  186. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/Props.h +1280 -0
  187. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/ShadowNodes.cpp +45 -0
  188. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/ShadowNodes.h +331 -0
  189. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/States.cpp +18 -0
  190. package/harmony/svg/src/main/cpp/generated/react/renderer/components/react_native_svg/States.h +441 -0
  191. package/harmony/svg/src/main/cpp/properties/Color.cpp +458 -0
  192. package/harmony/svg/src/main/cpp/properties/Color.h +144 -0
  193. package/harmony/svg/src/main/cpp/properties/Decoration.cpp +41 -0
  194. package/harmony/svg/src/main/cpp/properties/Decoration.h +483 -0
  195. package/harmony/svg/src/main/cpp/properties/Dimension.cpp +64 -0
  196. package/harmony/svg/src/main/cpp/properties/Dimension.h +243 -0
  197. package/harmony/svg/src/main/cpp/properties/Font.cpp +166 -0
  198. package/harmony/svg/src/main/cpp/properties/Font.h +163 -0
  199. package/harmony/svg/src/main/cpp/properties/Offset.h +119 -0
  200. package/harmony/svg/src/main/cpp/properties/PaintState.h +240 -0
  201. package/harmony/svg/src/main/cpp/properties/Rect.h +423 -0
  202. package/harmony/svg/src/main/cpp/properties/Size.h +246 -0
  203. package/harmony/svg/src/main/cpp/properties/SvgPaintState.h +452 -0
  204. package/harmony/svg/src/main/cpp/properties/TextProperties.cpp +91 -0
  205. package/harmony/svg/src/main/cpp/properties/TextProperties.h +56 -0
  206. package/harmony/svg/src/main/cpp/properties/ViewBox.h +108 -0
  207. package/harmony/svg/src/main/cpp/svgImage/RNSVGImageComponentDescriptor.h +41 -0
  208. package/harmony/svg/src/main/cpp/svgImage/RNSVGImageShadowNode.cpp +62 -0
  209. package/harmony/svg/src/main/cpp/svgImage/RNSVGImageShadowNode.h +63 -0
  210. package/harmony/svg/src/main/cpp/svgImage/RNSVGImageState.cpp +17 -0
  211. package/harmony/svg/src/main/cpp/svgImage/RNSVGImageState.h +58 -0
  212. package/harmony/svg/src/main/cpp/turboModules/RNSVGImageModule.cpp +54 -0
  213. package/harmony/svg/src/main/cpp/turboModules/RNSVGImageModule.h +32 -0
  214. package/harmony/svg/src/main/cpp/turboModules/RNSVGRenderableModule.cpp +101 -0
  215. package/harmony/svg/src/main/cpp/turboModules/RNSVGRenderableModule.h +32 -0
  216. package/harmony/svg/src/main/cpp/turboModules/RNSVGSvgViewModule.cpp +71 -0
  217. package/harmony/svg/src/main/cpp/turboModules/RNSVGSvgViewModule.h +32 -0
  218. package/harmony/svg/src/main/cpp/utils/DynamicUtils.h +55 -0
  219. package/harmony/svg/src/main/cpp/utils/FilterManager.h +190 -0
  220. package/harmony/svg/src/main/cpp/utils/GlyphContext.cpp +221 -0
  221. package/harmony/svg/src/main/cpp/utils/GlyphContext.h +106 -0
  222. package/harmony/svg/src/main/cpp/utils/LinearMap.h +69 -0
  223. package/harmony/svg/src/main/cpp/utils/PathParserUtils.cpp +591 -0
  224. package/harmony/svg/src/main/cpp/utils/PathParserUtils.h +93 -0
  225. package/harmony/svg/src/main/cpp/utils/StringUtils.cpp +134 -0
  226. package/harmony/svg/src/main/cpp/utils/StringUtils.h +644 -0
  227. package/harmony/svg/src/main/cpp/utils/SvgAttributesParser.cpp +239 -0
  228. package/harmony/svg/src/main/cpp/utils/SvgAttributesParser.h +277 -0
  229. package/harmony/svg/src/main/cpp/utils/SvgMarkerPositionUtils.h +200 -0
  230. package/harmony/svg/src/main/cpp/utils/SvgUtils.h +176 -0
  231. package/harmony/svg/src/main/cpp/utils/TextPathHelper.cpp +94 -0
  232. package/harmony/svg/src/main/cpp/utils/TextPathHelper.h +61 -0
  233. package/harmony/svg/src/main/ets/RNSVGImageModule.ts +21 -0
  234. package/harmony/svg/src/main/ets/RNSVGRenderableModule.ts +16 -0
  235. package/harmony/svg/src/main/ets/RNSVGSvgViewModule.ts +18 -0
  236. package/harmony/svg/src/main/ets/SvgPackage.ts +58 -0
  237. package/harmony/svg/src/main/module.json5 +7 -0
  238. package/harmony/svg/src/main/resources/base/element/string.json +8 -0
  239. package/harmony/svg/src/main/resources/en_US/element/string.json +8 -0
  240. package/harmony/svg/src/main/resources/zh_CN/element/string.json +8 -0
  241. package/harmony/svg/ts.ts +8 -0
  242. package/harmony/svg.har +0 -0
  243. package/lib/commonjs/css/index.js +55 -0
  244. package/lib/commonjs/css/index.js.map +1 -0
  245. package/lib/commonjs/index.js +26 -0
  246. package/lib/commonjs/index.js.map +1 -0
  247. package/lib/module/css/index.js +4 -0
  248. package/lib/module/css/index.js.map +1 -0
  249. package/lib/module/index.js +3 -0
  250. package/lib/module/index.js.map +1 -0
  251. package/lib/typescript/babel.config.d.ts +8 -0
  252. package/lib/typescript/babel.config.d.ts.map +1 -0
  253. package/lib/typescript/example/babel.config.d.ts +3 -0
  254. package/lib/typescript/example/babel.config.d.ts.map +1 -0
  255. package/lib/typescript/example/contexts.d.ts +3 -0
  256. package/lib/typescript/example/contexts.d.ts.map +1 -0
  257. package/lib/typescript/example/harmony/entry/hvigorfile.d.ts +2 -0
  258. package/lib/typescript/example/harmony/entry/hvigorfile.d.ts.map +1 -0
  259. package/lib/typescript/example/harmony/hvigorfile.d.ts +2 -0
  260. package/lib/typescript/example/harmony/hvigorfile.d.ts.map +1 -0
  261. package/lib/typescript/example/index.d.ts +2 -0
  262. package/lib/typescript/example/index.d.ts.map +1 -0
  263. package/lib/typescript/example/jest.config.d.ts +3 -0
  264. package/lib/typescript/example/jest.config.d.ts.map +1 -0
  265. package/lib/typescript/example/metro.config.d.ts +3 -0
  266. package/lib/typescript/example/metro.config.d.ts.map +1 -0
  267. package/lib/typescript/example/react-native.config.d.ts +3 -0
  268. package/lib/typescript/example/react-native.config.d.ts.map +1 -0
  269. package/lib/typescript/example/scripts/create-build-profile.d.ts +2 -0
  270. package/lib/typescript/example/scripts/create-build-profile.d.ts.map +1 -0
  271. package/lib/typescript/example/src/index.d.ts +3 -0
  272. package/lib/typescript/example/src/index.d.ts.map +1 -0
  273. package/lib/typescript/src/css/index.d.ts +4 -0
  274. package/lib/typescript/src/css/index.d.ts.map +1 -0
  275. package/lib/typescript/src/index.d.ts +3 -0
  276. package/lib/typescript/src/index.d.ts.map +1 -0
  277. package/package.json +54 -0
  278. package/src/css/index.tsx +20 -0
  279. package/src/index.tsx +3 -0
  280. package/tsconfig.json +12 -0
@@ -0,0 +1,240 @@
1
+ /*
2
+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved
3
+ * Use of this source code is governed by a MIT license that can be
4
+ * found in the LICENSE file.
5
+ *
6
+ * This file incorporates from the OpenHarmony project, licensed under
7
+ * the Apache License, Version 2.0. Specifically:
8
+ * - [OpenHarmony/arkui_ace_engine] (https://gitee.com/openharmony/arkui_ace_engine)
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
11
+ * use this file except in compliance with the License. You may obtain a copy
12
+ * of the License at:
13
+ * http://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18
+ * License for the specific language governing permissions and limitations
19
+ * under the License.
20
+ */
21
+
22
+ // from ArkUI "frameworks/core/components/common/properties/paint_state.h"
23
+ #pragma once
24
+
25
+ #include "properties/Color.h"
26
+ #include "utils/SvgUtils.h"
27
+
28
+
29
+ namespace rnoh {
30
+ namespace svg {
31
+
32
+ struct BezierCurveParam {
33
+ double cp1x = 0.0; // first bezier point x
34
+ double cp1y = 0.0; // first bezier point y
35
+ double cp2x = 0.0; // second bezier point x
36
+ double cp2y = 0.0; // second bezier point y
37
+ double x = 0.0; // end point x
38
+ double y = 0.0; // end point y
39
+ };
40
+
41
+ struct QuadraticCurveParam {
42
+ double cpx = 0.0; // bezier point x
43
+ double cpy = 0.0; // bezier point y
44
+ double x = 0.0; // end point x
45
+ double y = 0.0; // end point y
46
+ };
47
+
48
+ struct ArcParam {
49
+ double x = 0.0; // point x of the circle
50
+ double y = 0.0; // point y of the circle
51
+ double radius = 0.0; // radius of the circle
52
+ double startAngle = 0.0; // start angle of the circle
53
+ double endAngle = 0.0; // end angle of the circle
54
+ bool anticlockwise = false; // is draw clock wise or not
55
+ };
56
+
57
+ struct ArcToParam {
58
+ double x1 = 0.0; // start point x
59
+ double y1 = 0.0; // start point y
60
+ double x2 = 0.0; // end point x
61
+ double y2 = 0.0; // end point y
62
+ double radius = 0.0; // radius of the circle
63
+ };
64
+
65
+ struct EllipseParam {
66
+ double x = 0.0; // point x of the ellipse
67
+ double y = 0.0; // point y of the ellipse
68
+ double radiusX = 0.0; // x axis radius of the ellipse
69
+ double radiusY = 0.0; // y axis radius of the ellipse
70
+ double rotation = 0.0; // rotation angle of the ellipse
71
+ double startAngle = 0.0; // start angle of the ellipse
72
+ double endAngle = 0.0; // end angle of the ellipse
73
+ bool anticlockwise = false; // is draw clock wise or not
74
+ };
75
+
76
+ struct TransformParam {
77
+ double scaleX = 0.0;
78
+ double skewX = 0.0;
79
+ double skewY = 0.0;
80
+ double scaleY = 0.0;
81
+ double translateX = 0.0;
82
+ double translateY = 0.0;
83
+ };
84
+
85
+ struct LineDashParam {
86
+ std::vector<double> lineDash;
87
+ double dashOffset = 0.0;
88
+ };
89
+
90
+ struct CanvasImage {
91
+ int32_t flag = 0;
92
+ double sx = 0.0;
93
+ double sy = 0.0;
94
+ double sWidth = 0.0;
95
+ double sHeight = 0.0;
96
+ double dx = 0.0;
97
+ double dy = 0.0;
98
+ double dWidth = 0.0;
99
+ double dHeight = 0.0;
100
+ std::string src;
101
+ int32_t instanceId = 0;
102
+ };
103
+
104
+ struct TextMetrics {
105
+ double width = 0;
106
+ double height = 0;
107
+ double actualBoundingBoxLeft = 0;
108
+ double actualBoundingBoxRight = 0;
109
+ double actualBoundingBoxAscent = 0;
110
+ double actualBoundingBoxDescent = 0;
111
+ double alphabeticBaseline = 0;
112
+ double emHeightAscent = 0;
113
+ double emHeightDescent = 0;
114
+ double fontBoundingBoxAscent = 0;
115
+ double fontBoundingBoxDescent = 0;
116
+ double hangingBaseline = 0;
117
+ double ideographicBaseline = 0;
118
+ };
119
+
120
+ enum class ContextType {
121
+ RENDER_2D,
122
+ RENDER_3D,
123
+ };
124
+
125
+ enum class CanvasUnit {
126
+ DEFAULT = 0,
127
+ PX,
128
+ };
129
+
130
+ // following the definition of FillType in skPath
131
+ enum class CanvasFillRule {
132
+ NONZERO = 0,
133
+ EVENODD,
134
+ };
135
+
136
+ // following the definition in skPaint
137
+ enum class LineCapStyle {
138
+ BUTT = 0,
139
+ ROUND,
140
+ SQUARE,
141
+ };
142
+
143
+ enum class LineJoinStyle {
144
+ MITER = 0,
145
+ ROUND,
146
+ BEVEL,
147
+ };
148
+
149
+ enum class CompositeOperation {
150
+ SOURCE_OVER = 0,
151
+ SOURCE_ATOP,
152
+ SOURCE_IN,
153
+ SOURCE_OUT,
154
+ DESTINATION_OVER,
155
+ DESTINATION_ATOP,
156
+ DESTINATION_IN,
157
+ DESTINATION_OUT,
158
+ LIGHTER,
159
+ COPY,
160
+ XOR,
161
+ };
162
+
163
+ enum class PaintStyle { NONE = 0, Color, Gradient, ImagePattern };
164
+
165
+ class PaintState {
166
+ public:
167
+ const Color &GetColor() const { return color_; }
168
+
169
+ void SetColor(const Color &color) {
170
+ paintStyle_ = PaintStyle::Color;
171
+ color_ = color;
172
+ }
173
+
174
+ int32_t GetId() const { return id_; }
175
+
176
+ void SetId(int32_t id) { id_ = id; }
177
+
178
+ PaintStyle GetPaintStyle() const { return paintStyle_; }
179
+
180
+ protected:
181
+ Color color_ = Color::BLACK;
182
+ int32_t id_ = 0;
183
+ PaintStyle paintStyle_ = PaintStyle::Color;
184
+ };
185
+
186
+ class StrokePaintState : public PaintState {
187
+ public:
188
+ LineCapStyle GetLineCap() const { return lineCap_; }
189
+
190
+ void SetLineCap(LineCapStyle lineCap) { lineCap_ = lineCap; }
191
+
192
+ LineJoinStyle GetLineJoin() const { return lineJoin_; }
193
+
194
+ void SetLineJoin(LineJoinStyle lineJoin) { lineJoin_ = lineJoin; }
195
+
196
+ double GetLineWidth() const { return lineWidth_; }
197
+
198
+ void SetLineWidth(double lineWidth) { lineWidth_ = lineWidth; }
199
+
200
+ double GetMiterLimit() const { return miterLimit_; }
201
+
202
+ void SetMiterLimit(double miterLimit) { miterLimit_ = miterLimit; }
203
+
204
+ LineDashParam GetLineDash() const { return lineDash_; }
205
+
206
+ void SetLineDash(const LineDashParam &lineDash) { lineDash_ = lineDash; }
207
+
208
+ void SetLineDashOffset(double offset) { lineDash_.dashOffset = offset; }
209
+
210
+ void SetLineDash(const std::vector<double> &segments) { lineDash_.lineDash = segments; }
211
+
212
+ private:
213
+ LineCapStyle lineCap_ = LineCapStyle::BUTT;
214
+ LineJoinStyle lineJoin_ = LineJoinStyle::MITER;
215
+
216
+ double lineWidth_ = 1.0; // default lineWidth
217
+
218
+ double miterLimit_ = 10.0; // default miterLimit
219
+ LineDashParam lineDash_;
220
+ };
221
+
222
+ class GlobalPaintState {
223
+ public:
224
+ double GetAlpha() const { return alpha_; }
225
+
226
+ void SetAlpha(double alpha) { alpha_ = alpha; }
227
+
228
+ CompositeOperation GetType() const { return type_; }
229
+
230
+ void SetType(CompositeOperation type) { type_ = type; }
231
+
232
+ bool HasGlobalAlpha() const { return !NearEqual(alpha_, -1.0); }
233
+
234
+ private:
235
+ double alpha_ = -1.0;
236
+ CompositeOperation type_ = CompositeOperation::SOURCE_OVER;
237
+ };
238
+
239
+ } // namespace svg
240
+ } // namespace rnoh
@@ -0,0 +1,423 @@
1
+ /*
2
+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved
3
+ * Use of this source code is governed by a MIT license that can be
4
+ * found in the LICENSE file.
5
+ *
6
+ * This file incorporates from the OpenHarmony project, licensed under
7
+ * the Apache License, Version 2.0. Specifically:
8
+ * - [OpenHarmony/arkui_ace_engine] (https://gitee.com/openharmony/arkui_ace_engine)
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
11
+ * use this file except in compliance with the License. You may obtain a copy
12
+ * of the License at:
13
+ * http://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18
+ * License for the specific language governing permissions and limitations
19
+ * under the License.
20
+ */
21
+
22
+ // from ArkUI "frameworks/base/geometry/rect.h"
23
+ #pragma once
24
+
25
+ #include <algorithm>
26
+ #include "properties/Size.h"
27
+ #include "utils/SvgUtils.h"
28
+ #include "properties/Offset.h"
29
+
30
+ namespace rnoh {
31
+ namespace svg {
32
+
33
+ class Rect {
34
+ public:
35
+ Rect() = default;
36
+ ~Rect() = default;
37
+
38
+ Rect(double x, double y, double width, double height)
39
+ {
40
+ SetRect(x, y, width, height);
41
+ }
42
+
43
+ Rect(const Offset& offset, const Size& size)
44
+ {
45
+ SetOffset(offset);
46
+ SetSize(size);
47
+ }
48
+
49
+ void SetRect(double x, double y, double width, double height)
50
+ {
51
+ x_ = x;
52
+ y_ = y;
53
+ width_ = width;
54
+ height_ = height;
55
+ }
56
+
57
+ void SetRect(const Offset& offset, const Size& size)
58
+ {
59
+ SetOffset(offset);
60
+ SetSize(size);
61
+ }
62
+
63
+ void ApplyScale(double scale)
64
+ {
65
+ x_ *= scale;
66
+ y_ *= scale;
67
+ width_ *= scale;
68
+ height_ *= scale;
69
+ }
70
+
71
+ void ApplyScaleAndRound(const Size& scale)
72
+ {
73
+ x_ = round(x_ * scale.Width());
74
+ y_ = round(y_ * scale.Height());
75
+ width_ = round(width_ * scale.Width());
76
+ height_ = round(height_ * scale.Height());
77
+ }
78
+
79
+ double Left() const
80
+ {
81
+ return GreatNotEqual(width_, 0.0) ? x_ : x_ + width_;
82
+ }
83
+
84
+ double Top() const
85
+ {
86
+ return GreatNotEqual(height_, 0.0) ? y_ : y_ + height_;
87
+ }
88
+
89
+ double Right() const
90
+ {
91
+ return GreatNotEqual(width_, 0.0) ? x_ + width_ : x_;
92
+ }
93
+
94
+ double Bottom() const
95
+ {
96
+ return GreatNotEqual(height_, 0.0) ? y_ + height_ : y_;
97
+ }
98
+
99
+ double Width() const
100
+ {
101
+ return width_;
102
+ }
103
+
104
+ double Height() const
105
+ {
106
+ return height_;
107
+ }
108
+
109
+ void SetSize(const Size& size)
110
+ {
111
+ width_ = size.Width();
112
+ height_ = size.Height();
113
+ }
114
+
115
+ Size GetSize() const
116
+ {
117
+ return Size(width_, height_);
118
+ }
119
+
120
+ void SetOffset(const Offset& offset)
121
+ {
122
+ x_ = offset.GetX();
123
+ y_ = offset.GetY();
124
+ }
125
+
126
+ Offset GetOffset() const
127
+ {
128
+ return Offset(x_, y_);
129
+ }
130
+
131
+ void SetLeft(double left)
132
+ {
133
+ x_ = left;
134
+ }
135
+
136
+ void SetTop(double top)
137
+ {
138
+ y_ = top;
139
+ }
140
+
141
+ void SetWidth(double width)
142
+ {
143
+ width_ = width;
144
+ }
145
+
146
+ void SetHeight(double height)
147
+ {
148
+ height_ = height;
149
+ }
150
+
151
+ // bool IsInRegion(const Point& point) const
152
+ // {
153
+ // return (point.GetX() >= x_) && (point.GetX() < (x_ + width_)) && (point.GetY() >= y_) &&
154
+ // (point.GetY() < (y_ + height_));
155
+ // }
156
+
157
+ bool IsWrappedBy(const Rect& other) const
158
+ {
159
+ return (Left() >= other.Left()) && (Right() <= other.Right()) && (Top() >= other.Top()) &&
160
+ (Bottom() <= other.Bottom());
161
+ }
162
+
163
+ bool IsValid() const
164
+ {
165
+ return width_ > 0.0 && height_ > 0.0;
166
+ }
167
+
168
+ Rect Constrain(const Rect& other)
169
+ {
170
+ double right = Right();
171
+ double bottom = Bottom();
172
+ double left = std::clamp(x_, other.Left(), other.Right());
173
+ double top = std::clamp(y_, other.Top(), other.Bottom());
174
+ right = std::clamp(right, other.Left(), other.Right()) - left;
175
+ bottom = std::clamp(bottom, other.Top(), other.Bottom()) - top;
176
+ return Rect(left, top, right, bottom);
177
+ }
178
+
179
+ Rect& operator+=(const Offset& offset)
180
+ {
181
+ x_ += offset.GetX();
182
+ y_ += offset.GetY();
183
+ return *this;
184
+ }
185
+
186
+ Rect& operator-=(const Offset& offset)
187
+ {
188
+ x_ -= offset.GetX();
189
+ y_ -= offset.GetY();
190
+ return *this;
191
+ }
192
+
193
+ Rect& operator+=(const Size& size)
194
+ {
195
+ width_ += size.Width();
196
+ height_ += size.Height();
197
+ return *this;
198
+ }
199
+
200
+ Rect& operator-=(const Size& size)
201
+ {
202
+ width_ -= size.Width();
203
+ height_ -= size.Height();
204
+ return *this;
205
+ }
206
+
207
+ Rect operator+(const Offset& offset) const
208
+ {
209
+ return Rect(x_ + offset.GetX(), y_ + offset.GetY(), width_, height_);
210
+ }
211
+
212
+ Rect operator-(const Offset& offset) const
213
+ {
214
+ return Rect(x_ - offset.GetX(), y_ - offset.GetY(), width_, height_);
215
+ }
216
+
217
+ Rect operator+(const Size& size) const
218
+ {
219
+ return Rect(x_, y_, width_ + size.Width(), height_ + size.Height());
220
+ }
221
+
222
+ Rect operator-(const Size& size) const
223
+ {
224
+ return Rect(x_, y_, width_ - size.Width(), height_ - size.Height());
225
+ }
226
+
227
+ Rect operator*(double scale) const
228
+ {
229
+ return Rect(x_ * scale, y_ * scale, width_ * scale, height_ * scale);
230
+ }
231
+
232
+ bool operator==(const Rect& rect) const
233
+ {
234
+ return (GetOffset() == rect.GetOffset()) && (GetSize() == rect.GetSize());
235
+ }
236
+
237
+ bool operator!=(const Rect& rect) const
238
+ {
239
+ return !operator==(rect);
240
+ }
241
+
242
+ bool IsIntersectWith(const Rect& other) const
243
+ {
244
+ return !(other.Right() < Left() || other.Left() > Right() || other.Bottom() < Top() || other.Top() > Bottom());
245
+ }
246
+
247
+ bool IsIntersectByCommonSideWith(const Rect& other) const
248
+ {
249
+ return !(
250
+ other.Right() <= Left() || other.Left() >= Right() || other.Bottom() <= Top() || other.Top() >= Bottom());
251
+ }
252
+
253
+ Rect IntersectRect(const Rect& other) const
254
+ {
255
+ double left = std::max(Left(), other.Left());
256
+ double right = std::min(Right(), other.Right());
257
+ double top = std::max(Top(), other.Top());
258
+ double bottom = std::min(Bottom(), other.Bottom());
259
+ return Rect(left, top, right - left, bottom - top);
260
+ }
261
+
262
+ Rect CombineRect(const Rect& other) const
263
+ {
264
+ double left = std::min(Left(), other.Left());
265
+ double right = std::max(Right(), other.Right());
266
+ double top = std::min(Top(), other.Top());
267
+ double bottom = std::max(Bottom(), other.Bottom());
268
+ return Rect(left, top, right - left, bottom - top);
269
+ }
270
+
271
+ /**
272
+ * @brief Magnetically attracted to a "magnetic" rect.
273
+ *
274
+ * Let's show some cases to illustrate how this method works:
275
+ *
276
+ * Case 1 : Inside. Rect won't be move because it is already attracted by magnet.
277
+ * Result: Offset(0, 0)
278
+ *
279
+ * +-----------------------------+
280
+ * | |
281
+ * | Magnetical Rect |
282
+ * | |
283
+ * | +-------+ |
284
+ * | | R | |
285
+ * | | | |
286
+ * | +-------+ |
287
+ * +-----------------------------+
288
+ *
289
+ * Case 2: Outside. R will be attracted to position R'
290
+ * Result: Offset(-12, -3)
291
+ *
292
+ * +-----------------------+
293
+ * | |
294
+ * | Magnetical Rect +--+
295
+ * | | |
296
+ * | |R'| +--+
297
+ * +-----------------------+ |R |
298
+ * | |
299
+ * +--+
300
+ *
301
+ * Case 3: Half Inside. R will be moved totally into magnet.
302
+ * Result: Offset(-8, 0)
303
+ *
304
+ * +-----------------------------+ +-----------------------------+
305
+ * | | | |
306
+ * | Magnetical Rect | +----------> | Magnetical Rect |
307
+ * | | | |
308
+ * | +----------+ | +----------+
309
+ * | | | R | | | R' |
310
+ * | +----------+ | +----------+
311
+ * | | | |
312
+ * +-----------------------------+ +-----------------------------+
313
+ *
314
+ * Case 4: Outside or Half Outside but space not enough. R will be moved into magnet as more as possible.
315
+ * Result: Offset(0, 1)
316
+ *
317
+ * +--+
318
+ * | | +--+
319
+ * |R | | |
320
+ * | | |R'|
321
+ * +---------------------------+ +---------------------------+
322
+ * | | | | | | | |
323
+ * | Magnetical Rect | | | +-----> | Magnetical Rect | | |
324
+ * | +--+ | | | | |
325
+ * +---------------------------+ +------------------+--+-----+
326
+ *
327
+ * Case 5: Totally Across magnet. Nothing should happen.
328
+ * Result: Offset(0, 0)
329
+ *
330
+ * +--+
331
+ * | |
332
+ * |R |
333
+ * | |
334
+ * +---------------------------+
335
+ * | | | |
336
+ * | Magnetical Rect | | |
337
+ * | | | |
338
+ * +---------------------------+
339
+ * | |
340
+ * +--+
341
+ *
342
+ * @param[in] magnet The magnetical rectangle.
343
+ *
344
+ * @return The offset that this rect need to moving into magnet.
345
+ */
346
+ Offset MagneticAttractedBy(const Rect& magnet)
347
+ {
348
+ Offset offset = Offset::Zero();
349
+ if (IsWrappedBy(magnet)) {
350
+ return Offset::Zero();
351
+ }
352
+
353
+ if (Left() < magnet.Left()) {
354
+ offset.SetX(std::max(0.0, std::min(magnet.Left() - Left(), magnet.Right() - Right())));
355
+ } else if (Right() > magnet.Right()) {
356
+ offset.SetX(std::min(0.0, std::max(magnet.Left() - Left(), magnet.Right() - Right())));
357
+ }
358
+
359
+ if (Top() < magnet.Top()) {
360
+ offset.SetY(std::max(0.0, std::min(magnet.Top() - Top(), magnet.Bottom() - Bottom())));
361
+ } else if (Bottom() > magnet.Bottom()) {
362
+ offset.SetY(std::min(0.0, std::max(magnet.Top() - Top(), magnet.Bottom() - Bottom())));
363
+ }
364
+
365
+ *this += offset;
366
+
367
+ return offset;
368
+ }
369
+
370
+ std::string ToString() const
371
+ {
372
+ std::stringstream ss;
373
+ ss << "Rect (" << std::fixed << std::setprecision(2) << x_ << ", " << y_ << ") - [";
374
+ if (NearEqual(width_, Size::INFINITE_SIZE)) {
375
+ ss << "INFINITE";
376
+ } else {
377
+ ss << width_;
378
+ }
379
+ ss << " x ";
380
+ if (NearEqual(height_, Size::INFINITE_SIZE)) {
381
+ ss << "INFINITE";
382
+ } else {
383
+ ss << height_;
384
+ }
385
+ ss << "]";
386
+ std::string output = ss.str();
387
+ return output;
388
+ }
389
+
390
+ std::string ToBounds() const
391
+ {
392
+ std::stringstream ss;
393
+ ss << "[" << std::fixed << std::setprecision(2) << x_ << ", " << y_ << "][";
394
+ if (NearEqual(width_, Size::INFINITE_SIZE)) {
395
+ ss << "INFINITE";
396
+ } else {
397
+ ss << (x_ + width_);
398
+ }
399
+ ss << ",";
400
+ if (NearEqual(height_, Size::INFINITE_SIZE)) {
401
+ ss << "INFINITE";
402
+ } else {
403
+ ss << (y_ + height_);
404
+ }
405
+ ss << "]";
406
+ std::string output = ss.str();
407
+ return output;
408
+ }
409
+
410
+ Offset Center() const
411
+ {
412
+ return Offset(width_ / 2.0 + x_, height_ / 2.0 + y_);
413
+ }
414
+
415
+ private:
416
+ double x_ = 0.0;
417
+ double y_ = 0.0;
418
+ double width_ = 0.0;
419
+ double height_ = 0.0;
420
+ };
421
+
422
+ } // namespace svg
423
+ } // namespace rnoh