@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,101 @@
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
+
7
+ #include "RNSVGRenderableModule.h"
8
+
9
+ using namespace facebook;
10
+ using namespace react;
11
+
12
+ namespace rnoh {
13
+ namespace svg {
14
+
15
+ bool RNSVGRenderableModule::isPointInFill(facebook::jsi::Runtime &rt, int32_t tag, std::optional<jsi::Object> options) {
16
+ return false;
17
+ }
18
+ bool RNSVGRenderableModule::isPointInStroke(facebook::jsi::Runtime &rt, int32_t tag,
19
+ std::optional<jsi::Object> options) {
20
+ return false;
21
+ }
22
+ double RNSVGRenderableModule::getTotalLength(jsi::Runtime &rt, int32_t tag) { return 0; }
23
+ jsi::Object RNSVGRenderableModule::getPointAtLength(jsi::Runtime &rt, int32_t tag, std::optional<jsi::Object> options) {
24
+ return jsi::Object(rt);
25
+ };
26
+ jsi::Object RNSVGRenderableModule::getBBox(jsi::Runtime &rt, int32_t tag, std::optional<jsi::Object> options) {
27
+ return jsi::Object(rt);
28
+ };
29
+ jsi::Object RNSVGRenderableModule::getCTM(jsi::Runtime &rt, int32_t tag) { return jsi::Object(rt); };
30
+ jsi::Object RNSVGRenderableModule::getScreenCTM(jsi::Runtime &rt, int32_t tag) { return jsi::Object(rt); };
31
+ jsi::Value RNSVGRenderableModule::getRawResource(jsi::Runtime &rt, jsi::String name) { return jsi::Object(rt); };
32
+
33
+ static jsi::Value __hostFunction_RNSVGRenderableModule_isPointInFill(jsi::Runtime &rt, react::TurboModule &turboModule,
34
+ const jsi::Value *args, size_t count) {
35
+ return static_cast<RNSVGRenderableModule *>(&turboModule)
36
+ ->isPointInFill(
37
+ rt, args[0].isNull() || args[0].isUndefined() ? 0 : std::make_optional(args[0].asNumber()).value(),
38
+ count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt
39
+ : std::make_optional(args[1].asObject(rt)));
40
+ }
41
+
42
+ static jsi::Value __hostFunction_RNSVGRenderableModule_isPointInStroke(jsi::Runtime &rt,
43
+ react::TurboModule &turboModule,
44
+ const jsi::Value *args, size_t count) {
45
+ return static_cast<RNSVGRenderableModule *>(&turboModule)
46
+ ->isPointInStroke(
47
+ rt, args[0].isNull() || args[0].isUndefined() ? 0 : std::make_optional(args[0].asNumber()).value(),
48
+ count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt
49
+ : std::make_optional(args[1].asObject(rt)));
50
+ }
51
+ static jsi::Value __hostFunction_RNSVGRenderableModule_getTotalLength(jsi::Runtime &rt, react::TurboModule &turboModule,
52
+ const jsi::Value *args, size_t count) {
53
+ return static_cast<RNSVGRenderableModule *>(&turboModule)
54
+ ->getTotalLength(
55
+ rt, args[0].isNull() || args[0].isUndefined() ? 0 : std::make_optional(args[0].asNumber()).value());
56
+ }
57
+ static jsi::Value __hostFunction_RNSVGRenderableModule_getPointAtLength(jsi::Runtime &rt,
58
+ react::TurboModule &turboModule,
59
+ const jsi::Value *args, size_t count) {
60
+ return static_cast<RNSVGRenderableModule *>(&turboModule)
61
+ ->getPointAtLength(
62
+ rt, args[0].isNull() || args[0].isUndefined() ? 0 : std::make_optional(args[0].asNumber()).value(),
63
+ count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt
64
+ : std::make_optional(args[1].asObject(rt)));
65
+ }
66
+ static jsi::Value __hostFunction_RNSVGRenderableModule_getBBox(jsi::Runtime &rt, react::TurboModule &turboModule,
67
+ const jsi::Value *args, size_t count) {
68
+ return static_cast<RNSVGRenderableModule *>(&turboModule)
69
+ ->getBBox(rt, args[0].isNull() || args[0].isUndefined() ? 0 : std::make_optional(args[0].asNumber()).value(),
70
+ count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt
71
+ : std::make_optional(args[1].asObject(rt)));
72
+ }
73
+ static jsi::Value __hostFunction_RNSVGRenderableModule_getCTM(jsi::Runtime &rt, react::TurboModule &turboModule,
74
+ const jsi::Value *args, size_t count) {
75
+ return static_cast<RNSVGRenderableModule *>(&turboModule)
76
+ ->getCTM(rt, args[0].isNull() || args[0].isUndefined() ? 0 : std::make_optional(args[0].asNumber()).value());
77
+ }
78
+ static jsi::Value __hostFunction_RNSVGRenderableModule_getScreenCTM(jsi::Runtime &rt, react::TurboModule &turboModule,
79
+ const jsi::Value *args, size_t count) {
80
+ return static_cast<RNSVGRenderableModule *>(&turboModule)
81
+ ->getScreenCTM(rt,
82
+ args[0].isNull() || args[0].isUndefined() ? 0 : std::make_optional(args[0].asNumber()).value());
83
+ }
84
+ static jsi::Value __hostFunction_RNSVGRenderableModule_getRawResource(jsi::Runtime &rt, react::TurboModule &turboModule,
85
+ const jsi::Value *args, size_t count) {
86
+ return static_cast<RNSVGRenderableModule *>(&turboModule)->getRawResource(rt, args[0].asString(rt));
87
+ }
88
+
89
+ RNSVGRenderableModule::RNSVGRenderableModule(const ArkTSTurboModule::Context ctx, const std::string name)
90
+ : ArkTSTurboModule(ctx, name) {
91
+ methodMap_["isPointInFill"] = MethodMetadata{2, __hostFunction_RNSVGRenderableModule_isPointInFill};
92
+ methodMap_["isPointInStroke"] = MethodMetadata{2, __hostFunction_RNSVGRenderableModule_isPointInStroke};
93
+ methodMap_["getTotalLength"] = MethodMetadata{1, __hostFunction_RNSVGRenderableModule_getTotalLength};
94
+ methodMap_["getPointAtLength"] = MethodMetadata{2, __hostFunction_RNSVGRenderableModule_getPointAtLength};
95
+ methodMap_["getBBox"] = MethodMetadata{2, __hostFunction_RNSVGRenderableModule_getBBox};
96
+ methodMap_["getCTM"] = MethodMetadata{1, __hostFunction_RNSVGRenderableModule_getCTM};
97
+ methodMap_["getScreenCTM"] = MethodMetadata{1, __hostFunction_RNSVGRenderableModule_getScreenCTM};
98
+ methodMap_["getRawResource"] = MethodMetadata{1, __hostFunction_RNSVGRenderableModule_getRawResource};
99
+ }
100
+ } // namespace svg
101
+ } // namespace rnoh
@@ -0,0 +1,32 @@
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
+
7
+ #pragma once
8
+
9
+ #include <ReactCommon/TurboModule.h>
10
+ #include <react/bridging/Bridging.h>
11
+ #include "RNOH/ArkTSTurboModule.h"
12
+
13
+ using namespace facebook;
14
+
15
+ namespace rnoh {
16
+ namespace svg {
17
+
18
+ class JSI_EXPORT RNSVGRenderableModule : public ArkTSTurboModule {
19
+ public:
20
+ RNSVGRenderableModule(const ArkTSTurboModule::Context ctx, const std::string name);
21
+ bool isPointInFill(jsi::Runtime &rt, int32_t tag, std::optional<jsi::Object> options);
22
+ bool isPointInStroke(jsi::Runtime &rt, int32_t tag, std::optional<jsi::Object> options);
23
+ double getTotalLength(jsi::Runtime &rt, int32_t tag);
24
+ jsi::Object getPointAtLength(jsi::Runtime &rt, int32_t tag, std::optional<jsi::Object> options);
25
+ jsi::Object getBBox(jsi::Runtime &rt, int32_t tag, std::optional<jsi::Object> options);
26
+ jsi::Object getCTM(jsi::Runtime &rt, int32_t tag);
27
+ jsi::Object getScreenCTM(jsi::Runtime &rt, int32_t tag);
28
+ jsi::Value getRawResource(jsi::Runtime &rt, jsi::String name);
29
+ };
30
+
31
+ } // namespace svg
32
+ } // namespace rnoh
@@ -0,0 +1,71 @@
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
+
7
+ #include "RNSVGSvgViewModule.h"
8
+
9
+ using namespace facebook;
10
+ using namespace react;
11
+
12
+ namespace rnoh {
13
+ namespace svg {
14
+
15
+ using Object = std::optional<jsi::Object>;
16
+
17
+ void RNSVGSvgViewModule::toDataURL(jsi::Runtime &rt, Int32_t tag, Object object, Callback &&callback) {
18
+ // 获取图片的bitmap并将其转化为base64
19
+ std::string base64;
20
+ auto weakSvgNode = SvgViewManager::getInstance().getSvgViewByTag(*tag);
21
+ if (weakSvgNode.lock()) {
22
+ auto svgRootNode = weakSvgNode.lock();
23
+ OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
24
+ OH_Drawing_BitmapFormat format = {COLOR_FORMAT_BGRA_8888, ALPHA_FORMAT_OPAQUE};
25
+ auto size = svgRootNode->GetSize();
26
+ OH_Drawing_BitmapBuild(bitmap, size.Width(), size.Height(), &format);
27
+ OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
28
+ OH_Drawing_CanvasBind(canvas, bitmap);
29
+ // 设置SvgNode节点相关信息
30
+ if (svgRootNode->GetContext()) {
31
+ svgRootNode->GetContext()->ClearIdMap();
32
+ }
33
+ svgRootNode->ContextTraversal();
34
+ svgRootNode->InitStyle({});
35
+ svgRootNode->Draw(canvas);
36
+ base64 = StringUtils::bitmapToBase64(bitmap);
37
+ // 销毁bitmap和canvas
38
+ OH_Drawing_CanvasDestroy(canvas);
39
+ // 销毁bitmap对象
40
+ OH_Drawing_BitmapDestroy(bitmap);
41
+ }
42
+ jsInvoker_->invokeAsync([base64, endCallback = std::move(*callback)] { endCallback(base64); });
43
+ return;
44
+ }
45
+
46
+ static jsi::Value __hostFunction_RNSVGSvgViewModule_toDataURL(jsi::Runtime &rt, react::TurboModule &turboModule,
47
+ const jsi::Value *args, size_t count) {
48
+ auto tag = args[0].isNull() || args[0].isUndefined() ? std::nullopt : std::make_optional(args[0].asNumber());
49
+ auto options = args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asObject(rt));
50
+ auto self = static_cast<RNSVGSvgViewModule *>(&turboModule);
51
+ if (args[2].isObject()) {
52
+ auto callback = std::make_shared<jsi::Function>(std::move(args[2].getObject(rt).getFunction(rt)));
53
+ auto endCallback = [&rt, callback = std::move(callback)](std::string base64) {
54
+ auto base64Value = jsi::String::createFromUtf8(rt, base64);
55
+ callback->call(rt, {std::move(base64Value)});
56
+ };
57
+ static_cast<RNSVGSvgViewModule *>(&turboModule)->toDataURL(rt, tag, std::move(options), std::move(endCallback));
58
+ return jsi::Value::undefined();
59
+ }
60
+ static_cast<RNSVGSvgViewModule *>(&turboModule)
61
+ ->toDataURL(rt, tag, std::move(options), [self, &rt](std::string base64) {});
62
+ return jsi::Value::undefined();
63
+ }
64
+
65
+ RNSVGSvgViewModule::RNSVGSvgViewModule(const ArkTSTurboModule::Context ctx, const std::string name)
66
+ : ArkTSTurboModule(ctx, name) {
67
+ { methodMap_["toDataURL"] = MethodMetadata{1, __hostFunction_RNSVGSvgViewModule_toDataURL}; };
68
+ }
69
+
70
+ } // namespace svg
71
+ } // namespace rnoh
@@ -0,0 +1,32 @@
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
+
7
+ #pragma once
8
+
9
+ #include <ReactCommon/TurboModule.h>
10
+ #include <react/bridging/Bridging.h>
11
+ #include "RNOH/ArkTSTurboModule.h"
12
+ #include "SvgViewManager.h"
13
+ #include <optional>
14
+
15
+ using namespace facebook;
16
+
17
+ namespace rnoh {
18
+ namespace svg {
19
+
20
+ class JSI_EXPORT RNSVGSvgViewModule : public ArkTSTurboModule {
21
+ using Object = std::optional<jsi::Object>;
22
+ using Int32_t = std::optional<int32_t>;
23
+ using Callback = std::optional<std::function<void(std::string)>>;
24
+
25
+ public:
26
+ RNSVGSvgViewModule(const ArkTSTurboModule::Context ctx, const std::string name);
27
+
28
+ void toDataURL(jsi::Runtime &rt, Int32_t tag, Object object, Callback &&callback);
29
+ };
30
+
31
+ } // namespace svg
32
+ } // namespace rnoh
@@ -0,0 +1,55 @@
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
+
7
+ #pragma once
8
+
9
+ #include <string>
10
+ #include <vector>
11
+ #include <folly/dynamic.h>
12
+
13
+ namespace rnoh {
14
+ namespace svg {
15
+
16
+ namespace DynamicUtils {
17
+
18
+ /**
19
+ * Convert folly::dynamic to string
20
+ * Handles string, int, double, bool types
21
+ * Returns empty string for other types
22
+ */
23
+ inline std::string DynamicToString(const folly::dynamic& d) {
24
+ if (d.isNull()) {
25
+ return "";
26
+ } else if (d.isString()) {
27
+ return d.asString();
28
+ } else if (d.isInt()) {
29
+ return std::to_string(d.asInt());
30
+ } else if (d.isDouble()) {
31
+ return std::to_string(d.asDouble());
32
+ } else if (d.isBool()) {
33
+ return d.asBool() ? "true" : "false";
34
+ } else {
35
+ return "";
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Convert folly::dynamic array to vector of strings
41
+ * Returns empty vector if not an array
42
+ */
43
+ inline std::vector<std::string> DynamicToStringVector(const folly::dynamic& d) {
44
+ std::vector<std::string> result;
45
+ if (d.isArray()) {
46
+ for (const auto& item : d) {
47
+ result.push_back(DynamicToString(item));
48
+ }
49
+ }
50
+ return result;
51
+ }
52
+
53
+ } // namespace DynamicUtils
54
+ } // namespace svg
55
+ } // namespace rnoh
@@ -0,0 +1,190 @@
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
+
7
+ #pragma once
8
+
9
+ #include <string>
10
+ #include <vector>
11
+ #include <unordered_map>
12
+ #include <memory>
13
+ #include <glog/logging.h>
14
+
15
+ namespace rnoh {
16
+ namespace svg {
17
+
18
+ // FeColorMatrix信息结构
19
+ struct FeColorMatrixInfo {
20
+ std::string type = "saturate";
21
+ std::vector<float> values = {1.0f};
22
+ std::string in = "SourceGraphic"; // 默认输入源为 SourceGraphic
23
+
24
+ FeColorMatrixInfo() = default;
25
+ FeColorMatrixInfo(const std::string& t, const std::vector<float>& v) : type(t), values(v) {}
26
+ FeColorMatrixInfo(const std::string& t, const std::vector<float>& v, const std::string& inputSource)
27
+ : type(t), values(v), in(inputSource) {}
28
+
29
+ // 获取饱和度值(当type为"saturate"时)
30
+ float getSaturationValue() const {
31
+ if (type == "saturate" && !values.empty()) {
32
+ return values[0];
33
+ }
34
+ return 1.0f; // 默认饱和度
35
+ }
36
+
37
+ // 获取颜色矩阵(当type为"matrix"时)
38
+ std::vector<float> getColorMatrix() const {
39
+ if (type == "matrix" && values.size() >= 20) {
40
+ return values;
41
+ }
42
+ // 返回单位矩阵
43
+ return {1,0,0,0,0, 0,1,0,0,0, 0,0,1,0,0, 0,0,0,1,0};
44
+ }
45
+
46
+ // 检查是否为有效的FeColorMatrix
47
+ bool isValid() const {
48
+ if (type == "saturate") {
49
+ return !values.empty();
50
+ } else if (type == "matrix") {
51
+ return values.size() >= 20;
52
+ } else if (type == "hueRotate") {
53
+ return !values.empty();
54
+ } else if (type == "luminanceToAlpha") {
55
+ return true; // 不需要values
56
+ }
57
+ return false;
58
+ }
59
+
60
+ // 获取输入源类型
61
+ std::string getInputSource() const {
62
+ return in;
63
+ }
64
+ };
65
+
66
+ // FeBlend信息结构
67
+ struct FeBlendInfo {
68
+ std::string in = "SourceGraphic"; // 第一个输入源
69
+ std::string in2 = ""; // 第二个输入源
70
+ std::string mode = "normal"; // 混合模式
71
+
72
+ FeBlendInfo() = default;
73
+ FeBlendInfo(const std::string& input1, const std::string& input2, const std::string& blendMode)
74
+ : in(input1), in2(input2), mode(blendMode) {}
75
+
76
+ // 检查是否为有效的混合模式
77
+ bool isValidMode() const {
78
+ return mode == "normal" || mode == "multiply" || mode == "screen" ||
79
+ mode == "darken" || mode == "lighten";
80
+ }
81
+ };
82
+
83
+ // Filter管理器类
84
+ class FilterManager {
85
+ public:
86
+ // 单例模式
87
+ static FilterManager& getInstance() {
88
+ static FilterManager instance;
89
+ return instance;
90
+ }
91
+
92
+ // 注册Filter和FeColorMatrix的映射
93
+ void registerFilter(const std::string& filterId, std::shared_ptr<FeColorMatrixInfo> feColorMatrixInfo) {
94
+ if (!filterId.empty() && feColorMatrixInfo) {
95
+ filterMap_[filterId] = feColorMatrixInfo;
96
+ }
97
+ }
98
+
99
+ // 根据Filter ID获取FeColorMatrix信息
100
+ std::shared_ptr<FeColorMatrixInfo> getFeColorMatrixInfo(const std::string& filterId) const {
101
+ auto it = filterMap_.find(filterId);
102
+ if (it != filterMap_.end()) {
103
+ return it->second;
104
+ }
105
+ return nullptr;
106
+ }
107
+
108
+ // 检查Filter是否存在
109
+ bool hasFilter(const std::string& filterId) const {
110
+ return filterMap_.find(filterId) != filterMap_.end();
111
+ }
112
+
113
+ // 清除所有Filter映射
114
+ void clearAllFilters() {
115
+ filterMap_.clear();
116
+ blendFilterMap_.clear();
117
+ }
118
+
119
+ // 移除指定Filter
120
+ void removeFilter(const std::string& filterId) {
121
+ filterMap_.erase(filterId);
122
+ blendFilterMap_.erase(filterId);
123
+ }
124
+
125
+ // ========== FeBlend 相关方法 ==========
126
+
127
+ // 注册FeBlend过滤器
128
+ void registerBlendFilter(const std::string& filterId, std::shared_ptr<FeBlendInfo> feBlendInfo) {
129
+ if (!filterId.empty() && feBlendInfo) {
130
+ blendFilterMap_[filterId] = feBlendInfo;
131
+ }
132
+ }
133
+
134
+ // 获取FeBlend信息
135
+ std::shared_ptr<FeBlendInfo> getFeBlendInfo(const std::string& filterId) const {
136
+ auto it = blendFilterMap_.find(filterId);
137
+ if (it != blendFilterMap_.end()) {
138
+ return it->second;
139
+ }
140
+ return nullptr;
141
+ }
142
+
143
+ // 检查FeBlend Filter是否存在
144
+ bool hasBlendFilter(const std::string& filterId) const {
145
+ return blendFilterMap_.find(filterId) != blendFilterMap_.end();
146
+ }
147
+
148
+ // 获取所有Filter ID
149
+ std::vector<std::string> getAllFilterIds() const {
150
+ std::vector<std::string> ids;
151
+ for (const auto& pair : filterMap_) {
152
+ ids.push_back(pair.first);
153
+ }
154
+ return ids;
155
+ }
156
+
157
+ // 解析Filter URL(例如:"url(#myFilter)" -> "myFilter")
158
+ static std::string parseFilterUrl(const std::string& filterUrl) {
159
+ if (filterUrl.empty()) return "";
160
+
161
+ // 查找"url(#"
162
+ size_t start = filterUrl.find("url(#");
163
+ if (start != std::string::npos) {
164
+ start += 5; // 跳过"url(#"
165
+ size_t end = filterUrl.find(")", start);
166
+ if (end != std::string::npos) {
167
+ return filterUrl.substr(start, end - start);
168
+ }
169
+ }
170
+
171
+ // 如果没有找到"url(#"格式,检查是否直接是ID
172
+ if (filterUrl.front() == '#') {
173
+ return filterUrl.substr(1);
174
+ }
175
+
176
+ return filterUrl;
177
+ }
178
+
179
+ private:
180
+ FilterManager() = default;
181
+ ~FilterManager() = default;
182
+ FilterManager(const FilterManager&) = delete;
183
+ FilterManager& operator=(const FilterManager&) = delete;
184
+
185
+ std::unordered_map<std::string, std::shared_ptr<FeColorMatrixInfo>> filterMap_;
186
+ std::unordered_map<std::string, std::shared_ptr<FeBlendInfo>> blendFilterMap_;
187
+ };
188
+
189
+ } // namespace svg
190
+ } // namespace rnoh