Showing preview only (7,676K chars total). Download the full file or copy to clipboard to get everything.
Repository: software-mansion/react-native-svg
Branch: main
Commit: 2845b815c1ea
Files: 1052
Total size: 7.1 MB
Directory structure:
gitextract_xdt6b6x5/
├── .clang-format
├── .eslintignore
├── .eslintrc.js
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yaml
│ │ └── config.yml
│ ├── ISSUE_TEMPLATE.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ ├── android-build-test.yml
│ ├── check-archs-consistency.yml
│ ├── close-when-stale.yml
│ ├── e2e-android.yml
│ ├── e2e-ios.yml
│ ├── ios-build-test.yml
│ ├── js-build-test.yml
│ ├── macos-build-test.yml
│ ├── needs-more-info.yml
│ ├── needs-repro.yml
│ └── windows-build-test.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .npmignore
├── .prettierrc.js
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── RNSVG.podspec
├── USAGE.md
├── __tests__/
│ ├── __snapshots__/
│ │ └── css.test.tsx.snap
│ ├── css.test.tsx
│ └── e2e/
│ └── GeneralSvgRenderingTest.spec.tsx
├── android/
│ ├── build.gradle
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── proguard-rules.pro
│ ├── spotless.gradle
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── horcrux/
│ │ │ └── svg/
│ │ │ ├── Brush.java
│ │ │ ├── CircleView.java
│ │ │ ├── ClipPathView.java
│ │ │ ├── CustomFilter.java
│ │ │ ├── DefinitionView.java
│ │ │ ├── DefsView.java
│ │ │ ├── EllipseView.java
│ │ │ ├── FeBlendView.java
│ │ │ ├── FeColorMatrixView.java
│ │ │ ├── FeCompositeView.java
│ │ │ ├── FeFloodView.java
│ │ │ ├── FeGaussianBlurView.java
│ │ │ ├── FeMergeView.java
│ │ │ ├── FeOffsetView.java
│ │ │ ├── FilterPrimitiveView.java
│ │ │ ├── FilterProperties.java
│ │ │ ├── FilterRegion.java
│ │ │ ├── FilterUtils.java
│ │ │ ├── FilterView.java
│ │ │ ├── FontData.java
│ │ │ ├── ForeignObjectView.java
│ │ │ ├── GlyphContext.java
│ │ │ ├── GlyphPathBag.java
│ │ │ ├── GroupView.java
│ │ │ ├── ImageView.java
│ │ │ ├── LineView.java
│ │ │ ├── LinearGradientView.java
│ │ │ ├── MarkerView.java
│ │ │ ├── MaskView.java
│ │ │ ├── PathParser.java
│ │ │ ├── PathView.java
│ │ │ ├── PatternView.java
│ │ │ ├── PropHelper.java
│ │ │ ├── RNSVGMarkerPosition.java
│ │ │ ├── RNSVGRenderableManager.java
│ │ │ ├── RadialGradientView.java
│ │ │ ├── RectView.java
│ │ │ ├── RenderableView.java
│ │ │ ├── RenderableViewManager.java
│ │ │ ├── SVGLength.java
│ │ │ ├── SvgPackage.java
│ │ │ ├── SvgView.java
│ │ │ ├── SvgViewManager.java
│ │ │ ├── SvgViewModule.java
│ │ │ ├── SymbolView.java
│ │ │ ├── TSpanView.java
│ │ │ ├── TextLayoutAlgorithm.java
│ │ │ ├── TextPathView.java
│ │ │ ├── TextProperties.java
│ │ │ ├── TextView.java
│ │ │ ├── UseView.java
│ │ │ ├── ViewBox.java
│ │ │ ├── VirtualView.java
│ │ │ └── events/
│ │ │ ├── SvgLoadEvent.java
│ │ │ └── SvgOnLayoutEvent.java
│ │ └── jni/
│ │ ├── CMakeLists.txt
│ │ ├── rnsvg.cpp
│ │ └── rnsvg.h
│ └── paper/
│ └── java/
│ └── com/
│ ├── facebook/
│ │ └── react/
│ │ └── viewmanagers/
│ │ ├── RNSVGCircleManagerDelegate.java
│ │ ├── RNSVGCircleManagerInterface.java
│ │ ├── RNSVGClipPathManagerDelegate.java
│ │ ├── RNSVGClipPathManagerInterface.java
│ │ ├── RNSVGDefsManagerDelegate.java
│ │ ├── RNSVGDefsManagerInterface.java
│ │ ├── RNSVGEllipseManagerDelegate.java
│ │ ├── RNSVGEllipseManagerInterface.java
│ │ ├── RNSVGFeBlendManagerDelegate.java
│ │ ├── RNSVGFeBlendManagerInterface.java
│ │ ├── RNSVGFeColorMatrixManagerDelegate.java
│ │ ├── RNSVGFeColorMatrixManagerInterface.java
│ │ ├── RNSVGFeCompositeManagerDelegate.java
│ │ ├── RNSVGFeCompositeManagerInterface.java
│ │ ├── RNSVGFeFloodManagerDelegate.java
│ │ ├── RNSVGFeFloodManagerInterface.java
│ │ ├── RNSVGFeGaussianBlurManagerDelegate.java
│ │ ├── RNSVGFeGaussianBlurManagerInterface.java
│ │ ├── RNSVGFeMergeManagerDelegate.java
│ │ ├── RNSVGFeMergeManagerInterface.java
│ │ ├── RNSVGFeOffsetManagerDelegate.java
│ │ ├── RNSVGFeOffsetManagerInterface.java
│ │ ├── RNSVGFilterManagerDelegate.java
│ │ ├── RNSVGFilterManagerInterface.java
│ │ ├── RNSVGForeignObjectManagerDelegate.java
│ │ ├── RNSVGForeignObjectManagerInterface.java
│ │ ├── RNSVGGroupManagerDelegate.java
│ │ ├── RNSVGGroupManagerInterface.java
│ │ ├── RNSVGImageManagerDelegate.java
│ │ ├── RNSVGImageManagerInterface.java
│ │ ├── RNSVGLineManagerDelegate.java
│ │ ├── RNSVGLineManagerInterface.java
│ │ ├── RNSVGLinearGradientManagerDelegate.java
│ │ ├── RNSVGLinearGradientManagerInterface.java
│ │ ├── RNSVGMarkerManagerDelegate.java
│ │ ├── RNSVGMarkerManagerInterface.java
│ │ ├── RNSVGMaskManagerDelegate.java
│ │ ├── RNSVGMaskManagerInterface.java
│ │ ├── RNSVGPathManagerDelegate.java
│ │ ├── RNSVGPathManagerInterface.java
│ │ ├── RNSVGPatternManagerDelegate.java
│ │ ├── RNSVGPatternManagerInterface.java
│ │ ├── RNSVGRadialGradientManagerDelegate.java
│ │ ├── RNSVGRadialGradientManagerInterface.java
│ │ ├── RNSVGRectManagerDelegate.java
│ │ ├── RNSVGRectManagerInterface.java
│ │ ├── RNSVGSvgViewAndroidManagerDelegate.java
│ │ ├── RNSVGSvgViewAndroidManagerInterface.java
│ │ ├── RNSVGSymbolManagerDelegate.java
│ │ ├── RNSVGSymbolManagerInterface.java
│ │ ├── RNSVGTSpanManagerDelegate.java
│ │ ├── RNSVGTSpanManagerInterface.java
│ │ ├── RNSVGTextManagerDelegate.java
│ │ ├── RNSVGTextManagerInterface.java
│ │ ├── RNSVGTextPathManagerDelegate.java
│ │ ├── RNSVGTextPathManagerInterface.java
│ │ ├── RNSVGUseManagerDelegate.java
│ │ └── RNSVGUseManagerInterface.java
│ └── horcrux/
│ └── svg/
│ ├── NativeSvgRenderableModuleSpec.java
│ └── NativeSvgViewModuleSpec.java
├── apple/
│ ├── .npmignore
│ ├── Brushes/
│ │ ├── RNSVGBrush.h
│ │ ├── RNSVGBrush.mm
│ │ ├── RNSVGBrushType.h
│ │ ├── RNSVGContextBrush.h
│ │ ├── RNSVGContextBrush.mm
│ │ ├── RNSVGPainter.h
│ │ ├── RNSVGPainter.mm
│ │ ├── RNSVGPainterBrush.h
│ │ ├── RNSVGPainterBrush.mm
│ │ ├── RNSVGSolidColorBrush.h
│ │ └── RNSVGSolidColorBrush.mm
│ ├── Elements/
│ │ ├── RNSVGClipPath.h
│ │ ├── RNSVGClipPath.mm
│ │ ├── RNSVGDefs.h
│ │ ├── RNSVGDefs.mm
│ │ ├── RNSVGForeignObject.h
│ │ ├── RNSVGForeignObject.mm
│ │ ├── RNSVGGroup.h
│ │ ├── RNSVGGroup.mm
│ │ ├── RNSVGImage.h
│ │ ├── RNSVGImage.mm
│ │ ├── RNSVGLinearGradient.h
│ │ ├── RNSVGLinearGradient.mm
│ │ ├── RNSVGMarker.h
│ │ ├── RNSVGMarker.mm
│ │ ├── RNSVGMask.h
│ │ ├── RNSVGMask.mm
│ │ ├── RNSVGPath.h
│ │ ├── RNSVGPath.mm
│ │ ├── RNSVGPattern.h
│ │ ├── RNSVGPattern.mm
│ │ ├── RNSVGRadialGradient.h
│ │ ├── RNSVGRadialGradient.mm
│ │ ├── RNSVGSvgView.h
│ │ ├── RNSVGSvgView.mm
│ │ ├── RNSVGSymbol.h
│ │ ├── RNSVGSymbol.mm
│ │ ├── RNSVGUse.h
│ │ └── RNSVGUse.mm
│ ├── Filters/
│ │ ├── MetalCI/
│ │ │ ├── RNSVGArithmeticFilter.appletvos.air
│ │ │ ├── RNSVGArithmeticFilter.appletvos.metallib
│ │ │ ├── RNSVGArithmeticFilter.h
│ │ │ ├── RNSVGArithmeticFilter.iphoneos.air
│ │ │ ├── RNSVGArithmeticFilter.iphoneos.metallib
│ │ │ ├── RNSVGArithmeticFilter.macosx.air
│ │ │ ├── RNSVGArithmeticFilter.macosx.metallib
│ │ │ ├── RNSVGArithmeticFilter.metal
│ │ │ ├── RNSVGArithmeticFilter.mm
│ │ │ ├── RNSVGArithmeticFilter.xros.air
│ │ │ ├── RNSVGArithmeticFilter.xros.metallib
│ │ │ ├── RNSVGCompositeXor.appletvos.air
│ │ │ ├── RNSVGCompositeXor.appletvos.metallib
│ │ │ ├── RNSVGCompositeXor.h
│ │ │ ├── RNSVGCompositeXor.iphoneos.air
│ │ │ ├── RNSVGCompositeXor.iphoneos.metallib
│ │ │ ├── RNSVGCompositeXor.macosx.air
│ │ │ ├── RNSVGCompositeXor.macosx.metallib
│ │ │ ├── RNSVGCompositeXor.metal
│ │ │ ├── RNSVGCompositeXor.mm
│ │ │ ├── RNSVGCompositeXor.xros.air
│ │ │ ├── RNSVGCompositeXor.xros.metallib
│ │ │ ├── RNSVGCustomFilter.h
│ │ │ └── RNSVGCustomFilter.mm
│ │ ├── RNSVGBlendMode.h
│ │ ├── RNSVGColorMatrixType.h
│ │ ├── RNSVGCompositeOperator.h
│ │ ├── RNSVGEdgeMode.h
│ │ ├── RNSVGFeBlend.h
│ │ ├── RNSVGFeBlend.mm
│ │ ├── RNSVGFeColorMatrix.h
│ │ ├── RNSVGFeColorMatrix.mm
│ │ ├── RNSVGFeComposite.h
│ │ ├── RNSVGFeComposite.mm
│ │ ├── RNSVGFeFlood.h
│ │ ├── RNSVGFeFlood.mm
│ │ ├── RNSVGFeGaussianBlur.h
│ │ ├── RNSVGFeGaussianBlur.mm
│ │ ├── RNSVGFeMerge.h
│ │ ├── RNSVGFeMerge.mm
│ │ ├── RNSVGFeOffset.h
│ │ ├── RNSVGFeOffset.mm
│ │ ├── RNSVGFilter.h
│ │ ├── RNSVGFilter.mm
│ │ ├── RNSVGFilterPrimitive.h
│ │ ├── RNSVGFilterPrimitive.mm
│ │ ├── RNSVGFilterRegion.h
│ │ └── RNSVGFilterRegion.mm
│ ├── RNSVG.xcodeproj/
│ │ └── project.pbxproj
│ ├── RNSVGContainer.h
│ ├── RNSVGNode.h
│ ├── RNSVGNode.mm
│ ├── RNSVGRenderable.h
│ ├── RNSVGRenderable.mm
│ ├── RNSVGRenderableModule.h
│ ├── RNSVGRenderableModule.mm
│ ├── RNSVGSvgViewModule.h
│ ├── RNSVGSvgViewModule.mm
│ ├── RNSVGUIKit.h
│ ├── RNSVGUIKit.macos.mm
│ ├── Shapes/
│ │ ├── RNSVGCircle.h
│ │ ├── RNSVGCircle.mm
│ │ ├── RNSVGEllipse.h
│ │ ├── RNSVGEllipse.mm
│ │ ├── RNSVGLine.h
│ │ ├── RNSVGLine.mm
│ │ ├── RNSVGRect.h
│ │ └── RNSVGRect.mm
│ ├── Text/
│ │ ├── RNSVGFontData.h
│ │ ├── RNSVGFontData.mm
│ │ ├── RNSVGGlyphContext.h
│ │ ├── RNSVGGlyphContext.mm
│ │ ├── RNSVGPropHelper.h
│ │ ├── RNSVGPropHelper.mm
│ │ ├── RNSVGTSpan.h
│ │ ├── RNSVGTSpan.mm
│ │ ├── RNSVGText.h
│ │ ├── RNSVGText.mm
│ │ ├── RNSVGTextPath.h
│ │ ├── RNSVGTextPath.mm
│ │ ├── RNSVGTextProperties.h
│ │ ├── RNSVGTextProperties.mm
│ │ ├── RNSVGTopAlignedLabel.h
│ │ ├── RNSVGTopAlignedLabel.ios.mm
│ │ └── RNSVGTopAlignedLabel.macos.mm
│ ├── Utils/
│ │ ├── RCTConvert+RNSVG.h
│ │ ├── RCTConvert+RNSVG.mm
│ │ ├── RNSVGBezierElement.h
│ │ ├── RNSVGBezierElement.mm
│ │ ├── RNSVGCGFCRule.h
│ │ ├── RNSVGConvert.h
│ │ ├── RNSVGConvert.mm
│ │ ├── RNSVGFabricConversions.h
│ │ ├── RNSVGLength.h
│ │ ├── RNSVGLength.mm
│ │ ├── RNSVGMarkerPosition.h
│ │ ├── RNSVGMarkerPosition.mm
│ │ ├── RNSVGMaskType.h
│ │ ├── RNSVGPathMeasure.h
│ │ ├── RNSVGPathMeasure.mm
│ │ ├── RNSVGPathParser.h
│ │ ├── RNSVGPathParser.mm
│ │ ├── RNSVGRenderUtils.h
│ │ ├── RNSVGRenderUtils.mm
│ │ ├── RNSVGUnits.h
│ │ ├── RNSVGVBMOS.h
│ │ ├── RNSVGVectorEffect.h
│ │ ├── RNSVGViewBox.h
│ │ └── RNSVGViewBox.mm
│ └── ViewManagers/
│ ├── RNSVGCircleManager.h
│ ├── RNSVGCircleManager.mm
│ ├── RNSVGClipPathManager.h
│ ├── RNSVGClipPathManager.mm
│ ├── RNSVGDefsManager.h
│ ├── RNSVGDefsManager.mm
│ ├── RNSVGEllipseManager.h
│ ├── RNSVGEllipseManager.mm
│ ├── RNSVGFeBlendManager.h
│ ├── RNSVGFeBlendManager.mm
│ ├── RNSVGFeColorMatrixManager.h
│ ├── RNSVGFeColorMatrixManager.mm
│ ├── RNSVGFeCompositeManager.h
│ ├── RNSVGFeCompositeManager.mm
│ ├── RNSVGFeFloodManager.h
│ ├── RNSVGFeFloodManager.mm
│ ├── RNSVGFeGaussianBlurManager.h
│ ├── RNSVGFeGaussianBlurManager.mm
│ ├── RNSVGFeMergeManager.h
│ ├── RNSVGFeMergeManager.mm
│ ├── RNSVGFeOffsetManager.h
│ ├── RNSVGFeOffsetManager.mm
│ ├── RNSVGFilterManager.h
│ ├── RNSVGFilterManager.mm
│ ├── RNSVGFilterPrimitiveManager.h
│ ├── RNSVGFilterPrimitiveManager.mm
│ ├── RNSVGForeignObjectManager.h
│ ├── RNSVGForeignObjectManager.mm
│ ├── RNSVGGroupManager.h
│ ├── RNSVGGroupManager.mm
│ ├── RNSVGImageManager.h
│ ├── RNSVGImageManager.mm
│ ├── RNSVGLineManager.h
│ ├── RNSVGLineManager.mm
│ ├── RNSVGLinearGradientManager.h
│ ├── RNSVGLinearGradientManager.mm
│ ├── RNSVGMarkerManager.h
│ ├── RNSVGMarkerManager.mm
│ ├── RNSVGMaskManager.h
│ ├── RNSVGMaskManager.mm
│ ├── RNSVGNodeManager.h
│ ├── RNSVGNodeManager.mm
│ ├── RNSVGPathManager.h
│ ├── RNSVGPathManager.mm
│ ├── RNSVGPatternManager.h
│ ├── RNSVGPatternManager.mm
│ ├── RNSVGRadialGradientManager.h
│ ├── RNSVGRadialGradientManager.mm
│ ├── RNSVGRectManager.h
│ ├── RNSVGRectManager.mm
│ ├── RNSVGRenderableManager.h
│ ├── RNSVGRenderableManager.mm
│ ├── RNSVGSvgViewManager.h
│ ├── RNSVGSvgViewManager.mm
│ ├── RNSVGSymbolManager.h
│ ├── RNSVGSymbolManager.mm
│ ├── RNSVGTSpanManager.h
│ ├── RNSVGTSpanManager.mm
│ ├── RNSVGTextManager.h
│ ├── RNSVGTextManager.mm
│ ├── RNSVGTextPathManager.h
│ ├── RNSVGTextPathManager.mm
│ ├── RNSVGUseManager.h
│ └── RNSVGUseManager.mm
├── apps/
│ ├── common/
│ │ ├── .eslintrc.js
│ │ ├── .prettierrc.js
│ │ ├── example/
│ │ │ ├── ListScreen.tsx
│ │ │ ├── e2e/
│ │ │ │ ├── TestingView.tsx
│ │ │ │ ├── icon.tsx
│ │ │ │ ├── index.macos.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── index.web.tsx
│ │ │ │ └── index.windows.tsx
│ │ │ ├── examples/
│ │ │ │ ├── Circle.tsx
│ │ │ │ ├── Clipping.tsx
│ │ │ │ ├── Ellipse.tsx
│ │ │ │ ├── Empty.tsx
│ │ │ │ ├── FilterImage/
│ │ │ │ │ ├── FilterPicker.tsx
│ │ │ │ │ ├── LocalImage.tsx
│ │ │ │ │ ├── RemoteImage.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── Filters/
│ │ │ │ │ ├── FeBlend.tsx
│ │ │ │ │ ├── FeColorMatrix.tsx
│ │ │ │ │ ├── FeComposite.tsx
│ │ │ │ │ ├── FeDropShadow.tsx
│ │ │ │ │ ├── FeFlood.tsx
│ │ │ │ │ ├── FeGaussianBlur.tsx
│ │ │ │ │ ├── FeMerge.tsx
│ │ │ │ │ ├── FeOffset.tsx
│ │ │ │ │ ├── ReanimatedFeColorMatrix.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── ForeignObject.tsx
│ │ │ │ ├── G.tsx
│ │ │ │ ├── Gradients.tsx
│ │ │ │ ├── Image.tsx
│ │ │ │ ├── Line.tsx
│ │ │ │ ├── Markers.tsx
│ │ │ │ ├── Mask.tsx
│ │ │ │ ├── PanResponder.tsx
│ │ │ │ ├── Path.tsx
│ │ │ │ ├── Polygon.tsx
│ │ │ │ ├── Polyline.tsx
│ │ │ │ ├── Reanimated.tsx
│ │ │ │ ├── Reanimated.windows.tsx
│ │ │ │ ├── Rect.tsx
│ │ │ │ ├── Reusable.tsx
│ │ │ │ ├── Stroking.tsx
│ │ │ │ ├── Svg.tsx
│ │ │ │ ├── Text.tsx
│ │ │ │ ├── Text.windows.tsx
│ │ │ │ ├── TouchEvents.tsx
│ │ │ │ ├── Transforms.tsx
│ │ │ │ ├── complex/
│ │ │ │ │ ├── PolygonBunny.tsx
│ │ │ │ │ ├── WorldMap.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── index.tsx
│ │ │ └── utils/
│ │ │ ├── commonStyles.ts
│ │ │ ├── composeComponent.tsx
│ │ │ ├── types.ts
│ │ │ └── usePersistNavigation.ts
│ │ ├── index.tsx
│ │ ├── noNavigationApp.tsx
│ │ ├── test/
│ │ │ ├── ColorTest.tsx
│ │ │ ├── MountUnmount.tsx
│ │ │ ├── PointerEventsBoxNone.tsx
│ │ │ ├── Test1318.tsx
│ │ │ ├── Test1374.tsx
│ │ │ ├── Test1442.tsx
│ │ │ ├── Test1451.tsx
│ │ │ ├── Test1718.tsx
│ │ │ ├── Test1790.tsx
│ │ │ ├── Test1813.tsx
│ │ │ ├── Test1845.tsx
│ │ │ ├── Test1986.tsx
│ │ │ ├── Test2071.tsx
│ │ │ ├── Test2080.tsx
│ │ │ ├── Test2086.tsx
│ │ │ ├── Test2089.tsx
│ │ │ ├── Test2142.tsx
│ │ │ ├── Test2148.tsx
│ │ │ ├── Test2170.tsx
│ │ │ ├── Test2196.tsx
│ │ │ ├── Test2233.tsx
│ │ │ ├── Test2248.tsx
│ │ │ ├── Test2266.tsx
│ │ │ ├── Test2276.tsx
│ │ │ ├── Test2327.tsx
│ │ │ ├── Test2363.tsx
│ │ │ ├── Test2366.tsx
│ │ │ ├── Test2380.tsx
│ │ │ ├── Test2397.tsx
│ │ │ ├── Test2403.tsx
│ │ │ ├── Test2407.tsx
│ │ │ ├── Test2417.tsx
│ │ │ ├── Test2455.tsx
│ │ │ ├── Test2471.tsx
│ │ │ ├── Test2520.tsx
│ │ │ ├── Test2670.tsx
│ │ │ └── index.tsx
│ │ └── tsconfig.json
│ ├── fabric-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── android/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── debug.keystore
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── debug/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── fabricexample/
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── MainApplication.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── rn_edit_text_material.xml
│ │ │ │ └── values/
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── ios/
│ │ │ ├── .xcode.env
│ │ │ ├── FabricExample/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Images.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Info.plist
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ ├── FabricExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── FabricExample.xcscheme
│ │ │ ├── FabricExample.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── Podfile
│ │ ├── jest.config.js
│ │ ├── metro.config.js
│ │ ├── package.json
│ │ └── patches/
│ │ └── react-native-view-shot+4.0.0-alpha.2.patch
│ ├── fabric-macos-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .prettierrc.js
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── __tests__/
│ │ │ └── App.test.tsx
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── jest.config.js
│ │ ├── macos/
│ │ │ ├── .gitignore
│ │ │ ├── .xcode.env
│ │ │ ├── FabricMacOSExample-macOS/
│ │ │ │ ├── AppDelegate.h
│ │ │ │ ├── AppDelegate.mm
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── FabricMacOSExample.entitlements
│ │ │ │ ├── Info.plist
│ │ │ │ └── main.m
│ │ │ ├── FabricMacOSExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── FabricMacOSExample-macOS.xcscheme
│ │ │ ├── FabricMacOSExample.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ ├── Podfile
│ │ │ └── PrivacyInfo.xcprivacy
│ │ ├── metro.config.js
│ │ └── package.json
│ ├── fabric-windows-example/
│ │ ├── .gitignore
│ │ ├── .prettierrc.js
│ │ ├── .ruby-version
│ │ ├── .watchmanconfig
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── jest.config.js
│ │ ├── jest.config.windows.js
│ │ ├── metro.config.js
│ │ ├── package.json
│ │ └── windows/
│ │ ├── .gitignore
│ │ ├── ExperimentalFeatures.props
│ │ ├── FabricExample/
│ │ │ ├── .gitignore
│ │ │ ├── AutolinkedNativeModules.g.cpp
│ │ │ ├── AutolinkedNativeModules.g.h
│ │ │ ├── AutolinkedNativeModules.g.props
│ │ │ ├── AutolinkedNativeModules.g.targets
│ │ │ ├── FabricExample.cpp
│ │ │ ├── FabricExample.h
│ │ │ ├── FabricExample.rc
│ │ │ ├── FabricExample.vcxproj
│ │ │ ├── FabricExample.vcxproj.filters
│ │ │ ├── packages.lock.json
│ │ │ ├── pch.cpp
│ │ │ ├── pch.h
│ │ │ ├── resource.h
│ │ │ └── targetver.h
│ │ ├── FabricExample.Package/
│ │ │ ├── FabricExample.Package.wapproj
│ │ │ ├── Package.appxmanifest
│ │ │ └── packages.lock.json
│ │ └── FabricExample.sln
│ ├── paper-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── debug.keystore
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── debug/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── paperexample/
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── MainApplication.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── rn_edit_text_material.xml
│ │ │ │ └── values/
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── ios/
│ │ │ ├── .xcode.env
│ │ │ ├── PaperExample/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Images.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Info.plist
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ ├── PaperExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── PaperExample.xcscheme
│ │ │ ├── PaperExample.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── Podfile
│ │ ├── jest.config.js
│ │ ├── metro.config.js
│ │ ├── package.json
│ │ └── patches/
│ │ └── react-native-view-shot+4.0.0-alpha.2.patch
│ ├── paper-macos-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .prettierrc.js
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── __tests__/
│ │ │ └── App.test.tsx
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── jest.config.js
│ │ ├── macos/
│ │ │ ├── .gitignore
│ │ │ ├── .xcode.env
│ │ │ ├── PaperMacOSExample-macOS/
│ │ │ │ ├── AppDelegate.h
│ │ │ │ ├── AppDelegate.mm
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ ├── PaperMacOSExample.entitlements
│ │ │ │ └── main.m
│ │ │ ├── PaperMacOSExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── PaperMacOSExample-macOS.xcscheme
│ │ │ ├── PaperMacOSExample.xcworkspace/
│ │ │ │ └── contents.xcworkspacedata
│ │ │ ├── Podfile
│ │ │ └── PrivacyInfo.xcprivacy
│ │ ├── metro.config.js
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── paper-windows-example/
│ │ ├── .gitignore
│ │ ├── .watchmanconfig
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── jest.config.js
│ │ ├── metro.config.js
│ │ ├── msbuild.binlog
│ │ ├── package.json
│ │ ├── patches/
│ │ │ └── react-native-windows+0.74.23.patch
│ │ └── windows/
│ │ ├── .gitignore
│ │ ├── Example/
│ │ │ ├── .gitignore
│ │ │ ├── App.cpp
│ │ │ ├── App.h
│ │ │ ├── App.idl
│ │ │ ├── App.xaml
│ │ │ ├── AutolinkedNativeModules.g.cpp
│ │ │ ├── AutolinkedNativeModules.g.h
│ │ │ ├── AutolinkedNativeModules.g.props
│ │ │ ├── AutolinkedNativeModules.g.targets
│ │ │ ├── Example.vcxproj
│ │ │ ├── Example.vcxproj.filters
│ │ │ ├── MainPage.cpp
│ │ │ ├── MainPage.h
│ │ │ ├── MainPage.idl
│ │ │ ├── MainPage.xaml
│ │ │ ├── Package.appxmanifest
│ │ │ ├── PropertySheet.props
│ │ │ ├── ReactPackageProvider.cpp
│ │ │ ├── ReactPackageProvider.h
│ │ │ ├── packages.lock.json
│ │ │ ├── pch.cpp
│ │ │ └── pch.h
│ │ ├── Example.sln
│ │ ├── ExperimentalFeatures.props
│ │ └── NuGet.Config
│ ├── tests-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── __tests__/
│ │ │ └── App.test.tsx
│ │ ├── android/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── debug.keystore
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── testsexample/
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── MainApplication.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── rn_edit_text_material.xml
│ │ │ │ └── values/
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── ios/
│ │ │ ├── .xcode.env
│ │ │ ├── Podfile
│ │ │ ├── TestsExample/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Images.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Info.plist
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ ├── TestsExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── TestsExample.xcscheme
│ │ │ └── TestsExample.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── jest.config.js
│ │ ├── metro.config.js
│ │ └── package.json
│ └── web-example/
│ ├── .gitignore
│ ├── app.json
│ ├── babel.config.js
│ ├── index.js
│ ├── metro.config.js
│ ├── package.json
│ ├── patches/
│ │ └── react-native-worklets+0.6.0.patch
│ └── tsconfig.json
├── babel.config.js
├── common/
│ └── cpp/
│ └── react/
│ └── renderer/
│ └── components/
│ └── rnsvg/
│ ├── RNSVGComponentDescriptors.h
│ ├── RNSVGConcreteShadowNode.h
│ ├── RNSVGImageComponentDescriptor.h
│ ├── RNSVGImageShadowNode.cpp
│ ├── RNSVGImageShadowNode.h
│ ├── RNSVGImageState.cpp
│ ├── RNSVGImageState.h
│ ├── RNSVGLayoutableShadowNode.cpp
│ ├── RNSVGLayoutableShadowNode.h
│ ├── RNSVGShadowNodes.cpp
│ └── RNSVGShadowNodes.h
├── css/
│ └── package.json
├── e2e/
│ ├── env.ts
│ ├── failedCases.json
│ ├── generateReferences.ts
│ ├── globals.d.ts
│ ├── helpers.ts
│ ├── matchTestCases.ts
│ ├── readFailedCases.ts
│ ├── setupJest.ts
│ ├── teardownJest.ts
│ └── types.ts
├── filter-image/
│ └── package.json
├── jest.config.ts
├── package.json
├── react-native.config.js
├── scripts/
│ ├── codegen-check-consistency.js
│ ├── codegen-sync-archs.js
│ ├── codegen-utils.js
│ ├── format-java.js
│ ├── metal.js
│ └── rnsvg_utils.rb
├── src/
│ ├── ReactNativeSVG.ts
│ ├── ReactNativeSVG.web.ts
│ ├── css/
│ │ ├── LocalSvg.tsx
│ │ ├── css.tsx
│ │ └── index.tsx
│ ├── deprecated.tsx
│ ├── elements/
│ │ ├── Circle.tsx
│ │ ├── ClipPath.tsx
│ │ ├── Defs.tsx
│ │ ├── Ellipse.tsx
│ │ ├── ForeignObject.tsx
│ │ ├── G.tsx
│ │ ├── Image.tsx
│ │ ├── Line.tsx
│ │ ├── LinearGradient.tsx
│ │ ├── Marker.tsx
│ │ ├── Mask.tsx
│ │ ├── Path.tsx
│ │ ├── Pattern.tsx
│ │ ├── Polygon.tsx
│ │ ├── Polyline.tsx
│ │ ├── RadialGradient.tsx
│ │ ├── Rect.tsx
│ │ ├── Shape.tsx
│ │ ├── Stop.tsx
│ │ ├── Svg.tsx
│ │ ├── Symbol.tsx
│ │ ├── TSpan.tsx
│ │ ├── Text.tsx
│ │ ├── TextPath.tsx
│ │ ├── Use.tsx
│ │ └── filters/
│ │ ├── FeBlend.tsx
│ │ ├── FeColorMatrix.tsx
│ │ ├── FeComponentTransfer.tsx
│ │ ├── FeComponentTransferFunction.tsx
│ │ ├── FeComposite.tsx
│ │ ├── FeConvolveMatrix.tsx
│ │ ├── FeDiffuseLighting.tsx
│ │ ├── FeDisplacementMap.tsx
│ │ ├── FeDistantLight.tsx
│ │ ├── FeDropShadow.tsx
│ │ ├── FeFlood.tsx
│ │ ├── FeGaussianBlur.tsx
│ │ ├── FeImage.tsx
│ │ ├── FeMerge.tsx
│ │ ├── FeMergeNode.tsx
│ │ ├── FeMorphology.tsx
│ │ ├── FeOffset.tsx
│ │ ├── FePointLight.tsx
│ │ ├── FeSpecularLighting.tsx
│ │ ├── FeSpotLight.tsx
│ │ ├── FeTile.tsx
│ │ ├── FeTurbulence.tsx
│ │ ├── Filter.tsx
│ │ ├── FilterPrimitive.tsx
│ │ └── types.ts
│ ├── elements.ts
│ ├── elements.web.ts
│ ├── fabric/
│ │ ├── AndroidSvgViewNativeComponent.ts
│ │ ├── CircleNativeComponent.ts
│ │ ├── ClipPathNativeComponent.ts
│ │ ├── DefsNativeComponent.ts
│ │ ├── EllipseNativeComponent.ts
│ │ ├── FeBlendNativeComponent.ts
│ │ ├── FeColorMatrixNativeComponent.ts
│ │ ├── FeCompositeNativeComponent.ts
│ │ ├── FeFloodNativeComponent.ts
│ │ ├── FeGaussianBlurNativeComponent.ts
│ │ ├── FeMergeNativeComponent.ts
│ │ ├── FeOffsetNativeComponent.ts
│ │ ├── FilterNativeComponent.ts
│ │ ├── ForeignObjectNativeComponent.ts
│ │ ├── GroupNativeComponent.ts
│ │ ├── IOSSvgViewNativeComponent.ts
│ │ ├── ImageNativeComponent.ts
│ │ ├── LineNativeComponent.ts
│ │ ├── LinearGradientNativeComponent.ts
│ │ ├── MarkerNativeComponent.ts
│ │ ├── MaskNativeComponent.ts
│ │ ├── NativeSvgRenderableModule.ts
│ │ ├── NativeSvgViewModule.ts
│ │ ├── PathNativeComponent.ts
│ │ ├── PatternNativeComponent.ts
│ │ ├── RadialGradientNativeComponent.ts
│ │ ├── RectNativeComponent.ts
│ │ ├── SymbolNativeComponent.ts
│ │ ├── TSpanNativeComponent.ts
│ │ ├── TextNativeComponent.ts
│ │ ├── TextPathNativeComponent.ts
│ │ ├── UseNativeComponent.ts
│ │ ├── codegenUtils.ts
│ │ ├── index.ts
│ │ └── utils.ts
│ ├── filter-image/
│ │ ├── FilterImage.tsx
│ │ ├── extract/
│ │ │ ├── extractFilters.ts
│ │ │ ├── extractFiltersString.d.ts
│ │ │ ├── extractFiltersString.js
│ │ │ ├── extractFiltersString.pegjs
│ │ │ └── extractImage.ts
│ │ ├── index.tsx
│ │ └── types.ts
│ ├── index.ts
│ ├── lib/
│ │ ├── Matrix2D.ts
│ │ ├── SvgTouchableMixin.ts
│ │ ├── extract/
│ │ │ ├── colors.ts
│ │ │ ├── extractBrush.ts
│ │ │ ├── extractFill.ts
│ │ │ ├── extractFilter.ts
│ │ │ ├── extractGradient.ts
│ │ │ ├── extractLengthList.ts
│ │ │ ├── extractOpacity.ts
│ │ │ ├── extractPolyPoints.ts
│ │ │ ├── extractProps.ts
│ │ │ ├── extractProps.windows.ts
│ │ │ ├── extractResponder.ts
│ │ │ ├── extractStroke.ts
│ │ │ ├── extractText.tsx
│ │ │ ├── extractTransform.ts
│ │ │ ├── extractViewBox.ts
│ │ │ ├── transform.d.ts
│ │ │ ├── transform.js
│ │ │ ├── transform.peg
│ │ │ ├── transformToRn.d.ts
│ │ │ ├── transformToRn.js
│ │ │ ├── transformToRn.pegjs
│ │ │ └── types.ts
│ │ ├── maskType.ts
│ │ ├── resolve.ts
│ │ ├── resolveAssetUri.ts
│ │ ├── units.ts
│ │ ├── util.ts
│ │ └── utils/
│ │ └── convertPercentageColor.ts
│ ├── utils/
│ │ └── fetchData.ts
│ ├── web/
│ │ ├── WebShape.ts
│ │ ├── types.ts
│ │ └── utils/
│ │ ├── convertInt32Color.ts
│ │ ├── hasProperty.ts
│ │ ├── index.ts
│ │ ├── parseTransform.ts
│ │ └── prepare.ts
│ ├── xml.tsx
│ └── xmlTags.ts
├── tsconfig.json
└── windows/
├── .clang-format
├── .gitignore
├── ExperimentalFeatures.props
├── NuGet.Config
├── RNSVG/
│ ├── BrushView.cpp
│ ├── BrushView.h
│ ├── CircleView.cpp
│ ├── CircleView.h
│ ├── CircleViewManager.cpp
│ ├── CircleViewManager.h
│ ├── ClipPathView.cpp
│ ├── ClipPathView.h
│ ├── ClipPathViewManager.cpp
│ ├── ClipPathViewManager.h
│ ├── D2DBrush.cpp
│ ├── D2DBrush.h
│ ├── D2DDevice.cpp
│ ├── D2DDevice.h
│ ├── D2DDeviceContext.cpp
│ ├── D2DDeviceContext.h
│ ├── D2DGeometry.cpp
│ ├── D2DGeometry.h
│ ├── D2DHelpers.h
│ ├── DefsView.cpp
│ ├── DefsView.h
│ ├── DefsViewManager.cpp
│ ├── DefsViewManager.h
│ ├── DirectXDeviceManager.cpp
│ ├── DirectXDeviceManager.h
│ ├── EllipseView.cpp
│ ├── EllipseView.h
│ ├── EllipseViewManager.cpp
│ ├── EllipseViewManager.h
│ ├── Fabric/
│ │ ├── CircleView.cpp
│ │ ├── CircleView.h
│ │ ├── ClipPathView.cpp
│ │ ├── ClipPathView.h
│ │ ├── D2DHelpers.h
│ │ ├── DefsView.cpp
│ │ ├── DefsView.h
│ │ ├── EllipseView.cpp
│ │ ├── EllipseView.h
│ │ ├── GroupView.cpp
│ │ ├── GroupView.h
│ │ ├── ImageView.cpp
│ │ ├── ImageView.h
│ │ ├── LineView.cpp
│ │ ├── LineView.h
│ │ ├── LinearGradientView.cpp
│ │ ├── LinearGradientView.h
│ │ ├── PathView.cpp
│ │ ├── PathView.h
│ │ ├── RadialGradientView.cpp
│ │ ├── RadialGradientView.h
│ │ ├── RectView.cpp
│ │ ├── RectView.h
│ │ ├── RenderableView.cpp
│ │ ├── RenderableView.h
│ │ ├── SvgStrings.h
│ │ ├── SvgView.cpp
│ │ ├── SvgView.h
│ │ ├── UnsupportedSvgView.cpp
│ │ ├── UnsupportedSvgView.h
│ │ ├── UseView.cpp
│ │ └── UseView.h
│ ├── GroupView.cpp
│ ├── GroupView.h
│ ├── GroupViewManager.cpp
│ ├── GroupViewManager.h
│ ├── ImageView.cpp
│ ├── ImageView.h
│ ├── ImageViewManager.cpp
│ ├── ImageViewManager.h
│ ├── LineView.cpp
│ ├── LineView.h
│ ├── LineViewManager.cpp
│ ├── LineViewManager.h
│ ├── LinearGradientView.cpp
│ ├── LinearGradientView.h
│ ├── LinearGradientViewManager.cpp
│ ├── LinearGradientViewManager.h
│ ├── MarkerView.cpp
│ ├── MarkerView.h
│ ├── MarkerViewManager.cpp
│ ├── MarkerViewManager.h
│ ├── MaskView.cpp
│ ├── MaskView.h
│ ├── MaskViewManager.cpp
│ ├── MaskViewManager.h
│ ├── Paper.idl
│ ├── PathView.cpp
│ ├── PathView.h
│ ├── PathViewManager.cpp
│ ├── PathViewManager.h
│ ├── PatternView.cpp
│ ├── PatternView.h
│ ├── PatternViewManager.cpp
│ ├── PatternViewManager.h
│ ├── PropertySheet.props
│ ├── RNSVG.def
│ ├── RNSVG.rc
│ ├── RNSVG.vcxproj
│ ├── RNSVG.vcxproj.filters
│ ├── RNSVGModule.h
│ ├── RadialGradientView.cpp
│ ├── RadialGradientView.h
│ ├── RadialGradientViewManager.cpp
│ ├── RadialGradientViewManager.h
│ ├── ReactPackageProvider.cpp
│ ├── ReactPackageProvider.h
│ ├── ReactPackageProvider.idl
│ ├── RectView.cpp
│ ├── RectView.h
│ ├── RectViewManager.cpp
│ ├── RectViewManager.h
│ ├── RenderableView.cpp
│ ├── RenderableView.h
│ ├── RenderableViewManager.cpp
│ ├── RenderableViewManager.h
│ ├── SVGLength.cpp
│ ├── SVGLength.h
│ ├── SvgView.cpp
│ ├── SvgView.h
│ ├── SvgViewManager.cpp
│ ├── SvgViewManager.h
│ ├── SymbolView.cpp
│ ├── SymbolView.h
│ ├── SymbolViewManager.cpp
│ ├── SymbolViewManager.h
│ ├── TSpanView.cpp
│ ├── TSpanView.h
│ ├── TSpanViewManager.cpp
│ ├── TSpanViewManager.h
│ ├── TextView.cpp
│ ├── TextView.h
│ ├── TextViewManager.cpp
│ ├── TextViewManager.h
│ ├── Types.idl
│ ├── UnsupportedSvgViewManager.cpp
│ ├── UnsupportedSvgViewManager.h
│ ├── UseView.cpp
│ ├── UseView.h
│ ├── UseViewManager.cpp
│ ├── UseViewManager.h
│ ├── Utils.h
│ ├── ViewManagers.idl
│ ├── Views.idl
│ ├── packages.lock.json
│ ├── pch.cpp
│ ├── pch.h
│ ├── resource.h
│ ├── targetver.h
│ └── versionoverrides.rc
└── RNSVG.sln
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
AccessModifierOffset: -1
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: true
AlignOperands: false
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ForEachMacros: [ FOR_EACH_RANGE, FOR_EACH, ]
IncludeCategories:
- Regex: '^<.*\.h(pp)?>'
Priority: 1
- Regex: '^<.*'
Priority: 2
- Regex: '.*'
Priority: 3
IndentCaseLabels: true
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Right
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 8
UseTab: Never
---
Language: ObjC
ColumnLimit: 120
BreakBeforeBraces: WebKit
...
================================================
FILE: .eslintignore
================================================
**/node_modules/
apps/**/node_modules/
apps/**/android/
apps/**/ios/
apps/**/windows/
apps/**/macos/
screenshots/
android/
apple/
windows/
src/lib/extract/transform.js
================================================
FILE: .eslintrc.js
================================================
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
extends: [
'standard',
'plugin:@typescript-eslint/recommended',
'prettier',
'plugin:import/typescript',
],
plugins: [
'react',
'react-native',
'import',
'@typescript-eslint',
'react-hooks',
],
env: {
'react-native/react-native': true,
},
settings: {
'import/core-modules': [
'react-native-svg',
'react-native-svg/css',
'react-native-svg/filter-image',
],
'import/resolver': {
'babel-module': {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
},
},
rules: {
'import/no-unresolved': 'error',
'react/jsx-uses-vars': 'error',
'react/jsx-uses-react': 'error',
'no-use-before-define': 'off',
'@typescript-eslint/ban-ts-comment': [
'error',
{
'ts-ignore': 'allow-with-description',
'ts-expect-error': 'allow-with-description',
},
],
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'@typescript-eslint/no-var-requires': 'warn',
eqeqeq: 'error',
'no-unreachable': 'error',
},
};
================================================
FILE: .git-blame-ignore-revs
================================================
# .git-blame-ignore-revs
# chore: add CI for JS, iOS and Android formatting (#1782)
98c14b4f4588d55ecf1beb92a16e704e4489dd4f
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
================================================
FILE: .github/FUNDING.yml
================================================
github: software-mansion
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yaml
================================================
name: Bug report
description: Report an issue with SVG here.
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
Before you proceed:
- Make sure to check whether there are similar issues in the repository
- Make sure to clean cache in your project. Depending on your setup this could be done by:
- `yarn start --reset-cache` or
- `npm start -- --reset-cache` or
- `expo start --clear`
- type: markdown
attributes:
value: |
## Required information
- type: textarea
id: description
attributes:
label: Description
description: Please provide a clear, concise and descriptive explanation of what the bug is. Include screenshots or a video if needed. Tell us what were you expecting to happen instead of what is happening now.
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce
description: Provide a detailed list of steps that reproduce the issue.
placeholder: |
1.
2.
3.
validations:
required: true
- type: input
id: repro
attributes:
label: Snack or a link to a repository
description: |
Please provide a Snack (https://snack.expo.io/) or a link to a repository on GitHub under your username that reproduces the issue.
Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve.
Issues without a reproduction are likely to stale.
placeholder: Link to a Snack or a GitHub repository
validations:
required: true
- type: input
id: react-native-svg-version
attributes:
label: SVG version
description: What version of react-native-svg are you using?
placeholder: 15.3.0
validations:
required: true
- type: input
id: react-native-version
attributes:
label: React Native version
description: What version of react-native are you using?
placeholder: 0.73.1
validations:
required: true
- type: dropdown
id: platforms
attributes:
label: Platforms
description: On what platform your application is running on?
multiple: true
options:
- Android
- iOS
- macOS
- Web
validations:
required: true
- type: markdown
attributes:
value: |
## Additional information
Providing as much information as possible greatly helps us with reproducing the issues.
- type: dropdown
id: runtime
attributes:
label: JavaScript runtime
description: What runtime is your application using?
options:
- JSC
- Hermes
- V8
- type: dropdown
id: workflow
attributes:
label: Workflow
description: How is your application managed?
options:
- React Native
- Expo Go
- Expo Dev Client
- type: dropdown
id: architecture
attributes:
label: Architecture
description: What React Native architecture your application is running on? Currently, the default architecture on React Native is Paper so if you haven't changed it in your application select this option.
options:
- Paper (Old Architecture)
- Fabric (New Architecture)
- type: dropdown
id: build-type
attributes:
label: Build type
description: What is the build configuration/variant of your native app and JavaScript bundle mode?
options:
- Debug app & dev bundle
- Release app & production bundle
- Debug app & production bundle
- Release app & dev bundle
- Other (please specify)
- type: dropdown
id: emulator
attributes:
label: Device
description: How are you running your application?
options:
- iOS simulator
- Android emulator
- Real device
- type: input
id: device-model
attributes:
label: Device model
description: What device you are experiencing this problem on? Specify full device name along with the version of the operating system it's running.
placeholder: ex. Samsung Galaxy A22 (Android 12)
- type: dropdown
id: acknowledgements
attributes:
label: Acknowledgements
description: I searched for similar issues in the repository.
options:
- 'Yes'
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Question
url: https://github.com/software-mansion/react-native-svg/discussions/categories/q-a
about: Please ask and answer questions here.
- name: Feature request
url: https://github.com/software-mansion/react-native-svg/discussions/categories/ideas
about: Please submit feature requests here.
================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
# No Template
👉 Please follow one of the issue templates provided by the repo - if you are seeing this message, it means you haven't.
If you don't follow the issue template, we may immediately close it.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- Thanks for submitting a pull request! We appreciate you spending the time to work on these changes. Please follow the template so that the reviewers can easily understand what the code changes affect -->
# Summary
Explain the **motivation** for making this change: here are some points to help you:
* What issues does the pull request solve? Please tag them so that they will get automatically closed once the PR is merged
* What is the feature? (if applicable)
* How did you implement the solution?
* What areas of the library does it impact?
## Test Plan
Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes UI.
### What's required for testing (prerequisites)?
### What are the steps to reproduce (after prerequisites)?
## Compatibility
| OS | Implemented |
| ------- | :---------: |
| iOS | ✅❌ |
| MacOS | ✅❌ |
| Android | ✅❌ |
| Web | ✅❌ |
## Checklist
<!-- Check completed item, when applicable, via: [X] -->
- [ ] I have tested this on a device and a simulator
- [ ] I added documentation in `README.md`
- [ ] I updated the typed files (typescript)
- [ ] I added a test for the API in the `__tests__` folder
================================================
FILE: .github/workflows/android-build-test.yml
================================================
name: Example Android check
on:
pull_request:
paths:
- .github/workflows/android-build-test.yml
- 'android/**'
- 'src/fabric/**'
- 'package.json'
- 'apps/paper-example/android/**'
- 'apps/paper-example/package.json'
- 'apps/fabric-example/android/**'
- 'apps/fabric-example/package.json'
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
working-directory: [paper-example, fabric-example]
fail-fast: false
concurrency:
group: android-${{ matrix.working-directory }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout Git repository
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
- name: Get react-native-svg node_modules cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-node-modules-svg-
- name: Install react-native-svg node_modules
run: yarn install --frozen-lockfile
- name: Get app node_modules cache
uses: actions/cache@v4
with:
path: apps/${{ matrix.working-directory }}/node_modules
key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/yarn.lock', matrix.working-directory)) }}
restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-
- name: Install app node_modules
working-directory: apps/${{ matrix.working-directory }}
run: yarn install --frozen-lockfile
- name: Get build cache
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{matrix.working-directory}}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-${{matrix.working-directory}}-
- name: Build app
working-directory: apps/${{ matrix.working-directory }}/android
run: ./gradlew assembleDebug --build-cache --console=plain -PreactNativeArchitectures=arm64-v8a
================================================
FILE: .github/workflows/check-archs-consistency.yml
================================================
name: Test consistency between Paper & Fabric
on:
pull_request:
branches:
- main
paths:
- src/fabric/**
- android/src/paper/java/com/facebook/react/viewmanagers/**
- android/src/paper/java/com/horcrux/svg/**
jobs:
check:
runs-on: ubuntu-latest
concurrency:
group: check-archs-consistency-${{ github.ref }}
cancel-in-progress: true
steps:
- name: checkout
uses: actions/checkout@v4
- name: Use Node.js 18
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn'
- name: Install node dependencies
run: yarn
- name: Check Android Paper & Fabric generated interfaces consistency
run: yarn check-archs-consistency
================================================
FILE: .github/workflows/close-when-stale.yml
================================================
name: Check for stale issues
on:
schedule:
- cron: '37 21 * * *' # at 21:37 every day
issues:
types: [edited]
issue_comment:
types: [created, edited]
workflow_dispatch:
jobs:
main:
if: github.repository == 'software-mansion/react-native-svg'
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v4
with:
repository: 'software-mansion-labs/swmansion-bot'
ref: stable
- uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install Actions
run: yarn install
- name: Close when stale
uses: ./close-when-stale
with:
close-when-stale-label: 'Close when stale'
days-to-close: 20
================================================
FILE: .github/workflows/e2e-android.yml
================================================
name: E2E Android
on:
pull_request:
paths:
- .github/workflows/e2e-android.yml
- apps/common/example/**
- android/**
- src/**
- e2e/**
- package.json
# push:
# branches:
# - main
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 60
env:
WORKING_DIRECTORY: paper-example
API_LEVEL: 34
SYSTEM_IMAGES: system-images;android-34;google_apis;x86_64
AVD_NAME: rn-svg-avd
concurrency:
group: android-e2e-example-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
tool-cache: true
android: false
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'zulu'
cache: 'gradle'
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: 'yarn'
- name: Install AVD dependencies
# libxkbfile1 is removed by "Free Disk Space (Ubuntu)" step first. Here we install it again
# as it seems to be needed by the emulator.
run: |
sudo apt update
sudo apt-get install -y libpulse0 libgl1 libxkbfile1
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: AVD cache
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ env.API_LEVEL }}
- name: Run emulator, Metro, and E2E
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ env.API_LEVEL }}
target: default
profile: pixel_7
ram-size: '4096M'
disk-size: '5G'
disable-animations: false
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
avd-name: e2e_emulator
arch: x86_64
script: |
# Install root node dependencies
yarn install
# Install example app node dependencies
yarn --cwd apps/${{ env.WORKING_DIRECTORY }} install
# Set up ADB reverse for Metro
$ANDROID_HOME/platform-tools/adb reverse tcp:8081 tcp:8081
# Start Metro in the background
E2E=true yarn --cwd apps/${{ env.WORKING_DIRECTORY }} start &> output.log &
# Build the Android app
cd apps/${{ env.WORKING_DIRECTORY }}/android && ./gradlew assembleDebug
# Install the app APK
$ANDROID_HOME/platform-tools/adb install -r apps/${{ env.WORKING_DIRECTORY }}/android/app/build/outputs/apk/debug/app-debug.apk
# Launch the app using bash
bash -c 'until $ANDROID_HOME/platform-tools/adb shell monkey -p com.paperexample 1 | grep -q "Events injected: 1"; do sleep 1; echo "Retrying app launch..."; done'
# Run E2E tests
yarn e2e
# Kill Metro
lsof -ti:8081 | xargs -r kill
- name: Upload test report
uses: actions/upload-artifact@v4
with:
name: report
path: |
report.html
jest-html-reporters-attach/
================================================
FILE: .github/workflows/e2e-ios.yml
================================================
name: E2E iOS
on:
pull_request:
paths:
- .github/workflows/e2e-ios.yml
- apps/common/example/**
- apple/**
- src/**
- e2e/**
- package.json
# push:
# branches:
# - main
workflow_dispatch:
jobs:
test:
runs-on: macos-latest
timeout-minutes: 60
strategy:
matrix:
working-directory: [paper-example]
fail-fast: false
env:
DEVICE: iPhone 17 Pro
steps:
- name: Checkout Git repository
uses: actions/checkout@v4
- name: Use latest stable Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.4'
- name: Get react-native-svg node_modules cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-node-modules-svg-
- name: Install react-native-svg node_modules
run: yarn install --frozen-lockfile
- name: Get app node_modules cache
uses: actions/cache@v4
with:
path: apps/${{ matrix.working-directory }}/node_modules
key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/yarn.lock', matrix.working-directory)) }}
restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-
- name: Install app node_modules
working-directory: apps/${{ matrix.working-directory }}
run: yarn install --frozen-lockfile
- name: Get Pods cache
uses: actions/cache@v4
with:
path: apps/${{ matrix.working-directory }}/ios/Pods
key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/ios/Podfile.lock', matrix.working-directory)) }}
restore-keys: |
${{ runner.os }}-pods-${{ matrix.working-directory }}-
- name: Install Pods
id: install_pods
continue-on-error: true
working-directory: apps/${{ matrix.working-directory }}/ios
run: bundle install && bundle exec pod install
- if: steps.install_pods.outcome == 'failure'
id: remove_pods
name: Remove pods
working-directory: apps/${{ matrix.working-directory }}/ios
run: rm -rf build Pods Podfile.lock
- if: steps.remove_pods.outcome == 'success'
id: reinstall_pods
name: Reinstall pods
working-directory: apps/${{ matrix.working-directory }}/ios
run: bundle install && bundle exec pod install
- name: Get build artifacts cache
uses: actions/cache@v4
with:
path: ~/Library/Developer/Xcode/DerivedData
key: ${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/ios/Podfile.lock', matrix.working-directory)) }}
restore-keys: |
${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}-
- name: Start Metro server
working-directory: apps/${{ matrix.working-directory }}
run: E2E=true yarn start &> output.log &
- name: Build app
working-directory: apps/${{ matrix.working-directory }}
run: E2E=true npx react-native run-ios --simulator="${{ env.DEVICE }}" --mode Debug --verbose
- name: Run e2e Tests
run: E2E=true yarn e2e
- name: Upload test report
uses: actions/upload-artifact@v4
with:
name: report
path: |
report.html
jest-html-reporters-attach/
================================================
FILE: .github/workflows/ios-build-test.yml
================================================
name: Example iOS check
on:
pull_request:
paths:
- .github/workflows/ios-build-test.yml
- RNSVG.podspec
- apple/**
- src/fabric/**
- package.json
- apps/paper-example/package.json
- apps/paper-example/ios/**
- apps/fabric-example/package.json
- apps/fabric-example/ios/**
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: macos-latest
strategy:
matrix:
working-directory: [paper-example, fabric-example]
fail-fast: false
env:
DEVICE: iPhone 17 Pro
concurrency:
group: ios-${{ matrix.working-directory }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout Git repository
uses: actions/checkout@v4
- name: Use latest stable Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.4'
- name: Get react-native-svg node_modules cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-node-modules-svg-
- name: Install react-native-svg node_modules
run: yarn install --frozen-lockfile
- name: Get app node_modules cache
uses: actions/cache@v4
with:
path: apps/${{ matrix.working-directory }}/node_modules
key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/yarn.lock', matrix.working-directory)) }}
restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-
- name: Install app node_modules
working-directory: apps/${{ matrix.working-directory }}
run: yarn install --frozen-lockfile
- name: Get Pods cache
uses: actions/cache@v4
with:
path: apps/${{ matrix.working-directory }}/ios/Pods
key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/ios/Podfile.lock', matrix.working-directory)) }}
restore-keys: |
${{ runner.os }}-pods-${{ matrix.working-directory }}-
- name: Install Pods
id: install_pods
continue-on-error: true
working-directory: apps/${{ matrix.working-directory }}/ios
run: bundle install && bundle exec pod install
- if: steps.install_pods.outcome == 'failure'
id: remove_pods
name: Remove pods
working-directory: apps/${{ matrix.working-directory }}/ios
run: rm -rf build Pods Podfile.lock
- if: steps.remove_pods.outcome == 'success'
id: reinstall_pods
name: Reinstall pods
working-directory: apps/${{ matrix.working-directory }}/ios
run: bundle install && bundle exec pod install
- name: Get build artifacts cache
uses: actions/cache@v4
with:
path: ~/Library/Developer/Xcode/DerivedData
key: ${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/ios/Podfile.lock', matrix.working-directory)) }}
restore-keys: |
${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}-
- name: Build app
working-directory: apps/${{ matrix.working-directory }}
run: npx react-native run-ios --simulator="${{ env.DEVICE }}" --mode Debug --verbose --no-packager
================================================
FILE: .github/workflows/js-build-test.yml
================================================
name: Test JS build
concurrency:
group: js-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Get react-native-svg node_modules cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-node-modules-svg-
- name: Install react-native-svg node_modules
run: yarn install --frozen-lockfile
- name: Build
run: yarn bob
- name: Test and lint
run: yarn test
================================================
FILE: .github/workflows/macos-build-test.yml
================================================
name: Example macOS check
on:
pull_request:
paths:
- .github/workflows/macos-build-test.yml
- RNSVG.podspec
- apple/**
- src/fabric/**
- package.json
- apps/paper-macos-example/package.json
- apps/paper-macos-example/ios/**
- apps/fabric-macos-example/package.json
- apps/fabric-macos-example/ios/**
push:
branches:
- main
jobs:
build:
if: github.repository == 'software-mansion/react-native-svg'
runs-on: macos-latest
strategy:
matrix:
working-directory: [paper-macos-example, fabric-macos-example]
fail-fast: false
concurrency:
group: macos-${{ matrix.working-directory }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout Git repository
uses: actions/checkout@v4
- name: Use latest stable Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.4'
- name: Get react-native-svg node_modules cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-node-modules-svg-
- name: Install react-native-svg node_modules
run: yarn install --frozen-lockfile
- name: Get app node_modules cache
uses: actions/cache@v4
with:
path: apps/${{ matrix.working-directory }}/node_modules
key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/yarn.lock', matrix.working-directory)) }}
restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-
- name: Install app node_modules
working-directory: apps/${{ matrix.working-directory }}
run: yarn install --frozen-lockfile
- name: Get Pods cache
uses: actions/cache@v4
with:
path: apps/${{ matrix.working-directory }}/macos/Pods
key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/macos/Podfile.lock', matrix.working-directory)) }}
restore-keys: |
${{ runner.os }}-pods-${{ matrix.working-directory }}-
- name: Install Pods
id: install_pods
continue-on-error: true
working-directory: apps/${{ matrix.working-directory }}/macos
run: bundle install && bundle exec pod install
- if: steps.install_pods.outcome == 'failure'
id: remove_pods
name: Remove pods
working-directory: apps/${{ matrix.working-directory }}/macos
run: rm -rf build Pods Podfile.lock
- if: steps.remove_pods.outcome == 'success'
id: reinstall_pods
name: Reinstall pods
working-directory: apps/${{ matrix.working-directory }}/macos
run: bundle install && bundle exec pod install
- name: Get build artifacts cache
uses: actions/cache@v4
with:
path: ~/Library/Developer/Xcode/DerivedData
key: ${{ runner.os }}-macos-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/macos/Podfile.lock', matrix.working-directory)) }}
- name: Build app
working-directory: apps/${{ matrix.working-directory }}
run: yarn macos
================================================
FILE: .github/workflows/needs-more-info.yml
================================================
name: Check issue template
env:
YARN_ENABLE_HARDENED_MODE: 0
on:
issues:
types: [opened, edited]
jobs:
main:
if: ${{ github.repository == 'software-mansion/react-native-svg' && !contains(github.event.issue.labels.*.name, 'Maintainer issue') }}
runs-on: ubuntu-latest
concurrency:
group: needs-more-info-${{ github.event.issue.number }}
cancel-in-progress: true
steps:
- name: Checkout Actions
uses: actions/checkout@v4
with:
repository: 'software-mansion-labs/swmansion-bot'
ref: stable
- uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install Actions
run: yarn install
- name: Needs More Info
uses: ./needs-more-info
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
needs-more-info-label: 'Missing info'
required-sections: 'Description;Steps to reproduce;Snack or a link to a repository;SVG version;React Native version;Platforms'
needs-more-info-response: "Hey! 👋 \n\nIt looks like you've omitted a few important sections from the issue template."
check-issues-only-created-after: 2024-06-14
# This action also appends something like: "Please complete X, Y and Z sections." to the response.
# Code responsible for this can be found here: https://github.com/software-mansion-labs/swmansion-bot/blob/main/needs-more-info/MissingSectionsFormatter.js
================================================
FILE: .github/workflows/needs-repro.yml
================================================
name: Check for reproduction
on:
issues:
types: [opened, edited]
issue_comment:
types: [created, edited, deleted]
jobs:
main:
if: ${{ github.repository == 'software-mansion/react-native-svg' && !contains(github.event.issue.labels.*.name, 'Maintainer issue') }}
runs-on: ubuntu-latest
concurrency:
group: needs-repro-${{ github.event.issue.number }}
cancel-in-progress: true
steps:
- name: Checkout Actions
uses: actions/checkout@v4
with:
repository: 'software-mansion-labs/swmansion-bot'
ref: stable
- uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install Actions
run: yarn install
- name: Needs Repro
uses: ./needs-repro
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
needs-repro-label: 'Missing repro'
needs-repro-response: "Hey! 👋 \n\nThe issue doesn't seem to contain a [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example).\n\nCould you provide a [snack](https://snack.expo.dev/) or a link to a GitHub repository under your username that reproduces the problem?"
repro-provided-label: 'Repro provided'
check-issues-only-created-after: 2024-06-14
================================================
FILE: .github/workflows/windows-build-test.yml
================================================
name: Test Windows build
on:
pull_request:
paths:
- '.github/workflows/windows-build-test.yml'
- 'windows/**'
- 'src/fabric/**'
- 'package.json'
- 'apps/paper-windows-example/windows/**'
- 'apps/paper-windows-example/package.json'
- 'apps/fabric-windows-example/windows/**'
- 'apps/fabric-windows-example/package.json'
push:
branches:
- main
jobs:
build:
runs-on: windows-2022
strategy:
matrix:
working-directory: [paper-windows-example, fabric-windows-example]
concurrency:
group: windows-${{ matrix.working-directory }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '^18'
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Restore react-native-svg node_modules from cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-node-modules-svg-
- name: Install svg node_modules
run: yarn install --frozen-lockfile
- name: Restore app node_modules from cache
uses: actions/cache@v3
with:
path: apps/${{ matrix.working-directory }}/node_modules
key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/yarn.lock', matrix.working-directory)) }}
restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-
- name: Install app node_modules
working-directory: apps/${{ matrix.working-directory }}
run: yarn --frozen-lockfile
- name: Build app
working-directory: apps/${{ matrix.working-directory }}/windows
run: npx react-native run-windows --logging --no-packager --no-deploy --no-autolink
================================================
FILE: .gitignore
================================================
# OSX
#
.DS_Store
.yarn
.yarnrc.yml
# Xcode
#
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
project.xcworkspace
# Android/IJ
#
.idea
.gradle
local.properties
build/
# node.js
#
node_modules
npm-debug.log
# webstorm
#
*.iml
# unfinished documents
#
cn-doc.md
# experimental code
#
experimental/
/lib/
# VS Code
.vscode/
# E2E reports
jest-html-reporters-attach/
report.html
================================================
FILE: .husky/pre-commit
================================================
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn lint-staged
================================================
FILE: .npmignore
================================================
screenshots/
apps/
================================================
FILE: .prettierrc.js
================================================
module.exports = {
bracketSameLine: true,
printWidth: 80,
singleQuote: true,
trailingComma: 'es5',
tabWidth: 2,
arrowParens: 'always',
};
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or
advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic
address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at msand@abo.fi. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to React Native Svg
Thank you for helping out with react-native-svg!
We'd like to make contributions as pleasant as possible, so here's a small guide of how we see it. Happy to hear your
feedback about anything, so please let us know.
### Modifying react-native-svg
1. Fork this repository
2. Clone your fork
3. Make a branch for your feature or bug fix (i.e. `git checkout -b added-getfoobar`)
4. Work your magic
5. Execute `yarn link` when done.
### Testing your changes
Add test example in [tests-example](https://github.com/react-native-svg/react-native-svg/tree/main/tests-example)
concerning your change following the convention of `TestX.tsx` where `X` is your PR number.
## Tests
We use `typescript` for type checks, `eslint` with `prettier` for linting/formatting. All tests are run by github
actions for all opened pull requests.
- `yarn test`: Run all tests, except for e2e (see note below).
- `yarn lint`: Run `eslint` check.
- `yarn tsc`: Run `typescript` check.
- `yarn jest`: Run `jest` type check.
- `yarn e2e`: Run E2E tests (see section below)
### Running E2E tests:
> [!WARNING]
> Reference images in this repository are generated with [pixel ratio](https://reactnative.dev/docs/pixelratio) = `3`.
> Make sure to run tests on a device that also has pixel ratio equal 3. Otherwise tests will fail.
> In order to use device with different pixel ratio, adjust it in `e2e/generateRefereces.ts` viewport and regenerate
> references.
1. Navigate to the example application's directory and initiate the Metro server using the yarn start command.
2. To run the example application on your preferred platform (note: currently only Android and iOS are supported),
execute the command `yarn android` or `yarn ios` within the example app's directory.
3. Start the Jest server by running `yarn e2e` in the project's root directory.
4. In the example application, select the E2E tab.
5. Allow the tests to complete.
6. The test results, along with any differences (i.e. the actual rendered svg versus the reference image), can be viewed
in the `e2e/diffs` directory.
### To add new E2E test cases, proceed as follows:
1. Put an SVG file of your selection into the `e2e/cases` directory.
2. Execute `yarn generateE2eRefrences`. This action launches a headless Chrome browser via Puppeteer, capturing
snapshots of all rendered SVGs as .png files. These files will serve as a reference during testing.
3. Check the `e2e/references` directory to observe newly created .png files.
4. When you rerun the E2E tests, the new test case(s) you've added will be incorporated.
## Sending a pull request
When you're sending a pull request:
- Communication is a key. If you want fix/add something, please consider either opening a new issue or finding an
existing one so we can further discuss it.
- We prefer small pull requests focused on one change, as those are easier to test/check.
- Please make sure that all tests are passing on your local machine.
- Follow the template when opening a PR.
## Commits and versioning
All PRs are merged into the `main` branch and released with `release-it`.
Most notably prefixes you'll see:
- **fix**: Bug fixes
- **feat**: New feature implemented
- **chore**: Changes that are not affecting end user (CI config changes,
scripts, ["grunt work"](https://stackoverflow.com/a/26944812/3510245))
- **docs**: Documentation changes.
- **perf**: A code change that improves performance.
- **refactor**: A code change that neither fixes a bug nor adds a feature.
- **test**: Adding missing tests or correcting existing tests.
## Release process
We use [release-it](https://github.com/release-it/release-it) to release new versions of library from `main` branch.
## Reporting issues
You can report issues on our [bug tracker](https://github.com/react-native-community/react-native-svg/issues). Please
search for existing issues and follow the issue template when opening one.
## License
By contributing to React Native Svg, you agree that your contributions will be licensed under the **MIT** license.
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) [2015-2016] [Horcrux]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<img src="https://user-images.githubusercontent.com/39658211/200319759-006c214f-941c-496c-a3c2-7de5b7ce33dc.png" width="100%" alt="React Native SVG at Software Mansion" >
[](https://www.npmjs.com/package/react-native-svg)
[](https://www.npmjs.com/package/react-native-svg)
`react-native-svg` provides SVG support to React Native on iOS, Android, macOS, Windows, and a compatibility layer for the web.
[Check out the Example app](https://github.com/software-mansion/react-native-svg/tree/main/apps/common/example)
- [Features](#features)
- [Installation](#installation)
- [Troubleshooting](#troubleshooting)
- [Opening issues](#opening-issues)
- [Usage](#usage)
- [Known issues](#known-issues)
## Features
1. Supports most SVG elements and properties (Rect, Circle, Line, Polyline, Polygon, G ...).
2. Easy to [convert SVG code](https://svgr.now.sh/) to react-native-svg.
## Installation
### With expo
> ✅ The [Expo client app](https://expo.io/tools) comes with the native code installed!
Install the JavaScript with:
```bash
npx expo install react-native-svg
```
📚 See the [**Expo docs**](https://docs.expo.io/versions/latest/sdk/svg/) for more info or jump ahead to [Usage](#usage).
### With react-native-cli
1. Install library
from npm
```bash
npm install react-native-svg
```
from yarn
```bash
yarn add react-native-svg
```
2. Link native code
```bash
cd ios && pod install
```
## Supported react-native versions
| react-native-svg | react-native |
| ---------------- | ------------ |
| 3.2.0 | 0.29 |
| 4.2.0 | 0.32 |
| 4.3.0 | 0.33 |
| 4.4.0 | 0.38 |
| 4.5.0 | 0.40 |
| 5.1.8 | 0.44 |
| 5.2.0 | 0.45 |
| 5.3.0 | 0.46 |
| 5.4.1 | 0.47 |
| 5.5.1 | >=0.50 |
| >=6 | >=0.50 |
| >=7 | >=0.57.4 |
| >=8 | >=0.57.4 |
| >=9 | >=0.57.4 |
| >=12.3.0 | >=0.64.0 |
| >=15.0.0 | >=0.70.0 |
| >=15.8.0 | >=0.73.0 |
| >=15.13.0 | >=0.78.0 |
## Support for Fabric
[Fabric](https://reactnative.dev/architecture/fabric-renderer) is React Native's new rendering system. As of [version `13.0.0`](https://github.com/react-native-svg/react-native-svg/releases/tag/v13.0.0) of this project, Fabric is supported only for react-native 0.69.0+. Support for earlier versions is not possible due to breaking changes in configuration.
| react-native-svg | react-native |
| ---------------- | ------------ |
| >=13.0.0 | 0.69.0+ |
| >=13.6.0 | 0.70.0+ |
| >=13.10.0 | 0.72.0+ |
## Troubleshooting
### Unexpected behavior
If you have unexpected behavior, please create a clean project with the latest versions of react-native and react-native-svg
```bash
react-native init CleanProject
cd CleanProject/
yarn add react-native-svg
cd ios && pod install && cd ..
```
Make a reproduction of the problem in `App.js`
```bash
react-native run-ios
react-native run-android
```
### Adding Windows support
1. `npx react-native-windows-init --overwrite`
2. `react-native run-windows`
## Opening issues
Verify that it is still an issue with the latest version as specified in the previous step. If so, open a new issue, include the entire `App.js` file, specify what platforms you've tested, and the results of running this command:
```bash
react-native info
```
If you suspect that you've found a spec conformance bug, then you can test using your component in a react-native-web project by forking this codesandbox, to see how different browsers render the same content: <https://codesandbox.io/s/pypn6mn3y7> If any evergreen browser with significant userbase or other svg user agent renders some svg content better, or supports more of the svg and related specs, please open an issue asap.
## Usage
To check how to use the library, see [USAGE.md](https://github.com/react-native-svg/react-native-svg/blob/main/USAGE.md)
## Known issues:
1. Unable to apply focus point of RadialGradient on Android.
## React Native SVG is maintained by Software Mansion
Since 2012 [Software Mansion](https://swmansion.com) is a software agency with experience in building web and mobile apps. We are Core React Native Contributors and experts in dealing with all kinds of React Native issues. We can help you build your next dream product – [Hire us](https://swmansion.com/contact/projects?utm_source=svg&utm_medium=readme).
================================================
FILE: RNSVG.podspec
================================================
require 'json'
require_relative './scripts/rnsvg_utils'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
svgConfig = rnsvg_find_config()
fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
Pod::Spec.new do |s|
s.name = 'RNSVG'
s.version = package['version']
s.summary = package['description']
s.license = package['license']
s.homepage = package['homepage']
s.authors = 'Horcrux Chen'
s.source = { :git => 'https://github.com/react-native-community/react-native-svg.git', :tag => "v#{s.version}" }
s.source_files = 'apple/**/*.{h,m,mm}'
s.ios.exclude_files = '**/*.macos.{h,m,mm}'
s.tvos.exclude_files = '**/*.macos.{h,m,mm}'
s.visionos.exclude_files = '**/*.macos.{h,m,mm}' if s.respond_to?(:visionos)
s.osx.exclude_files = '**/*.ios.{h,m,mm}'
s.requires_arc = true
s.platforms = { :osx => "10.14", :ios => "12.4", :tvos => "12.4", :visionos => "1.0" }
s.osx.resource_bundles = {'RNSVGFilters' => ['apple/**/*.macosx.metallib']}
s.ios.resource_bundles = {'RNSVGFilters' => ['apple/**/*.iphoneos.metallib']}
s.tvos.resource_bundles = {'RNSVGFilters' => ['apple/**/*.appletvos.metallib']}
s.visionos.resource_bundles = {'RNSVGFilters' => ['apple/**/*.xros.metallib']}
s.xcconfig = {
"OTHER_CFLAGS" => "$(inherited) -DREACT_NATIVE_MINOR_VERSION=#{svgConfig[:react_native_minor_version]}",
}
if fabric_enabled
install_modules_dependencies(s)
s.subspec "common" do |ss|
ss.source_files = "common/cpp/**/*.{cpp,h}"
ss.header_dir = "rnsvg"
ss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/common/cpp\"" }
end
else
s.exclude_files = 'apple/Utils/RNSVGFabricConversions.h'
s.dependency 'React-Core'
end
end
================================================
FILE: USAGE.md
================================================
# Usage
Here's a simple example. To render output like this:

Use the following code:
```jsx
import Svg, {
Circle,
Ellipse,
G,
Text,
TSpan,
TextPath,
Path,
Polygon,
Polyline,
Line,
Rect,
Use,
Image,
Symbol,
Defs,
LinearGradient,
RadialGradient,
Stop,
ClipPath,
Pattern,
Mask,
} from 'react-native-svg';
import React from 'react';
import { View, StyleSheet } from 'react-native';
export default class SvgExample extends React.Component {
render() {
return (
<View
style={[
StyleSheet.absoluteFill,
{ alignItems: 'center', justifyContent: 'center' },
]}>
<Svg height="50%" width="50%" viewBox="0 0 100 100">
<Circle
cx="50"
cy="50"
r="45"
stroke="blue"
strokeWidth="2.5"
fill="green"
/>
<Rect
x="15"
y="15"
width="70"
height="70"
stroke="red"
strokeWidth="2"
fill="yellow"
/>
</Svg>
</View>
);
}
}
```
[Try this on Snack](https://snack.expo.io/@msand/react-native-svg-example)
# Use with content loaded from uri
```jsx
import * as React from 'react';
import { SvgUri } from 'react-native-svg';
export default () => (
<SvgUri
width="100%"
height="100%"
uri="http://thenewcode.com/assets/images/thumbnails/homer-simpson.svg"
/>
);
```
## CSS Support
If remote SVG file contains CSS in `<style>` element, use `SvgCssUri`:
```jsx
import * as React from 'react';
import { ActivityIndicator, View, StyleSheet } from 'react-native';
import { SvgCssUri } from 'react-native-svg/css';
export default function TestComponent() {
const [loading, setLoading] = React.useState(true);
const onError = (e: Error) => {
console.log(e.message);
setLoading(false);
};
const onLoad = () => {
console.log('Svg loaded!');
setLoading(false);
};
return (
<>
<SvgCssUri
width="100"
height="100"
uri="https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/ruby.svg"
onError={onError}
onLoad={onLoad}
/>
{loading && <ActivityIndicator size="large" color="#0000ff" />}
</>
);
}
```
## Error handling
Both `SvgUri` and `SvgCssUri` log errors to the console, but otherwise ignore them.
You can set property `onError` if you want to handle errors such as resource not
existing in a different way and `fallback` if you want to render another component instead in such case.
```jsx
import * as React from 'react';
import { SvgUri } from 'react-native-svg';
import { SvgFallback } from './components/SvgFallback';
export default () => {
const [uri, setUri] = React.useState(
'https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/not_existing.svg'
);
return (
<SvgUri
onError={() =>
setUri('https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/ruby.svg')
}
width="100%"
height="100%"
uri={uri}
fallback={<SvgFallback />}
/>
);
};
```
# Web configuration
## Metro bundler
No additional steps are required when using Metro bundler.
## Webpack
If you are using the Webpack bundler, the following steps are needed:
- Install `@react-native/assets-registry/registry` as a project dependency.
- Ensure that you have the proper configuration to parse flow files from `@react-native/assets-registry/registry`.
- Configure the Webpack `module -> rules` section and include an important rule for `node_modules/@react-native/assets-registry/registry`.
webpack.config.js
```ts
const babelLoaderConfiguration = {
include: [
path.resolve(
appDirectory,
// Important!
'node_modules/@react-native/assets-registry/registry',
),
],
...
};
module.exports = {
...config,
module: {
rules: [babelLoaderConfiguration],
},
};
```
For more details on the complete Webpack configuration, you can refer to this [documentation](https://necolas.github.io/react-native-web/docs/multi-platform/#compiling-and-bundling) on how to set up a `webpack.config` file for React Native Web.
# Use with svg files
Try [react-native-svg-transformer](https://github.com/kristerkari/react-native-svg-transformer) to get compile time conversion and cached transformations.
<https://github.com/kristerkari/react-native-svg-transformer#installation-and-configuration>
<https://github.com/kristerkari/react-native-svg-transformer#for-react-native-v057-or-newer--expo-sdk-v3100-or-newer>
`metro.config.js` for react-native >= 0.72
```js
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = defaultConfig.resolver;
/**
* Metro configuration
* https://facebook.github.io/metro/docs/configuration
*
* @type {import('metro-config').MetroConfig}
*/
const config = {
transformer: {
babelTransformerPath: require.resolve('react-native-svg-transformer'),
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== 'svg'),
sourceExts: [...sourceExts, 'svg'],
},
};
module.exports = mergeConfig(defaultConfig, config);
```
`metro.config.js` for react-native < 0.72
```js
const { getDefaultConfig } = require('metro-config');
module.exports = (async () => {
const {
resolver: { sourceExts, assetExts },
} = await getDefaultConfig();
return {
transformer: {
babelTransformerPath: require.resolve('react-native-svg-transformer'),
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== 'svg'),
sourceExts: [...sourceExts, 'svg'],
},
};
})();
```
Import your .svg file inside a React component:
```jsx
import Logo from './logo.svg';
```
You can then use your image as a component:
```jsx
<Logo width={120} height={40} />
```
Alternatively, you can use SvgXml with [babel-plugin-inline-import](https://github.com/credcollective/babel-plugin-inline-import/), but with transforms done at run-time.
.babelrc
```json
{
"presets": ["module:metro-react-native-babel-preset"],
"plugins": [
[
"babel-plugin-inline-import",
{
"extensions": [".svg"]
}
]
]
}
```
App.js
```jsx
import * as React from 'react';
import { SvgXml } from 'react-native-svg';
import testSvg from './test.svg';
export default () => <SvgXml width="200" height="200" xml={testSvg} />;
```
# Use with xml strings
```jsx
import * as React from 'react';
import { SvgXml } from 'react-native-svg';
const xml = `
<svg width="32" height="32" viewBox="0 0 32 32">
<path
fill-rule="evenodd"
clip-rule="evenodd"
fill="url(#gradient)"
d="M4 0C1.79086 0 0 1.79086 0 4V28C0 30.2091 1.79086 32 4 32H28C30.2091 32 32 30.2091 32 28V4C32 1.79086 30.2091 0 28 0H4ZM17 6C17 5.44772 17.4477 5 18 5H20C20.5523 5 21 5.44772 21 6V25C21 25.5523 20.5523 26 20 26H18C17.4477 26 17 25.5523 17 25V6ZM12 11C11.4477 11 11 11.4477 11 12V25C11 25.5523 11.4477 26 12 26H14C14.5523 26 15 25.5523 15 25V12C15 11.4477 14.5523 11 14 11H12ZM6 18C5.44772 18 5 18.4477 5 19V25C5 25.5523 5.44772 26 6 26H8C8.55228 26 9 25.5523 9 25V19C9 18.4477 8.55228 18 8 18H6ZM24 14C23.4477 14 23 14.4477 23 15V25C23 25.5523 23.4477 26 24 26H26C26.5523 26 27 25.5523 27 25V15C27 14.4477 26.5523 14 26 14H24Z"
/>
<defs>
<linearGradient
id="gradient"
x1="0"
y1="0"
x2="8.46631"
y2="37.3364"
gradient-units="userSpaceOnUse">
<stop offset="0" stop-color="#FEA267" />
<stop offset="1" stop-color="#E75A4C" />
</linearGradient>
</defs>
</svg>
`;
export default () => <SvgXml xml={xml} width="100%" height="100%" />;
```
## CSS support
If xml string contains CSS in `<style>` element, use `SvgCss`:
```jsx
import * as React from 'react';
import { SvgCss } from 'react-native-svg/css';
const xml = `
<svg width="32" height="32" viewBox="0 0 32 32">
<style>
.red {
fill: #ff0000;
}
</style>
<rect class="red" x="0" y="0" width="32" height="32" />
</svg>
`;
export default () => <SvgCss xml={xml} width="100%" height="100%" />;
```
# Common props:
| Name | Default | Description |
| ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| fill | '#000' | The fill prop refers to the color inside the shape. |
| fillOpacity | 1 | This prop specifies the opacity of the color or the content the current object is filled with. |
| fillRule | nonzero | The fillRule prop determines what side of a path is inside a shape, which determines how fill will paint the shape, can be `nonzero` or `evenodd` |
| stroke | 'none' | The stroke prop controls how the outline of a shape appears. |
| strokeWidth | 1 | The strokeWidth prop specifies the width of the outline on the current object. |
| strokeOpacity | 1 | The strokeOpacity prop specifies the opacity of the outline on the current object. |
| strokeLinecap | 'square' | The strokeLinecap prop specifies the shape to be used at the end of open subpaths when they are stroked. Can be either `'butt'`, `'square'` or `'round'`. |
| strokeLinejoin | 'miter' | The strokeLinejoin prop specifies the shape to be used at the corners of paths or basic shapes when they are stroked. Can be either `'miter'`, `'bevel'` or `'round'`. |
| strokeDasharray | [] | The strokeDasharray prop controls the pattern of dashes and gaps used to stroke paths. |
| strokeDashoffset | null | The strokeDashoffset prop specifies the distance into the dash pattern to start the dash. |
| x | 0 | Translate distance on x-axis. |
| y | 0 | Translate distance on y-axis. |
| rotation | 0 | Rotation degree value on the current object. |
| scale | 1 | Scale value on the current object. |
| origin | 0, 0 | Transform origin coordinates for the current object. |
| originX | 0 | Transform originX coordinates for the current object. |
| originY | 0 | Transform originY coordinates for the current object. |
# Supported elements:
## Svg
```jsx
<Svg height="100" width="100">
<Rect x="0" y="0" width="100" height="100" fill="black" />
<Circle cx="50" cy="50" r="30" fill="yellow" />
<Circle cx="40" cy="40" r="4" fill="black" />
<Circle cx="60" cy="40" r="4" fill="black" />
<Path d="M 40 60 A 10 10 0 0 0 60 60" stroke="black" />
</Svg>
```
Colors set in the Svg element are inherited by its children:
```jsx
<Svg
width="130"
height="130"
fill="blue"
stroke="red"
color="green"
viewBox="-16 -16 544 544">
<Path
d="M318.37,85.45L422.53,190.11,158.89,455,54.79,350.38ZM501.56,60.2L455.11,13.53a45.93,45.93,0,0,0-65.11,0L345.51,58.24,449.66,162.9l51.9-52.15A35.8,35.8,0,0,0,501.56,60.2ZM0.29,497.49a11.88,11.88,0,0,0,14.34,14.17l116.06-28.28L26.59,378.72Z"
strokeWidth="32"
/>
<Path d="M0,0L512,512" stroke="currentColor" strokeWidth="32" />
</Svg>
```

Code explanation:
- The fill prop defines the color inside the object.
- The stroke prop defines the color of the line drawn around the object.
- The color prop is a bit special in the sense that it won't color anything by itself, but define a kind of color variable that can be used by children elements. In this example we're defining a "green" color in the Svg element and using it in the second Path element via stroke="currentColor". The "currentColor" is what refers to that "green" value, and it can be used in other props that accept colors too, e.g. fill="currentColor".
## Rect
The <Rect> element is used to create a rectangle and variations of a rectangle shape:
```jsx
<Svg width="200" height="60">
<Rect
x="25"
y="5"
width="150"
height="50"
fill="rgb(0,0,255)"
strokeWidth="3"
stroke="rgb(0,0,0)"
/>
</Svg>
```

Code explanation:
- The width and height props of the <Rect> element define the height and the width of the rectangle.
- The x prop defines the left position of the rectangle (e.g. x="25" places the rectangle 25 px from the left margin).
- The y prop defines the top position of the rectangle (e.g. y="5" places the rectangle 5 px from the top margin).
## Circle
The <Circle> element is used to create a circle:
```jsx
<Svg height="100" width="100">
<Circle cx="50" cy="50" r="50" fill="pink" />
</Svg>
```

Code explanation:
- The cx and cy props define the x and y coordinates of the center of the circle. If cx and cy are omitted, the circle's center is set to (0,0)
- The r prop defines the radius of the circle
## Ellipse
The <Ellipse> element is used to create an ellipse.
An ellipse is closely related to a circle. The difference is that an ellipse has an x and a y radius that differs from each other, while a circle has equal x and y radius.
```jsx
<Svg height="100" width="110">
<Ellipse
cx="55"
cy="55"
rx="50"
ry="30"
stroke="purple"
strokeWidth="2"
fill="yellow"
/>
</Svg>
```

Code explanation:
- The cx prop defines the x coordinate of the center of the ellipse
- The cy prop defines the y coordinate of the center of the ellipse
- The rx prop defines the horizontal radius
- The ry prop defines the vertical radius
## Line
The <Line> element is an SVG basic shape, used to create a line connecting two points.
```jsx
<Svg height="100" width="100">
<Line x1="0" y1="0" x2="100" y2="100" stroke="red" strokeWidth="2" />
</Svg>
```

Code explanation:
- The x1 prop defines the start of the line on the x-axis.
- The y1 prop defines the start of the line on the y-axis.
- The x2 prop defines the end of the line on the x-axis.
- The y2 prop defines the end of the line on the y-axis.
## Polygon
The <Polygon> element is used to create a graphic that contains at least three sides. Polygons are made of straight lines, and the shape is "closed" (all the lines connect up).
```jsx
<Svg height="100" width="100">
<Polygon
points="40,5 70,80 25,95"
fill="lime"
stroke="purple"
strokeWidth="1"
/>
</Svg>
```

Code explanation:
- The points prop defines the x and y coordinates for each corner of the polygon
## Polyline
The <Polyline> element is used to create any shape that consists of only straight lines:
```jsx
<Svg height="100" width="100">
<Polyline
points="10,10 20,12 30,20 40,60 60,70 95,90"
fill="none"
stroke="black"
strokeWidth="3"
/>
</Svg>
```

Code explanation:
- The points prop defines the x and y coordinates for each point of the polyline
## Path
The <Path> element is used to define a path.
The following commands are available for path data:
- M = moveto
- L = lineto
- H = horizontal lineto
- V = vertical lineto
- C = curveto
- S = smooth curveto
- Q = quadratic Bézier curve
- T = smooth quadratic Bézier curveto
- A = elliptical Arc
- Z = closepath
`Note:` All of the commands above can also be expressed with lower letters. Capital letters means absolutely positioned, lower cases means relatively positioned. See [Path document of SVG](https://www.w3.org/TR/SVG/paths.html) to know parameters for each command.
```jsx
<Svg height="100" width="100">
<Path
d="M25 10 L98 65 L70 25 L16 77 L11 30 L0 4 L90 50 L50 10 L11 22 L77 95 L20 25"
fill="none"
stroke="red"
/>
</Svg>
```

## Text
The <Text> element is used to define text.
```jsx
<Svg height="60" width="200">
<Text
fill="none"
stroke="purple"
fontSize="20"
fontWeight="bold"
x="100"
y="20"
textAnchor="middle">
STROKED TEXT
</Text>
</Svg>
```

## TSpan
The <TSpan> element is used to draw multiple lines of text in SVG. Rather than having to position each line of text absolutely, the <TSpan> element makes it possible to position a line of text relatively to the previous line of text.
```jsx
<Svg height="160" width="200">
<Text y="20" dx="5 5">
<TSpan x="10">tspan line 1</TSpan>
<TSpan x="10" dy="15">
tspan line 2
</TSpan>
<TSpan x="10" dx="10" dy="15">
tspan line 3
</TSpan>
</Text>
<Text x="10" y="60" fill="red" fontSize="14">
<TSpan dy="5 10 20">12345</TSpan>
<TSpan fill="blue" dy="15" dx="0 5 5">
<TSpan>6</TSpan>
<TSpan>7</TSpan>
</TSpan>
<TSpan dx="0 10 20" dy="0 20" fontWeight="bold" fontSize="12">
89a
</TSpan>
</Text>
<Text y="140" dx="0 5 5" dy="0 -5 -5">
delta on text
</Text>
</Svg>
```

## TextPath
In addition to text drawn in a straight line, SVG also includes the ability to place text along the shape of a <Path> element. To specify that a block of text is to be rendered along the shape of a <Path>, include the given text within a <TextPath> element which includes an href attribute with a reference to a <Path> element.
```jsx
<Svg height="100" width="200">
<Defs>
<Path id="path" d={path} />
</Defs>
<G y="20">
<Text fill="blue">
<TextPath href="#path" startOffset="-10%">
We go up and down,
<TSpan fill="red" dy="5,5,5">
then up again
</TSpan>
</TextPath>
</Text>
<Path d={path} fill="none" stroke="red" strokeWidth="1" />
</G>
</Svg>
```

## G
The <G> element is a container used to group other SVG elements. Transformations applied to the g element are performed on all of its child elements, and any of its props are inherited by its child elements. It can also group multiple elements to be referenced later with the [<Use />](#use) element.
```jsx
<Svg height="100" width="200">
<G rotation="50" origin="100, 50">
<Line x1="60" y1="10" x2="140" y2="10" stroke="#060" />
<Rect x="60" y="20" height="50" width="80" stroke="#060" fill="#060" />
<Text x="100" y="75" stroke="#600" fill="#600" textAnchor="middle">
Text grouped with shapes
</Text>
</G>
</Svg>
```

## Use
The <Use> element can reuse an SVG shape from elsewhere in the SVG document, including <G> elements and <Symbol> elements. The reused shape can be defined inside the [<Defs>](#defs) element (which makes the shape invisible until used) or outside.
```jsx
<Svg height="100" width="300">
<Defs>
<G id="shape">
<G>
<Circle cx="50" cy="50" r="50" />
<Rect x="50" y="50" width="50" height="50" />
<Circle cx="50" cy="50" r="5" fill="blue" />
</G>
</G>
</Defs>
<Use href="#shape" x="20" y="0" />
<Use href="#shape" x="170" y="0" />
</Svg>
```
This example shows a <G> element defined inside a [<Defs>](#defs) element. This makes the <G> invisible unless referenced by a <Use> element.
Before the <G> element can be referenced, it must have an ID set on it via its id prop. The <Use> element references the <G> element via its `href` prop. Notice the # in front of the ID in the prop value.
The <Use> element specifies where to show the reused shapes via its x and y props. Notice that the shapes inside the <G> element are located at 0,0. That is done because their position is added to the position specified in the <Use> element.

## Symbol
The SVG <Symbol> element is used to define reusable symbols. The shapes nested inside a <Symbol> are not displayed unless referenced by a <Use> element.
```jsx
<Svg height="150" width="110">
<Symbol id="symbol" viewBox="0 0 150 110" width="100" height="50">
<Circle cx="50" cy="50" r="40" strokeWidth="8" stroke="red" fill="red" />
<Circle
cx="90"
cy="60"
r="40"
strokeWidth="8"
stroke="green"
fill="white"
/>
</Symbol>
<Use href="#symbol" x="0" y="0" />
<Use href="#symbol" x="0" y="50" width="75" height="38" />
<Use href="#symbol" x="0" y="100" width="50" height="25" />
</Svg>
```

## Defs
The <Defs> element is used to embed definitions that can be reused inside an SVG image. For instance, you can group SVG shapes together and reuse them as a single shape.
## Image
The <Image> element allows a raster image to be included in an Svg component.
```jsx
<Svg height="100" width="100">
<Defs>
<ClipPath id="clip">
<Circle cx="50%" cy="50%" r="40%" />
</ClipPath>
</Defs>
<Rect x="0" y="0" width="100%" height="100%" fill="red" />
<Rect x="5%" y="5%" width="50%" height="90%" />
<Image
x="5%"
y="5%"
width="50%"
height="90%"
preserveAspectRatio="xMidYMid slice"
opacity="0.5"
href={require('../image.jpg')}
clipPath="url(#clip)"
/>
<Text
x="50"
y="50"
textAnchor="middle"
fontWeight="bold"
fontSize="16"
fill="blue">
HOGWARTS
</Text>
</Svg>
```

## ClipPath
The <ClipPath> SVG element defines a clipping path. A clipping path is used/referenced using the clipPath property
```jsx
<Svg height="100" width="100">
<Defs>
<RadialGradient
id="grad"
cx="50%"
cy="50%"
rx="50%"
ry="50%"
fx="50%"
fy="50%"
gradientUnits="userSpaceOnUse">
<Stop offset="0%" stopColor="#ff0" stopOpacity="1" />
<Stop offset="100%" stopColor="#00f" stopOpacity="1" />
</RadialGradient>
<ClipPath id="clip">
<G scale="0.9" x="10">
<Circle cx="30" cy="30" r="20" />
<Ellipse cx="60" cy="70" rx="20" ry="10" />
<Rect x="65" y="15" width="30" height="30" />
<Polygon points="20,60 20,80 50,70" />
<Text
x="50"
y="30"
fontSize="32"
fontWeight="bold"
textAnchor="middle"
scale="1.2">
Q
</Text>
</G>
</ClipPath>
</Defs>
<Rect
x="0"
y="0"
width="100"
height="100"
fill="url(#grad)"
clipPath="url(#clip)"
/>
</Svg>
```

## LinearGradient
The <LinearGradient> element is used to define a linear gradient.
The <LinearGradient> element must be nested within a [<Defs>](#defs) tag. The [<Defs>](#defs) tag is short for definitions and contains definition of special elements (such as gradients).
Linear gradients can be defined as horizontal, vertical or angular gradients:
- Horizontal gradients are created when y1 and y2 are equal and x1 and x2 differ
- Vertical gradients are created when x1 and x2 are equal and y1 and y2 differ
- Angular gradients are created when x1 and x2 differ and y1 and y2 differ
```jsx
<Svg height="150" width="300">
<Defs>
<LinearGradient id="grad" x1="0" y1="0" x2="1" y2="0">
<Stop offset="0" stopColor="#FFD080" stopOpacity="1" />
<Stop offset="1" stopColor="red" stopOpacity="1" />
</LinearGradient>
</Defs>
<Ellipse cx="150" cy="75" rx="85" ry="55" fill="url(#grad)" />
</Svg>
```
Code explanation:
- The id prop of the <LinearGradient> tag defines a unique name for the gradient
- The x1, x2, y1,y2 props of the <LinearGradient> tag define the start and end position of the gradient
- The color range for a gradient can be composed of two or more colors. Each color is specified with a <Stop> tag. The offset prop is used to define where the gradient color begin and end
- The fill prop links the ellipse element to the gradient

_NOTICE:_
LinearGradient also supports percentage as prop:
```jsx
<LinearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="0%">
<Stop offset="0%" stopColor="rgb(255,255,0)" stopOpacity="0" />
<Stop offset="100%" stopColor="red" stopOpacity="1" />
</LinearGradient>
```
This result is same as the example before. But it's recommend to use exact number instead; it has performance advantages over using percentages.
## RadialGradient
The <RadialGradient> element is used to define a radial gradient. The <RadialGradient> element must be nested within a [<Defs>](#defs) tag. The [<Defs>](#defs) tag is short for definitions and contains definition of special elements (such as gradients).
```jsx
<Svg height="150" width="300">
<Defs>
<RadialGradient
id="grad"
cx="150"
cy="75"
rx="85"
ry="55"
fx="150"
fy="75"
gradientUnits="userSpaceOnUse">
<Stop offset="0" stopColor="#ff0" stopOpacity="1" />
<Stop offset="1" stopColor="#83a" stopOpacity="1" />
</RadialGradient>
</Defs>
<Ellipse cx="150" cy="75" rx="85" ry="55" fill="url(#grad)" />
</Svg>
```
Code explanation:
- The id prop of the <radialGradient> tag defines a unique name for the gradient
- The cx, cy and r props define the outermost circle and the fx and fy define the innermost circle
- The color range for a gradient can be composed of two or more colors. Each color is specified with a <stop> tag. The offset prop is used to define where the gradient color begin and end
- The fill prop links the ellipse element to the gradient

## Mask
In SVG, you can specify that any other graphics object or ‘G’ element can be used as an alpha mask for compositing the current object into the background.
A mask is defined with a ‘Mask’ element. A mask is used/referenced using the ‘mask’ property.
A ‘Mask’ can contain any graphical elements or container elements such as a ‘G’.
The <Mask> element must be nested within a [<Defs>](#defs) tag. The [<Defs>](#defs) tag is short for definitions and contains definition of special elements (such as gradients).
<https://www.w3.org/TR/SVG11/images/masking/mask01.svg>
```jsx
<Svg width="100%" height="100%" viewBox="0 0 800 300">
<Defs>
<LinearGradient
id="Gradient"
gradientUnits="userSpaceOnUse"
x1="0"
y1="0"
x2="800"
y2="0">
<Stop offset="0" stopColor="white" stopOpacity="0" />
<Stop offset="1" stopColor="white" stopOpacity="1" />
</LinearGradient>
<Mask
id="Mask"
maskUnits="userSpaceOnUse"
x="0"
y="0"
width="800"
height="300">
<Rect x="0" y="0" width="800" height="300" fill="url(#Gradient)" />
</Mask>
<Text
id="Text"
x="400"
y="200"
fontFamily="Verdana"
fontSize="100"
textAnchor="middle">
Masked text
</Text>
</Defs>
<Rect x="0" y="0" width="800" height="300" fill="#FF8080" />
<Use href="#Text" fill="blue" mask="url(#Mask)" />
<Use href="#Text" fill="none" stroke="black" stroke-width="2" />
</Svg>
```
Code explanation: <https://www.w3.org/TR/SVG11/masking.html#MaskElement>

v10 adds experimental support for using masks together with native elements.
If you had native elements inside any Svg root before (which was unsupported),
then your content might change appearance when upgrading,
as e.g. transforms and masks now take effect.
## Pattern
A pattern is used to fill or stroke an object using a pre-defined graphic object which can be replicated ("tiled") at fixed intervals in x and y to cover the areas to be painted. Patterns are defined using a ‘pattern’ element and then referenced by properties ‘fill’ and ‘stroke’ on a given graphics element to indicate that the given element shall be filled or stroked with the referenced pattern.
The <Pattern> element must be nested within a [<Defs>](#defs) tag. The [<Defs>](#defs) tag is short for definitions and contains definition of special elements (such as gradients).
<https://www.w3.org/TR/SVG11/images/pservers/pattern01.svg>
```jsx
<Svg width="100%" height="100%" viewBox="0 0 800 400">
<Defs>
<Pattern
id="TrianglePattern"
patternUnits="userSpaceOnUse"
x="0"
y="0"
width="100"
height="100"
viewBox="0 0 10 10">
<Path d="M 0 0 L 7 0 L 3.5 7 z" fill="red" stroke="blue" />
</Pattern>
</Defs>
<Rect fill="none" stroke="blue" x="1" y="1" width="798" height="398" />
<Ellipse
fill="url(#TrianglePattern)"
stroke="black"
strokeWidth="5"
cx="400"
cy="200"
rx="350"
ry="150"
/>
</Svg>
```
Code explanation: <https://www.w3.org/TR/SVG11/pservers.html#PatternElement>

## Marker
A marker is a symbol which is attached to one or more vertices of ‘path’, ‘line’, ‘polyline’ and ‘polygon’ elements. Typically, markers are used to make arrowheads or polymarkers. Arrowheads can be defined by attaching a marker to the start or end vertices of ‘path’, ‘line’ or ‘polyline’ elements. Polymarkers can be defined by attaching a marker to all vertices of a ‘path’, ‘line’, ‘polyline’ or ‘polygon’ element.
The graphics for a marker are defined by a ‘marker’ element. To indicate that a particular ‘marker’ element should be rendered at the vertices of a particular ‘path’, ‘line’, ‘polyline’ or ‘polygon’ element, set one or more marker properties (‘marker’, ‘marker-start’, ‘marker-mid’ or ‘marker-end’) to reference the given ‘marker’ element.
<https://www.w3.org/TR/SVG11/images/painting/marker.svg>
```jsx
<Svg width="400" height="200" viewBox="0 0 4000 2000">
<Defs>
<Marker
id="Triangle"
viewBox="0 0 10 10"
refX="0"
refY="5"
markerUnits="strokeWidth"
markerWidth="4"
markerHeight="3"
orient="auto">
<Path d="M 0 0 L 10 5 L 0 10 z" />
</Marker>
</Defs>
<Rect
x="10"
y="10"
width="3980"
height="1980"
fill="none"
stroke="blue"
strokeWidth="10"
/>
<Path
d="M 1000 750 L 2000 750 L 2500 1250"
fill="none"
stroke="black"
strokeWidth="100"
markerEnd="url(#Triangle)"
/>
</Svg>
```
Code explanation: <https://www.w3.org/TR/SVG11/painting.html#Markers>

```jsx
import React from 'react';
import { StyleSheet, View } from 'react-native';
import { SvgXml } from 'react-native-svg';
const markerRendering = `<svg xmlns="http://www.w3.org/2000/svg"
width="275" height="200" viewBox="0 0 100 30">
<defs>
<marker id="m1" viewBox="0 0 10 10" refX="5" refY="5"
markerWidth="8" markerHeight="8">
<circle cx="5" cy="5" r="5" fill="green"/>
</marker>
<marker id="m2" viewBox="0 0 10 10" refX="5" refY="5"
markerWidth="6.5" markerHeight="6.5">
<circle cx="5" cy="5" r="5" fill="skyblue" opacity="0.9"/>
</marker>
<marker id="m3" viewBox="0 0 10 10" refX="5" refY="5"
markerWidth="5" markerHeight="5">
<circle cx="5" cy="5" r="5" fill="maroon" opacity="0.85"/>
</marker>
</defs>
<path d="M10,10 h10 v10 z m20,0 h10 v10 z m20,0 h10 v10 z"
fill="none" stroke="black"
marker-start="url(#m1)"
marker-mid="url(#m2)"
marker-end="url(#m3)"
/>
</svg>`;
export default class App extends React.Component {
render() {
return (
<View style={styles.container}>
<SvgXml xml={markerRendering} />
</View>
);
}
}
const styles = StyleSheet.create({
container: {
backgroundColor: 'white',
justifyContent: 'center',
alignItems: 'center',
flex: 1,
},
});
```

```jsx
import React from 'react';
import { StyleSheet, View } from 'react-native';
import { SvgXml } from 'react-native-svg';
const markerRendering = `<svg xmlns="http://www.w3.org/2000/svg"
width="275" height="200" viewBox="0 0 275 200">
<defs>
<marker id="Triangle" viewBox="0 0 10 10" refX="1" refY="5"
markerUnits="strokeWidth" markerWidth="4" markerHeight="3"
orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" fill="context-stroke" />
</marker>
</defs>
<g fill="none" stroke-width="10" marker-end="url(#Triangle)">
<path stroke="crimson" d="M 100,75 C 125,50 150,50 175,75" marker-end="url(#Triangle)"/>
<path stroke="olivedrab" d="M 175,125 C 150,150 125,150 100,125" marker-end="url(#Triangle)"/>
</g>
</svg>`;
export default class App extends React.Component {
render() {
return (
<View style={styles.container}>
<SvgXml xml={markerRendering} />
</View>
);
}
}
const styles = StyleSheet.create({
container: {
backgroundColor: 'white',
justifyContent: 'center',
alignItems: 'center',
flex: 1,
},
});
```

Code explanation: <https://www.w3.org/TR/SVG2/painting.html#VertexMarkerProperties>
## ForeignObject
SVG is designed to be compatible with other XML languages for describing and rendering other types of content. The ‘foreignObject’ element allows for inclusion of elements in a non-SVG namespace which is rendered within a region of the SVG graphic using other user agent processes. The included foreign graphical content is subject to SVG transformations, filters, clipping, masking and compositing.
One goal for SVG is to provide a mechanism by which other XML language processors can render into an area within an SVG drawing, with those renderings subject to the various transformations and compositing parameters that are currently active at a given point within the SVG content tree. One particular example of this is to provide a frame for XML content styled with CSS or XSL so that dynamically reflowing text (subject to SVG transformations and compositing) could be inserted into the middle of some SVG content.
https://svgwg.org/svg2-draft/embedded.html#ForeignObjectElement
https://www.w3.org/TR/SVG11/extend.html#ForeignObjectElement
```jsx
import React, { Component } from 'react';
import { Text, View, Image } from 'react-native';
import {
Svg,
Defs,
LinearGradient,
Stop,
Mask,
Rect,
G,
Circle,
ForeignObject,
} from 'react-native-svg';
export default class App extends Component {
render() {
return (
<View style={{ flex: 1, justifyContent: 'center' }}>
<Svg height="50%">
<Defs>
<LinearGradient
id="Gradient"
gradientUnits="userSpaceOnUse"
x1="0"
y1="0"
x2="800"
y2="0">
<Stop offset="0" stopColor="white" stopOpacity="0.2" />
<Stop offset="1" stopColor="white" stopOpacity="1" />
</LinearGradient>
<Mask
id="Mask"
maskUnits="userSpaceOnUse"
x="0"
y="0"
width="800"
height="300">
<Rect
x="0"
y="0"
width="800"
height="300"
fill="url(#Gradient)"
/>
</Mask>
</Defs>
<G mask="url(#Mask)">
<Circle cx={50} cy={70} r={65} />
<ForeignObject x={50} y={0} width={100} height={100}>
<View style={{ width: 200, height: 400, transform: [] }}>
<Image
style={{ width: 200, height: 200 }}
source={{
uri: 'https://picsum.photos/200/200',
}}
/>
</View>
</ForeignObject>
<ForeignObject x={55} y={5} width={100} height={100}>
<View style={{ width: 200, height: 400, transform: [] }}>
<Text style={{ color: 'blue' }}>Testing</Text>
<Text style={{ color: 'green' }}>Testing2</Text>
</View>
</ForeignObject>
</G>
</Svg>
</View>
);
}
}
```
## Touch Events
Touch events are supported in react-native-svg. These include:
- `disabled`
- `onPress`
- `onPressIn`
- `onPressOut`
- `onLongPress`
- `delayPressIn`
- `delayPressOut`
- `delayLongPress`
You can use these events to provide interactivity to your react-native-svg components.
```jsx
<Circle
cx="50%"
cy="50%"
r="38%"
fill="red"
onPress={() => alert('Press on Circle')}
/>
```

For more examples of touch in action, checkout the [TouchEvents.js examples](https://github.com/magicismight/react-native-svg-example/blob/master/examples/TouchEvents.js).
# Serialize
```jsx
import * as React from 'react';
import { Platform, StyleSheet, TouchableOpacity } from 'react-native';
import { Svg, Rect } from 'react-native-svg';
import ReactDOMServer from 'react-dom/server';
const isWeb = Platform.OS === 'web';
const childToWeb = (child) => {
const { type, props } = child;
const name = type && type.displayName;
const webName = name && name[0].toLowerCase() + name.slice(1);
const Tag = webName ? webName : type;
return <Tag {...props}>{toWeb(props.children)}</Tag>;
};
const toWeb = (children) => React.Children.map(children, childToWeb);
export default class App extends React.Component {
renderSvg() {
return (
<Svg height="100%" width="100%" style={{ backgroundColor: '#33AAFF' }}>
<Rect
x="50"
y="50"
width="50"
height="50"
fill="#3399ff"
strokeWidth="3"
stroke="rgb(0,0,0)"
/>
</Svg>
);
}
serialize = () => {
const element = this.renderSvg();
const webJsx = isWeb ? element : toWeb(element);
const svgString = ReactDOMServer.renderToStaticMarkup(webJsx);
console.log(svgString);
};
render() {
return (
<TouchableOpacity style={styles.container} onPress={this.serialize}>
{this.renderSvg()}
</TouchableOpacity>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
backgroundColor: '#ecf0f1',
padding: 8,
},
});
```
## Filters
Filter effects are a way of processing an element’s rendering before it is displayed in the document. Typically, rendering an element via CSS or SVG can conceptually be described as if the element, including its children, are drawn into a buffer (such as a raster image) and then that buffer is composited into the elements parent. Filters apply an effect before the compositing stage. Examples of such effects are blurring, changing color intensity and warping the image.
> [!NOTE]
> Not all filters have been implemented on native platforms yet. However, they do work on the Web, so we added them. Some filters will display a warning indicating they are not currently supported.
The following filters have been implemented:
- FeBlend
- FeComposite
- FeColorMatrix
- FeDropShadow
- FeFlood
- FeGaussianBlur
- FeMerge
- FeOffset
Not supported yet:
- FeComponentTransfer
- FeConvolveMatrix
- FeDiffuseLighting
- FeDisplacementMap
- FeFuncA
- FeFuncB
- FeFuncG
- FeFuncR
- FeImage
- FeMorphology
- FePointLight
- FeSpecularLighting
- FeSpotLight
- FeTile
- FeTurbulence
Exmaple use of filters:
```jsx
import React from 'react';
import { FeColorMatrix, Filter, Rect, Svg } from 'react-native-svg';
export default () => {
return (
<Svg height="300" width="300">
<Filter id="myFilter">
<FeColorMatrix type="saturate" values="0.2" />
</Filter>
<Rect
x="0"
y="0"
width="300"
height="300"
fill="red"
filter="url(#myFilter)"
/>
</Svg>
);
};
```

More info: <https://www.w3.org/TR/SVG11/filters.html>
## FilterImage
`FilterImage` is a new component that is not strictly related to SVG. Its behavior should be the same as a regular `Image` component from React Native with one exception - the additional prop `filters`, which accepts an array of filters to apply to the image.
Filters can be applied in two ways
- through `filters` prop
- or with CSS API through style prop
https://developer.mozilla.org/en-US/docs/Web/CSS/filter
### Examples
#### CSS filter API
```tsx
import React from 'react';
import { StyleSheet } from 'react-native';
import { FilterImage } from 'react-native-svg/filter-image';
const myImage = require('./myImage.jpg');
export default () => {
return <FilterImage style={styles.image} source={myImage} />;
};
const styles = StyleSheet.create({
image: {
width: 200,
height: 200,
filter: 'saturate(3) grayscale(100%)',
},
});
```
#### `filters` prop
```tsx
import React from 'react';
import { StyleSheet } from 'react-native';
import { FilterImage } from 'react-native-svg/filter-image';
const myImage = require('./myImage.jpg');
export default () => {
return (
<FilterImage
style={styles.image}
source={myImage}
filters={[
{ name: 'feColorMatrix', type: 'saturate', values: 0.2 },
{
name: 'feColorMatrix',
type: 'matrix',
values: [
0.2, 0.2, 0.2, 0, 0, 0.2, 0.2, 0.2, 0, 0, 0.2, 0.2, 0.2, 0, 0, 0, 0,
0, 1, 0,
],
},
]}
/>
);
};
const styles = StyleSheet.create({
image: {
width: 200,
height: 200,
},
});
```

================================================
FILE: __tests__/__snapshots__/css.test.tsx.snap
================================================
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`inlines styles 1`] = `
Object {
"Tag": [Function],
"children": Array [
<Defs>
<missingTag
type="text/css"
>
/* tag selector */
rect {
stroke: blue;
fill: yellow
}
/* class selector */
.redbox { fill: red; }
/* multiple selectors */
g .class-1, g .class-2 {
stroke-width: 16
}
/* two classes */
.class-2.transparent {
fill-opacity: 0.3;
}
/* Commented out
rect {
fill: black;
}
*/
</missingTag>
</Defs>,
<G>
<Rect
class="redbox class-1"
height={200}
style={
Object {
"fill": "red",
"stroke": "blue",
"strokeWidth": "16",
}
}
width={1000}
x={100}
y={0}
/>
</G>,
<G>
<Rect
class="redbox class-2 transparent"
height={200}
style={
Object {
"fill": "red",
"fillOpacity": "0.3",
"stroke": "blue",
"strokeWidth": "16",
}
}
width={750}
x={100}
y={350}
/>
</G>,
],
"parent": null,
"props": Object {
"height": "100%",
"version": 1.1,
"viewBox": "0 0 1000 500",
"width": "100%",
"xmlns": "http://www.w3.org/2000/svg",
},
"tag": "svg",
}
`;
exports[`supports CSS in style element 1`] = `
<RNSVGSvgView
align="xMidYMid"
bbHeight="100%"
bbWidth="100%"
focusable={false}
height="100%"
meetOrSlice={0}
minX={0}
minY={0}
style={
Array [
Object {
"backgroundColor": "transparent",
"borderWidth": 0,
},
Object {
"flex": 0,
"height": "100%",
"width": "100%",
},
]
}
vbHeight={500}
vbWidth={1000}
version={1.1}
width="100%"
xml="<?xml version=\\"1.0\\" standalone=\\"no\\"?>
<!DOCTYPE svg PUBLIC \\"-//W3C//DTD SVG 1.1//EN\\"
\\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\\">
<svg xmlns=\\"http://www.w3.org/2000/svg\\" version=\\"1.1\\"
width=\\"100%\\" height=\\"100%\\" viewBox=\\"0 0 1000 500\\">
<defs>
<style type=\\"text/css\\">
/* tag selector */
rect {
stroke: blue;
fill: yellow
}
/* class selector */
.redbox { fill: red; }
/* multiple selectors */
g .class-1, g .class-2 {
stroke-width: 16
}
/* two classes */
.class-2.transparent {
fill-opacity: 0.3;
}
/* Commented out
rect {
fill: black;
}
*/
</style>
</defs>
<g>
<rect class=\\"redbox class-1\\" x=\\"100\\" y=\\"0\\" width=\\"1000\\" height=\\"200\\" />
</g>
<g>
<rect class=\\"redbox class-2 transparent\\" x=\\"100\\" y=\\"350\\" width=\\"750\\" height=\\"200\\" />
</g>
</svg>"
xmlns="http://www.w3.org/2000/svg"
>
<RNSVGGroup>
<RNSVGDefs />
<RNSVGGroup>
<RNSVGRect
fill={
Object {
"payload": 4294901760,
"type": 0,
}
}
height="200"
propList={
Array [
"fill",
"stroke",
"strokeWidth",
]
}
stroke={
Object {
"payload": 4278190335,
"type": 0,
}
}
strokeWidth="16"
width="1000"
x="100"
y="0"
/>
</RNSVGGroup>
<RNSVGGroup>
<RNSVGRect
fill={
Object {
"payload": 4294901760,
"type": 0,
}
}
fillOpacity={0.3}
height="200"
propList={
Array [
"fill",
"fillOpacity",
"stroke",
"strokeWidth",
]
}
stroke={
Object {
"payload": 4278190335,
"type": 0,
}
}
strokeWidth="16"
width="750"
x="100"
y="350"
/>
</RNSVGGroup>
</RNSVGGroup>
</RNSVGSvgView>
`;
================================================
FILE: __tests__/css.test.tsx
================================================
import * as React from 'react';
import renderer from 'react-test-renderer';
import { parse } from '../src/ReactNativeSVG';
import { SvgCss, inlineStyles } from '../css';
const xml = `<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
width="100%" height="100%" viewBox="0 0 1000 500">
<defs>
<style type="text/css">
/* tag selector */
rect {
stroke: blue;
fill: yellow
}
/* class selector */
.redbox { fill: red; }
/* multiple selectors */
g .class-1, g .class-2 {
stroke-width: 16
}
/* two classes */
.class-2.transparent {
fill-opacity: 0.3;
}
/* Commented out
rect {
fill: black;
}
*/
</style>
</defs>
<g>
<rect class="redbox class-1" x="100" y="0" width="1000" height="200" />
</g>
<g>
<rect class="redbox class-2 transparent" x="100" y="350" width="750" height="200" />
</g>
</svg>`;
test('inlines styles', () => {
const ast = parse(xml, inlineStyles);
expect(ast).toMatchSnapshot();
});
test('supports CSS in style element', () => {
const tree = renderer.create(<SvgCss xml={xml} />).toJSON();
expect(tree).toMatchSnapshot();
});
================================================
FILE: __tests__/e2e/GeneralSvgRenderingTest.spec.tsx
================================================
import { SvgFromXml } from 'react-native-svg';
import * as fs from 'node:fs';
import { compareImages, sendToDeviceAndReceive } from '../../e2e/helpers';
import { HandshakeMessageData, RenderResponse } from '../../e2e/types';
import path from 'path';
import {
addAttach as attachImageToReport,
addMsg as addMessageToReport,
} from 'jest-html-reporters/helper';
import { PNG } from 'pngjs';
import failedCases from '../../e2e/failedCases.json';
import { verifyComparisons } from '../../e2e/matchTestCases';
import { height, targetPixelRatio, width } from '../../e2e/env';
const testCases = fs.readdirSync(path.resolve('e2e', 'cases'));
testCases.forEach((testCase) => {
jest.setTimeout(90_000);
test(`Web browser rendered SVG should have less than 0.05% differences between device rendered SVG (${testCase})`, async () => {
await addMessageToReport({
message: JSON.stringify({
os: global.os,
arch: global.arch,
}),
});
const testCaseSvg = path.resolve('e2e', 'cases', testCase);
const svgXml = fs.readFileSync(testCaseSvg).toString('utf-8');
const response = await sendToDeviceAndReceive<RenderResponse>({
type: 'renderRequest',
data: <SvgFromXml xml={svgXml} />,
height,
width,
});
const referenceFilePath = path.resolve(
'e2e',
global.os === 'android' ? 'references/android' : 'references/ios',
testCase.replace('.svg', '.png')
);
const renderedFilePath = path.resolve(
'e2e',
'rendered',
`${testCase.replace('.svg', '')}-${global.os}-${global.arch}-rendered.png`
);
const diffFilePath = path.resolve(
'e2e',
'diffs',
`${testCase.replace('.svg', '')}-${global.os}-${global.arch}-diff.png`
);
const referenceFileBuffer = fs.readFileSync(referenceFilePath);
const renderedDataBuffer = Buffer.from(response.data, 'base64');
// We use await everywhere instead Promise.all as we need to maintain order for ease of inspecting tests
// Adding reference & rendered before comparison in case compareImages fails, so we can see why it failed
await attachImageToReport({
attach: fs.readFileSync(referenceFilePath),
description: 'Reference image',
bufferFormat: 'png',
});
await attachImageToReport({
attach: PNG.sync.write(PNG.sync.read(renderedDataBuffer)),
description: 'Actual rendered image',
bufferFormat: 'png',
});
// Compare reference file (from /e2e/references) with SVG rendered on actual device.
// Reference files can be generated off of /e2e/cases with `yarn generateE2eReferences`.
const amountOfDifferentPixels = compareImages(
referenceFileBuffer,
renderedDataBuffer,
{
width,
height,
pixelRatio: targetPixelRatio,
diffFilePath,
renderedFilePath,
}
);
await attachImageToReport({
attach: fs.readFileSync(diffFilePath),
description: 'Differences',
bufferFormat: 'png',
});
// Check if there is more than 0.5% different pixels in whole snapshot
verifyComparisons(
amountOfDifferentPixels,
failedCases,
global as unknown as HandshakeMessageData,
testCase
);
});
});
================================================
FILE: android/build.gradle
================================================
buildscript {
// The Android Gradle plugin is only required when opening the android folder stand-alone.
// This avoids unnecessary downloads and potential conflicts when the library is included as a
// module dependency in an application project.
if (project == rootProject) {
repositories {
mavenCentral()
google()
}
dependencies {
classpath("com.android.tools.build:gradle:7.4.2")
classpath "com.diffplug.spotless:spotless-plugin-gradle:6.17.0"
}
}
}
def isNewArchitectureEnabled() {
// To opt-in for the New Architecture, you can either:
// - Set `newArchEnabled` to true inside the `gradle.properties` file
// - Invoke gradle with `-newArchEnabled=true`
// - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
}
if (isNewArchitectureEnabled()) {
apply plugin: "com.facebook.react"
}
if (project == rootProject) {
apply from: 'spotless.gradle'
}
apply plugin: 'com.android.library'
def safeExtGet(prop, fallback) {
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}
def resolveReactNativeDirectory() {
def reactNativeLocation = safeExtGet("REACT_NATIVE_NODE_MODULES_DIR", null)
if (reactNativeLocation != null) {
return file(reactNativeLocation)
}
// Fallback to node resolver for custom directory structures like monorepos.
def reactNativePackage = file(
providers.exec {
workingDir(rootDir)
commandLine("node", "--print", "require.resolve('react-native/package.json')")
}.standardOutput.asText.get().trim()
)
if (reactNativePackage.exists()) {
return reactNativePackage.parentFile
}
throw new GradleException("[react-native-svg] Unable to resolve react-native location in node_modules. Your app should define `REACT_NATIVE_NODE_MODULES_DIR` extension property in `app/build.gradle` with a path to react-native in node_modules.")
}
def reactNativeRootDir = resolveReactNativeDirectory()
def reactNativeProperties = new Properties()
file("$reactNativeRootDir/ReactAndroid/gradle.properties").withInputStream { reactNativeProperties.load(it) }
def REACT_NATIVE_VERSION = reactNativeProperties.getProperty("VERSION_NAME")
def REACT_NATIVE_MINOR_VERSION = REACT_NATIVE_VERSION.startsWith("0.0.0-") ? 1000 : REACT_NATIVE_VERSION.split("\\.")[1].toInteger()
def getFrescoVersion() {
def reactNativeRootDir = resolveReactNativeDirectory()
def frescoVersion = null
file("$reactNativeRootDir/gradle/libs.versions.toml").withInputStream { stream ->
stream.eachLine { line ->
if (line.contains("fresco") && !line.contains("ref")) {
def keyValue = line.split("=")
if (keyValue.size() == 2) {
frescoVersion = keyValue[1].trim().replaceAll(/["']/, "")
}
}
}
}
if (!frescoVersion) {
return "3.2.0"
}
return frescoVersion
}
def FRESCO_VERSION = getFrescoVersion()
android {
compileSdkVersion safeExtGet('compileSdkVersion', 28)
namespace "com.horcrux.svg"
def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION
if (agpVersion.tokenize('.')[0].toInteger() >= 8) {
buildFeatures {
buildConfig = true
}
}
// Used to override the NDK path/version on internal CI or by allowing
// users to customize the NDK path/version from their root project (e.g. for M1 support)
if (rootProject.hasProperty("ndkPath")) {
ndkPath rootProject.ext.ndkPath
}
if (rootProject.hasProperty("ndkVersion")) {
ndkVersion rootProject.ext.ndkVersion
}
defaultConfig {
minSdkVersion safeExtGet('minSdkVersion', 16)
//noinspection OldTargetApi
targetSdkVersion safeExtGet('targetSdkVersion', 28)
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
consumerProguardFiles 'proguard-rules.pro'
}
lintOptions {
abortOnError false
}
sourceSets.main {
java {
if (!isNewArchitectureEnabled()) {
srcDirs += [
"src/paper/java",
]
}
}
}
}
repositories {
mavenCentral()
mavenLocal()
google()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
dependencies {
implementation 'com.facebook.react:react-native:+'
implementation("com.facebook.fresco:fresco:${FRESCO_VERSION}") {
exclude group: 'com.facebook.soloader'
}
implementation("com.facebook.fresco:imagepipeline-okhttp3:${FRESCO_VERSION}") {
exclude group: 'com.facebook.soloader'
}
implementation("com.facebook.fresco:middleware:${FRESCO_VERSION}")
}
================================================
FILE: android/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: android/gradlew
================================================
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: android/gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: android/proguard-rules.pro
================================================
-keep public class com.horcrux.svg.** {*;}
================================================
FILE: android/spotless.gradle
================================================
// formatter & linter configuration for java
apply plugin: 'com.diffplug.spotless'
spotless {
java {
target 'src/main/java/**/*.java'
googleJavaFormat()
}
}
================================================
FILE: android/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android"/>
================================================
FILE: android/src/main/java/com/horcrux/svg/Brush.java
================================================
/*
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.horcrux.svg;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.RadialGradient;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
import com.facebook.common.logging.FLog;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.common.ReactConstants;
class Brush {
private final BrushType mType;
private final SVGLength[] mPoints;
private ReadableArray mColors;
private final boolean mUseObjectBoundingBox;
// TODO implement pattern units
@SuppressWarnings({"unused"})
private boolean mUseContentObjectBoundingBoxUnits;
private Matrix mMatrix;
private Rect mUserSpaceBoundingBox;
private PatternView mPattern;
Brush(BrushType type, SVGLength[] points, BrushUnits units) {
mType = type;
mPoints = points;
mUseObjectBoundingBox = units == BrushUnits.OBJECT_BOUNDING_BOX;
}
void setContentUnits(BrushUnits units) {
mUseContentObjectBoundingBoxUnits = units == BrushUnits.OBJECT_BOUNDING_BOX;
}
void setPattern(PatternView pattern) {
mPattern = pattern;
}
enum BrushType {
LINEAR_GRADIENT,
RADIAL_GRADIENT,
PATTERN
}
enum BrushUnits {
OBJECT_BOUNDING_BOX,
USER_SPACE_ON_USE
}
private static void parseGradientStops(
ReadableArray value, int stopsCount, float[] stops, int[] stopsColors, float opacity) {
for (int i = 0; i < stopsCount; i++) {
int stopIndex = i * 2;
stops[i] = (float) value.getDouble(stopIndex);
int color = value.getInt(stopIndex + 1);
int alpha = color >>> 24;
int combined = Math.round((float) alpha * opacity);
stopsColors[i] = combined << 24 | (color & 0x00ffffff);
}
}
void setUserSpaceBoundingBox(Rect userSpaceBoundingBox) {
mUserSpaceBoundingBox = userSpaceBoundingBox;
}
void setGradientColors(ReadableArray colors) {
mColors = colors;
}
void setGradientTransform(Matrix matrix) {
mMatrix = matrix;
}
private RectF getPaintRect(RectF pathBoundingBox) {
RectF rect = mUseObjectBoundingBox ? pathBoundingBox : new RectF(mUserSpaceBoundingBox);
float width = rect.width();
float height = rect.height();
float x = 0f;
float y = 0f;
if (mUseObjectBoundingBox) {
x = rect.left;
y = rect.top;
}
return new RectF(x, y, x + width, y + height);
}
private double getVal(SVGLength length, double relative, float scale, float textSize) {
return PropHelper.fromRelative(
length,
relative,
0,
mUseObjectBoundingBox && length.unit == SVGLength.UnitType.NUMBER ? relative : scale,
textSize);
}
void setupPaint(Paint paint, RectF pathBoundingBox, float scale, float opacity) {
RectF rect = getPaintRect(pathBoundingBox);
float width = rect.width();
float height = rect.height();
float offsetX = rect.left;
float offsetY = rect.top;
float textSize = paint.getTextSize();
if (mType == BrushType.PATTERN) {
double x = getVal(mPoints[0], width, scale, textSize);
double y = getVal(mPoints[1], height, scale, textSize);
double w = getVal(mPoints[2], width, scale, textSize);
double h = getVal(mPoints[3], height, scale, textSize);
if (!(w > 1 && h > 1)) {
return;
}
Bitmap bitmap = Bitmap.createBitmap((int) w, (int) h, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
RectF vbRect = mPattern.getViewBox();
if (vbRect != null && vbRect.width() > 0 && vbRect.height() > 0) {
RectF eRect = new RectF((float) x, (float) y, (float) w, (float) h);
Matrix mViewBoxMatrix =
ViewBox.getTransform(vbRect, eRect, mPattern.mAlign, mPattern.mMeetOrSlice);
canvas.concat(mViewBoxMatrix);
}
if (mUseContentObjectBoundingBoxUnits) {
canvas.scale(width / scale, height / scale);
}
mPattern.draw(canvas, new Paint(), opacity);
Matrix patternMatrix = new Matrix();
if (mMatrix != null) {
patternMatrix.preConcat(mMatrix);
}
BitmapShader bitmapShader =
new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
bitmapShader.setLocalMatrix(patternMatrix);
paint.setShader(bitmapShader);
return;
}
int size = mColors.size();
if (size == 0) {
FLog.w(ReactConstants.TAG, "Gradient contains no stops");
return;
}
int stopsCount = size / 2;
int[] stopsColors = new int[stopsCount];
float[] stops = new float[stopsCount];
parseGradientStops(mColors, stopsCount, stops, stopsColors, opacity);
if (stops.length == 1) {
// Gradient with only one stop will make LinearGradient/RadialGradient
// throw. It may happen when source SVG contains only one stop or
// two stops at the same spot (see lib/extract/extractGradient.js).
// Although it's mistake SVGs like this can be produced by vector
// editors or other tools, so let's handle that gracefully.
stopsColors = new int[] {stopsColors[0], stopsColors[0]};
stops = new float[] {stops[0], stops[0]};
FLog.w(ReactConstants.TAG, "Gradient contains only one stop");
}
if (mType == BrushType.LINEAR_GRADIENT) {
double x1 = getVal(mPoints[0], width, scale, textSize) + offsetX;
double y1 = getVal(mPoints[1], height, scale, textSize) + offsetY;
double x2 = getVal(mPoints[2], width, scale, textSize) + offsetX;
double y2 = getVal(mPoints[3], height, scale, textSize) + offsetY;
Shader linearGradient =
new LinearGradient(
(float) x1,
(float) y1,
(float) x2,
(float) y2,
stopsColors,
stops,
Shader.TileMode.CLAMP);
if (mMatrix != null) {
Matrix m = new Matrix();
m.preConcat(mMatrix);
linearGradient.setLocalMatrix(m);
}
paint.setShader(linearGradient);
} else if (mType == BrushType.RADIAL_GRADIENT) {
double rx = getVal(mPoints[2], width, scale, textSize);
double ry = getVal(mPoints[3], height, scale, textSize);
if (rx <= 0 || ry <= 0) {
// Gradient with radius = 0 should be rendered as solid color of the last stop
rx = width;
ry = height;
stops = new float[] {stops[0], stops[stops.length - 1]};
stopsColors =
new int[] {stopsColors[stopsColors.length - 1], stopsColors[stopsColors.length - 1]};
}
double ratio = ry / rx;
double cx = getVal(mPoints[4], width, scale, textSize) + offsetX;
double cy = getVal(mPoints[5], height / ratio, scale, textSize) + offsetY / ratio;
// TODO: support focus point.
// double fx = PropHelper.fromRelative(mPoints[0], width, offsetX, scale);
// double fy = PropHelper.fromRelative(mPoints[1], height, offsetY, scale) / (ry / rx);
Shader radialGradient =
new RadialGradient(
(float) cx, (float) cy, (float) rx, stopsColors, stops, Shader.TileMode.CLAMP);
Matrix radialMatrix = new Matrix();
radialMatrix.preScale(1f, (float) ratio);
if (mMatrix != null) {
radialMatrix.preConcat(mMatrix);
}
radialGradient.setLocalMatrix(radialMatrix);
paint.setShader(radialGradient);
}
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/CircleView.java
================================================
/*
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.ReactContext;
import java.util.ArrayList;
@SuppressLint("ViewConstructor")
class CircleView extends RenderableView {
private SVGLength mCx;
private SVGLength mCy;
private SVGLength mR;
public CircleView(ReactContext reactContext) {
super(reactContext);
}
public void setCx(Dynamic cx) {
mCx = SVGLength.from(cx);
invalidate();
}
public void setCy(Dynamic cy) {
mCy = SVGLength.from(cy);
invalidate();
}
public void setR(Dynamic r) {
mR = SVGLength.from(r);
invalidate();
}
@Override
Path getPath(Canvas canvas, Paint paint) {
Path path = new Path();
double cx = relativeOnWidth(mCx);
double cy = relativeOnHeight(mCy);
double r = relativeOnOther(mR);
path.addCircle((float) cx, (float) cy, (float) r, Path.Direction.CW);
elements = new ArrayList<>();
elements.add(
new PathElement(
ElementType.kCGPathElementMoveToPoint, new Point[] {new Point(cx, cy - r)}));
elements.add(
new PathElement(
ElementType.kCGPathElementAddLineToPoint,
new Point[] {new Point(cx, cy - r), new Point(cx + r, cy)}));
elements.add(
new PathElement(
ElementType.kCGPathElementAddLineToPoint,
new Point[] {new Point(cx + r, cy), new Point(cx, cy + r)}));
elements.add(
new PathElement(
ElementType.kCGPathElementAddLineToPoint,
new Point[] {new Point(cx, cy + r), new Point(cx - r, cy)}));
elements.add(
new PathElement(
ElementType.kCGPathElementAddLineToPoint,
new Point[] {new Point(cx - r, cy), new Point(cx, cy - r)}));
return path;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/ClipPathView.java
================================================
/*
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Canvas;
import android.graphics.Paint;
import com.facebook.common.logging.FLog;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.common.ReactConstants;
@SuppressLint("ViewConstructor")
class ClipPathView extends GroupView {
public ClipPathView(ReactContext reactContext) {
super(reactContext);
}
@Override
void draw(Canvas canvas, Paint paint, float opacity) {
FLog.w(
ReactConstants.TAG,
"RNSVG: ClipPath can't be drawn, it should be defined as a child component for `Defs` ");
}
@Override
void saveDefinition() {
getSvgView().defineClipPath(this, mName);
}
@Override
boolean isResponsible() {
return false;
}
@Override
int hitTest(float[] src) {
return -1;
}
@Override
void mergeProperties(RenderableView target) {}
@Override
void resetProperties() {}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/CustomFilter.java
================================================
package com.horcrux.svg;
import android.graphics.Bitmap;
interface CustomFilterFunction {
float[] execute(float[] src, float[] dst);
}
public class CustomFilter {
public static Bitmap apply(Bitmap srcBmp, Bitmap dstBmp, CustomFilterFunction func) {
int width = srcBmp.getWidth();
int height = srcBmp.getHeight();
int[] srcPixels = new int[width * height];
int[] dstPixels = new int[width * height];
int[] resPixels = new int[width * height];
int srcArgb = 0;
float[] src = new float[] {0, 0, 0, 0};
int dstArgb = 0;
float[] dst = new float[] {0, 0, 0, 0};
try {
srcBmp.getPixels(srcPixels, 0, width, 0, 0, width, height);
dstBmp.getPixels(dstPixels, 0, width, 0, 0, width, height);
} catch (IllegalArgumentException | ArrayIndexOutOfBoundsException ignored) {
}
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
srcArgb = srcPixels[y * width + x];
src[0] = ((srcArgb >> 24) & 0xff) / 255f;
src[1] = ((srcArgb >> 16) & 0xff) / 255f;
src[2] = ((srcArgb >> 8) & 0xff) / 255f;
src[3] = (srcArgb & 0xff) / 255f;
dstArgb = dstPixels[y * width + x];
dst[0] = ((dstArgb >> 24) & 0xff) / 255f;
dst[1] = ((dstArgb >> 16) & 0xff) / 255f;
dst[2] = ((dstArgb >> 8) & 0xff) / 255f;
dst[3] = (dstArgb & 0xff) / 255f;
resPixels[y * width + x] = normalizeFromFloats(func.execute(src, dst));
}
}
return Bitmap.createBitmap(resPixels, width, height, Bitmap.Config.ARGB_8888);
}
public static int normalizeFromFloat(float c) {
return Math.min(255, Math.max(0, Math.round(c * 255)));
}
public static int normalizeFromFloats(float[] res) {
if (res.length < 4 || normalizeFromFloat(res[0]) <= 0) {
return 0;
}
return (normalizeFromFloat(res[0]) << 24)
| (normalizeFromFloat(res[1] / res[0]) << 16)
| (normalizeFromFloat(res[2] / res[0]) << 8)
| normalizeFromFloat(res[3] / res[0]);
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/DefinitionView.java
================================================
/*
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import com.facebook.react.bridge.ReactContext;
@SuppressLint("ViewConstructor")
class DefinitionView extends VirtualView {
DefinitionView(ReactContext reactContext) {
super(reactContext);
}
@SuppressWarnings("EmptyMethod")
void draw(Canvas canvas, Paint paint, float opacity) {}
@Override
boolean isResponsible() {
return false;
}
@Override
Path getPath(Canvas canvas, Paint paint) {
return null;
}
@Override
int hitTest(float[] src) {
return -1;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/DefsView.java
================================================
/*
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
import com.facebook.react.bridge.ReactContext;
@SuppressLint("ViewConstructor")
class DefsView extends DefinitionView {
public DefsView(ReactContext reactContext) {
super(reactContext);
}
@Override
void draw(Canvas canvas, Paint paint, float opacity) {}
void saveDefinition() {
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if (child instanceof VirtualView) {
((VirtualView) child).saveDefinition();
}
}
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/EllipseView.java
================================================
/*
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.ReactContext;
import java.util.ArrayList;
@SuppressLint("ViewConstructor")
class EllipseView extends RenderableView {
private SVGLength mCx;
private SVGLength mCy;
private SVGLength mRx;
private SVGLength mRy;
public EllipseView(ReactContext reactContext) {
super(reactContext);
}
public void setCx(Dynamic cx) {
mCx = SVGLength.from(cx);
invalidate();
}
public void setCy(Dynamic cy) {
mCy = SVGLength.from(cy);
invalidate();
}
public void setRx(Dynamic rx) {
mRx = SVGLength.from(rx);
invalidate();
}
public void setRy(Dynamic ry) {
mRy = SVGLength.from(ry);
invalidate();
}
@Override
Path getPath(Canvas canvas, Paint paint) {
Path path = new Path();
double cx = relativeOnWidth(mCx);
double cy = relativeOnHeight(mCy);
double rx = relativeOnWidth(mRx);
double ry = relativeOnHeight(mRy);
RectF oval =
new RectF((float) (cx - rx), (float) (cy - ry), (float) (cx + rx), (float) (cy + ry));
path.addOval(oval, Path.Direction.CW);
elements = new ArrayList<>();
elements.add(
new PathElement(
ElementType.kCGPathElementMoveToPoint, new Point[] {new Point(cx, cy - ry)}));
elements.add(
new PathElement(
ElementType.kCGPathElementAddLineToPoint,
new Point[] {new Point(cx, cy - ry), new Point(cx + rx, cy)}));
elements.add(
new PathElement(
ElementType.kCGPathElementAddLineToPoint,
new Point[] {new Point(cx + rx, cy), new Point(cx, cy + ry)}));
elements.add(
new PathElement(
ElementType.kCGPathElementAddLineToPoint,
new Point[] {new Point(cx, cy + ry), new Point(cx - rx, cy)}));
elements.add(
new PathElement(
ElementType.kCGPathElementAddLineToPoint,
new Point[] {new Point(cx - rx, cy), new Point(cx, cy - ry)}));
return path;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FeBlendView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import com.facebook.react.bridge.ReactContext;
import java.util.HashMap;
@SuppressLint("ViewConstructor")
class FeBlendView extends FilterPrimitiveView {
String mIn1;
String mIn2;
FilterProperties.FeBlendMode mMode;
public FeBlendView(ReactContext reactContext) {
super(reactContext);
super.mFilterSubregion.mX = new SVGLength(0);
super.mFilterSubregion.mY = new SVGLength(0);
super.mFilterSubregion.mW = new SVGLength("100%");
super.mFilterSubregion.mH = new SVGLength("100%");
}
public void setIn1(String in1) {
this.mIn1 = in1;
invalidate();
}
public void setIn2(String in2) {
this.mIn2 = in2;
invalidate();
}
public void setMode(String mode) {
this.mMode = FilterProperties.FeBlendMode.getEnum(mode);
invalidate();
}
@Override
public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap prevResult) {
Bitmap in1 = getSource(resultsMap, prevResult, this.mIn1);
Bitmap in2 = getSource(resultsMap, prevResult, this.mIn2);
if (this.mMode == FilterProperties.FeBlendMode.MULTIPLY) {
CustomFilterFunction multiply =
(src, dst) -> {
float[] res = new float[4];
res[0] = 1f - (1f - src[0]) * (1f - dst[0]);
res[1] =
src[1] * src[0] * (1f - dst[0])
+ dst[1] * dst[0] * (1f - src[0])
+ src[1] * src[0] * dst[1] * dst[0];
res[2] =
src[2] * src[0] * (1f - dst[0])
+ dst[2] * dst[0] * (1f - src[0])
+ src[2] * src[0] * dst[2] * dst[0];
res[3] =
src[3] * src[0] * (1f - dst[0])
+ dst[3] * dst[0] * (1f - src[0])
+ src[3] * src[0] * dst[3] * dst[0];
return res;
};
return CustomFilter.apply(in1, in2, multiply);
}
Bitmap result = Bitmap.createBitmap(in1.getWidth(), in1.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
canvas.drawBitmap(in1, 0, 0, paint);
switch (this.mMode) {
case UNKNOWN:
case NORMAL:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));
break;
case SCREEN:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SCREEN));
break;
case LIGHTEN:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.LIGHTEN));
break;
case DARKEN:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
break;
case MULTIPLY:
break;
}
canvas.drawBitmap(in2, 0, 0, paint);
return result;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FeColorMatrixView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.ColorMatrix;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableArray;
import java.util.HashMap;
@SuppressLint("ViewConstructor")
class FeColorMatrixView extends FilterPrimitiveView {
String mIn1;
FilterProperties.FeColorMatrixType mType;
ReadableArray mValues;
public FeColorMatrixView(ReactContext reactContext) {
super(reactContext);
}
public void setIn1(String in1) {
this.mIn1 = in1;
invalidate();
}
public void setType(String type) {
this.mType = FilterProperties.FeColorMatrixType.getEnum(type);
invalidate();
}
public void setValues(ReadableArray values) {
this.mValues = values;
invalidate();
}
@Override
public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap prevResult) {
Bitmap source = getSource(resultsMap, prevResult, this.mIn1);
ColorMatrix colorMatrix = new ColorMatrix();
switch (this.mType) {
case MATRIX:
if (this.mValues.size() < 20) return source;
float[] rawMatrix = new float[mValues.size()];
for (int i = 0; i < this.mValues.size(); i++) {
rawMatrix[i] = (float) this.mValues.getDouble(i) * (i % 5 == 4 ? 255 : 1);
}
colorMatrix.set(rawMatrix);
break;
case SATURATE:
if (this.mValues.size() != 1) return source;
colorMatrix.setSaturation((float) this.mValues.getDouble(0));
break;
case HUE_ROTATE:
if (this.mValues.size() != 1) return source;
float hue = (float) this.mValues.getDouble(0);
float cosHue = (float) Math.cos(hue * Math.PI / 180);
float sinHue = (float) Math.sin(hue * Math.PI / 180);
colorMatrix.set(
new float[] {
0.213f + cosHue * 0.787f - sinHue * 0.213f, // 0
0.715f - cosHue * 0.715f - sinHue * 0.715f, // 1
0.072f - cosHue * 0.072f + sinHue * 0.928f, // 2
0, // 3
0, // 4
0.213f - cosHue * 0.213f + sinHue * 0.143f, // 5
0.715f + cosHue * 0.285f + sinHue * 0.140f, // 6
0.072f - cosHue * 0.072f - sinHue * 0.283f, // 7
0, // 8
0, // 9
0.213f - cosHue * 0.213f - sinHue * 0.787f, // 10
0.715f - cosHue * 0.715f + sinHue * 0.715f, // 11
0.072f + cosHue * 0.928f + sinHue * 0.072f, // 12
0, // 13
0, // 14
0, // 15
0, // 16
0, // 17
1, // 18
0, // 19
});
break;
case LUMINANCE_TO_ALPHA:
colorMatrix.set(
new float[] {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125f, 0.7154f, 0.0721f, 0, 0,
});
break;
}
return FilterUtils.getBitmapWithColorMatrix(colorMatrix, source);
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FeCompositeView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import com.facebook.react.bridge.ReactContext;
import java.util.HashMap;
@SuppressLint("ViewConstructor")
class FeCompositeView extends FilterPrimitiveView {
String mIn1;
String mIn2;
float mK1;
float mK2;
float mK3;
float mK4;
FilterProperties.FeCompositeOperator mOperator;
public FeCompositeView(ReactContext reactContext) {
super(reactContext);
}
public void setIn1(String in1) {
this.mIn1 = in1;
invalidate();
}
public void setIn2(String in2) {
this.mIn2 = in2;
invalidate();
}
public void setK1(Float value) {
this.mK1 = value;
invalidate();
}
public void setK2(Float value) {
this.mK2 = value;
invalidate();
}
public void setK3(Float value) {
this.mK3 = value;
invalidate();
}
public void setK4(Float value) {
this.mK4 = value;
invalidate();
}
public void setOperator(String operator) {
this.mOperator = FilterProperties.FeCompositeOperator.getEnum(operator);
invalidate();
}
@Override
public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap prevResult) {
Bitmap in1 = getSource(resultsMap, prevResult, this.mIn1);
Bitmap in2 = getSource(resultsMap, prevResult, this.mIn2);
Bitmap result = Bitmap.createBitmap(in1.getWidth(), in1.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
canvas.drawBitmap(in1, 0, 0, paint);
switch (this.mOperator) {
case OVER:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));
break;
case IN:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
break;
case OUT:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
break;
case ATOP:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP));
break;
case XOR:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));
break;
case ARITHMETIC:
// result = k1*i1*i2 + k2*i1 + k3*i2 + k4
int nPixels = result.getWidth() * result.getHeight();
int[] pixels1 = new int[nPixels];
int[] pixels2 = new int[nPixels];
result.getPixels(
pixels1, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight());
in2.getPixels(pixels2, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight());
for (int i = 0; i < nPixels; i++) {
int color1 = pixels1[i];
int color2 = pixels2[i];
int r1 = (color1 >> 16) & 0xFF;
int g1 = (color1 >> 8) & 0xFF;
int b1 = color1 & 0xFF;
int a1 = (color1 >>> 24);
int r2 = (color2 >> 16) & 0xFF;
int g2 = (color2 >> 8) & 0xFF;
int b2 = color2 & 0xFF;
int a2 = (color2 >>> 24);
int rResult = (int) (mK1 * r1 * r2 + mK2 * r1 + mK3 * r2 + mK4);
int gResult = (int) (mK1 * g1 * g2 + mK2 * g1 + mK3 * g2 + mK4);
int bResult = (int) (mK1 * b1 * b2 + mK2 * b1 + mK3 * b2 + mK4);
int aResult = (int) (mK1 * a1 * a2 + mK2 * a1 + mK3 * a2 + mK4);
rResult = Math.min(255, Math.max(0, rResult));
gResult = Math.min(255, Math.max(0, gResult));
bResult = Math.min(255, Math.max(0, bResult));
aResult = Math.min(255, Math.max(0, aResult));
int pixel = (aResult << 24) | (rResult << 16) | (gResult << 8) | bResult;
pixels1[i] = pixel;
}
result.setPixels(
pixels1, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight());
break;
}
if (this.mOperator != FilterProperties.FeCompositeOperator.ARITHMETIC) {
canvas.drawBitmap(in2, 0, 0, paint);
}
return result;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FeFloodView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import com.facebook.react.bridge.ColorPropConverter;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.JavaOnlyArray;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableType;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Nullable;
@SuppressLint("ViewConstructor")
class FeFloodView extends FilterPrimitiveView {
private static final Pattern regex = Pattern.compile("[0-9.-]+");
public @Nullable ReadableArray floodColor;
public float floodOpacity = 1;
public FeFloodView(ReactContext reactContext) {
super(reactContext);
}
public void setFloodColor(@Nullable Dynamic color) {
if (color == null || color.isNull()) {
floodColor = null;
invalidate();
return;
}
ReadableType strokeType = color.getType();
if (strokeType.equals(ReadableType.Map)) {
ReadableMap colorMap = color.asMap();
setFloodColor(colorMap);
return;
}
// This code will probably never be reached with current changes
ReadableType type = color.getType();
if (type.equals(ReadableType.Number)) {
floodColor = JavaOnlyArray.of(0, color.asInt());
} else if (type.equals(ReadableType.Array)) {
floodColor = color.asArray();
} else {
JavaOnlyArray arr = new JavaOnlyArray();
arr.pushInt(0);
Matcher m = regex.matcher(color.asString());
int i = 0;
while (m.find()) {
double parsed = Double.parseDouble(m.group());
arr.pushDouble(i++ < 3 ? parsed / 255 : parsed);
}
floodColor = arr;
}
invalidate();
}
public void setFloodColor(@Nullable ReadableMap color) {
if (color == null) {
this.floodColor = null;
invalidate();
return;
}
int type = color.getInt("type");
if (type == 0) {
ReadableType payloadType = color.getType("payload");
if (payloadType.equals(ReadableType.Number)) {
this.floodColor = JavaOnlyArray.of(0, color.getInt("payload"));
} else if (payloadType.equals(ReadableType.Map)) {
this.floodColor = JavaOnlyArray.of(0, color.getMap("payload"));
}
} else if (type == 1) {
this.floodColor = JavaOnlyArray.of(1, color.getString("brushRef"));
} else {
this.floodColor = JavaOnlyArray.of(type);
}
invalidate();
}
public void setFloodOpacity(float opacity) {
this.floodOpacity = opacity;
invalidate();
}
@Override
public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap prevResult) {
Bitmap floodBitmap =
Bitmap.createBitmap(prevResult.getWidth(), prevResult.getHeight(), Bitmap.Config.ARGB_8888);
Canvas floodCanvas = new Canvas(floodBitmap);
Paint paint = new Paint();
paint.setFlags(Paint.ANTI_ALIAS_FLAG | Paint.SUBPIXEL_TEXT_FLAG);
paint.setStyle(Paint.Style.FILL);
this.setupPaint(paint, this.floodOpacity, this.floodColor);
floodCanvas.drawPaint(paint);
return floodBitmap;
}
private void setupPaint(Paint paint, float opacity, @Nullable ReadableArray colors) {
int colorType = colors.getInt(0);
switch (colorType) {
case 0:
if (colors.size() == 2) {
int color;
if (colors.getType(1) == ReadableType.Map) {
color = ColorPropConverter.getColor(colors.getMap(1), getContext());
} else {
color = colors.getInt(1);
}
int alpha = color >>> 24;
int combined = Math.round((float) alpha * opacity);
paint.setColor(combined << 24 | (color & 0x00ffffff));
} else {
// solid color
paint.setARGB(
(int) (colors.size() > 4 ? colors.getDouble(4) * opacity * 255 : opacity * 255),
(int) (colors.getDouble(1) * 255),
(int) (colors.getDouble(2) * 255),
(int) (colors.getDouble(3) * 255));
}
break;
// TODO: handle currentColor
}
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FeGaussianBlurView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
import com.facebook.react.bridge.ReactContext;
import java.util.HashMap;
@SuppressLint("ViewConstructor")
class FeGaussianBlurView extends FilterPrimitiveView {
String mIn1;
float mStdDeviationX;
float mStdDeviationY;
FilterProperties.EdgeMode mEdgeMode;
public FeGaussianBlurView(ReactContext reactContext) {
super(reactContext);
}
public void setIn1(String in1) {
this.mIn1 = in1;
invalidate();
}
public void setStdDeviationX(float stdDeviationX) {
this.mStdDeviationX = stdDeviationX;
invalidate();
}
public void setStdDeviationY(float stdDeviationY) {
this.mStdDeviationY = stdDeviationY;
invalidate();
}
public void setEdgeMode(String edgeMode) {
this.mEdgeMode = FilterProperties.EdgeMode.getEnum(edgeMode);
invalidate();
}
@Override
public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap prevResult) {
Bitmap source = getSource(resultsMap, prevResult, this.mIn1);
return blur(getContext(), source);
}
private Bitmap blur(Context context, Bitmap bitmap) {
// Android blur radius is much weaker than SVG's, so we need to scale it up.
float stdDeviation = Math.max(mStdDeviationX, mStdDeviationY) * 2;
if (stdDeviation <= 0) return bitmap;
final float maxRadius = 25.0f;
float radius = Math.min(stdDeviation, maxRadius);
Bitmap outputBitmap = Bitmap.createBitmap(bitmap);
// Create a RenderScript with blur
RenderScript rs = RenderScript.create(context);
ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
// Allocate memory for Renderscript to work with
Allocation tmpIn = Allocation.createFromBitmap(rs, bitmap);
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
// Set the radius of the blur, allocation input, and output
blurScript.setRadius(radius);
blurScript.setInput(tmpIn);
blurScript.forEach(tmpOut);
// Copy the allocation output to the output bitmap and release memory
tmpOut.copyTo(outputBitmap);
tmpIn.destroy();
tmpOut.destroy();
rs.destroy();
return Bitmap.createScaledBitmap(outputBitmap, bitmap.getWidth(), bitmap.getHeight(), false);
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FeMergeView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableArray;
import java.util.HashMap;
@SuppressLint("ViewConstructor")
class FeMergeView extends FilterPrimitiveView {
private ReadableArray mNodes;
public FeMergeView(ReactContext reactContext) {
super(reactContext);
}
public void setNodes(ReadableArray nodes) {
this.mNodes = nodes;
invalidate();
}
@Override
public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap prevResult) {
Bitmap result =
Bitmap.createBitmap(prevResult.getWidth(), prevResult.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
int nodesSize = this.mNodes.size();
for (int i = 0; i < nodesSize; i++) {
String nodeKey = this.mNodes.getString(i);
Bitmap sourceFromResults = nodeKey.isEmpty() ? prevResult : resultsMap.get(nodeKey);
if (sourceFromResults != null) {
canvas.drawBitmap(sourceFromResults, 0, 0, new Paint());
}
}
return result;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FeOffsetView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.RectF;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.ReactContext;
import java.util.HashMap;
@SuppressLint("ViewConstructor")
class FeOffsetView extends FilterPrimitiveView {
String mIn1;
SVGLength mDx;
SVGLength mDy;
public FeOffsetView(ReactContext reactContext) {
super(reactContext);
}
public void setIn1(String in1) {
this.mIn1 = in1;
invalidate();
}
public void setDx(Dynamic dx) {
mDx = SVGLength.from(dx);
invalidate();
}
public void setDy(Dynamic dy) {
mDy = SVGLength.from(dy);
invalidate();
}
@Override
public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap prevResult) {
Bitmap source = getSource(resultsMap, prevResult, this.mIn1);
Bitmap result =
Bitmap.createBitmap(prevResult.getWidth(), prevResult.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
float dx = this.mDx != null ? (float) this.relativeOnWidth(this.mDx) : 0;
float dy = this.mDy != null ? (float) this.relativeOnHeight(this.mDy) : 0;
RectF frame = new RectF(0, 0, dx, dy);
this.getSvgView().getCtm().mapRect(frame);
dx = frame.left < 0 ? frame.left : frame.width();
dy = frame.top < 0 ? frame.top : frame.height();
canvas.drawBitmap(source, dx, dy, null);
return result;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FilterPrimitiveView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.ReactContext;
import java.util.HashMap;
@SuppressLint("ViewConstructor")
class FilterPrimitiveView extends DefinitionView {
private String mResult;
public final FilterRegion mFilterSubregion;
public FilterPrimitiveView(ReactContext reactContext) {
super(reactContext);
mFilterSubregion = new FilterRegion();
}
public void setX(Dynamic x) {
mFilterSubregion.setX(x);
invalidate();
}
public void setY(Dynamic y) {
mFilterSubregion.setY(y);
invalidate();
}
public void setWidth(Dynamic width) {
mFilterSubregion.setWidth(width);
invalidate();
}
public void setHeight(Dynamic height) {
mFilterSubregion.setHeight(height);
invalidate();
}
public void setResult(String result) {
mResult = result;
invalidate();
}
public String getResult() {
return mResult;
}
protected static Bitmap getSource(
HashMap<String, Bitmap> resultsMap, Bitmap prevResult, String in1) {
Bitmap sourceFromResults = in1 != null ? resultsMap.get(in1) : null;
return sourceFromResults != null ? sourceFromResults : prevResult;
}
public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap prevResult) {
return null;
}
@Override
void saveDefinition() {}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FilterProperties.java
================================================
package com.horcrux.svg;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nonnull;
class FilterProperties {
enum Units {
OBJECT_BOUNDING_BOX("objectBoundingBox"),
USER_SPACE_ON_USE("userSpaceOnUse"),
;
private final String units;
Units(String units) {
this.units = units;
}
static Units getEnum(String strVal) {
if (!unitsToEnum.containsKey(strVal)) {
throw new IllegalArgumentException("Unknown 'Unit' Value: " + strVal);
}
return unitsToEnum.get(strVal);
}
private static final Map<String, Units> unitsToEnum = new HashMap<>();
static {
for (final Units en : Units.values()) {
unitsToEnum.put(en.units, en);
}
}
@Nonnull
@Override
public String toString() {
return units;
}
}
enum EdgeMode {
UNKNOWN("unknown"),
DUPLICATE("duplicate"),
WRAP("wrap"),
NONE("none"),
;
private final String edgeMode;
EdgeMode(String edgeMode) {
this.edgeMode = edgeMode;
}
static EdgeMode getEnum(String strVal) {
if (!edgeModeToEnum.containsKey(strVal)) {
throw new IllegalArgumentException("Unknown 'edgeMode' Value: " + strVal);
}
return edgeModeToEnum.get(strVal);
}
private static final Map<String, EdgeMode> edgeModeToEnum = new HashMap<>();
static {
for (final EdgeMode en : EdgeMode.values()) {
edgeModeToEnum.put(en.edgeMode, en);
}
}
@Nonnull
@Override
public String toString() {
return edgeMode;
}
}
enum FeBlendMode {
UNKNOWN("unknown"),
NORMAL("normal"),
MULTIPLY("multiply"),
SCREEN("screen"),
DARKEN("darken"),
LIGHTEN("lighten"),
;
private final String mode;
FeBlendMode(String mode) {
this.mode = mode;
}
static FeBlendMode getEnum(String strVal) {
if (!typeToEnum.containsKey(strVal)) {
throw new IllegalArgumentException("Unknown String Value: " + strVal);
}
return typeToEnum.get(strVal);
}
private static final Map<String, FeBlendMode> typeToEnum = new HashMap<>();
static {
for (final FeBlendMode en : FeBlendMode.values()) {
typeToEnum.put(en.mode, en);
}
}
@Nonnull
@Override
public String toString() {
return mode;
}
}
enum FeColorMatrixType {
MATRIX("matrix"),
SATURATE("saturate"),
HUE_ROTATE("hueRotate"),
LUMINANCE_TO_ALPHA("luminanceToAlpha"),
;
private final String type;
FeColorMatrixType(String type) {
this.type = type;
}
static FeColorMatrixType getEnum(String strVal) {
if (!typeToEnum.containsKey(strVal)) {
throw new IllegalArgumentException("Unknown String Value: " + strVal);
}
return typeToEnum.get(strVal);
}
private static final Map<String, FeColorMatrixType> typeToEnum = new HashMap<>();
static {
for (final FeColorMatrixType en : FeColorMatrixType.values()) {
typeToEnum.put(en.type, en);
}
}
@Nonnull
@Override
public String toString() {
return type;
}
}
enum FeCompositeOperator {
OVER("over"),
IN("in"),
OUT("out"),
ATOP("atop"),
XOR("xor"),
ARITHMETIC("arithmetic"),
;
private final String type;
FeCompositeOperator(String type) {
this.type = type;
}
static FeCompositeOperator getEnum(String strVal) {
if (!typeToEnum.containsKey(strVal)) {
throw new IllegalArgumentException("Unknown String Value: " + strVal);
}
return typeToEnum.get(strVal);
}
private static final Map<String, FeCompositeOperator> typeToEnum = new HashMap<>();
static {
for (final FeCompositeOperator en : FeCompositeOperator.values()) {
typeToEnum.put(en.type, en);
}
}
@Nonnull
@Override
public String toString() {
return type;
}
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FilterRegion.java
================================================
package com.horcrux.svg;
import android.graphics.Rect;
import android.graphics.RectF;
import com.facebook.react.bridge.Dynamic;
public class FilterRegion {
SVGLength mX;
SVGLength mY;
SVGLength mW;
SVGLength mH;
public void setX(Dynamic x) {
mX = SVGLength.from(x);
}
public void setY(Dynamic y) {
mY = SVGLength.from(y);
}
public void setWidth(Dynamic width) {
mW = SVGLength.from(width);
}
public void setHeight(Dynamic height) {
mH = SVGLength.from(height);
}
private double getRelativeOrDefault(
VirtualView view, SVGLength value, float relativeOn, double defaultValue) {
if (value == null || value.unit == SVGLength.UnitType.UNKNOWN) {
return defaultValue;
}
return view.relativeOn(value, relativeOn);
}
public Rect getCropRect(VirtualView view, FilterProperties.Units units, RectF bounds) {
double x, y, width, height;
if (bounds == null) {
return new Rect(0, 0, 0, 0);
}
if (units == FilterProperties.Units.OBJECT_BOUNDING_BOX) {
x = bounds.left + view.relativeOnFraction(this.mX, bounds.width());
y = bounds.top + view.relativeOnFraction(this.mY, bounds.height());
width = view.relativeOnFraction(this.mW, bounds.width());
height = view.relativeOnFraction(this.mH, bounds.height());
} else { // FilterProperties.Units.USER_SPACE_ON_USE
float canvasWidth = view.getSvgView().getCanvasWidth();
float canvasHeight = view.getSvgView().getCanvasHeight();
x = getRelativeOrDefault(view, mX, canvasWidth, bounds.left);
y = getRelativeOrDefault(view, mY, canvasHeight, bounds.top);
width = getRelativeOrDefault(view, mW, canvasWidth, bounds.width());
height = getRelativeOrDefault(view, mH, canvasHeight, bounds.height());
}
return new Rect((int) x, (int) y, (int) (x + width), (int) (y + height));
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FilterUtils.java
================================================
package com.horcrux.svg;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
public class FilterUtils {
public static Bitmap getBitmapWithColorMatrix(ColorMatrix colorMatrix, Bitmap sourceBitmap) {
Bitmap results =
Bitmap.createBitmap(
sourceBitmap.getWidth(), sourceBitmap.getHeight(), sourceBitmap.getConfig());
Canvas canvas = new Canvas(results);
Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
canvas.drawBitmap(sourceBitmap, 0, 0, paint);
return results;
}
public static Bitmap applySourceAlphaFilter(Bitmap source) {
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.set(
new float[] {
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 1, 0,
0, 0, 0, 0, 1
});
return getBitmapWithColorMatrix(colorMatrix, source);
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FilterView.java
================================================
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.Log;
import android.view.View;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.ReactContext;
import java.util.HashMap;
@SuppressLint("ViewConstructor")
class FilterView extends DefinitionView {
private final HashMap<String, Bitmap> mResultsMap = new HashMap<>();
private FilterProperties.Units mFilterUnits;
private FilterProperties.Units mPrimitiveUnits;
private final FilterRegion mFilterRegion;
public FilterView(ReactContext reactContext) {
super(reactContext);
mFilterRegion = new FilterRegion();
}
public void setX(Dynamic x) {
mFilterRegion.setX(x);
invalidate();
}
public void setY(Dynamic y) {
mFilterRegion.setY(y);
invalidate();
}
public void setWidth(Dynamic width) {
mFilterRegion.setWidth(width);
invalidate();
}
public void setHeight(Dynamic height) {
mFilterRegion.setHeight(height);
invalidate();
}
public void setFilterUnits(String filterUnits) {
mFilterUnits = FilterProperties.Units.getEnum(filterUnits);
invalidate();
}
public void setPrimitiveUnits(String primitiveUnits) {
mPrimitiveUnits = FilterProperties.Units.getEnum(primitiveUnits);
invalidate();
}
public FilterRegion getFilterRegion() {
return mFilterRegion;
}
@Override
void saveDefinition() {
if (mName != null) {
SvgView svg = getSvgView();
if (svg != null) {
svg.defineFilter(this, mName);
}
}
}
public Bitmap applyFilter(Bitmap source, Bitmap background, RectF renderableBounds) {
mResultsMap.clear();
mResultsMap.put("SourceGraphic", source);
mResultsMap.put("SourceAlpha", FilterUtils.applySourceAlphaFilter(source));
mResultsMap.put("BackgroundImage", background);
mResultsMap.put("BackgroundAlpha", FilterUtils.applySourceAlphaFilter(background));
Bitmap res = source;
Bitmap resultBitmap = Bitmap.createBitmap(res.getWidth(), res.getHeight(), res.getConfig());
Canvas canvas = new Canvas(resultBitmap);
Rect filterRegionRect =
this.mFilterRegion.getCropRect(this, this.mFilterUnits, renderableBounds);
Rect cropRect;
for (int i = 0; i < getChildCount(); i++) {
View node = getChildAt(i);
if (node instanceof FilterPrimitiveView) {
FilterPrimitiveView currentFilter = (FilterPrimitiveView) node;
resultBitmap.eraseColor(Color.TRANSPARENT);
cropRect =
currentFilter.mFilterSubregion.getCropRect(
currentFilter,
this.mPrimitiveUnits,
this.mPrimitiveUnits == FilterProperties.Units.USER_SPACE_ON_USE
? new RectF(filterRegionRect)
: renderableBounds);
canvas.drawBitmap(currentFilter.applyFilter(mResultsMap, res), cropRect, cropRect, null);
res = resultBitmap.copy(Bitmap.Config.ARGB_8888, true);
String resultName = currentFilter.getResult();
if (resultName != null) {
mResultsMap.put(resultName, res);
}
} else {
Log.e("RNSVG", "Invalid `Filter` child: Filter children can only be `Fe...` components");
}
}
// crop Bitmap to filter coordinates
resultBitmap.eraseColor(Color.TRANSPARENT);
canvas.drawBitmap(res, filterRegionRect, filterRegionRect, null);
return resultBitmap;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/FontData.java
================================================
package com.horcrux.svg;
import static com.facebook.react.uimanager.ViewProps.FONT_FAMILY;
import static com.facebook.react.uimanager.ViewProps.FONT_SIZE;
import static com.facebook.react.uimanager.ViewProps.FONT_STYLE;
import static com.facebook.react.uimanager.ViewProps.FONT_WEIGHT;
import static com.horcrux.svg.TextProperties.*;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableType;
class FontData {
static class AbsoluteFontWeight {
static final int normal = 400;
private static final FontWeight[] WEIGHTS =
new FontWeight[] {
FontWeight.w100,
FontWeight.w100,
FontWeight.w200,
FontWeight.w300,
FontWeight.Normal,
FontWeight.w500,
FontWeight.w600,
FontWeight.Bold,
FontWeight.w800,
FontWeight.w900,
FontWeight.w900,
};
static FontWeight nearestFontWeight(int absoluteFontWeight) {
return WEIGHTS[Math.round(absoluteFontWeight / 100f)];
}
private static final int[] absoluteFontWeights =
new int[] {400, 700, 100, 200, 300, 400, 500, 600, 700, 800, 900};
// https://drafts.csswg.org/css-fonts-4/#relative-weights
static int from(FontWeight fontWeight, FontData parent) {
if (fontWeight == FontWeight.Bolder) {
return bolder(parent.absoluteFontWeight);
} else if (fontWeight == FontWeight.Lighter) {
return lighter(parent.absoluteFontWeight);
} else {
return absoluteFontWeights[fontWeight.ordinal()];
}
}
private static int bolder(int inherited) {
if (inherited < 350) {
return 400;
} else if (inherited < 550) {
return 700;
} else if (inherited < 900) {
return 900;
} else {
return inherited;
}
}
private static int lighter(int inherited) {
if (inherited < 100) {
return inherited;
} else if (inherited < 550) {
return 100;
} else if (inherited < 750) {
return 400;
} else {
return 700;
}
}
}
static final double DEFAULT_FONT_SIZE = 12d;
private static final double DEFAULT_KERNING = 0d;
private static final double DEFAULT_WORD_SPACING = 0d;
private static final double DEFAULT_LETTER_SPACING = 0d;
private static final String KERNING = "kerning";
private static final String FONT_DATA = "fontData";
private static final String TEXT_ANCHOR = "textAnchor";
private static final String WORD_SPACING = "wordSpacing";
private static final String LETTER_SPACING = "letterSpacing";
private static final String TEXT_DECORATION = "textDecoration";
private static final String FONT_FEATURE_SETTINGS = "fontFeatureSettings";
private static final String FONT_VARIATION_SETTINGS = "fontVariationSettings";
private static final String FONT_VARIANT_LIGATURES = "fontVariantLigatures";
final double fontSize;
final String fontFamily;
final FontStyle fontStyle;
final ReadableMap fontData;
FontWeight fontWeight;
int absoluteFontWeight;
final String fontFeatureSettings;
final String fontVariationSettings;
final FontVariantLigatures fontVariantLigatures;
final TextAnchor textAnchor;
private final TextDecoration textDecoration;
final double kerning;
final double wordSpacing;
final double letterSpacing;
final boolean manualKerning;
static final FontData Defaults = new FontData();
private FontData() {
fontData = null;
fontFamily = "";
fontStyle = FontStyle.normal;
fontWeight = FontWeight.Normal;
absoluteFontWeight = AbsoluteFontWeight.normal;
fontFeatureSettings = "";
fontVariationSettings = "";
fontVariantLigatures = FontVariantLigatures.normal;
textAnchor = TextAnchor.start;
textDecoration = TextDecoration.None;
manualKerning = false;
kerning = DEFAULT_KERNING;
fontSize = DEFAULT_FONT_SIZE;
wordSpacing = DEFAULT_WORD_SPACING;
letterSpacing = DEFAULT_LETTER_SPACING;
}
private double toAbsolute(
ReadableMap font, String prop, double scale, double fontSize, double relative) {
ReadableType propType = font.getType(prop);
if (propType == ReadableType.Number) {
return font.getDouble(prop) * scale;
} else {
String string = font.getString(prop);
return PropHelper.fromRelative(string, relative, scale, fontSize);
}
}
private void setInheritedWeight(FontData parent) {
absoluteFontWeight = parent.absoluteFontWeight;
fontWeight = parent.fontWeight;
}
private void handleNumericWeight(FontData parent, double number) {
long weight = Math.round(number);
if (weight >= 1 && weight <= 1000) {
absoluteFontWeight = (int) weight;
fontWeight = AbsoluteFontWeight.nearestFontWeight(absoluteFontWeight);
} else {
setInheritedWeight(parent);
}
}
FontData(ReadableMap font, FontData parent, double scale) {
double parentFontSize = parent.fontSize;
if (font.hasKey(FONT_SIZE)) {
fontSize = toAbsolute(font, FONT_SIZE, 1, parentFontSize, parentFontSize);
} else {
fontSize = parentFontSize;
}
if (font.hasKey(FONT_WEIGHT)) {
ReadableType fontWeightType = font.getType(FONT_WEIGHT);
if (fontWeightType == ReadableType.Number) {
handleNumericWeight(parent, font.getDouble(FONT_WEIGHT));
} else {
String string = font.getString(FONT_WEIGHT);
if (FontWeight.hasEnum(string)) {
absoluteFontWeight = AbsoluteFontWeight.from(FontWeight.get(string), parent);
fontWeight = AbsoluteFontWeight.nearestFontWeight(absoluteFontWeight);
} else if (string != null) {
handleNumericWeight(parent, Double.parseDouble(string));
} else {
setInheritedWeight(parent);
}
}
} else {
setInheritedWeight(parent);
}
fontData = font.hasKey(FONT_DATA) ? font.getMap(FONT_DATA) : parent.fontData;
fontFamily = font.hasKey(FONT_FAMILY) ? font.getString(FONT_FAMILY) : parent.fontFamily;
fontStyle =
font.hasKey(FONT_STYLE) ? FontStyle.valueOf(font.getString(FONT_STYLE)) : parent.fontStyle;
fontFeatureSettings =
font.hasKey(FONT_FEATURE_SETTINGS)
? font.getString(FONT_FEATURE_SETTINGS)
: parent.fontFeatureSettings;
fontVariationSettings =
font.hasKey(FONT_VARIATION_SETTINGS)
? font.getString(FONT_VARIATION_SETTINGS)
: parent.fontVariationSettings;
fontVariantLigatures =
font.hasKey(FONT_VARIANT_LIGATURES)
? FontVariantLigatures.valueOf(font.getString(FONT_VARIANT_LIGATURES))
: parent.fontVariantLigatures;
textAnchor =
font.hasKey(TEXT_ANCHOR)
? TextAnchor.valueOf(font.getString(TEXT_ANCHOR))
: parent.textAnchor;
textDecoration =
font.hasKey(TEXT_DECORATION)
? TextDecoration.getEnum(font.getString(TEXT_DECORATION))
: parent.textDecoration;
final boolean hasKerning = font.hasKey(KERNING);
manualKerning = hasKerning || parent.manualKerning;
// https://www.w3.org/TR/SVG11/text.html#SpacingProperties
// https://drafts.csswg.org/css-text-3/#spacing
// calculated values for units in: kerning, word-spacing, and, letter-spacing.
kerning = hasKerning ? toAbsolute(font, KERNING, scale, fontSize, 0) : parent.kerning;
wordSpacing =
font.hasKey(WORD_SPACING)
? toAbsolute(font, WORD_SPACING, scale, fontSize, 0)
: parent.wordSpacing;
letterSpacing =
font.hasKey(LETTER_SPACING)
? toAbsolute(font, LETTER_SPACING, scale, fontSize, 0)
: parent.letterSpacing;
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/ForeignObjectView.java
================================================
/*
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.horcrux.svg;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.View;
import androidx.annotation.NonNull;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.ReactContext;
@SuppressLint("ViewConstructor")
class ForeignObjectView extends GroupView {
SVGLength mX;
SVGLength mY;
SVGLength mW;
SVGLength mH;
public ForeignObjectView(ReactContext reactContext) {
super(reactContext);
}
@Override
void draw(Canvas canvas, Paint paint, float opacity) {
float x = (float) relativeOnWidth(mX);
float y = (float) relativeOnHeight(mY);
float w = (float) relativeOnWidth(mW);
float h = (float) relativeOnHeight(mH);
canvas.translate(x, y);
canvas.clipRect(0, 0, w, h);
super.draw(canvas, paint, opacity);
}
@Override
public void onDescendantInvalidated(@NonNull View child, @NonNull View target) {
super.onDescendantInvalidated(child, target);
invalidate();
}
public void setX(Dynamic x) {
mX = SVGLength.from(x);
invalidate();
}
public void setY(Dynamic y) {
mY = SVGLength.from(y);
invalidate();
}
public void setWidth(Dynamic width) {
mW = SVGLength.from(width);
invalidate();
}
public void setHeight(Dynamic height) {
mH = SVGLength.from(height);
invalidate();
}
@Override
public void invalidate() {
super.invalidate();
SvgView svgView = getSvgView();
if (svgView != null) {
svgView.invalidate();
}
}
void drawGroup(final Canvas canvas, final Paint paint, final float opacity) {
pushGlyphContext();
final SvgView svg = getSvgView();
final GroupView self = this;
final RectF groupRect = new RectF();
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if (child instanceof MaskView) {
continue;
}
if (child instanceof VirtualView) {
VirtualView node = ((VirtualView) child);
if ("none".equals(node.mDisplay)) {
continue;
}
if (node instanceof RenderableView) {
((RenderableView) node).mergeProperties(self);
}
int count = node.saveAndSetupCanvas(canvas, mCTM);
node.render(canvas, paint, opacity * mOpacity);
RectF r = node.getClientRect();
if (r != null) {
groupRect.union(r);
}
node.restoreCanvas(canvas, count);
if (node instanceof RenderableView) {
((RenderableView) node).resetProperties();
}
if (node.isResponsible()) {
svg.enableTouchEvents();
}
} else if (child instanceof SvgView) {
SvgView svgView = (SvgView) child;
svgView.drawChildren(canvas);
if (svgView.isResponsible()) {
svg.enableTouchEvents();
}
} else {
// Enable rendering other native ancestor views in e.g. masks
final int saveCount = canvas.save();
int left = child.getLeft();
int top = child.getTop();
canvas.translate(left, top);
Matrix childMatrix = child.getMatrix();
if (!childMatrix.isIdentity()) {
canvas.concat(childMatrix);
}
child.draw(canvas);
canvas.restoreToCount(saveCount);
}
}
this.setClientRect(groupRect);
popGlyphContext();
}
// Enable rendering other native ancestor views in e.g. masks, but don't render them another time
Bitmap fakeBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
Canvas fake = new Canvas(fakeBitmap);
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(fake);
}
protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
return super.drawChild(fake, child, drawingTime);
}
}
================================================
FILE: android/src/main/java/com/horcrux/svg/GlyphContext.java
================================================
/*
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.horcrux.svg;
import com.facebook.react.bridge.ReadableMap;
import java.util.ArrayList;
import javax.annotation.Nullable;
// https://www.w3.org/TR/SVG/text.html#TSpanElement
class GlyphContext {
// Current stack (one per node push/pop)
final ArrayList<FontData> mFontContext = new ArrayList<>();
// Unique input attribute lists (only added if node sets a value)
private final ArrayList<SVGLength[]> mXsContext = new ArrayList<>();
private final ArrayList<SVGLength[]> mYsContext = new ArrayList<>();
private final ArrayList<SVGLength[]> mDXsContext = new ArrayList<>();
private final ArrayList<SVGLength[]> mDYsContext = new ArrayList<>();
private final ArrayList<double[]> mRsContext = new ArrayList<>();
// Unique index into attribute list (one per unique list)
private final ArrayList<Integer> mXIndices = new ArrayList<>();
private final ArrayList<Integer> mYIndices = new ArrayList<>();
private final ArrayList<Integer> mDXIndices = new ArrayList<>();
private final ArrayList<Integer> mDYIndices = new ArrayList<>();
private final ArrayList<Integer> mRIndices = new ArrayList<>();
// Index of unique context used (one per node push/pop)
private final ArrayList<Integer> mXsIndices = new ArrayList<>();
private final ArrayList<Integer> mYsIndices = new ArrayList<>();
private final ArrayList<Integer> mDXsIndices = new ArrayList<>();
private final ArrayList<Integer> mDYsIndices = new ArrayList<>();
private final ArrayList<Integer> mRsIndices = new ArrayList<>();
// Calculated on push context, percentage and em length depends on parent font size
private double mFontSize = FontData.DEFAULT_FONT_SIZE;
private FontData topFont = FontData.Defaults;
// Current accumulated values
// https://www.w3.org/TR/SVG/types.html#DataTypeCoordinate
// <coordinate> syntax is the same as that for <length>
private double mX;
private double mY;
// https://www.w3.org/TR/SVG/types.html#Length
private double mDX;
private double mDY;
// Current <list-of-coordinates> SVGLengthList
// https://www.w3.org/TR/SVG/types.html#InterfaceSVGLengthList
// https://www.w3.org/TR/SVG/types.html#DataTypeCoordinates
// https://www.w3.org/TR/SVG/text.html#TSpanElementXAttribute
private SVGLength[] mXs = new SVGLength[] {};
// https://www.w3.org/TR/SVG/text.html#TSpanElementYAttribute
private SVGLength[] mYs = new SVGLength[] {};
// Current <list-of-lengths> SVGLengthList
// https://www.w3.org/TR/SVG/types.html#DataTypeLengths
// https://www.w3.org/TR/SVG/text.html#TSpanElementDXAttribute
private SVGLength[] mDXs = new SVGLength[] {};
// https://www.w3.org/TR/SVG/text.html#TSpanElementDYAttribute
private SVGLength[] mDYs = new SVGLength[] {};
// Current <list-of-numbers> SVGLengthList
// https://www.w3.org/TR/SVG/types.html#DataTypeNumbers
// https://www.w3.org/TR/SVG/text.html#TSpanElementRotateAttribute
private double[] mRs = new double[] {0};
// Current attribute list index
private int mXsIndex;
private int mYsIndex;
private int mDXsIndex;
private int mDYsIndex;
private int mRsIndex;
// Current value index in current attribute list
private int mXIndex = -1;
private int mYIndex = -1;
private int mDXIndex = -1;
private int mDYIndex = -1;
private int mRIndex = -1;
// Top index of stack
private int mTop;
// Constructor parameters
private final float mScale;
private final float mWidth;
private final float mHeight;
private void pushIndices() {
mXsIndices.add(mXsIndex);
mYsIndices.add(mYsIndex);
mDXsIndices.add(mDXsIndex);
mDYsIndices.add(mDYsIndex);
mRsIndices.add(mRsIndex);
}
GlyphContext(float scale, float width, float height) {
mScale = scale;
mWidth = width;
mHeight = height;
mXsContext.add(mXs);
mYsContext.add(mYs);
mDXsContext.add(mDXs);
mDYsContext.add(mDYs);
mRsContext.add(mRs);
mXIndices.add(mXIndex);
mYIndices.add(mYIndex);
mDXIndices.add(mDXIndex);
mDYIndices.add(mDYIndex);
mRIndices.add(mRIndex);
mFontContext.add(topFont);
pushIndices();
}
private void reset() {
mXsIndex = mYsIndex = mDXsIndex = mDYsIndex = mRsIndex = 0;
mXIndex = mYIndex = mDXIndex = mDYIndex = mRIndex = -1;
mX = mY = mDX = mDY = 0;
}
FontData getFont() {
return topFont;
}
private FontData getTopOrParentFont(GroupView child) {
if (mTop > 0) {
return topFont;
} else {
GroupView parentRoot = child.getParentTextRoot();
while (parentRoot != null) {
FontData map = parentRoot.getGlyphContext().getFont();
if (map != FontData.Defaults) {
return map;
}
parentRoot = parentRoot.getParentTextRoot();
}
return FontData.Defaults;
}
}
private void pushNodeAndFont(GroupView node, @Nullable ReadableMap font) {
FontData parent = getTopOrParentFont(node);
mTop++;
if (font == null) {
mFontContext.add(parent);
return;
}
FontData data = new FontData(font, parent, mScale);
mFontSize = data.fontSize;
mFontContext.add(data);
topFont = data;
}
void pushContext(GroupView node, @Nullable ReadableMap font) {
pushNodeAndFont(node, font);
pushIndices();
}
private SVGLength[] getStringArrayFromReadableArray(ArrayList<SVGLength> readableArray) {
int size = readableArray.size();
SVGLength[] strings = new SVGLength[size];
for (int i = 0; i < size; i++) {
strings[i] = readableArray.get(i);
}
return strings;
}
private double[] getDoubleArrayFromReadableArray(ArrayList<SVGLength> readableArray) {
int size = readableArray.size();
double[] doubles = new double[size];
for (int i = 0; i < size; i++) {
SVGLength length = readableArray.get(i);
doubles[i] = length.value;
}
return doubles;
}
void pushContext(
boolean reset,
TextView node,
@Nullable ReadableMap font,
@Nullable ArrayList<SVGLength> x,
@Nullable ArrayList<SVGLength> y,
@Nullable ArrayList<SVGLength> deltaX,
@Nullable ArrayList<SVGLength> deltaY,
@Nullable ArrayList<SVGLength> rotate) {
if (reset) {
this.reset();
}
pushNodeAndFont(node, font);
if (x != null && x.size() != 0) {
mXsIndex++;
mXIndex = -1;
mXIndices.add(mXIndex);
mXs = getStringArrayFromReadableArray(x);
mXsContext.add(mXs);
}
if (y != null && y.size() != 0) {
mYsIndex++;
mYIndex = -1;
mYIndices.add(mYIndex);
mYs = getStringArrayFromReadableArray(y);
mYsContext.add(mYs);
}
if (deltaX != null && deltaX.size() != 0) {
mDXsIndex++;
mDXIndex = -1;
mDXIndices.add(mDXIndex);
mDXs = getStringArrayFromReadableArray(deltaX);
mDXsContext.add(mDXs);
}
if (deltaY != null && deltaY.size() != 0) {
mDYsIndex++;
mDYIndex = -1;
mDYIndices.add(mDYIndex);
mDYs = getStringArrayFromReadableArray(deltaY);
mDYsContext.add(mDYs);
}
if (rotate != null && rotate.size() != 0) {
mRsIndex++;
mRIndex = -1;
mRIndices.add(mRIndex);
mRs = getDoubleArrayFromReadableArray(rotate);
mRsContext.add(mRs);
}
pushIndices();
}
void popContext() {
mFontContext.remove(mTop);
mXsIndices.remove(mTop);
mYsIndices.remove(mTop);
mDXsIndices.remove(mTop);
mDYsIndices.remove(mTop);
mRsIndices.remove(mTop);
mTop--;
int x = mXsIndex;
int y = mYsIndex;
int dx = mDXsIndex;
int dy = mDYsIndex;
int r = mRsIndex;
topFont = mFontContext.get(mTop);
mXsIndex = mXsIndices.get(mTop);
mYsIndex = mYsIndices.get(mTop);
mDXsIndex = mDXsIndices.get(mTop);
mDYsIndex = mDYsIndices.get(mTop);
mRsIndex = mRsIndices.get(mTop);
if (x != mXsIndex) {
mXsContext.remove(x);
mXs = mXsContext.get(mXsIndex);
mXIndex = mXIndices.get(mXsIndex);
}
if (y != mYsIndex) {
mYsContext.remove(y);
mYs = mYsContext.get(mYsIndex);
mYIndex = mYIndices.get(mYsIndex);
}
if (dx != mDXsIndex) {
mDXsContext.remove(dx);
mDXs = mDXsContext.get(mDXsIndex);
mDXIndex = mDXIndices.get(mDXsIndex);
}
if (dy != mDYsIndex) {
mDYsContext.remove(dy);
mDYs = mDYsContext.get(mDYsIndex);
mDYIndex = mDYIndices.get(mDYsIndex);
}
if (r != mRsIndex) {
mRsContext.remove(r);
mRs = mRsContext.get(mRsIndex);
mRIndex = mRIndices.get(mRsIndex);
}
}
private static void incrementIndices(ArrayList<Integer> indices, int topIndex) {
for (int index = topIndex; index >= 0; index--) {
int xIndex = indices.get(index);
indices.set(index, xIndex + 1);
}
}
// https://www.w3.org/TR/SVG11/text.html#FontSizeProperty
/**
* Get font size from context.
*
* <p>‘font-size’ Value: < absolute-size > | < relative-size > | < length > | < percentage > |
* inherit Initial: medium Applies to: text content elements Inherited: yes, the computed value is
* inherited Percentages: refer to parent element's font size Media: visual Animatable: yes
*
* <p>This property refers to the size of the font from baseline to baseline when multiple lines
* of text are set solid in a multiline layout environment.
*
* <p>For SVG, if a < length > is provided without a unit identifier (e.g., an unqualified number
* such as 128), the SVG user agent processes the < length > as a height value in the current user
* coordinate system.
*
* <p>If a < length > is provided with one of the unit identifiers (e.g., 12pt or 10%), then the
* SVG user agent converts the < length > into a corresponding value in the current user
* coordinate system by applying the rules described in Units.
*
* <p>Except for any additional information provided in this specification, the normative
* definition of the property is in CSS2 ([CSS2], section 15.2.4).
*/
double getFontSize() {
return mFontSize;
}
double nextX(double advance) {
incrementIndices(mXIndices, mXsIndex);
int nextIndex = mXIndex + 1;
if (nextIndex < mXs.length) {
mDX = 0;
mXIndex = n
gitextract_xdt6b6x5/
├── .clang-format
├── .eslintignore
├── .eslintrc.js
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yaml
│ │ └── config.yml
│ ├── ISSUE_TEMPLATE.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ ├── android-build-test.yml
│ ├── check-archs-consistency.yml
│ ├── close-when-stale.yml
│ ├── e2e-android.yml
│ ├── e2e-ios.yml
│ ├── ios-build-test.yml
│ ├── js-build-test.yml
│ ├── macos-build-test.yml
│ ├── needs-more-info.yml
│ ├── needs-repro.yml
│ └── windows-build-test.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .npmignore
├── .prettierrc.js
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── RNSVG.podspec
├── USAGE.md
├── __tests__/
│ ├── __snapshots__/
│ │ └── css.test.tsx.snap
│ ├── css.test.tsx
│ └── e2e/
│ └── GeneralSvgRenderingTest.spec.tsx
├── android/
│ ├── build.gradle
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── proguard-rules.pro
│ ├── spotless.gradle
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── horcrux/
│ │ │ └── svg/
│ │ │ ├── Brush.java
│ │ │ ├── CircleView.java
│ │ │ ├── ClipPathView.java
│ │ │ ├── CustomFilter.java
│ │ │ ├── DefinitionView.java
│ │ │ ├── DefsView.java
│ │ │ ├── EllipseView.java
│ │ │ ├── FeBlendView.java
│ │ │ ├── FeColorMatrixView.java
│ │ │ ├── FeCompositeView.java
│ │ │ ├── FeFloodView.java
│ │ │ ├── FeGaussianBlurView.java
│ │ │ ├── FeMergeView.java
│ │ │ ├── FeOffsetView.java
│ │ │ ├── FilterPrimitiveView.java
│ │ │ ├── FilterProperties.java
│ │ │ ├── FilterRegion.java
│ │ │ ├── FilterUtils.java
│ │ │ ├── FilterView.java
│ │ │ ├── FontData.java
│ │ │ ├── ForeignObjectView.java
│ │ │ ├── GlyphContext.java
│ │ │ ├── GlyphPathBag.java
│ │ │ ├── GroupView.java
│ │ │ ├── ImageView.java
│ │ │ ├── LineView.java
│ │ │ ├── LinearGradientView.java
│ │ │ ├── MarkerView.java
│ │ │ ├── MaskView.java
│ │ │ ├── PathParser.java
│ │ │ ├── PathView.java
│ │ │ ├── PatternView.java
│ │ │ ├── PropHelper.java
│ │ │ ├── RNSVGMarkerPosition.java
│ │ │ ├── RNSVGRenderableManager.java
│ │ │ ├── RadialGradientView.java
│ │ │ ├── RectView.java
│ │ │ ├── RenderableView.java
│ │ │ ├── RenderableViewManager.java
│ │ │ ├── SVGLength.java
│ │ │ ├── SvgPackage.java
│ │ │ ├── SvgView.java
│ │ │ ├── SvgViewManager.java
│ │ │ ├── SvgViewModule.java
│ │ │ ├── SymbolView.java
│ │ │ ├── TSpanView.java
│ │ │ ├── TextLayoutAlgorithm.java
│ │ │ ├── TextPathView.java
│ │ │ ├── TextProperties.java
│ │ │ ├── TextView.java
│ │ │ ├── UseView.java
│ │ │ ├── ViewBox.java
│ │ │ ├── VirtualView.java
│ │ │ └── events/
│ │ │ ├── SvgLoadEvent.java
│ │ │ └── SvgOnLayoutEvent.java
│ │ └── jni/
│ │ ├── CMakeLists.txt
│ │ ├── rnsvg.cpp
│ │ └── rnsvg.h
│ └── paper/
│ └── java/
│ └── com/
│ ├── facebook/
│ │ └── react/
│ │ └── viewmanagers/
│ │ ├── RNSVGCircleManagerDelegate.java
│ │ ├── RNSVGCircleManagerInterface.java
│ │ ├── RNSVGClipPathManagerDelegate.java
│ │ ├── RNSVGClipPathManagerInterface.java
│ │ ├── RNSVGDefsManagerDelegate.java
│ │ ├── RNSVGDefsManagerInterface.java
│ │ ├── RNSVGEllipseManagerDelegate.java
│ │ ├── RNSVGEllipseManagerInterface.java
│ │ ├── RNSVGFeBlendManagerDelegate.java
│ │ ├── RNSVGFeBlendManagerInterface.java
│ │ ├── RNSVGFeColorMatrixManagerDelegate.java
│ │ ├── RNSVGFeColorMatrixManagerInterface.java
│ │ ├── RNSVGFeCompositeManagerDelegate.java
│ │ ├── RNSVGFeCompositeManagerInterface.java
│ │ ├── RNSVGFeFloodManagerDelegate.java
│ │ ├── RNSVGFeFloodManagerInterface.java
│ │ ├── RNSVGFeGaussianBlurManagerDelegate.java
│ │ ├── RNSVGFeGaussianBlurManagerInterface.java
│ │ ├── RNSVGFeMergeManagerDelegate.java
│ │ ├── RNSVGFeMergeManagerInterface.java
│ │ ├── RNSVGFeOffsetManagerDelegate.java
│ │ ├── RNSVGFeOffsetManagerInterface.java
│ │ ├── RNSVGFilterManagerDelegate.java
│ │ ├── RNSVGFilterManagerInterface.java
│ │ ├── RNSVGForeignObjectManagerDelegate.java
│ │ ├── RNSVGForeignObjectManagerInterface.java
│ │ ├── RNSVGGroupManagerDelegate.java
│ │ ├── RNSVGGroupManagerInterface.java
│ │ ├── RNSVGImageManagerDelegate.java
│ │ ├── RNSVGImageManagerInterface.java
│ │ ├── RNSVGLineManagerDelegate.java
│ │ ├── RNSVGLineManagerInterface.java
│ │ ├── RNSVGLinearGradientManagerDelegate.java
│ │ ├── RNSVGLinearGradientManagerInterface.java
│ │ ├── RNSVGMarkerManagerDelegate.java
│ │ ├── RNSVGMarkerManagerInterface.java
│ │ ├── RNSVGMaskManagerDelegate.java
│ │ ├── RNSVGMaskManagerInterface.java
│ │ ├── RNSVGPathManagerDelegate.java
│ │ ├── RNSVGPathManagerInterface.java
│ │ ├── RNSVGPatternManagerDelegate.java
│ │ ├── RNSVGPatternManagerInterface.java
│ │ ├── RNSVGRadialGradientManagerDelegate.java
│ │ ├── RNSVGRadialGradientManagerInterface.java
│ │ ├── RNSVGRectManagerDelegate.java
│ │ ├── RNSVGRectManagerInterface.java
│ │ ├── RNSVGSvgViewAndroidManagerDelegate.java
│ │ ├── RNSVGSvgViewAndroidManagerInterface.java
│ │ ├── RNSVGSymbolManagerDelegate.java
│ │ ├── RNSVGSymbolManagerInterface.java
│ │ ├── RNSVGTSpanManagerDelegate.java
│ │ ├── RNSVGTSpanManagerInterface.java
│ │ ├── RNSVGTextManagerDelegate.java
│ │ ├── RNSVGTextManagerInterface.java
│ │ ├── RNSVGTextPathManagerDelegate.java
│ │ ├── RNSVGTextPathManagerInterface.java
│ │ ├── RNSVGUseManagerDelegate.java
│ │ └── RNSVGUseManagerInterface.java
│ └── horcrux/
│ └── svg/
│ ├── NativeSvgRenderableModuleSpec.java
│ └── NativeSvgViewModuleSpec.java
├── apple/
│ ├── .npmignore
│ ├── Brushes/
│ │ ├── RNSVGBrush.h
│ │ ├── RNSVGBrush.mm
│ │ ├── RNSVGBrushType.h
│ │ ├── RNSVGContextBrush.h
│ │ ├── RNSVGContextBrush.mm
│ │ ├── RNSVGPainter.h
│ │ ├── RNSVGPainter.mm
│ │ ├── RNSVGPainterBrush.h
│ │ ├── RNSVGPainterBrush.mm
│ │ ├── RNSVGSolidColorBrush.h
│ │ └── RNSVGSolidColorBrush.mm
│ ├── Elements/
│ │ ├── RNSVGClipPath.h
│ │ ├── RNSVGClipPath.mm
│ │ ├── RNSVGDefs.h
│ │ ├── RNSVGDefs.mm
│ │ ├── RNSVGForeignObject.h
│ │ ├── RNSVGForeignObject.mm
│ │ ├── RNSVGGroup.h
│ │ ├── RNSVGGroup.mm
│ │ ├── RNSVGImage.h
│ │ ├── RNSVGImage.mm
│ │ ├── RNSVGLinearGradient.h
│ │ ├── RNSVGLinearGradient.mm
│ │ ├── RNSVGMarker.h
│ │ ├── RNSVGMarker.mm
│ │ ├── RNSVGMask.h
│ │ ├── RNSVGMask.mm
│ │ ├── RNSVGPath.h
│ │ ├── RNSVGPath.mm
│ │ ├── RNSVGPattern.h
│ │ ├── RNSVGPattern.mm
│ │ ├── RNSVGRadialGradient.h
│ │ ├── RNSVGRadialGradient.mm
│ │ ├── RNSVGSvgView.h
│ │ ├── RNSVGSvgView.mm
│ │ ├── RNSVGSymbol.h
│ │ ├── RNSVGSymbol.mm
│ │ ├── RNSVGUse.h
│ │ └── RNSVGUse.mm
│ ├── Filters/
│ │ ├── MetalCI/
│ │ │ ├── RNSVGArithmeticFilter.appletvos.air
│ │ │ ├── RNSVGArithmeticFilter.appletvos.metallib
│ │ │ ├── RNSVGArithmeticFilter.h
│ │ │ ├── RNSVGArithmeticFilter.iphoneos.air
│ │ │ ├── RNSVGArithmeticFilter.iphoneos.metallib
│ │ │ ├── RNSVGArithmeticFilter.macosx.air
│ │ │ ├── RNSVGArithmeticFilter.macosx.metallib
│ │ │ ├── RNSVGArithmeticFilter.metal
│ │ │ ├── RNSVGArithmeticFilter.mm
│ │ │ ├── RNSVGArithmeticFilter.xros.air
│ │ │ ├── RNSVGArithmeticFilter.xros.metallib
│ │ │ ├── RNSVGCompositeXor.appletvos.air
│ │ │ ├── RNSVGCompositeXor.appletvos.metallib
│ │ │ ├── RNSVGCompositeXor.h
│ │ │ ├── RNSVGCompositeXor.iphoneos.air
│ │ │ ├── RNSVGCompositeXor.iphoneos.metallib
│ │ │ ├── RNSVGCompositeXor.macosx.air
│ │ │ ├── RNSVGCompositeXor.macosx.metallib
│ │ │ ├── RNSVGCompositeXor.metal
│ │ │ ├── RNSVGCompositeXor.mm
│ │ │ ├── RNSVGCompositeXor.xros.air
│ │ │ ├── RNSVGCompositeXor.xros.metallib
│ │ │ ├── RNSVGCustomFilter.h
│ │ │ └── RNSVGCustomFilter.mm
│ │ ├── RNSVGBlendMode.h
│ │ ├── RNSVGColorMatrixType.h
│ │ ├── RNSVGCompositeOperator.h
│ │ ├── RNSVGEdgeMode.h
│ │ ├── RNSVGFeBlend.h
│ │ ├── RNSVGFeBlend.mm
│ │ ├── RNSVGFeColorMatrix.h
│ │ ├── RNSVGFeColorMatrix.mm
│ │ ├── RNSVGFeComposite.h
│ │ ├── RNSVGFeComposite.mm
│ │ ├── RNSVGFeFlood.h
│ │ ├── RNSVGFeFlood.mm
│ │ ├── RNSVGFeGaussianBlur.h
│ │ ├── RNSVGFeGaussianBlur.mm
│ │ ├── RNSVGFeMerge.h
│ │ ├── RNSVGFeMerge.mm
│ │ ├── RNSVGFeOffset.h
│ │ ├── RNSVGFeOffset.mm
│ │ ├── RNSVGFilter.h
│ │ ├── RNSVGFilter.mm
│ │ ├── RNSVGFilterPrimitive.h
│ │ ├── RNSVGFilterPrimitive.mm
│ │ ├── RNSVGFilterRegion.h
│ │ └── RNSVGFilterRegion.mm
│ ├── RNSVG.xcodeproj/
│ │ └── project.pbxproj
│ ├── RNSVGContainer.h
│ ├── RNSVGNode.h
│ ├── RNSVGNode.mm
│ ├── RNSVGRenderable.h
│ ├── RNSVGRenderable.mm
│ ├── RNSVGRenderableModule.h
│ ├── RNSVGRenderableModule.mm
│ ├── RNSVGSvgViewModule.h
│ ├── RNSVGSvgViewModule.mm
│ ├── RNSVGUIKit.h
│ ├── RNSVGUIKit.macos.mm
│ ├── Shapes/
│ │ ├── RNSVGCircle.h
│ │ ├── RNSVGCircle.mm
│ │ ├── RNSVGEllipse.h
│ │ ├── RNSVGEllipse.mm
│ │ ├── RNSVGLine.h
│ │ ├── RNSVGLine.mm
│ │ ├── RNSVGRect.h
│ │ └── RNSVGRect.mm
│ ├── Text/
│ │ ├── RNSVGFontData.h
│ │ ├── RNSVGFontData.mm
│ │ ├── RNSVGGlyphContext.h
│ │ ├── RNSVGGlyphContext.mm
│ │ ├── RNSVGPropHelper.h
│ │ ├── RNSVGPropHelper.mm
│ │ ├── RNSVGTSpan.h
│ │ ├── RNSVGTSpan.mm
│ │ ├── RNSVGText.h
│ │ ├── RNSVGText.mm
│ │ ├── RNSVGTextPath.h
│ │ ├── RNSVGTextPath.mm
│ │ ├── RNSVGTextProperties.h
│ │ ├── RNSVGTextProperties.mm
│ │ ├── RNSVGTopAlignedLabel.h
│ │ ├── RNSVGTopAlignedLabel.ios.mm
│ │ └── RNSVGTopAlignedLabel.macos.mm
│ ├── Utils/
│ │ ├── RCTConvert+RNSVG.h
│ │ ├── RCTConvert+RNSVG.mm
│ │ ├── RNSVGBezierElement.h
│ │ ├── RNSVGBezierElement.mm
│ │ ├── RNSVGCGFCRule.h
│ │ ├── RNSVGConvert.h
│ │ ├── RNSVGConvert.mm
│ │ ├── RNSVGFabricConversions.h
│ │ ├── RNSVGLength.h
│ │ ├── RNSVGLength.mm
│ │ ├── RNSVGMarkerPosition.h
│ │ ├── RNSVGMarkerPosition.mm
│ │ ├── RNSVGMaskType.h
│ │ ├── RNSVGPathMeasure.h
│ │ ├── RNSVGPathMeasure.mm
│ │ ├── RNSVGPathParser.h
│ │ ├── RNSVGPathParser.mm
│ │ ├── RNSVGRenderUtils.h
│ │ ├── RNSVGRenderUtils.mm
│ │ ├── RNSVGUnits.h
│ │ ├── RNSVGVBMOS.h
│ │ ├── RNSVGVectorEffect.h
│ │ ├── RNSVGViewBox.h
│ │ └── RNSVGViewBox.mm
│ └── ViewManagers/
│ ├── RNSVGCircleManager.h
│ ├── RNSVGCircleManager.mm
│ ├── RNSVGClipPathManager.h
│ ├── RNSVGClipPathManager.mm
│ ├── RNSVGDefsManager.h
│ ├── RNSVGDefsManager.mm
│ ├── RNSVGEllipseManager.h
│ ├── RNSVGEllipseManager.mm
│ ├── RNSVGFeBlendManager.h
│ ├── RNSVGFeBlendManager.mm
│ ├── RNSVGFeColorMatrixManager.h
│ ├── RNSVGFeColorMatrixManager.mm
│ ├── RNSVGFeCompositeManager.h
│ ├── RNSVGFeCompositeManager.mm
│ ├── RNSVGFeFloodManager.h
│ ├── RNSVGFeFloodManager.mm
│ ├── RNSVGFeGaussianBlurManager.h
│ ├── RNSVGFeGaussianBlurManager.mm
│ ├── RNSVGFeMergeManager.h
│ ├── RNSVGFeMergeManager.mm
│ ├── RNSVGFeOffsetManager.h
│ ├── RNSVGFeOffsetManager.mm
│ ├── RNSVGFilterManager.h
│ ├── RNSVGFilterManager.mm
│ ├── RNSVGFilterPrimitiveManager.h
│ ├── RNSVGFilterPrimitiveManager.mm
│ ├── RNSVGForeignObjectManager.h
│ ├── RNSVGForeignObjectManager.mm
│ ├── RNSVGGroupManager.h
│ ├── RNSVGGroupManager.mm
│ ├── RNSVGImageManager.h
│ ├── RNSVGImageManager.mm
│ ├── RNSVGLineManager.h
│ ├── RNSVGLineManager.mm
│ ├── RNSVGLinearGradientManager.h
│ ├── RNSVGLinearGradientManager.mm
│ ├── RNSVGMarkerManager.h
│ ├── RNSVGMarkerManager.mm
│ ├── RNSVGMaskManager.h
│ ├── RNSVGMaskManager.mm
│ ├── RNSVGNodeManager.h
│ ├── RNSVGNodeManager.mm
│ ├── RNSVGPathManager.h
│ ├── RNSVGPathManager.mm
│ ├── RNSVGPatternManager.h
│ ├── RNSVGPatternManager.mm
│ ├── RNSVGRadialGradientManager.h
│ ├── RNSVGRadialGradientManager.mm
│ ├── RNSVGRectManager.h
│ ├── RNSVGRectManager.mm
│ ├── RNSVGRenderableManager.h
│ ├── RNSVGRenderableManager.mm
│ ├── RNSVGSvgViewManager.h
│ ├── RNSVGSvgViewManager.mm
│ ├── RNSVGSymbolManager.h
│ ├── RNSVGSymbolManager.mm
│ ├── RNSVGTSpanManager.h
│ ├── RNSVGTSpanManager.mm
│ ├── RNSVGTextManager.h
│ ├── RNSVGTextManager.mm
│ ├── RNSVGTextPathManager.h
│ ├── RNSVGTextPathManager.mm
│ ├── RNSVGUseManager.h
│ └── RNSVGUseManager.mm
├── apps/
│ ├── common/
│ │ ├── .eslintrc.js
│ │ ├── .prettierrc.js
│ │ ├── example/
│ │ │ ├── ListScreen.tsx
│ │ │ ├── e2e/
│ │ │ │ ├── TestingView.tsx
│ │ │ │ ├── icon.tsx
│ │ │ │ ├── index.macos.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── index.web.tsx
│ │ │ │ └── index.windows.tsx
│ │ │ ├── examples/
│ │ │ │ ├── Circle.tsx
│ │ │ │ ├── Clipping.tsx
│ │ │ │ ├── Ellipse.tsx
│ │ │ │ ├── Empty.tsx
│ │ │ │ ├── FilterImage/
│ │ │ │ │ ├── FilterPicker.tsx
│ │ │ │ │ ├── LocalImage.tsx
│ │ │ │ │ ├── RemoteImage.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── Filters/
│ │ │ │ │ ├── FeBlend.tsx
│ │ │ │ │ ├── FeColorMatrix.tsx
│ │ │ │ │ ├── FeComposite.tsx
│ │ │ │ │ ├── FeDropShadow.tsx
│ │ │ │ │ ├── FeFlood.tsx
│ │ │ │ │ ├── FeGaussianBlur.tsx
│ │ │ │ │ ├── FeMerge.tsx
│ │ │ │ │ ├── FeOffset.tsx
│ │ │ │ │ ├── ReanimatedFeColorMatrix.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── ForeignObject.tsx
│ │ │ │ ├── G.tsx
│ │ │ │ ├── Gradients.tsx
│ │ │ │ ├── Image.tsx
│ │ │ │ ├── Line.tsx
│ │ │ │ ├── Markers.tsx
│ │ │ │ ├── Mask.tsx
│ │ │ │ ├── PanResponder.tsx
│ │ │ │ ├── Path.tsx
│ │ │ │ ├── Polygon.tsx
│ │ │ │ ├── Polyline.tsx
│ │ │ │ ├── Reanimated.tsx
│ │ │ │ ├── Reanimated.windows.tsx
│ │ │ │ ├── Rect.tsx
│ │ │ │ ├── Reusable.tsx
│ │ │ │ ├── Stroking.tsx
│ │ │ │ ├── Svg.tsx
│ │ │ │ ├── Text.tsx
│ │ │ │ ├── Text.windows.tsx
│ │ │ │ ├── TouchEvents.tsx
│ │ │ │ ├── Transforms.tsx
│ │ │ │ ├── complex/
│ │ │ │ │ ├── PolygonBunny.tsx
│ │ │ │ │ ├── WorldMap.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── index.tsx
│ │ │ └── utils/
│ │ │ ├── commonStyles.ts
│ │ │ ├── composeComponent.tsx
│ │ │ ├── types.ts
│ │ │ └── usePersistNavigation.ts
│ │ ├── index.tsx
│ │ ├── noNavigationApp.tsx
│ │ ├── test/
│ │ │ ├── ColorTest.tsx
│ │ │ ├── MountUnmount.tsx
│ │ │ ├── PointerEventsBoxNone.tsx
│ │ │ ├── Test1318.tsx
│ │ │ ├── Test1374.tsx
│ │ │ ├── Test1442.tsx
│ │ │ ├── Test1451.tsx
│ │ │ ├── Test1718.tsx
│ │ │ ├── Test1790.tsx
│ │ │ ├── Test1813.tsx
│ │ │ ├── Test1845.tsx
│ │ │ ├── Test1986.tsx
│ │ │ ├── Test2071.tsx
│ │ │ ├── Test2080.tsx
│ │ │ ├── Test2086.tsx
│ │ │ ├── Test2089.tsx
│ │ │ ├── Test2142.tsx
│ │ │ ├── Test2148.tsx
│ │ │ ├── Test2170.tsx
│ │ │ ├── Test2196.tsx
│ │ │ ├── Test2233.tsx
│ │ │ ├── Test2248.tsx
│ │ │ ├── Test2266.tsx
│ │ │ ├── Test2276.tsx
│ │ │ ├── Test2327.tsx
│ │ │ ├── Test2363.tsx
│ │ │ ├── Test2366.tsx
│ │ │ ├── Test2380.tsx
│ │ │ ├── Test2397.tsx
│ │ │ ├── Test2403.tsx
│ │ │ ├── Test2407.tsx
│ │ │ ├── Test2417.tsx
│ │ │ ├── Test2455.tsx
│ │ │ ├── Test2471.tsx
│ │ │ ├── Test2520.tsx
│ │ │ ├── Test2670.tsx
│ │ │ └── index.tsx
│ │ └── tsconfig.json
│ ├── fabric-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── android/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── debug.keystore
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── debug/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── fabricexample/
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── MainApplication.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── rn_edit_text_material.xml
│ │ │ │ └── values/
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── ios/
│ │ │ ├── .xcode.env
│ │ │ ├── FabricExample/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Images.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Info.plist
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ ├── FabricExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── FabricExample.xcscheme
│ │ │ ├── FabricExample.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── Podfile
│ │ ├── jest.config.js
│ │ ├── metro.config.js
│ │ ├── package.json
│ │ └── patches/
│ │ └── react-native-view-shot+4.0.0-alpha.2.patch
│ ├── fabric-macos-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .prettierrc.js
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── __tests__/
│ │ │ └── App.test.tsx
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── jest.config.js
│ │ ├── macos/
│ │ │ ├── .gitignore
│ │ │ ├── .xcode.env
│ │ │ ├── FabricMacOSExample-macOS/
│ │ │ │ ├── AppDelegate.h
│ │ │ │ ├── AppDelegate.mm
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── FabricMacOSExample.entitlements
│ │ │ │ ├── Info.plist
│ │ │ │ └── main.m
│ │ │ ├── FabricMacOSExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── FabricMacOSExample-macOS.xcscheme
│ │ │ ├── FabricMacOSExample.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ ├── Podfile
│ │ │ └── PrivacyInfo.xcprivacy
│ │ ├── metro.config.js
│ │ └── package.json
│ ├── fabric-windows-example/
│ │ ├── .gitignore
│ │ ├── .prettierrc.js
│ │ ├── .ruby-version
│ │ ├── .watchmanconfig
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── jest.config.js
│ │ ├── jest.config.windows.js
│ │ ├── metro.config.js
│ │ ├── package.json
│ │ └── windows/
│ │ ├── .gitignore
│ │ ├── ExperimentalFeatures.props
│ │ ├── FabricExample/
│ │ │ ├── .gitignore
│ │ │ ├── AutolinkedNativeModules.g.cpp
│ │ │ ├── AutolinkedNativeModules.g.h
│ │ │ ├── AutolinkedNativeModules.g.props
│ │ │ ├── AutolinkedNativeModules.g.targets
│ │ │ ├── FabricExample.cpp
│ │ │ ├── FabricExample.h
│ │ │ ├── FabricExample.rc
│ │ │ ├── FabricExample.vcxproj
│ │ │ ├── FabricExample.vcxproj.filters
│ │ │ ├── packages.lock.json
│ │ │ ├── pch.cpp
│ │ │ ├── pch.h
│ │ │ ├── resource.h
│ │ │ └── targetver.h
│ │ ├── FabricExample.Package/
│ │ │ ├── FabricExample.Package.wapproj
│ │ │ ├── Package.appxmanifest
│ │ │ └── packages.lock.json
│ │ └── FabricExample.sln
│ ├── paper-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── debug.keystore
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── debug/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── paperexample/
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── MainApplication.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── rn_edit_text_material.xml
│ │ │ │ └── values/
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── ios/
│ │ │ ├── .xcode.env
│ │ │ ├── PaperExample/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Images.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Info.plist
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ ├── PaperExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── PaperExample.xcscheme
│ │ │ ├── PaperExample.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── Podfile
│ │ ├── jest.config.js
│ │ ├── metro.config.js
│ │ ├── package.json
│ │ └── patches/
│ │ └── react-native-view-shot+4.0.0-alpha.2.patch
│ ├── paper-macos-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .prettierrc.js
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── __tests__/
│ │ │ └── App.test.tsx
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── jest.config.js
│ │ ├── macos/
│ │ │ ├── .gitignore
│ │ │ ├── .xcode.env
│ │ │ ├── PaperMacOSExample-macOS/
│ │ │ │ ├── AppDelegate.h
│ │ │ │ ├── AppDelegate.mm
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ ├── PaperMacOSExample.entitlements
│ │ │ │ └── main.m
│ │ │ ├── PaperMacOSExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── PaperMacOSExample-macOS.xcscheme
│ │ │ ├── PaperMacOSExample.xcworkspace/
│ │ │ │ └── contents.xcworkspacedata
│ │ │ ├── Podfile
│ │ │ └── PrivacyInfo.xcprivacy
│ │ ├── metro.config.js
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── paper-windows-example/
│ │ ├── .gitignore
│ │ ├── .watchmanconfig
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── jest.config.js
│ │ ├── metro.config.js
│ │ ├── msbuild.binlog
│ │ ├── package.json
│ │ ├── patches/
│ │ │ └── react-native-windows+0.74.23.patch
│ │ └── windows/
│ │ ├── .gitignore
│ │ ├── Example/
│ │ │ ├── .gitignore
│ │ │ ├── App.cpp
│ │ │ ├── App.h
│ │ │ ├── App.idl
│ │ │ ├── App.xaml
│ │ │ ├── AutolinkedNativeModules.g.cpp
│ │ │ ├── AutolinkedNativeModules.g.h
│ │ │ ├── AutolinkedNativeModules.g.props
│ │ │ ├── AutolinkedNativeModules.g.targets
│ │ │ ├── Example.vcxproj
│ │ │ ├── Example.vcxproj.filters
│ │ │ ├── MainPage.cpp
│ │ │ ├── MainPage.h
│ │ │ ├── MainPage.idl
│ │ │ ├── MainPage.xaml
│ │ │ ├── Package.appxmanifest
│ │ │ ├── PropertySheet.props
│ │ │ ├── ReactPackageProvider.cpp
│ │ │ ├── ReactPackageProvider.h
│ │ │ ├── packages.lock.json
│ │ │ ├── pch.cpp
│ │ │ └── pch.h
│ │ ├── Example.sln
│ │ ├── ExperimentalFeatures.props
│ │ └── NuGet.Config
│ ├── tests-example/
│ │ ├── .bundle/
│ │ │ └── config
│ │ ├── .gitignore
│ │ ├── .watchmanconfig
│ │ ├── Gemfile
│ │ ├── __tests__/
│ │ │ └── App.test.tsx
│ │ ├── android/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── debug.keystore
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── testsexample/
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── MainApplication.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── rn_edit_text_material.xml
│ │ │ │ └── values/
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── app.json
│ │ ├── babel.config.js
│ │ ├── index.js
│ │ ├── ios/
│ │ │ ├── .xcode.env
│ │ │ ├── Podfile
│ │ │ ├── TestsExample/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Images.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Info.plist
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ ├── TestsExample.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── TestsExample.xcscheme
│ │ │ └── TestsExample.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── jest.config.js
│ │ ├── metro.config.js
│ │ └── package.json
│ └── web-example/
│ ├── .gitignore
│ ├── app.json
│ ├── babel.config.js
│ ├── index.js
│ ├── metro.config.js
│ ├── package.json
│ ├── patches/
│ │ └── react-native-worklets+0.6.0.patch
│ └── tsconfig.json
├── babel.config.js
├── common/
│ └── cpp/
│ └── react/
│ └── renderer/
│ └── components/
│ └── rnsvg/
│ ├── RNSVGComponentDescriptors.h
│ ├── RNSVGConcreteShadowNode.h
│ ├── RNSVGImageComponentDescriptor.h
│ ├── RNSVGImageShadowNode.cpp
│ ├── RNSVGImageShadowNode.h
│ ├── RNSVGImageState.cpp
│ ├── RNSVGImageState.h
│ ├── RNSVGLayoutableShadowNode.cpp
│ ├── RNSVGLayoutableShadowNode.h
│ ├── RNSVGShadowNodes.cpp
│ └── RNSVGShadowNodes.h
├── css/
│ └── package.json
├── e2e/
│ ├── env.ts
│ ├── failedCases.json
│ ├── generateReferences.ts
│ ├── globals.d.ts
│ ├── helpers.ts
│ ├── matchTestCases.ts
│ ├── readFailedCases.ts
│ ├── setupJest.ts
│ ├── teardownJest.ts
│ └── types.ts
├── filter-image/
│ └── package.json
├── jest.config.ts
├── package.json
├── react-native.config.js
├── scripts/
│ ├── codegen-check-consistency.js
│ ├── codegen-sync-archs.js
│ ├── codegen-utils.js
│ ├── format-java.js
│ ├── metal.js
│ └── rnsvg_utils.rb
├── src/
│ ├── ReactNativeSVG.ts
│ ├── ReactNativeSVG.web.ts
│ ├── css/
│ │ ├── LocalSvg.tsx
│ │ ├── css.tsx
│ │ └── index.tsx
│ ├── deprecated.tsx
│ ├── elements/
│ │ ├── Circle.tsx
│ │ ├── ClipPath.tsx
│ │ ├── Defs.tsx
│ │ ├── Ellipse.tsx
│ │ ├── ForeignObject.tsx
│ │ ├── G.tsx
│ │ ├── Image.tsx
│ │ ├── Line.tsx
│ │ ├── LinearGradient.tsx
│ │ ├── Marker.tsx
│ │ ├── Mask.tsx
│ │ ├── Path.tsx
│ │ ├── Pattern.tsx
│ │ ├── Polygon.tsx
│ │ ├── Polyline.tsx
│ │ ├── RadialGradient.tsx
│ │ ├── Rect.tsx
│ │ ├── Shape.tsx
│ │ ├── Stop.tsx
│ │ ├── Svg.tsx
│ │ ├── Symbol.tsx
│ │ ├── TSpan.tsx
│ │ ├── Text.tsx
│ │ ├── TextPath.tsx
│ │ ├── Use.tsx
│ │ └── filters/
│ │ ├── FeBlend.tsx
│ │ ├── FeColorMatrix.tsx
│ │ ├── FeComponentTransfer.tsx
│ │ ├── FeComponentTransferFunction.tsx
│ │ ├── FeComposite.tsx
│ │ ├── FeConvolveMatrix.tsx
│ │ ├── FeDiffuseLighting.tsx
│ │ ├── FeDisplacementMap.tsx
│ │ ├── FeDistantLight.tsx
│ │ ├── FeDropShadow.tsx
│ │ ├── FeFlood.tsx
│ │ ├── FeGaussianBlur.tsx
│ │ ├── FeImage.tsx
│ │ ├── FeMerge.tsx
│ │ ├── FeMergeNode.tsx
│ │ ├── FeMorphology.tsx
│ │ ├── FeOffset.tsx
│ │ ├── FePointLight.tsx
│ │ ├── FeSpecularLighting.tsx
│ │ ├── FeSpotLight.tsx
│ │ ├── FeTile.tsx
│ │ ├── FeTurbulence.tsx
│ │ ├── Filter.tsx
│ │ ├── FilterPrimitive.tsx
│ │ └── types.ts
│ ├── elements.ts
│ ├── elements.web.ts
│ ├── fabric/
│ │ ├── AndroidSvgViewNativeComponent.ts
│ │ ├── CircleNativeComponent.ts
│ │ ├── ClipPathNativeComponent.ts
│ │ ├── DefsNativeComponent.ts
│ │ ├── EllipseNativeComponent.ts
│ │ ├── FeBlendNativeComponent.ts
│ │ ├── FeColorMatrixNativeComponent.ts
│ │ ├── FeCompositeNativeComponent.ts
│ │ ├── FeFloodNativeComponent.ts
│ │ ├── FeGaussianBlurNativeComponent.ts
│ │ ├── FeMergeNativeComponent.ts
│ │ ├── FeOffsetNativeComponent.ts
│ │ ├── FilterNativeComponent.ts
│ │ ├── ForeignObjectNativeComponent.ts
│ │ ├── GroupNativeComponent.ts
│ │ ├── IOSSvgViewNativeComponent.ts
│ │ ├── ImageNativeComponent.ts
│ │ ├── LineNativeComponent.ts
│ │ ├── LinearGradientNativeComponent.ts
│ │ ├── MarkerNativeComponent.ts
│ │ ├── MaskNativeComponent.ts
│ │ ├── NativeSvgRenderableModule.ts
│ │ ├── NativeSvgViewModule.ts
│ │ ├── PathNativeComponent.ts
│ │ ├── PatternNativeComponent.ts
│ │ ├── RadialGradientNativeComponent.ts
│ │ ├── RectNativeComponent.ts
│ │ ├── SymbolNativeComponent.ts
│ │ ├── TSpanNativeComponent.ts
│ │ ├── TextNativeComponent.ts
│ │ ├── TextPathNativeComponent.ts
│ │ ├── UseNativeComponent.ts
│ │ ├── codegenUtils.ts
│ │ ├── index.ts
│ │ └── utils.ts
│ ├── filter-image/
│ │ ├── FilterImage.tsx
│ │ ├── extract/
│ │ │ ├── extractFilters.ts
│ │ │ ├── extractFiltersString.d.ts
│ │ │ ├── extractFiltersString.js
│ │ │ ├── extractFiltersString.pegjs
│ │ │ └── extractImage.ts
│ │ ├── index.tsx
│ │ └── types.ts
│ ├── index.ts
│ ├── lib/
│ │ ├── Matrix2D.ts
│ │ ├── SvgTouchableMixin.ts
│ │ ├── extract/
│ │ │ ├── colors.ts
│ │ │ ├── extractBrush.ts
│ │ │ ├── extractFill.ts
│ │ │ ├── extractFilter.ts
│ │ │ ├── extractGradient.ts
│ │ │ ├── extractLengthList.ts
│ │ │ ├── extractOpacity.ts
│ │ │ ├── extractPolyPoints.ts
│ │ │ ├── extractProps.ts
│ │ │ ├── extractProps.windows.ts
│ │ │ ├── extractResponder.ts
│ │ │ ├── extractStroke.ts
│ │ │ ├── extractText.tsx
│ │ │ ├── extractTransform.ts
│ │ │ ├── extractViewBox.ts
│ │ │ ├── transform.d.ts
│ │ │ ├── transform.js
│ │ │ ├── transform.peg
│ │ │ ├── transformToRn.d.ts
│ │ │ ├── transformToRn.js
│ │ │ ├── transformToRn.pegjs
│ │ │ └── types.ts
│ │ ├── maskType.ts
│ │ ├── resolve.ts
│ │ ├── resolveAssetUri.ts
│ │ ├── units.ts
│ │ ├── util.ts
│ │ └── utils/
│ │ └── convertPercentageColor.ts
│ ├── utils/
│ │ └── fetchData.ts
│ ├── web/
│ │ ├── WebShape.ts
│ │ ├── types.ts
│ │ └── utils/
│ │ ├── convertInt32Color.ts
│ │ ├── hasProperty.ts
│ │ ├── index.ts
│ │ ├── parseTransform.ts
│ │ └── prepare.ts
│ ├── xml.tsx
│ └── xmlTags.ts
├── tsconfig.json
└── windows/
├── .clang-format
├── .gitignore
├── ExperimentalFeatures.props
├── NuGet.Config
├── RNSVG/
│ ├── BrushView.cpp
│ ├── BrushView.h
│ ├── CircleView.cpp
│ ├── CircleView.h
│ ├── CircleViewManager.cpp
│ ├── CircleViewManager.h
│ ├── ClipPathView.cpp
│ ├── ClipPathView.h
│ ├── ClipPathViewManager.cpp
│ ├── ClipPathViewManager.h
│ ├── D2DBrush.cpp
│ ├── D2DBrush.h
│ ├── D2DDevice.cpp
│ ├── D2DDevice.h
│ ├── D2DDeviceContext.cpp
│ ├── D2DDeviceContext.h
│ ├── D2DGeometry.cpp
│ ├── D2DGeometry.h
│ ├── D2DHelpers.h
│ ├── DefsView.cpp
│ ├── DefsView.h
│ ├── DefsViewManager.cpp
│ ├── DefsViewManager.h
│ ├── DirectXDeviceManager.cpp
│ ├── DirectXDeviceManager.h
│ ├── EllipseView.cpp
│ ├── EllipseView.h
│ ├── EllipseViewManager.cpp
│ ├── EllipseViewManager.h
│ ├── Fabric/
│ │ ├── CircleView.cpp
│ │ ├── CircleView.h
│ │ ├── ClipPathView.cpp
│ │ ├── ClipPathView.h
│ │ ├── D2DHelpers.h
│ │ ├── DefsView.cpp
│ │ ├── DefsView.h
│ │ ├── EllipseView.cpp
│ │ ├── EllipseView.h
│ │ ├── GroupView.cpp
│ │ ├── GroupView.h
│ │ ├── ImageView.cpp
│ │ ├── ImageView.h
│ │ ├── LineView.cpp
│ │ ├── LineView.h
│ │ ├── LinearGradientView.cpp
│ │ ├── LinearGradientView.h
│ │ ├── PathView.cpp
│ │ ├── PathView.h
│ │ ├── RadialGradientView.cpp
│ │ ├── RadialGradientView.h
│ │ ├── RectView.cpp
│ │ ├── RectView.h
│ │ ├── RenderableView.cpp
│ │ ├── RenderableView.h
│ │ ├── SvgStrings.h
│ │ ├── SvgView.cpp
│ │ ├── SvgView.h
│ │ ├── UnsupportedSvgView.cpp
│ │ ├── UnsupportedSvgView.h
│ │ ├── UseView.cpp
│ │ └── UseView.h
│ ├── GroupView.cpp
│ ├── GroupView.h
│ ├── GroupViewManager.cpp
│ ├── GroupViewManager.h
│ ├── ImageView.cpp
│ ├── ImageView.h
│ ├── ImageViewManager.cpp
│ ├── ImageViewManager.h
│ ├── LineView.cpp
│ ├── LineView.h
│ ├── LineViewManager.cpp
│ ├── LineViewManager.h
│ ├── LinearGradientView.cpp
│ ├── LinearGradientView.h
│ ├── LinearGradientViewManager.cpp
│ ├── LinearGradientViewManager.h
│ ├── MarkerView.cpp
│ ├── MarkerView.h
│ ├── MarkerViewManager.cpp
│ ├── MarkerViewManager.h
│ ├── MaskView.cpp
│ ├── MaskView.h
│ ├── MaskViewManager.cpp
│ ├── MaskViewManager.h
│ ├── Paper.idl
│ ├── PathView.cpp
│ ├── PathView.h
│ ├── PathViewManager.cpp
│ ├── PathViewManager.h
│ ├── PatternView.cpp
│ ├── PatternView.h
│ ├── PatternViewManager.cpp
│ ├── PatternViewManager.h
│ ├── PropertySheet.props
│ ├── RNSVG.def
│ ├── RNSVG.rc
│ ├── RNSVG.vcxproj
│ ├── RNSVG.vcxproj.filters
│ ├── RNSVGModule.h
│ ├── RadialGradientView.cpp
│ ├── RadialGradientView.h
│ ├── RadialGradientViewManager.cpp
│ ├── RadialGradientViewManager.h
│ ├── ReactPackageProvider.cpp
│ ├── ReactPackageProvider.h
│ ├── ReactPackageProvider.idl
│ ├── RectView.cpp
│ ├── RectView.h
│ ├── RectViewManager.cpp
│ ├── RectViewManager.h
│ ├── RenderableView.cpp
│ ├── RenderableView.h
│ ├── RenderableViewManager.cpp
│ ├── RenderableViewManager.h
│ ├── SVGLength.cpp
│ ├── SVGLength.h
│ ├── SvgView.cpp
│ ├── SvgView.h
│ ├── SvgViewManager.cpp
│ ├── SvgViewManager.h
│ ├── SymbolView.cpp
│ ├── SymbolView.h
│ ├── SymbolViewManager.cpp
│ ├── SymbolViewManager.h
│ ├── TSpanView.cpp
│ ├── TSpanView.h
│ ├── TSpanViewManager.cpp
│ ├── TSpanViewManager.h
│ ├── TextView.cpp
│ ├── TextView.h
│ ├── TextViewManager.cpp
│ ├── TextViewManager.h
│ ├── Types.idl
│ ├── UnsupportedSvgViewManager.cpp
│ ├── UnsupportedSvgViewManager.h
│ ├── UseView.cpp
│ ├── UseView.h
│ ├── UseViewManager.cpp
│ ├── UseViewManager.h
│ ├── Utils.h
│ ├── ViewManagers.idl
│ ├── Views.idl
│ ├── packages.lock.json
│ ├── pch.cpp
│ ├── pch.h
│ ├── resource.h
│ ├── targetver.h
│ └── versionoverrides.rc
└── RNSVG.sln
Showing preview only (269K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3169 symbols across 479 files)
FILE: android/src/main/java/com/horcrux/svg/Brush.java
class Brush (line 25) | class Brush {
method Brush (line 39) | Brush(BrushType type, SVGLength[] points, BrushUnits units) {
method setContentUnits (line 45) | void setContentUnits(BrushUnits units) {
method setPattern (line 49) | void setPattern(PatternView pattern) {
type BrushType (line 53) | enum BrushType {
type BrushUnits (line 59) | enum BrushUnits {
method parseGradientStops (line 64) | private static void parseGradientStops(
method setUserSpaceBoundingBox (line 76) | void setUserSpaceBoundingBox(Rect userSpaceBoundingBox) {
method setGradientColors (line 80) | void setGradientColors(ReadableArray colors) {
method setGradientTransform (line 84) | void setGradientTransform(Matrix matrix) {
method getPaintRect (line 88) | private RectF getPaintRect(RectF pathBoundingBox) {
method getVal (line 103) | private double getVal(SVGLength length, double relative, float scale, ...
method setupPaint (line 112) | void setupPaint(Paint paint, RectF pathBoundingBox, float scale, float...
FILE: android/src/main/java/com/horcrux/svg/CircleView.java
class CircleView (line 19) | @SuppressLint("ViewConstructor")
method CircleView (line 25) | public CircleView(ReactContext reactContext) {
method setCx (line 29) | public void setCx(Dynamic cx) {
method setCy (line 34) | public void setCy(Dynamic cy) {
method setR (line 39) | public void setR(Dynamic r) {
method getPath (line 44) | @Override
FILE: android/src/main/java/com/horcrux/svg/ClipPathView.java
class ClipPathView (line 18) | @SuppressLint("ViewConstructor")
method ClipPathView (line 21) | public ClipPathView(ReactContext reactContext) {
method draw (line 25) | @Override
method saveDefinition (line 32) | @Override
method isResponsible (line 37) | @Override
method hitTest (line 42) | @Override
method mergeProperties (line 47) | @Override
method resetProperties (line 50) | @Override
FILE: android/src/main/java/com/horcrux/svg/CustomFilter.java
type CustomFilterFunction (line 5) | interface CustomFilterFunction {
method execute (line 6) | float[] execute(float[] src, float[] dst);
class CustomFilter (line 9) | public class CustomFilter {
method apply (line 10) | public static Bitmap apply(Bitmap srcBmp, Bitmap dstBmp, CustomFilterF...
method normalizeFromFloat (line 48) | public static int normalizeFromFloat(float c) {
method normalizeFromFloats (line 52) | public static int normalizeFromFloats(float[] res) {
FILE: android/src/main/java/com/horcrux/svg/DefinitionView.java
class DefinitionView (line 17) | @SuppressLint("ViewConstructor")
method DefinitionView (line 20) | DefinitionView(ReactContext reactContext) {
method draw (line 24) | @SuppressWarnings("EmptyMethod")
method isResponsible (line 27) | @Override
method getPath (line 32) | @Override
method hitTest (line 37) | @Override
FILE: android/src/main/java/com/horcrux/svg/DefsView.java
class DefsView (line 17) | @SuppressLint("ViewConstructor")
method DefsView (line 20) | public DefsView(ReactContext reactContext) {
method draw (line 24) | @Override
method saveDefinition (line 27) | void saveDefinition() {
FILE: android/src/main/java/com/horcrux/svg/EllipseView.java
class EllipseView (line 20) | @SuppressLint("ViewConstructor")
method EllipseView (line 27) | public EllipseView(ReactContext reactContext) {
method setCx (line 31) | public void setCx(Dynamic cx) {
method setCy (line 36) | public void setCy(Dynamic cy) {
method setRx (line 41) | public void setRx(Dynamic rx) {
method setRy (line 46) | public void setRy(Dynamic ry) {
method getPath (line 51) | @Override
FILE: android/src/main/java/com/horcrux/svg/FeBlendView.java
class FeBlendView (line 12) | @SuppressLint("ViewConstructor")
method FeBlendView (line 18) | public FeBlendView(ReactContext reactContext) {
method setIn1 (line 26) | public void setIn1(String in1) {
method setIn2 (line 31) | public void setIn2(String in2) {
method setMode (line 36) | public void setMode(String mode) {
method applyFilter (line 41) | @Override
FILE: android/src/main/java/com/horcrux/svg/FeColorMatrixView.java
class FeColorMatrixView (line 10) | @SuppressLint("ViewConstructor")
method FeColorMatrixView (line 16) | public FeColorMatrixView(ReactContext reactContext) {
method setIn1 (line 20) | public void setIn1(String in1) {
method setType (line 25) | public void setType(String type) {
method setValues (line 30) | public void setValues(ReadableArray values) {
method applyFilter (line 35) | @Override
FILE: android/src/main/java/com/horcrux/svg/FeCompositeView.java
class FeCompositeView (line 12) | @SuppressLint("ViewConstructor")
method FeCompositeView (line 22) | public FeCompositeView(ReactContext reactContext) {
method setIn1 (line 26) | public void setIn1(String in1) {
method setIn2 (line 31) | public void setIn2(String in2) {
method setK1 (line 36) | public void setK1(Float value) {
method setK2 (line 41) | public void setK2(Float value) {
method setK3 (line 46) | public void setK3(Float value) {
method setK4 (line 51) | public void setK4(Float value) {
method setOperator (line 56) | public void setOperator(String operator) {
method applyFilter (line 61) | @Override
FILE: android/src/main/java/com/horcrux/svg/FeFloodView.java
class FeFloodView (line 19) | @SuppressLint("ViewConstructor")
method FeFloodView (line 26) | public FeFloodView(ReactContext reactContext) {
method setFloodColor (line 30) | public void setFloodColor(@Nullable Dynamic color) {
method setFloodColor (line 64) | public void setFloodColor(@Nullable ReadableMap color) {
method setFloodOpacity (line 86) | public void setFloodOpacity(float opacity) {
method applyFilter (line 91) | @Override
method setupPaint (line 104) | private void setupPaint(Paint paint, float opacity, @Nullable Readable...
FILE: android/src/main/java/com/horcrux/svg/FeGaussianBlurView.java
class FeGaussianBlurView (line 13) | @SuppressLint("ViewConstructor")
method FeGaussianBlurView (line 20) | public FeGaussianBlurView(ReactContext reactContext) {
method setIn1 (line 24) | public void setIn1(String in1) {
method setStdDeviationX (line 29) | public void setStdDeviationX(float stdDeviationX) {
method setStdDeviationY (line 34) | public void setStdDeviationY(float stdDeviationY) {
method setEdgeMode (line 39) | public void setEdgeMode(String edgeMode) {
method applyFilter (line 44) | @Override
method blur (line 50) | private Bitmap blur(Context context, Bitmap bitmap) {
FILE: android/src/main/java/com/horcrux/svg/FeMergeView.java
class FeMergeView (line 11) | @SuppressLint("ViewConstructor")
method FeMergeView (line 15) | public FeMergeView(ReactContext reactContext) {
method setNodes (line 19) | public void setNodes(ReadableArray nodes) {
method applyFilter (line 24) | @Override
FILE: android/src/main/java/com/horcrux/svg/FeOffsetView.java
class FeOffsetView (line 11) | @SuppressLint("ViewConstructor")
method FeOffsetView (line 17) | public FeOffsetView(ReactContext reactContext) {
method setIn1 (line 21) | public void setIn1(String in1) {
method setDx (line 26) | public void setDx(Dynamic dx) {
method setDy (line 31) | public void setDy(Dynamic dy) {
method applyFilter (line 36) | @Override
FILE: android/src/main/java/com/horcrux/svg/FilterPrimitiveView.java
class FilterPrimitiveView (line 9) | @SuppressLint("ViewConstructor")
method FilterPrimitiveView (line 14) | public FilterPrimitiveView(ReactContext reactContext) {
method setX (line 19) | public void setX(Dynamic x) {
method setY (line 24) | public void setY(Dynamic y) {
method setWidth (line 29) | public void setWidth(Dynamic width) {
method setHeight (line 34) | public void setHeight(Dynamic height) {
method setResult (line 39) | public void setResult(String result) {
method getResult (line 44) | public String getResult() {
method getSource (line 48) | protected static Bitmap getSource(
method applyFilter (line 54) | public Bitmap applyFilter(HashMap<String, Bitmap> resultsMap, Bitmap p...
method saveDefinition (line 58) | @Override
FILE: android/src/main/java/com/horcrux/svg/FilterProperties.java
class FilterProperties (line 7) | class FilterProperties {
type Units (line 8) | enum Units {
method Units (line 15) | Units(String units) {
method getEnum (line 19) | static Units getEnum(String strVal) {
method toString (line 34) | @Nonnull
type EdgeMode (line 41) | enum EdgeMode {
method EdgeMode (line 50) | EdgeMode(String edgeMode) {
method getEnum (line 54) | static EdgeMode getEnum(String strVal) {
method toString (line 69) | @Nonnull
type FeBlendMode (line 76) | enum FeBlendMode {
method FeBlendMode (line 87) | FeBlendMode(String mode) {
method getEnum (line 91) | static FeBlendMode getEnum(String strVal) {
method toString (line 106) | @Nonnull
type FeColorMatrixType (line 113) | enum FeColorMatrixType {
method FeColorMatrixType (line 122) | FeColorMatrixType(String type) {
method getEnum (line 126) | static FeColorMatrixType getEnum(String strVal) {
method toString (line 141) | @Nonnull
type FeCompositeOperator (line 148) | enum FeCompositeOperator {
method FeCompositeOperator (line 159) | FeCompositeOperator(String type) {
method getEnum (line 163) | static FeCompositeOperator getEnum(String strVal) {
method toString (line 178) | @Nonnull
FILE: android/src/main/java/com/horcrux/svg/FilterRegion.java
class FilterRegion (line 7) | public class FilterRegion {
method setX (line 13) | public void setX(Dynamic x) {
method setY (line 17) | public void setY(Dynamic y) {
method setWidth (line 21) | public void setWidth(Dynamic width) {
method setHeight (line 25) | public void setHeight(Dynamic height) {
method getRelativeOrDefault (line 29) | private double getRelativeOrDefault(
method getCropRect (line 37) | public Rect getCropRect(VirtualView view, FilterProperties.Units units...
FILE: android/src/main/java/com/horcrux/svg/FilterUtils.java
class FilterUtils (line 9) | public class FilterUtils {
method getBitmapWithColorMatrix (line 11) | public static Bitmap getBitmapWithColorMatrix(ColorMatrix colorMatrix,...
method applySourceAlphaFilter (line 25) | public static Bitmap applySourceAlphaFilter(Bitmap source) {
FILE: android/src/main/java/com/horcrux/svg/FilterView.java
class FilterView (line 15) | @SuppressLint("ViewConstructor")
method FilterView (line 23) | public FilterView(ReactContext reactContext) {
method setX (line 28) | public void setX(Dynamic x) {
method setY (line 33) | public void setY(Dynamic y) {
method setWidth (line 38) | public void setWidth(Dynamic width) {
method setHeight (line 43) | public void setHeight(Dynamic height) {
method setFilterUnits (line 48) | public void setFilterUnits(String filterUnits) {
method setPrimitiveUnits (line 53) | public void setPrimitiveUnits(String primitiveUnits) {
method getFilterRegion (line 58) | public FilterRegion getFilterRegion() {
method saveDefinition (line 62) | @Override
method applyFilter (line 72) | public Bitmap applyFilter(Bitmap source, Bitmap background, RectF rend...
FILE: android/src/main/java/com/horcrux/svg/FontData.java
class FontData (line 12) | class FontData {
class AbsoluteFontWeight (line 14) | static class AbsoluteFontWeight {
method nearestFontWeight (line 33) | static FontWeight nearestFontWeight(int absoluteFontWeight) {
method from (line 41) | static int from(FontWeight fontWeight, FontData parent) {
method bolder (line 51) | private static int bolder(int inherited) {
method lighter (line 63) | private static int lighter(int inherited) {
method FontData (line 115) | private FontData() {
method toAbsolute (line 135) | private double toAbsolute(
method setInheritedWeight (line 146) | private void setInheritedWeight(FontData parent) {
method handleNumericWeight (line 151) | private void handleNumericWeight(FontData parent, double number) {
method FontData (line 161) | FontData(ReadableMap font, FontData parent, double scale) {
FILE: android/src/main/java/com/horcrux/svg/ForeignObjectView.java
class ForeignObjectView (line 22) | @SuppressLint("ViewConstructor")
method ForeignObjectView (line 30) | public ForeignObjectView(ReactContext reactContext) {
method draw (line 34) | @Override
method onDescendantInvalidated (line 45) | @Override
method setX (line 51) | public void setX(Dynamic x) {
method setY (line 56) | public void setY(Dynamic y) {
method setWidth (line 61) | public void setWidth(Dynamic width) {
method setHeight (line 66) | public void setHeight(Dynamic height) {
method invalidate (line 71) | @Override
method drawGroup (line 81) | void drawGroup(final Canvas canvas, final Paint paint, final float opa...
method dispatchDraw (line 147) | @Override
method drawChild (line 152) | protected boolean drawChild(Canvas canvas, View child, long drawingTim...
FILE: android/src/main/java/com/horcrux/svg/GlyphContext.java
class GlyphContext (line 16) | class GlyphContext {
method pushIndices (line 103) | private void pushIndices() {
method GlyphContext (line 111) | GlyphContext(float scale, float width, float height) {
method reset (line 133) | private void reset() {
method getFont (line 139) | FontData getFont() {
method getTopOrParentFont (line 143) | private FontData getTopOrParentFont(GroupView child) {
method pushNodeAndFont (line 161) | private void pushNodeAndFont(GroupView node, @Nullable ReadableMap fon...
method pushContext (line 176) | void pushContext(GroupView node, @Nullable ReadableMap font) {
method getStringArrayFromReadableArray (line 181) | private SVGLength[] getStringArrayFromReadableArray(ArrayList<SVGLengt...
method getDoubleArrayFromReadableArray (line 190) | private double[] getDoubleArrayFromReadableArray(ArrayList<SVGLength> ...
method pushContext (line 200) | void pushContext(
method popContext (line 258) | void popContext() {
method incrementIndices (line 308) | private static void incrementIndices(ArrayList<Integer> indices, int t...
method getFontSize (line 338) | double getFontSize() {
method nextX (line 342) | double nextX(double advance) {
method nextY (line 358) | double nextY() {
method nextDeltaX (line 372) | double nextDeltaX() {
method nextDeltaY (line 386) | double nextDeltaY() {
method nextRotation (line 400) | double nextRotation() {
method getWidth (line 408) | float getWidth() {
method getHeight (line 412) | float getHeight() {
FILE: android/src/main/java/com/horcrux/svg/GlyphPathBag.java
class GlyphPathBag (line 7) | class GlyphPathBag {
method GlyphPathBag (line 12) | GlyphPathBag(Paint paint) {
method getOrCreateAndCache (line 18) | Path getOrCreateAndCache(char ch, String current) {
method getIndex (line 42) | private int getIndex(char ch) {
FILE: android/src/main/java/com/horcrux/svg/GroupView.java
class GroupView (line 29) | @SuppressLint("ViewConstructor")
method GroupView (line 37) | public GroupView(ReactContext reactContext) {
method setFont (line 42) | public void setFont(Dynamic dynamic) {
method setFont (line 51) | public void setFont(@Nullable ReadableMap font) {
method setupGlyphContext (line 56) | void setupGlyphContext(Canvas canvas) {
method getGlyphContext (line 64) | GlyphContext getGlyphContext() {
method requireNonNull (line 68) | private static <T> T requireNonNull(T obj) {
method getTextRootGlyphContext (line 73) | GlyphContext getTextRootGlyphContext() {
method pushGlyphContext (line 77) | void pushGlyphContext() {
method popGlyphContext (line 81) | void popGlyphContext() {
method draw (line 85) | void draw(final Canvas canvas, final Paint paint, final float opacity) {
method drawGroup (line 92) | void drawGroup(final Canvas canvas, final Paint paint, final float opa...
method drawPath (line 185) | void drawPath(Canvas canvas, Paint paint, float opacity) {
method getPath (line 189) | @Override
method getPath (line 215) | Path getPath(final Canvas canvas, final Paint paint, final Region.Op o...
method hitTest (line 270) | @Override
method saveDefinition (line 321) | void saveDefinition() {
method resetProperties (line 334) | @Override
FILE: android/src/main/java/com/horcrux/svg/ImageView.java
class ImageView (line 42) | @SuppressLint("ViewConstructor")
method ImageView (line 55) | public ImageView(ReactContext reactContext) {
method setX (line 59) | public void setX(Dynamic x) {
method setY (line 64) | public void setY(Dynamic y) {
method setWidth (line 69) | public void setWidth(Dynamic width) {
method setHeight (line 74) | public void setHeight(Dynamic height) {
method setSrc (line 79) | public void setSrc(@Nullable ReadableMap src) {
method setAlign (line 102) | public void setAlign(String align) {
method setMeetOrSlice (line 107) | public void setMeetOrSlice(int meetOrSlice) {
method draw (line 112) | @Override
method getPath (line 128) | @Override
method loadBitmap (line 135) | private void loadBitmap(final ImagePipeline imagePipeline, final Image...
method getRect (line 174) | @Nonnull
method doRender (line 190) | private void doRender(Canvas canvas, Paint paint, Bitmap bitmap, float...
method tryRenderFromBitmapCache (line 215) | private void tryRenderFromBitmapCache(
FILE: android/src/main/java/com/horcrux/svg/LineView.java
class LineView (line 19) | @SuppressLint("ViewConstructor")
method LineView (line 26) | public LineView(ReactContext reactContext) {
method setX1 (line 30) | public void setX1(Dynamic x1) {
method setY1 (line 35) | public void setY1(Dynamic y1) {
method setX2 (line 40) | public void setX2(Dynamic x2) {
method setY2 (line 45) | public void setY2(Dynamic y2) {
method getPath (line 50) | @Override
FILE: android/src/main/java/com/horcrux/svg/LinearGradientView.java
class LinearGradientView (line 20) | @SuppressLint("ViewConstructor")
method LinearGradientView (line 38) | public LinearGradientView(ReactContext reactContext) {
method setX1 (line 42) | public void setX1(Dynamic x1) {
method setY1 (line 47) | public void setY1(Dynamic y1) {
method setX2 (line 52) | public void setX2(Dynamic x2) {
method setY2 (line 57) | public void setY2(Dynamic y2) {
method setGradient (line 62) | public void setGradient(ReadableArray gradient) {
method setGradientUnits (line 67) | public void setGradientUnits(int gradientUnits) {
method setGradientTransform (line 79) | public void setGradientTransform(@Nullable ReadableArray matrixArray) {
method saveDefinition (line 97) | @Override
FILE: android/src/main/java/com/horcrux/svg/MarkerView.java
class MarkerView (line 20) | @SuppressLint("ViewConstructor")
method MarkerView (line 39) | public MarkerView(ReactContext reactContext) {
method setRefX (line 43) | public void setRefX(Dynamic refX) {
method setRefY (line 48) | public void setRefY(Dynamic refY) {
method setMarkerWidth (line 53) | public void setMarkerWidth(Dynamic markerWidth) {
method setMarkerHeight (line 58) | public void setMarkerHeight(Dynamic markerHeight) {
method setMarkerUnits (line 63) | public void setMarkerUnits(String markerUnits) {
method setOrient (line 68) | public void setOrient(String orient) {
method setMinX (line 73) | public void setMinX(float minX) {
method setMinY (line 78) | public void setMinY(float minY) {
method setVbWidth (line 83) | public void setVbWidth(float vbWidth) {
method setVbHeight (line 88) | public void setVbHeight(float vbHeight) {
method setAlign (line 93) | public void setAlign(String align) {
method setMeetOrSlice (line 98) | public void setMeetOrSlice(int meetOrSlice) {
method saveDefinition (line 103) | @Override
method renderMarker (line 117) | void renderMarker(
FILE: android/src/main/java/com/horcrux/svg/MaskView.java
class MaskView (line 15) | @SuppressLint("ViewConstructor")
type MaskType (line 32) | enum MaskType {
method MaskView (line 37) | public MaskView(ReactContext reactContext) {
method setX (line 41) | public void setX(Dynamic x) {
method setY (line 46) | public void setY(Dynamic y) {
method setWidth (line 51) | public void setWidth(Dynamic width) {
method setHeight (line 56) | public void setHeight(Dynamic height) {
method getMaskUnits (line 61) | public Brush.BrushUnits getMaskUnits() {
method setMaskUnits (line 65) | public void setMaskUnits(int maskUnits) {
method setMaskContentUnits (line 77) | public void setMaskContentUnits(int maskContentUnits) {
method getMaskType (line 89) | public MaskType getMaskType() {
method setMaskType (line 93) | public void setMaskType(int maskType) {
method saveDefinition (line 105) | @Override
FILE: android/src/main/java/com/horcrux/svg/PathParser.java
class PathElement (line 7) | class PathElement {
method PathElement (line 11) | PathElement(ElementType type, Point[] points) {
class PathParser (line 17) | class PathParser {
method parse (line 34) | static Path parse(String d) {
method move (line 251) | private static void move(float x, float y) {
method moveTo (line 255) | private static void moveTo(float x, float y) {
method line (line 264) | private static void line(float x, float y) {
method lineTo (line 268) | private static void lineTo(float x, float y) {
method curve (line 278) | private static void curve(float c1x, float c1y, float c2x, float c2y, ...
method curveTo (line 282) | private static void curveTo(float c1x, float c1y, float c2x, float c2y...
method cubicTo (line 290) | private static void cubicTo(float c1x, float c1y, float c2x, float c2y...
method smoothCurve (line 301) | private static void smoothCurve(float c1x, float c1y, float ex, float ...
method smoothCurveTo (line 305) | private static void smoothCurveTo(float c1x, float c1y, float ex, floa...
method quadraticBezierCurve (line 317) | private static void quadraticBezierCurve(float c1x, float c1y, float c...
method quadraticBezierCurveTo (line 321) | private static void quadraticBezierCurveTo(float c1x, float c1y, float...
method smoothQuadraticBezierCurve (line 335) | private static void smoothQuadraticBezierCurve(float c1x, float c1y) {
method smoothQuadraticBezierCurveTo (line 339) | private static void smoothQuadraticBezierCurveTo(float c1x, float c1y) {
method arc (line 348) | private static void arc(
method arcTo (line 353) | private static void arcTo(
method close (line 452) | private static void close() {
method arcToBezier (line 464) | private static void arcToBezier(
method setPenDown (line 517) | private static void setPenDown() {
method round (line 525) | private static double round(double val) {
method skip_spaces (line 530) | private static void skip_spaces() {
method is_cmd (line 534) | private static boolean is_cmd(char c) {
method is_number_start (line 561) | private static boolean is_number_start(char c) {
method is_absolute (line 565) | private static boolean is_absolute(char c) {
method parse_flag (line 571) | private static boolean parse_flag() {
method parse_list_number (line 593) | private static float parse_list_number() {
method parse_number (line 605) | private static float parse_number() {
method parse_list_separator (line 674) | private static void parse_list_separator() {
method skip_digits (line 680) | private static void skip_digits() {
FILE: android/src/main/java/com/horcrux/svg/PathView.java
class PathView (line 17) | @SuppressLint("ViewConstructor")
method PathView (line 21) | public PathView(ReactContext reactContext) {
method setD (line 27) | public void setD(String d) {
method getPath (line 39) | @Override
FILE: android/src/main/java/com/horcrux/svg/PatternView.java
class PatternView (line 21) | @SuppressLint("ViewConstructor")
method PatternView (line 46) | public PatternView(ReactContext reactContext) {
method setX (line 50) | public void setX(Dynamic x) {
method setY (line 55) | public void setY(Dynamic y) {
method setWidth (line 60) | public void setWidth(Dynamic width) {
method setHeight (line 65) | public void setHeight(Dynamic height) {
method setPatternUnits (line 70) | public void setPatternUnits(int patternUnits) {
method setPatternContentUnits (line 82) | public void setPatternContentUnits(int patternContentUnits) {
method setPatternTransform (line 94) | public void setPatternTransform(@Nullable ReadableArray matrixArray) {
method setMinX (line 112) | public void setMinX(float minX) {
method setMinY (line 117) | public void setMinY(float minY) {
method setVbWidth (line 122) | public void setVbWidth(float vbWidth) {
method setVbHeight (line 127) | public void setVbHeight(float vbHeight) {
method setAlign (line 132) | public void setAlign(String align) {
method setMeetOrSlice (line 137) | public void setMeetOrSlice(int meetOrSlice) {
method getViewBox (line 142) | RectF getViewBox() {
method saveDefinition (line 147) | @Override
FILE: android/src/main/java/com/horcrux/svg/PropHelper.java
class PropHelper (line 14) | class PropHelper {
method toMatrixData (line 31) | static int toMatrixData(ReadableArray value, float[] sRawMatrix, float...
method fromRelative (line 56) | static double fromRelative(String length, double relative, double scal...
method fromRelative (line 149) | static double fromRelative(
FILE: android/src/main/java/com/horcrux/svg/RNSVGMarkerPosition.java
type RNSVGMarkerType (line 5) | enum RNSVGMarkerType {
type ElementType (line 11) | enum ElementType {
class Point (line 19) | class Point {
method Point (line 23) | Point(double x, double y) {
class SegmentData (line 29) | class SegmentData {
class RNSVGMarkerPosition (line 35) | class RNSVGMarkerPosition {
method RNSVGMarkerPosition (line 51) | private RNSVGMarkerPosition(RNSVGMarkerType type, Point origin, double...
method fromPath (line 57) | static ArrayList<RNSVGMarkerPosition> fromPath(ArrayList<PathElement> ...
method PathIsDone (line 69) | private static void PathIsDone() {
method BisectingAngle (line 74) | private static double BisectingAngle(double in_angle, double out_angle) {
method rad2deg (line 80) | private static double rad2deg(double rad) {
method SlopeAngleRadians (line 85) | private static double SlopeAngleRadians(Point p) {
method CurrentAngle (line 89) | private static double CurrentAngle(RNSVGMarkerType type) {
method subtract (line 106) | private static Point subtract(Point p1, Point p2) {
method isZero (line 110) | private static boolean isZero(Point p) {
method ComputeQuadTangents (line 114) | private static void ComputeQuadTangents(SegmentData data, Point start,...
method ExtractPathElementFeatures (line 121) | private static SegmentData ExtractPathElementFeatures(PathElement elem...
method UpdateFromPathElement (line 151) | private static void UpdateFromPathElement(PathElement element) {
FILE: android/src/main/java/com/horcrux/svg/RNSVGRenderableManager.java
class RNSVGRenderableManager (line 31) | @ReactModule(name = RNSVGRenderableManager.NAME)
method RNSVGRenderableManager (line 33) | RNSVGRenderableManager(ReactApplicationContext reactContext) {
method getName (line 39) | @Nonnull
method isPointInFill (line 45) | @SuppressWarnings("unused")
method isPointInStroke (line 62) | @SuppressWarnings("unused")
method getTotalLength (line 88) | @SuppressWarnings("unused")
method getPointAtLength (line 110) | @SuppressWarnings("unused")
method getBBox (line 145) | @SuppressWarnings("unused")
method getCTM (line 196) | @SuppressWarnings("unused")
method getScreenCTM (line 227) | @SuppressWarnings("unused")
method getRawResource (line 250) | @ReactMethod
FILE: android/src/main/java/com/horcrux/svg/RadialGradientView.java
class RadialGradientView (line 20) | @SuppressLint("ViewConstructor")
method RadialGradientView (line 39) | public RadialGradientView(ReactContext reactContext) {
method setFx (line 43) | public void setFx(Dynamic fx) {
method setFy (line 48) | public void setFy(Dynamic fy) {
method setRx (line 53) | public void setRx(Dynamic rx) {
method setRy (line 58) | public void setRy(Dynamic ry) {
method setCx (line 63) | public void setCx(Dynamic cx) {
method setCy (line 68) | public void setCy(Dynamic cy) {
method setGradient (line 73) | public void setGradient(ReadableArray gradient) {
method setGradientUnits (line 78) | public void setGradientUnits(int gradientUnits) {
method setGradientTransform (line 90) | public void setGradientTransform(@Nullable ReadableArray matrixArray) {
method saveDefinition (line 108) | @Override
FILE: android/src/main/java/com/horcrux/svg/RectView.java
class RectView (line 21) | @SuppressLint("ViewConstructor")
method RectView (line 30) | public RectView(ReactContext reactContext) {
method setX (line 34) | public void setX(Dynamic x) {
method setY (line 39) | public void setY(Dynamic y) {
method setWidth (line 44) | public void setWidth(Dynamic width) {
method setHeight (line 49) | public void setHeight(Dynamic height) {
method setRx (line 54) | public void setRx(Dynamic rx) {
method setRy (line 59) | public void setRy(Dynamic ry) {
method getPath (line 64) | @Override
FILE: android/src/main/java/com/horcrux/svg/RenderableView.java
class RenderableView (line 44) | @SuppressWarnings({"WeakerAccess", "RedundantSuppression"})
method RenderableView (line 47) | RenderableView(ReactContext reactContext) {
method onReceiveNativeEvent (line 104) | public void onReceiveNativeEvent() {
method getHitSlopRect (line 116) | @Nullable
method setId (line 128) | @Override
method setVectorEffect (line 134) | public void setVectorEffect(int vectorEffect) {
method setCurrentColor (line 139) | public void setCurrentColor(Integer color) {
method getCurrentColor (line 145) | int getCurrentColor() {
method setFill (line 161) | public void setFill(@Nullable Dynamic fill) {
method setFill (line 194) | public void setFill(ReadableMap fill) {
method setFillOpacity (line 216) | public void setFillOpacity(float fillOpacity) {
method setFillRule (line 221) | public void setFillRule(int fillRule) {
method setStroke (line 235) | public void setStroke(@Nullable Dynamic strokeColors) {
method setStroke (line 269) | public void setStroke(@Nullable ReadableMap stroke) {
method setStrokeOpacity (line 291) | public void setStrokeOpacity(float strokeOpacity) {
method setStrokeDasharray (line 296) | public void setStrokeDasharray(Dynamic dynamicStrokeDasharray) {
method setStrokeDashoffset (line 309) | public void setStrokeDashoffset(float strokeDashoffset) {
method setStrokeWidth (line 314) | public void setStrokeWidth(Dynamic strokeWidth) {
method setStrokeMiterlimit (line 319) | public void setStrokeMiterlimit(float strokeMiterlimit) {
method setStrokeLinecap (line 324) | public void setStrokeLinecap(int strokeLinecap) {
method setStrokeLinejoin (line 342) | public void setStrokeLinejoin(int strokeLinejoin) {
method setPropList (line 360) | public void setPropList(@Nullable ReadableArray propList) {
method setFilter (line 371) | public void setFilter(String filter) {
method render (line 376) | void render(Canvas canvas, Paint paint, float opacity) {
method draw (line 505) | @Override
method renderMarkers (line 552) | void renderMarkers(Canvas canvas, Paint paint, float opacity) {
method setupFillPaint (line 592) | boolean setupFillPaint(Paint paint, float opacity) {
method setupStrokePaint (line 607) | boolean setupStrokePaint(Paint paint, float opacity) {
method setupPaint (line 634) | private void setupPaint(Paint paint, float opacity, ReadableArray colo...
method getPath (line 690) | abstract Path getPath(Canvas canvas, Paint paint);
method hitTest (line 692) | @Override
method initBounds (line 726) | void initBounds() {
method getRegion (line 758) | Region getRegion(Path path, RectF rectF) {
method getAttributeList (line 771) | private ArrayList<String> getAttributeList() {
method mergeProperties (line 775) | void mergeProperties(RenderableView target) {
method resetProperties (line 805) | void resetProperties() {
method hasOwnProperty (line 823) | private boolean hasOwnProperty(String propName) {
FILE: android/src/main/java/com/horcrux/svg/RenderableViewManager.java
class VirtualViewManager (line 153) | class VirtualViewManager<V extends VirtualView> extends ViewGroupManager...
method VirtualViewManager (line 158) | protected VirtualViewManager(SVGClass svgclass) {
method getDelegate (line 165) | protected ViewManagerDelegate getDelegate() {
class RenderableShadowNode (line 169) | static class RenderableShadowNode extends LayoutShadowNode {
method ignoreLayoutProps (line 171) | @SuppressWarnings({"unused", "EmptyMethod"})
method createShadowNodeInstance (line 237) | @Override
method getShadowNodeClass (line 242) | @Override
method sanitizeFloatPropertyValue (line 254) | private static float sanitizeFloatPropertyValue(float value) {
method setTransformProperty (line 271) | protected void setTransformProperty(VirtualView view, ReadableArray tr...
method getName (line 327) | @Nonnull
method setMask (line 332) | @ReactProp(name = "mask")
method setMarkerStart (line 337) | @ReactProp(name = "markerStart")
method setMarkerMid (line 342) | @ReactProp(name = "markerMid")
method setMarkerEnd (line 347) | @ReactProp(name = "markerEnd")
method setClipPath (line 352) | @ReactProp(name = "clipPath")
method setClipRule (line 357) | @ReactProp(name = "clipRule")
method setOpacity (line 362) | @ReactProp(name = "opacity", defaultFloat = 1f)
method setResponsible (line 367) | @ReactProp(name = "responsible")
method setPointerEvents (line 372) | @ReactProp(name = ViewProps.POINTER_EVENTS)
method setName (line 383) | @ReactProp(name = "name")
method setDisplay (line 388) | @ReactProp(name = "display")
method setMatrix (line 393) | @ReactProp(name = "matrix")
method setMatrix (line 398) | public void setMatrix(V view, @Nullable ReadableArray value) {
method setTransform (line 402) | @Override
method setTransform (line 411) | @ReactProp(name = "transform")
method invalidateSvgView (line 420) | private void invalidateSvgView(V node) {
method addEventEmitters (line 430) | @Override
method onAfterUpdateTransaction (line 458) | @Override
type SVGClass (line 464) | protected enum SVGClass {
method createViewInstance (line 495) | @Nonnull
method setRenderableView (line 563) | static void setRenderableView(int tag, RenderableView svg) {
method runWhenViewIsAvailable (line 572) | static void runWhenViewIsAvailable(int tag, Runnable task) {
method getRenderableViewByTag (line 576) | static @Nullable RenderableView getRenderableViewByTag(int tag) {
method onDropViewInstance (line 580) | @Override
class RenderableViewManager (line 587) | class RenderableViewManager<T extends RenderableView> extends VirtualVie...
method RenderableViewManager (line 589) | RenderableViewManager(SVGClass svgclass) {
method getExportedCustomDirectEventTypeConstants (line 593) | public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
class GroupViewManagerAbstract (line 599) | static class GroupViewManagerAbstract<U extends GroupView> extends Ren...
method GroupViewManagerAbstract (line 600) | GroupViewManagerAbstract(SVGClass svgClass) {
method setFont (line 604) | @ReactProp(name = "font")
method setFontSize (line 609) | @ReactProp(name = "fontSize")
method setFontWeight (line 625) | @ReactProp(name = "fontWeight")
class GroupViewManager (line 642) | static class GroupViewManager extends GroupViewManagerAbstract<GroupView>
method GroupViewManager (line 644) | GroupViewManager() {
class PathViewManager (line 652) | static class PathViewManager extends RenderableViewManager<PathView>
method PathViewManager (line 654) | PathViewManager() {
method setD (line 661) | @ReactProp(name = "d")
class TextViewManagerAbstract (line 667) | static class TextViewManagerAbstract<K extends TextView> extends Group...
method TextViewManagerAbstract (line 668) | TextViewManagerAbstract(SVGClass svgClass) {
method setInlineSize (line 672) | @ReactProp(name = "inlineSize")
method setTextLength (line 677) | @ReactProp(name = "textLength")
method setLengthAdjust (line 682) | @ReactProp(name = "lengthAdjust")
method setMethod (line 687) | @ReactProp(name = "alignmentBaseline")
method setBaselineShift (line 692) | @ReactProp(name = "baselineShift")
method setVerticalAlign (line 697) | @ReactProp(name = "verticalAlign")
method setRotate (line 702) | @ReactProp(name = "rotate")
method setDx (line 707) | @ReactProp(name = "dx")
method setDy (line 712) | @ReactProp(name = "dy")
method setX (line 717) | @ReactProp(name = "x")
method setY (line 722) | @ReactProp(name = "y")
method setFont (line 727) | @ReactProp(name = "font")
method setAlignmentBaseline (line 732) | public void setAlignmentBaseline(K view, @Nullable String value) {
class TextViewManager (line 737) | static class TextViewManager extends TextViewManagerAbstract<TextView>
method TextViewManager (line 739) | TextViewManager() {
method TextViewManager (line 746) | TextViewManager(SVGClass svgClass) {
class TSpanViewManager (line 752) | static class TSpanViewManager extends TextViewManagerAbstract<TSpanView>
method TSpanViewManager (line 754) | TSpanViewManager() {
method TSpanViewManager (line 761) | TSpanViewManager(SVGClass svgClass) {
method setContent (line 766) | @ReactProp(name = "content")
class TextPathViewManager (line 772) | static class TextPathViewManager extends TextViewManagerAbstract<TextP...
method TextPathViewManager (line 774) | TextPathViewManager() {
method TextPathViewManager (line 781) | TextPathViewManager(SVGClass svgClass) {
method setHref (line 786) | @ReactProp(name = "href")
method setStartOffset (line 791) | @ReactProp(name = "startOffset")
method setMethod (line 796) | @ReactProp(name = "method")
method setMidLine (line 801) | @Override
method setSpacing (line 806) | @ReactProp(name = "spacing")
method setSide (line 811) | @ReactProp(name = "side")
method setSharp (line 816) | @ReactProp(name = "midLine")
class ImageViewManager (line 822) | static class ImageViewManager extends RenderableViewManager<ImageView>
method ImageViewManager (line 824) | ImageViewManager() {
method setX (line 831) | @ReactProp(name = "x")
method setY (line 836) | @ReactProp(name = "y")
method setWidth (line 841) | @ReactProp(name = "width")
method setHeight (line 846) | @ReactProp(name = "height")
method setSrc (line 851) | @ReactProp(name = "src", customType = "ImageSource")
method setAlign (line 856) | @ReactProp(name = "align")
method setMeetOrSlice (line 861) | @ReactProp(name = "meetOrSlice")
method getExportedCustomDirectEventTypeConstants (line 866) | public Map<String, Object> getExportedCustomDirectEventTypeConstants...
class CircleViewManager (line 873) | static class CircleViewManager extends RenderableViewManager<CircleView>
method CircleViewManager (line 875) | CircleViewManager() {
method setCx (line 882) | @ReactProp(name = "cx")
method setCy (line 887) | @ReactProp(name = "cy")
method setR (line 892) | @ReactProp(name = "r")
class EllipseViewManager (line 898) | static class EllipseViewManager extends RenderableViewManager<EllipseV...
method EllipseViewManager (line 900) | EllipseViewManager() {
method setCx (line 907) | @ReactProp(name = "cx")
method setCy (line 912) | @ReactProp(name = "cy")
method setRx (line 917) | @ReactProp(name = "rx")
method setRy (line 922) | @ReactProp(name = "ry")
class LineViewManager (line 928) | static class LineViewManager extends RenderableViewManager<LineView>
method LineViewManager (line 931) | LineViewManager() {
method setX1 (line 938) | @ReactProp(name = "x1")
method setY1 (line 943) | @ReactProp(name = "y1")
method setX2 (line 948) | @ReactProp(name = "x2")
method setY2 (line 953) | @ReactProp(name = "y2")
class RectViewManager (line 959) | static class RectViewManager extends RenderableViewManager<RectView>
method RectViewManager (line 962) | RectViewManager() {
method setX (line 969) | @ReactProp(name = "x")
method setY (line 974) | @ReactProp(name = "y")
method setWidth (line 979) | @ReactProp(name = "width")
method setHeight (line 984) | @ReactProp(name = "height")
method setRx (line 989) | @ReactProp(name = "rx")
method setRy (line 994) | @ReactProp(name = "ry")
class ClipPathViewManager (line 1000) | static class ClipPathViewManager extends GroupViewManagerAbstract<Clip...
method ClipPathViewManager (line 1002) | ClipPathViewManager() {
class DefsViewManager (line 1010) | static class DefsViewManager extends VirtualViewManager<DefsView>
method DefsViewManager (line 1013) | DefsViewManager() {
class UseViewManager (line 1021) | static class UseViewManager extends RenderableViewManager<UseView>
method UseViewManager (line 1024) | UseViewManager() {
method setHref (line 1031) | @ReactProp(name = "href")
method setX (line 1036) | @ReactProp(name = "x")
method setY (line 1041) | @ReactProp(name = "y")
method setWidth (line 1046) | @ReactProp(name = "width")
method setHeight (line 1051) | @ReactProp(name = "height")
class SymbolManager (line 1057) | static class SymbolManager extends GroupViewManagerAbstract<SymbolView>
method SymbolManager (line 1059) | SymbolManager() {
method setMinX (line 1066) | @ReactProp(name = "minX")
method setMinY (line 1071) | @ReactProp(name = "minY")
method setVbWidth (line 1076) | @ReactProp(name = "vbWidth")
method setVbHeight (line 1081) | @ReactProp(name = "vbHeight")
method setAlign (line 1086) | @ReactProp(name = "align")
method setMeetOrSlice (line 1091) | @ReactProp(name = "meetOrSlice")
class PatternManager (line 1097) | static class PatternManager extends GroupViewManagerAbstract<PatternView>
method PatternManager (line 1099) | PatternManager() {
method setX (line 1106) | @ReactProp(name = "x")
method setY (line 1111) | @ReactProp(name = "y")
method setWidth (line 1116) | @ReactProp(name = "width")
method setHeight (line 1121) | @ReactProp(name = "height")
method setPatternUnits (line 1126) | @ReactProp(name = "patternUnits")
method setPatternContentUnits (line 1131) | @ReactProp(name = "patternContentUnits")
method setPatternTransform (line 1136) | @ReactProp(name = "patternTransform")
method setMinX (line 1141) | @ReactProp(name = "minX")
method setMinY (line 1146) | @ReactProp(name = "minY")
method setVbWidth (line 1151) | @ReactProp(name = "vbWidth")
method setVbHeight (line 1156) | @ReactProp(name = "vbHeight")
method setAlign (line 1161) | @ReactProp(name = "align")
method setMeetOrSlice (line 1166) | @ReactProp(name = "meetOrSlice")
class MaskManager (line 1172) | static class MaskManager extends GroupViewManagerAbstract<MaskView>
method MaskManager (line 1174) | MaskManager() {
method setX (line 1181) | @ReactProp(name = "x")
method setY (line 1186) | @ReactProp(name = "y")
method setWidth (line 1191) | @ReactProp(name = "width")
method setHeight (line 1196) | @ReactProp(name = "height")
method setMaskUnits (line 1201) | @ReactProp(name = "maskUnits")
method setMaskContentUnits (line 1206) | @ReactProp(name = "maskContentUnits")
method setMaskType (line 1211) | @ReactProp(name = "maskType")
class ForeignObjectManager (line 1217) | static class ForeignObjectManager extends GroupViewManagerAbstract<For...
method ForeignObjectManager (line 1219) | ForeignObjectManager() {
method setX (line 1226) | @ReactProp(name = "x")
method setY (line 1231) | @ReactProp(name = "y")
method setWidth (line 1236) | @ReactProp(name = "width")
method setHeight (line 1241) | @ReactProp(name = "height")
class MarkerManager (line 1247) | static class MarkerManager extends GroupViewManagerAbstract<MarkerView>
method MarkerManager (line 1249) | MarkerManager() {
method setRefX (line 1256) | @ReactProp(name = "refX")
method setRefY (line 1261) | @ReactProp(name = "refY")
method setMarkerWidth (line 1266) | @ReactProp(name = "markerWidth")
method setMarkerHeight (line 1271) | @ReactProp(name = "markerHeight")
method setMarkerUnits (line 1276) | @ReactProp(name = "markerUnits")
method setOrient (line 1281) | @ReactProp(name = "orient")
method setMinX (line 1286) | @ReactProp(name = "minX")
method setMinY (line 1291) | @ReactProp(name = "minY")
method setVbWidth (line 1296) | @ReactProp(name = "vbWidth")
method setVbHeight (line 1301) | @ReactProp(name = "vbHeight")
method setAlign (line 1306) | @ReactProp(name = "align")
method setMeetOrSlice (line 1311) | @ReactProp(name = "meetOrSlice")
class LinearGradientManager (line 1317) | static class LinearGradientManager extends VirtualViewManager<LinearGr...
method LinearGradientManager (line 1320) | LinearGradientManager() {
method setX1 (line 1327) | @ReactProp(name = "x1")
method setY1 (line 1332) | @ReactProp(name = "y1")
method setX2 (line 1337) | @ReactProp(name = "x2")
method setY2 (line 1342) | @ReactProp(name = "y2")
method setGradient (line 1347) | @ReactProp(name = "gradient")
method setGradientUnits (line 1352) | @ReactProp(name = "gradientUnits")
method setGradientTransform (line 1357) | @ReactProp(name = "gradientTransform")
class RadialGradientManager (line 1363) | static class RadialGradientManager extends VirtualViewManager<RadialGr...
method RadialGradientManager (line 1366) | RadialGradientManager() {
method setFx (line 1373) | @ReactProp(name = "fx")
method setFy (line 1378) | @ReactProp(name = "fy")
method setRx (line 1383) | @ReactProp(name = "rx")
method setRy (line 1388) | @ReactProp(name = "ry")
method setCx (line 1393) | @ReactProp(name = "cx")
method setCy (line 1398) | @ReactProp(name = "cy")
method setGradient (line 1403) | @ReactProp(name = "gradient")
method setGradientUnits (line 1408) | @ReactProp(name = "gradientUnits")
method setGradientTransform (line 1413) | @ReactProp(name = "gradientTransform")
class FilterManager (line 1419) | static class FilterManager extends VirtualViewManager<FilterView>
method FilterManager (line 1421) | FilterManager() {
method setX (line 1428) | @ReactProp(name = "x")
method setY (line 1433) | @ReactProp(name = "y")
method setWidth (line 1438) | @ReactProp(name = "width")
method setHeight (line 1443) | @ReactProp(name = "height")
method setFilterUnits (line 1448) | @ReactProp(name = "filterUnits")
method setPrimitiveUnits (line 1453) | @ReactProp(name = "primitiveUnits")
class FilterPrimitiveManager (line 1459) | static class FilterPrimitiveManager<T extends FilterPrimitiveView> ext...
method FilterPrimitiveManager (line 1460) | protected FilterPrimitiveManager(SVGClass svgclass) {
method setX (line 1464) | @ReactProp(name = "x")
method setY (line 1469) | @ReactProp(name = "y")
method setWidth (line 1474) | @ReactProp(name = "width")
method setHeight (line 1479) | @ReactProp(name = "height")
method setResult (line 1484) | @ReactProp(name = "result")
class FeBlendManager (line 1490) | static class FeBlendManager extends FilterPrimitiveManager<FeBlendView>
method FeBlendManager (line 1492) | FeBlendManager() {
method setIn1 (line 1499) | @ReactProp(name = "in1")
method setIn2 (line 1504) | @ReactProp(name = "in2")
method setMode (line 1509) | @ReactProp(name = "mode")
class FeColorMatrixManager (line 1515) | static class FeColorMatrixManager extends FilterPrimitiveManager<FeCol...
method FeColorMatrixManager (line 1517) | FeColorMatrixManager() {
method setIn1 (line 1524) | @ReactProp(name = "in1")
method setType (line 1529) | @ReactProp(name = "type")
method setValues (line 1534) | @ReactProp(name = "values")
class FeCompositeManager (line 1540) | static class FeCompositeManager extends FilterPrimitiveManager<FeCompo...
method FeCompositeManager (line 1542) | FeCompositeManager() {
method setIn1 (line 1549) | @ReactProp(name = "in1")
method setIn2 (line 1554) | @ReactProp(name = "in2")
method setOperator1 (line 1559) | @ReactProp(name = "operator1")
method setK1 (line 1564) | @ReactProp(name = "k1")
method setK2 (line 1569) | @ReactProp(name = "k2")
method setK3 (line 1574) | @ReactProp(name = "k3")
method setK4 (line 1579) | @ReactProp(name = "k4")
class FeFloodManager (line 1585) | static class FeFloodManager extends FilterPrimitiveManager<FeFloodView>
method FeFloodManager (line 1587) | FeFloodManager() {
method setFloodColor (line 1594) | @ReactProp(name = "floodColor")
method setFloodColor (line 1599) | public void setFloodColor(FeFloodView view, @Nullable ReadableMap va...
method setFloodOpacity (line 1603) | @ReactProp(name = "floodOpacity", defaultFloat = 1f)
class FeGaussianBlurManager (line 1609) | static class FeGaussianBlurManager extends FilterPrimitiveManager<FeGa...
method FeGaussianBlurManager (line 1611) | FeGaussianBlurManager() {
method setIn1 (line 1618) | @ReactProp(name = "in1")
method setStdDeviationX (line 1623) | @ReactProp(name = "stdDeviationX")
method setStdDeviationY (line 1628) | @ReactProp(name = "stdDeviationY")
method setEdgeMode (line 1633) | @ReactProp(name = "values")
class FeMergeManager (line 1639) | static class FeMergeManager extends FilterPrimitiveManager<FeMergeView>
method FeMergeManager (line 1641) | FeMergeManager() {
method setNodes (line 1648) | @ReactProp(name = "nodes")
class FeOffsetManager (line 1654) | static class FeOffsetManager extends FilterPrimitiveManager<FeOffsetView>
method FeOffsetManager (line 1656) | FeOffsetManager() {
method setIn1 (line 1663) | @ReactProp(name = "in1")
method setDx (line 1668) | @ReactProp(name = "dx")
method setDy (line 1673) | @ReactProp(name = "dy")
method setFilter (line 1679) | @ReactProp(name = "filter")
method setColor (line 1684) | @ReactProp(name = "color", customType = "Color")
method setFill (line 1689) | @ReactProp(name = "fill")
method setFill (line 1694) | public void setFill(T view, @Nullable ReadableMap value) {
method setFillOpacity (line 1698) | @ReactProp(name = "fillOpacity", defaultFloat = 1f)
method setFillRule (line 1703) | @ReactProp(name = "fillRule", defaultInt = FILL_RULE_NONZERO)
method setStroke (line 1708) | @ReactProp(name = "stroke")
method setStroke (line 1713) | public void setStroke(T view, @Nullable ReadableMap value) {
method setStrokeOpacity (line 1717) | @ReactProp(name = "strokeOpacity", defaultFloat = 1f)
method setStrokeDasharray (line 1722) | @ReactProp(name = "strokeDasharray")
method setStrokeDashoffset (line 1727) | @ReactProp(name = "strokeDashoffset")
method setStrokeWidth (line 1732) | @ReactProp(name = "strokeWidth")
method setStrokeMiterlimit (line 1737) | @ReactProp(name = "strokeMiterlimit", defaultFloat = 4f)
method setStrokeLinecap (line 1742) | @ReactProp(name = "strokeLinecap", defaultInt = CAP_ROUND)
method setStrokeLinejoin (line 1747) | @ReactProp(name = "strokeLinejoin", defaultInt = JOIN_ROUND)
method setVectorEffect (line 1752) | @ReactProp(name = "vectorEffect")
method setPropList (line 1757) | @ReactProp(name = "propList")
FILE: android/src/main/java/com/horcrux/svg/SVGLength.java
class SVGLength (line 7) | class SVGLength {
type UnitType (line 9) | public enum UnitType {
method SVGLength (line 26) | private SVGLength() {
method SVGLength (line 31) | SVGLength(double number) {
method SVGLength (line 36) | SVGLength(String length) {
method from (line 95) | static SVGLength from(Dynamic dynamic) {
method from (line 106) | static SVGLength from(String string) {
method from (line 110) | static SVGLength from(Double value) {
method toString (line 114) | static String toString(Dynamic dynamic) {
method arrayFrom (line 125) | static ArrayList<SVGLength> arrayFrom(Dynamic dynamic) {
method arrayFrom (line 160) | static ArrayList<SVGLength> arrayFrom(ReadableArray arr) {
FILE: android/src/main/java/com/horcrux/svg/SvgPackage.java
class SvgPackage (line 34) | @ReactModuleList(
method getViewManagersMap (line 43) | private Map<String, ModuleSpec> getViewManagersMap(final ReactApplicat...
method getViewManagerNames (line 313) | @Override
method getViewManagers (line 318) | @Override
method createViewManager (line 324) | @Override
method getModule (line 331) | @Override
method getReactModuleInfoProvider (line 343) | @Override
method createJSModules (line 385) | @SuppressWarnings("unused")
FILE: android/src/main/java/com/horcrux/svg/SvgView.java
class SvgView (line 37) | @SuppressLint("ViewConstructor")
method interceptsTouchEvent (line 40) | @Override
type Events (line 45) | @SuppressWarnings("unused")
method Events (line 51) | Events(final String name) {
method toString (line 55) | @Nonnull
method SvgView (line 65) | public SvgView(ReactContext reactContext) {
method setId (line 75) | @Override
method onInitializeAccessibilityNodeInfo (line 81) | @Override
method invalidate (line 91) | @Override
method startViewTransition (line 114) | @Override
method onDetachedFromWindow (line 119) | @Override
method onDraw (line 128) | @Override
method setToDataUrlTask (line 155) | void setToDataUrlTask(Runnable task) {
method onSizeChanged (line 159) | @Override
method reactTagForTouch (line 165) | @Override
method notRendered (line 195) | boolean notRendered() {
method clearChildCache (line 199) | private void clearChildCache() {
method setCurrentColor (line 213) | public void setCurrentColor(Integer color) {
method setMinX (line 219) | public void setMinX(float minX) {
method setMinY (line 225) | public void setMinY(float minY) {
method setVbWidth (line 231) | public void setVbWidth(float vbWidth) {
method setVbHeight (line 237) | public void setVbHeight(float vbHeight) {
method setBbWidth (line 243) | public void setBbWidth(Dynamic bbWidth) {
method setBbHeight (line 249) | public void setBbHeight(Dynamic bbHeight) {
method setAlign (line 255) | public void setAlign(String align) {
method setMeetOrSlice (line 261) | public void setMeetOrSlice(int meetOrSlice) {
method drawOutput (line 267) | private Bitmap drawOutput() {
method getCanvasBounds (line 286) | Rect getCanvasBounds() {
method getCanvasWidth (line 290) | float getCanvasWidth() {
method getCanvasHeight (line 294) | float getCanvasHeight() {
method getCtm (line 298) | Matrix getCtm() {
method drawChildren (line 302) | synchronized void drawChildren(final Canvas canvas) {
method getViewBox (line 346) | RectF getViewBox() {
method toDataURL (line 351) | String toDataURL() {
method toDataURL (line 365) | String toDataURL(int width, int height) {
method enableTouchEvents (line 379) | void enableTouchEvents() {
method isResponsible (line 385) | boolean isResponsible() {
method hitTest (line 389) | private int hitTest(float touchX, float touchY) {
method defineClipPath (line 414) | void defineClipPath(VirtualView clipPath, String clipPathRef) {
method getDefinedClipPath (line 418) | VirtualView getDefinedClipPath(String clipPathRef) {
method defineTemplate (line 422) | void defineTemplate(VirtualView template, String templateRef) {
method getDefinedTemplate (line 426) | VirtualView getDefinedTemplate(String templateRef) {
method defineBrush (line 430) | void defineBrush(Brush brush, String brushRef) {
method getDefinedBrush (line 434) | Brush getDefinedBrush(String brushRef) {
method defineMask (line 438) | void defineMask(VirtualView mask, String maskRef) {
method getDefinedMask (line 442) | VirtualView getDefinedMask(String maskRef) {
method defineFilter (line 446) | void defineFilter(VirtualView filter, String filterRef) {
method getDefinedFilter (line 450) | VirtualView getDefinedFilter(String filterRef) {
method defineMarker (line 454) | void defineMarker(VirtualView marker, String markerRef) {
method getDefinedMarker (line 458) | VirtualView getDefinedMarker(String markerRef) {
method getCurrentBitmap (line 462) | public Bitmap getCurrentBitmap() {
FILE: android/src/main/java/com/horcrux/svg/SvgViewManager.java
class SvgViewManager (line 38) | class SvgViewManager extends ReactViewManager
method getDelegate (line 48) | protected ViewManagerDelegate getDelegate() {
method SvgViewManager (line 52) | public SvgViewManager() {
method setSvgView (line 56) | static void setSvgView(int tag, SvgView svg) {
method runWhenViewIsAvailable (line 65) | static void runWhenViewIsAvailable(int tag, Runnable task) {
method getSvgViewByTag (line 69) | static @Nullable SvgView getSvgViewByTag(int tag) {
method getName (line 73) | @Nonnull
method createViewInstance (line 79) | @Nonnull
method updateExtraData (line 85) | @Override
method onDropViewInstance (line 91) | @Override
method needsCustomLayoutForChildren (line 97) | @Override
method setColor (line 102) | @ReactProp(name = "color", customType = "Color")
method setMinX (line 108) | @ReactProp(name = "minX")
method setMinY (line 114) | @ReactProp(name = "minY")
method setVbWidth (line 120) | @ReactProp(name = "vbWidth")
method setVbHeight (line 126) | @ReactProp(name = "vbHeight")
method setBbWidth (line 132) | @ReactProp(name = "bbWidth")
method setBbHeight (line 137) | @ReactProp(name = "bbHeight")
method setAlign (line 142) | @ReactProp(name = "align")
method setMeetOrSlice (line 148) | @ReactProp(name = "meetOrSlice")
method setPointerEvents (line 154) | @ReactProp(name = ViewProps.POINTER_EVENTS)
method setHasTVPreferredFocus (line 169) | @Override
method setBorderBottomColor (line 174) | @Override
method setNextFocusDown (line 179) | @Override
method setBorderRightColor (line 184) | @Override
method setNextFocusRight (line 189) | @Override
method setBorderLeftColor (line 194) | @Override
method setBorderColor (line 199) | @Override
method setRemoveClippedSubviews (line 204) | @Override
method setNextFocusForward (line 209) | @Override
method setNextFocusUp (line 214) | @Override
method setAccessible (line 219) | @Override
method setBorderStartColor (line 224) | @Override
method setBorderEndColor (line 229) | @Override
method setFocusable (line 234) | @Override
method setNativeBackgroundAndroid (line 239) | @Override
method setNativeForegroundAndroid (line 244) | @Override
method setBackfaceVisibility (line 249) | @Override
method setBorderStyle (line 254) | @Override
method setNeedsOffscreenAlphaCompositing (line 259) | @Override
method setHitSlop (line 264) | @Override
method setBorderTopColor (line 299) | @Override
method setNextFocusLeft (line 304) | @Override
method setBorderBlockColor (line 309) | @Override
method setBorderBlockEndColor (line 314) | @Override
method setBorderBlockStartColor (line 319) | @Override
method setBorderRadius (line 324) | @Override
method setBorderTopLeftRadius (line 329) | @Override
method setBorderTopRightRadius (line 334) | @Override
method setBorderBottomRightRadius (line 339) | @Override
method setBorderBottomLeftRadius (line 344) | @Override
method setBorderTopStartRadius (line 349) | @Override
method setBorderTopEndRadius (line 354) | @Override
method setBorderBottomStartRadius (line 359) | @Override
method setBorderBottomEndRadius (line 364) | @Override
method setBorderEndEndRadius (line 369) | @Override
method setBorderEndStartRadius (line 374) | @Override
method setBorderStartEndRadius (line 379) | @Override
method setBorderStartStartRadius (line 384) | @Override
FILE: android/src/main/java/com/horcrux/svg/SvgViewModule.java
class SvgViewModule (line 19) | @ReactModule(name = SvgViewModule.NAME)
method SvgViewModule (line 21) | SvgViewModule(ReactApplicationContext reactContext) {
method getName (line 27) | @Nonnull
method toDataURL (line 33) | private static void toDataURL(
method toDataURL (line 80) | @SuppressWarnings("unused")
FILE: android/src/main/java/com/horcrux/svg/SymbolView.java
class SymbolView (line 18) | @SuppressLint("ViewConstructor")
method SymbolView (line 28) | public SymbolView(ReactContext reactContext) {
method setMinX (line 32) | public void setMinX(float minX) {
method setMinY (line 37) | public void setMinY(float minY) {
method setVbWidth (line 42) | public void setVbWidth(float vbWidth) {
method setVbHeight (line 47) | public void setVbHeight(float vbHeight) {
method setAlign (line 52) | public void setAlign(String align) {
method setMeetOrSlice (line 57) | public void setMeetOrSlice(int meetOrSlice) {
method draw (line 62) | @Override
method drawSymbol (line 67) | void drawSymbol(Canvas canvas, Paint paint, float opacity, float width...
FILE: android/src/main/java/com/horcrux/svg/TSpanView.java
class TSpanView (line 47) | @SuppressLint("ViewConstructor")
method TSpanView (line 63) | public TSpanView(ReactContext reactContext) {
method setContent (line 68) | public void setContent(@Nullable String content) {
method invalidate (line 73) | @Override
method clearCache (line 79) | void clearCache() {
method draw (line 84) | @Override
method drawWrappedText (line 117) | private void drawWrappedText(Canvas canvas, Paint paint) {
method getStaticLayout (line 160) | @SuppressWarnings("deprecation")
method visualToLogical (line 187) | public static String visualToLogical(String text) {
method getPath (line 229) | @Override
method getSubtreeTextChunksTotalAdvance (line 249) | double getSubtreeTextChunksTotalAdvance(Paint paint) {
method applySpacingAndFeatures (line 293) | private void applySpacingAndFeatures(Paint paint, FontData font) {
method getLinePath (line 316) | @SuppressWarnings("ConstantConditions")
method getAbsoluteStartOffset (line 1109) | private double getAbsoluteStartOffset(SVGLength startOffset, double di...
method getTextAnchorOffset (line 1113) | private double getTextAnchorOffset(TextAnchor textAnchor, double textM...
method applyTextPropertiesToPaint (line 1127) | private void applyTextPropertiesToPaint(Paint paint, FontData font) {
method setupTextPath (line 1195) | private void setupTextPath() {
method hitTest (line 1210) | @Override
FILE: android/src/main/java/com/horcrux/svg/TextLayoutAlgorithm.java
class TextLayoutAlgorithm (line 15) | @SuppressWarnings("ALL")
class CharacterInformation (line 17) | class CharacterInformation {
method CharacterInformation (line 35) | CharacterInformation(int index, char c) {
class LayoutInput (line 41) | class LayoutInput {
method getSubTreeTypographicCharacterPositions (line 46) | private void getSubTreeTypographicCharacterPositions(
method layoutText (line 76) | CharacterInformation[] layoutText(LayoutInput layoutInput) {
FILE: android/src/main/java/com/horcrux/svg/TextPathView.java
class TextPathView (line 21) | @SuppressLint("ViewConstructor")
method TextPathView (line 31) | public TextPathView(ReactContext reactContext) {
method setHref (line 35) | public void setHref(String href) {
method setStartOffset (line 40) | public void setStartOffset(Dynamic startOffset) {
method setMethod (line 45) | public void setMethod(@Nullable String method) {
method setSpacing (line 50) | public void setSpacing(@Nullable String spacing) {
method setSide (line 55) | public void setSide(@Nullable String side) {
method setSharp (line 60) | public void setSharp(@Nullable String midLine) {
method getMethod (line 65) | @SuppressWarnings("unused")
method getSpacing (line 70) | @SuppressWarnings("unused")
method getSide (line 75) | TextPathSide getSide() {
method getMidLine (line 79) | TextPathMidLine getMidLine() {
method getStartOffset (line 83) | SVGLength getStartOffset() {
method draw (line 87) | @Override
method getTextPath (line 92) | Path getTextPath(Canvas canvas, Paint paint) {
method getPath (line 105) | @Override
method pushGlyphContext (line 110) | @Override
method popGlyphContext (line 115) | @Override
FILE: android/src/main/java/com/horcrux/svg/TextProperties.java
class TextProperties (line 7) | class TextProperties {
type AlignmentBaseline (line 24) | enum AlignmentBaseline {
method AlignmentBaseline (line 52) | AlignmentBaseline(String alignment) {
method getEnum (line 56) | static AlignmentBaseline getEnum(String strVal) {
method toString (line 71) | @Nonnull
type Direction (line 79) | @SuppressWarnings("unused")
type FontVariantLigatures (line 85) | enum FontVariantLigatures {
type FontStyle (line 91) | enum FontStyle {
type FontWeight (line 98) | enum FontWeight {
method FontWeight (line 117) | FontWeight(String weight) {
method hasEnum (line 121) | static boolean hasEnum(String strVal) {
method get (line 125) | static FontWeight get(String strVal) {
method toString (line 137) | @Nonnull
type TextAnchor (line 144) | enum TextAnchor {
type TextDecoration (line 150) | enum TextDecoration {
method TextDecoration (line 159) | TextDecoration(String decoration) {
method getEnum (line 163) | static TextDecoration getEnum(String strVal) {
method toString (line 178) | @Nonnull
type TextLengthAdjust (line 185) | enum TextLengthAdjust {
type TextPathMethod (line 190) | enum TextPathMethod {
type TextPathMidLine (line 202) | enum TextPathMidLine {
type TextPathSide (line 208) | enum TextPathSide {
type TextPathSpacing (line 214) | enum TextPathSpacing {
FILE: android/src/main/java/com/horcrux/svg/TextView.java
class TextView (line 26) | @SuppressLint("ViewConstructor")
method TextView (line 40) | public TextView(ReactContext reactContext) {
method invalidate (line 44) | @Override
method clearCache (line 53) | void clearCache() {
method setInlineSize (line 58) | public void setInlineSize(Dynamic inlineSize) {
method setTextLength (line 63) | public void setTextLength(Dynamic length) {
method setLengthAdjust (line 68) | public void setLengthAdjust(@Nullable String adjustment) {
method setMethod (line 73) | public void setMethod(@Nullable String alignment) {
method setBaselineShift (line 78) | public void setBaselineShift(Dynamic baselineShift) {
method setVerticalAlign (line 83) | public void setVerticalAlign(Dynamic dynamicVerticalAlign) {
method setRotate (line 105) | public void setRotate(Dynamic rotate) {
method setDeltaX (line 110) | public void setDeltaX(Dynamic deltaX) {
method setDeltaY (line 115) | public void setDeltaY(Dynamic deltaY) {
method setPositionX (line 120) | public void setPositionX(Dynamic positionX) {
method setPositionY (line 125) | public void setPositionY(Dynamic positionY) {
method draw (line 130) | @Override
method getPath (line 140) | @Override
method getPath (line 149) | @Override
method getAlignmentBaseline (line 154) | AlignmentBaseline getAlignmentBaseline() {
method getBaselineShift (line 175) | String getBaselineShift() {
method getGroupPath (line 193) | Path getGroupPath(Canvas canvas, Paint paint) {
method pushGlyphContext (line 204) | @Override
method getTextAnchorRoot (line 211) | TextView getTextAnchorRoot() {
method getSubtreeTextChunksTotalAdvance (line 228) | double getSubtreeTextChunksTotalAdvance(Paint paint) {
method getTextContainer (line 244) | TextView getTextContainer() {
FILE: android/src/main/java/com/horcrux/svg/UseView.java
class UseView (line 22) | @SuppressLint("ViewConstructor")
method UseView (line 30) | public UseView(ReactContext reactContext) {
method setHref (line 34) | public void setHref(String href) {
method setX (line 39) | public void setX(Dynamic x) {
method setY (line 44) | public void setY(Dynamic y) {
method setWidth (line 49) | public void setWidth(Dynamic width) {
method setHeight (line 54) | public void setHeight(Dynamic height) {
method draw (line 59) | @Override
method hitTest (line 102) | @Override
method getPath (line 130) | @Override
FILE: android/src/main/java/com/horcrux/svg/ViewBox.java
class ViewBox (line 14) | class ViewBox {
method getTransform (line 20) | static Matrix getTransform(RectF vbRect, RectF eRect, String align, in...
FILE: android/src/main/java/com/horcrux/svg/VirtualView.java
class VirtualView (line 32) | @SuppressLint("ViewConstructor")
method VirtualView (line 36) | VirtualView(ReactContext reactContext) {
method setPointerEvents (line 105) | public void setPointerEvents(PointerEvents pointerEvents) {
method onInitializeAccessibilityNodeInfo (line 109) | @Override
method invalidate (line 135) | @Override
method clearCache (line 145) | void clearCache() {
method clearChildCache (line 156) | void clearChildCache() {
method clearParentCache (line 166) | private void clearParentCache() {
method getTextRoot (line 181) | @Nullable
method getParentTextRoot (line 204) | @Nullable
method getFontSizeFromContext (line 214) | private double getFontSizeFromContext() {
method draw (line 232) | abstract void draw(Canvas canvas, Paint paint, float opacity);
method render (line 234) | void render(Canvas canvas, Paint paint, float opacity) {
method saveAndSetupCanvas (line 248) | int saveAndSetupCanvas(Canvas canvas, Matrix ctm) {
method restoreCanvas (line 263) | void restoreCanvas(Canvas canvas, int count) {
method setName (line 267) | public void setName(String name) {
method setDisplay (line 272) | public void setDisplay(String display) {
method setMask (line 277) | public void setMask(String mask) {
method setMarkerStart (line 282) | public void setMarkerStart(String markerStart) {
method setMarkerMid (line 287) | public void setMarkerMid(String markerMid) {
method setMarkerEnd (line 292) | public void setMarkerEnd(String markerEnd) {
method setClipPath (line 297) | public void setClipPath(String clipPath) {
method setClipRule (line 303) | public void setClipRule(int clipRule) {
method setOpacity (line 308) | public void setOpacity(float opacity) {
method setMatrix (line 313) | public void setMatrix(Dynamic matrixArray) {
method setMatrix (line 318) | public void setMatrix(@Nullable ReadableArray matrixArray) {
method setResponsible (line 340) | public void setResponsible(boolean responsible) {
method getClipPath (line 345) | @Nullable
method getClipPath (line 350) | @Nullable
method clip (line 379) | void clip(Canvas canvas, Paint paint) {
method hitTest (line 387) | abstract int hitTest(final float[] point);
method isResponsible (line 389) | boolean isResponsible() {
method getPath (line 393) | abstract Path getPath(Canvas canvas, Paint paint);
method getSvgView (line 395) | @Nullable
method relativeOnFraction (line 418) | double relativeOnFraction(SVGLength length, float relative) {
method relativeOn (line 428) | double relativeOn(SVGLength length, float relative) {
method relativeOnWidth (line 438) | double relativeOnWidth(SVGLength length) {
method relativeOnHeight (line 446) | double relativeOnHeight(SVGLength length) {
method relativeOnOther (line 454) | double relativeOnOther(SVGLength length) {
method fromRelativeFast (line 464) | private double fromRelativeFast(SVGLength length) {
method getCanvasWidth (line 496) | private float getCanvasWidth() {
method getCanvasHeight (line 510) | private float getCanvasHeight() {
method getCanvasDiagonal (line 524) | private double getCanvasDiagonal() {
method saveDefinition (line 534) | void saveDefinition() {
method onMeasure (line 540) | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
method onLayout (line 566) | protected void onLayout(boolean changed, int pleft, int ptop, int prig...
method setClientRect (line 586) | void setClientRect(RectF rect) {
method getClientRect (line 625) | RectF getClientRect() {
FILE: android/src/main/java/com/horcrux/svg/events/SvgLoadEvent.java
class SvgLoadEvent (line 10) | public class SvgLoadEvent extends Event<SvgLoadEvent> {
method SvgLoadEvent (line 17) | public SvgLoadEvent(
method getEventName (line 31) | @Override
method getCoalescingKey (line 36) | @Override
method dispatch (line 41) | @Override
method getEventData (line 46) | protected WritableMap getEventData() {
FILE: android/src/main/java/com/horcrux/svg/events/SvgOnLayoutEvent.java
class SvgOnLayoutEvent (line 10) | public class SvgOnLayoutEvent extends Event<SvgOnLayoutEvent> {
method SvgOnLayoutEvent (line 18) | public SvgOnLayoutEvent(int surfaceId, int viewId, int x, int y, int w...
method getEventName (line 26) | @Override
method getCoalescingKey (line 31) | @Override
method getEventData (line 36) | @Override
FILE: android/src/main/jni/rnsvg.cpp
type facebook (line 13) | namespace facebook {
type react (line 14) | namespace react {
function __hostFunction_NativeSvgRenderableModuleSpecJSI_isPointInFill (line 16) | static facebook::jsi::Value __hostFunction_NativeSvgRenderableModule...
function __hostFunction_NativeSvgRenderableModuleSpecJSI_isPointInStroke (line 21) | static facebook::jsi::Value __hostFunction_NativeSvgRenderableModule...
function __hostFunction_NativeSvgRenderableModuleSpecJSI_getTotalLength (line 26) | static facebook::jsi::Value __hostFunction_NativeSvgRenderableModule...
function __hostFunction_NativeSvgRenderableModuleSpecJSI_getPointAtLength (line 31) | static facebook::jsi::Value __hostFunction_NativeSvgRenderableModule...
function __hostFunction_NativeSvgRenderableModuleSpecJSI_getBBox (line 36) | static facebook::jsi::Value __hostFunction_NativeSvgRenderableModule...
function __hostFunction_NativeSvgRenderableModuleSpecJSI_getCTM (line 41) | static facebook::jsi::Value __hostFunction_NativeSvgRenderableModule...
function __hostFunction_NativeSvgRenderableModuleSpecJSI_getScreenCTM (line 46) | static facebook::jsi::Value __hostFunction_NativeSvgRenderableModule...
function __hostFunction_NativeSvgRenderableModuleSpecJSI_getRawResource (line 51) | static facebook::jsi::Value __hostFunction_NativeSvgRenderableModule...
function __hostFunction_NativeSvgViewModuleSpecJSI_toDataURL (line 67) | static facebook::jsi::Value __hostFunction_NativeSvgViewModuleSpecJS...
function rnsvg_ModuleProvider (line 77) | std::shared_ptr<TurboModule> rnsvg_ModuleProvider(const std::string ...
FILE: android/src/main/jni/rnsvg.h
function namespace (line 9) | namespace facebook {
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGCircleManagerDelegate.java
class RNSVGCircleManagerDelegate (line 21) | public class RNSVGCircleManagerDelegate<T extends View, U extends BaseVi...
method RNSVGCircleManagerDelegate (line 22) | public RNSVGCircleManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGCircleManagerInterface.java
type RNSVGCircleManagerInterface (line 17) | public interface RNSVGCircleManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setCx (line 45) | void setCx(T view, Dynamic value);
method setCy (line 46) | void setCy(T view, Dynamic value);
method setR (line 47) | void setR(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGClipPathManagerDelegate.java
class RNSVGClipPathManagerDelegate (line 21) | public class RNSVGClipPathManagerDelegate<T extends View, U extends Base...
method RNSVGClipPathManagerDelegate (line 22) | public RNSVGClipPathManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGClipPathManagerInterface.java
type RNSVGClipPathManagerInterface (line 17) | public interface RNSVGClipPathManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGDefsManagerDelegate.java
class RNSVGDefsManagerDelegate (line 19) | public class RNSVGDefsManagerDelegate<T extends View, U extends BaseView...
method RNSVGDefsManagerDelegate (line 20) | public RNSVGDefsManagerDelegate(U viewManager) {
method setProperty (line 23) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGDefsManagerInterface.java
type RNSVGDefsManagerInterface (line 16) | public interface RNSVGDefsManagerInterface<T extends View> {
method setName (line 17) | void setName(T view, @Nullable String value);
method setOpacity (line 18) | void setOpacity(T view, float value);
method setMatrix (line 19) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 20) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 21) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 22) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 23) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 24) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 25) | void setClipRule(T view, int value);
method setResponsible (line 26) | void setResponsible(T view, boolean value);
method setDisplay (line 27) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 28) | void setPointerEvents(T view, @Nullable String value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGEllipseManagerDelegate.java
class RNSVGEllipseManagerDelegate (line 21) | public class RNSVGEllipseManagerDelegate<T extends View, U extends BaseV...
method RNSVGEllipseManagerDelegate (line 22) | public RNSVGEllipseManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGEllipseManagerInterface.java
type RNSVGEllipseManagerInterface (line 17) | public interface RNSVGEllipseManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setCx (line 45) | void setCx(T view, Dynamic value);
method setCy (line 46) | void setCy(T view, Dynamic value);
method setRx (line 47) | void setRx(T view, Dynamic value);
method setRy (line 48) | void setRy(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerDelegate.java
class RNSVGFeBlendManagerDelegate (line 19) | public class RNSVGFeBlendManagerDelegate<T extends View, U extends BaseV...
method RNSVGFeBlendManagerDelegate (line 20) | public RNSVGFeBlendManagerDelegate(U viewManager) {
method setProperty (line 23) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerInterface.java
type RNSVGFeBlendManagerInterface (line 16) | public interface RNSVGFeBlendManagerInterface<T extends View> {
method setX (line 17) | void setX(T view, Dynamic value);
method setY (line 18) | void setY(T view, Dynamic value);
method setWidth (line 19) | void setWidth(T view, Dynamic value);
method setHeight (line 20) | void setHeight(T view, Dynamic value);
method setResult (line 21) | void setResult(T view, @Nullable String value);
method setIn1 (line 22) | void setIn1(T view, @Nullable String value);
method setIn2 (line 23) | void setIn2(T view, @Nullable String value);
method setMode (line 24) | void setMode(T view, @Nullable String value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeColorMatrixManagerDelegate.java
class RNSVGFeColorMatrixManagerDelegate (line 20) | public class RNSVGFeColorMatrixManagerDelegate<T extends View, U extends...
method RNSVGFeColorMatrixManagerDelegate (line 21) | public RNSVGFeColorMatrixManagerDelegate(U viewManager) {
method setProperty (line 24) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeColorMatrixManagerInterface.java
type RNSVGFeColorMatrixManagerInterface (line 17) | public interface RNSVGFeColorMatrixManagerInterface<T extends View> {
method setX (line 18) | void setX(T view, Dynamic value);
method setY (line 19) | void setY(T view, Dynamic value);
method setWidth (line 20) | void setWidth(T view, Dynamic value);
method setHeight (line 21) | void setHeight(T view, Dynamic value);
method setResult (line 22) | void setResult(T view, @Nullable String value);
method setIn1 (line 23) | void setIn1(T view, @Nullable String value);
method setType (line 24) | void setType(T view, @Nullable String value);
method setValues (line 25) | void setValues(T view, @Nullable ReadableArray value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerDelegate.java
class RNSVGFeCompositeManagerDelegate (line 19) | public class RNSVGFeCompositeManagerDelegate<T extends View, U extends B...
method RNSVGFeCompositeManagerDelegate (line 20) | public RNSVGFeCompositeManagerDelegate(U viewManager) {
method setProperty (line 23) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerInterface.java
type RNSVGFeCompositeManagerInterface (line 16) | public interface RNSVGFeCompositeManagerInterface<T extends View> {
method setX (line 17) | void setX(T view, Dynamic value);
method setY (line 18) | void setY(T view, Dynamic value);
method setWidth (line 19) | void setWidth(T view, Dynamic value);
method setHeight (line 20) | void setHeight(T view, Dynamic value);
method setResult (line 21) | void setResult(T view, @Nullable String value);
method setIn1 (line 22) | void setIn1(T view, @Nullable String value);
method setIn2 (line 23) | void setIn2(T view, @Nullable String value);
method setOperator1 (line 24) | void setOperator1(T view, @Nullable String value);
method setK1 (line 25) | void setK1(T view, float value);
method setK2 (line 26) | void setK2(T view, float value);
method setK3 (line 27) | void setK3(T view, float value);
method setK4 (line 28) | void setK4(T view, float value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerDelegate.java
class RNSVGFeFloodManagerDelegate (line 19) | public class RNSVGFeFloodManagerDelegate<T extends View, U extends BaseV...
method RNSVGFeFloodManagerDelegate (line 20) | public RNSVGFeFloodManagerDelegate(U viewManager) {
method setProperty (line 23) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerInterface.java
type RNSVGFeFloodManagerInterface (line 16) | public interface RNSVGFeFloodManagerInterface<T extends View> {
method setX (line 17) | void setX(T view, Dynamic value);
method setY (line 18) | void setY(T view, Dynamic value);
method setWidth (line 19) | void setWidth(T view, Dynamic value);
method setHeight (line 20) | void setHeight(T view, Dynamic value);
method setResult (line 21) | void setResult(T view, @Nullable String value);
method setFloodColor (line 22) | void setFloodColor(T view, Dynamic value);
method setFloodOpacity (line 23) | void setFloodOpacity(T view, float value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeGaussianBlurManagerDelegate.java
class RNSVGFeGaussianBlurManagerDelegate (line 19) | public class RNSVGFeGaussianBlurManagerDelegate<T extends View, U extend...
method RNSVGFeGaussianBlurManagerDelegate (line 20) | public RNSVGFeGaussianBlurManagerDelegate(U viewManager) {
method setProperty (line 23) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeGaussianBlurManagerInterface.java
type RNSVGFeGaussianBlurManagerInterface (line 16) | public interface RNSVGFeGaussianBlurManagerInterface<T extends View> {
method setX (line 17) | void setX(T view, Dynamic value);
method setY (line 18) | void setY(T view, Dynamic value);
method setWidth (line 19) | void setWidth(T view, Dynamic value);
method setHeight (line 20) | void setHeight(T view, Dynamic value);
method setResult (line 21) | void setResult(T view, @Nullable String value);
method setIn1 (line 22) | void setIn1(T view, @Nullable String value);
method setStdDeviationX (line 23) | void setStdDeviationX(T view, float value);
method setStdDeviationY (line 24) | void setStdDeviationY(T view, float value);
method setEdgeMode (line 25) | void setEdgeMode(T view, @Nullable String value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeMergeManagerDelegate.java
class RNSVGFeMergeManagerDelegate (line 20) | public class RNSVGFeMergeManagerDelegate<T extends View, U extends BaseV...
method RNSVGFeMergeManagerDelegate (line 21) | public RNSVGFeMergeManagerDelegate(U viewManager) {
method setProperty (line 24) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeMergeManagerInterface.java
type RNSVGFeMergeManagerInterface (line 17) | public interface RNSVGFeMergeManagerInterface<T extends View> {
method setX (line 18) | void setX(T view, Dynamic value);
method setY (line 19) | void setY(T view, Dynamic value);
method setWidth (line 20) | void setWidth(T view, Dynamic value);
method setHeight (line 21) | void setHeight(T view, Dynamic value);
method setResult (line 22) | void setResult(T view, @Nullable String value);
method setNodes (line 23) | void setNodes(T view, @Nullable ReadableArray value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeOffsetManagerDelegate.java
class RNSVGFeOffsetManagerDelegate (line 19) | public class RNSVGFeOffsetManagerDelegate<T extends View, U extends Base...
method RNSVGFeOffsetManagerDelegate (line 20) | public RNSVGFeOffsetManagerDelegate(U viewManager) {
method setProperty (line 23) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeOffsetManagerInterface.java
type RNSVGFeOffsetManagerInterface (line 16) | public interface RNSVGFeOffsetManagerInterface<T extends View> {
method setX (line 17) | void setX(T view, Dynamic value);
method setY (line 18) | void setY(T view, Dynamic value);
method setWidth (line 19) | void setWidth(T view, Dynamic value);
method setHeight (line 20) | void setHeight(T view, Dynamic value);
method setResult (line 21) | void setResult(T view, @Nullable String value);
method setIn1 (line 22) | void setIn1(T view, @Nullable String value);
method setDx (line 23) | void setDx(T view, Dynamic value);
method setDy (line 24) | void setDy(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFilterManagerDelegate.java
class RNSVGFilterManagerDelegate (line 19) | public class RNSVGFilterManagerDelegate<T extends View, U extends BaseVi...
method RNSVGFilterManagerDelegate (line 20) | public RNSVGFilterManagerDelegate(U viewManager) {
method setProperty (line 23) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFilterManagerInterface.java
type RNSVGFilterManagerInterface (line 16) | public interface RNSVGFilterManagerInterface<T extends View> {
method setName (line 17) | void setName(T view, @Nullable String value);
method setX (line 18) | void setX(T view, Dynamic value);
method setY (line 19) | void setY(T view, Dynamic value);
method setHeight (line 20) | void setHeight(T view, Dynamic value);
method setWidth (line 21) | void setWidth(T view, Dynamic value);
method setFilterUnits (line 22) | void setFilterUnits(T view, @Nullable String value);
method setPrimitiveUnits (line 23) | void setPrimitiveUnits(T view, @Nullable String value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGForeignObjectManagerDelegate.java
class RNSVGForeignObjectManagerDelegate (line 21) | public class RNSVGForeignObjectManagerDelegate<T extends View, U extends...
method RNSVGForeignObjectManagerDelegate (line 22) | public RNSVGForeignObjectManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGForeignObjectManagerInterface.java
type RNSVGForeignObjectManagerInterface (line 17) | public interface RNSVGForeignObjectManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
method setX (line 48) | void setX(T view, Dynamic value);
method setY (line 49) | void setY(T view, Dynamic value);
method setHeight (line 50) | void setHeight(T view, Dynamic value);
method setWidth (line 51) | void setWidth(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGGroupManagerDelegate.java
class RNSVGGroupManagerDelegate (line 21) | public class RNSVGGroupManagerDelegate<T extends View, U extends BaseVie...
method RNSVGGroupManagerDelegate (line 22) | public RNSVGGroupManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGGroupManagerInterface.java
type RNSVGGroupManagerInterface (line 17) | public interface RNSVGGroupManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGImageManagerDelegate.java
class RNSVGImageManagerDelegate (line 22) | public class RNSVGImageManagerDelegate<T extends View, U extends BaseVie...
method RNSVGImageManagerDelegate (line 23) | public RNSVGImageManagerDelegate(U viewManager) {
method setProperty (line 26) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGImageManagerInterface.java
type RNSVGImageManagerInterface (line 18) | public interface RNSVGImageManagerInterface<T extends View> {
method setName (line 19) | void setName(T view, @Nullable String value);
method setOpacity (line 20) | void setOpacity(T view, float value);
method setMatrix (line 21) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 22) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 23) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 24) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 25) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 26) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 27) | void setClipRule(T view, int value);
method setResponsible (line 28) | void setResponsible(T view, boolean value);
method setDisplay (line 29) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 30) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 31) | void setColor(T view, @Nullable Integer value);
method setFill (line 32) | void setFill(T view, Dynamic value);
method setFillOpacity (line 33) | void setFillOpacity(T view, float value);
method setFillRule (line 34) | void setFillRule(T view, int value);
method setStroke (line 35) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 36) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 37) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 38) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 39) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 40) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 41) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 42) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 43) | void setVectorEffect(T view, int value);
method setPropList (line 44) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 45) | void setFilter(T view, @Nullable String value);
method setX (line 46) | void setX(T view, Dynamic value);
method setY (line 47) | void setY(T view, Dynamic value);
method setWidth (line 48) | void setWidth(T view, Dynamic value);
method setHeight (line 49) | void setHeight(T view, Dynamic value);
method setSrc (line 50) | void setSrc(T view, @Nullable ReadableMap value);
method setAlign (line 51) | void setAlign(T view, @Nullable String value);
method setMeetOrSlice (line 52) | void setMeetOrSlice(T view, int value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGLineManagerDelegate.java
class RNSVGLineManagerDelegate (line 21) | public class RNSVGLineManagerDelegate<T extends View, U extends BaseView...
method RNSVGLineManagerDelegate (line 22) | public RNSVGLineManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGLineManagerInterface.java
type RNSVGLineManagerInterface (line 17) | public interface RNSVGLineManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setX1 (line 45) | void setX1(T view, Dynamic value);
method setY1 (line 46) | void setY1(T view, Dynamic value);
method setX2 (line 47) | void setX2(T view, Dynamic value);
method setY2 (line 48) | void setY2(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGLinearGradientManagerDelegate.java
class RNSVGLinearGradientManagerDelegate (line 20) | public class RNSVGLinearGradientManagerDelegate<T extends View, U extend...
method RNSVGLinearGradientManagerDelegate (line 21) | public RNSVGLinearGradientManagerDelegate(U viewManager) {
method setProperty (line 24) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGLinearGradientManagerInterface.java
type RNSVGLinearGradientManagerInterface (line 17) | public interface RNSVGLinearGradientManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setX1 (line 30) | void setX1(T view, Dynamic value);
method setY1 (line 31) | void setY1(T view, Dynamic value);
method setX2 (line 32) | void setX2(T view, Dynamic value);
method setY2 (line 33) | void setY2(T view, Dynamic value);
method setGradient (line 34) | void setGradient(T view, @Nullable ReadableArray value);
method setGradientUnits (line 35) | void setGradientUnits(T view, int value);
method setGradientTransform (line 36) | void setGradientTransform(T view, @Nullable ReadableArray value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGMarkerManagerDelegate.java
class RNSVGMarkerManagerDelegate (line 21) | public class RNSVGMarkerManagerDelegate<T extends View, U extends BaseVi...
method RNSVGMarkerManagerDelegate (line 22) | public RNSVGMarkerManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGMarkerManagerInterface.java
type RNSVGMarkerManagerInterface (line 17) | public interface RNSVGMarkerManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
method setRefX (line 48) | void setRefX(T view, Dynamic value);
method setRefY (line 49) | void setRefY(T view, Dynamic value);
method setMarkerHeight (line 50) | void setMarkerHeight(T view, Dynamic value);
method setMarkerWidth (line 51) | void setMarkerWidth(T view, Dynamic value);
method setMarkerUnits (line 52) | void setMarkerUnits(T view, @Nullable String value);
method setOrient (line 53) | void setOrient(T view, @Nullable String value);
method setMinX (line 54) | void setMinX(T view, float value);
method setMinY (line 55) | void setMinY(T view, float value);
method setVbWidth (line 56) | void setVbWidth(T view, float value);
method setVbHeight (line 57) | void setVbHeight(T view, float value);
method setAlign (line 58) | void setAlign(T view, @Nullable String value);
method setMeetOrSlice (line 59) | void setMeetOrSlice(T view, int value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGMaskManagerDelegate.java
class RNSVGMaskManagerDelegate (line 21) | public class RNSVGMaskManagerDelegate<T extends View, U extends BaseView...
method RNSVGMaskManagerDelegate (line 22) | public RNSVGMaskManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGMaskManagerInterface.java
type RNSVGMaskManagerInterface (line 17) | public interface RNSVGMaskManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
method setX (line 48) | void setX(T view, Dynamic value);
method setY (line 49) | void setY(T view, Dynamic value);
method setHeight (line 50) | void setHeight(T view, Dynamic value);
method setWidth (line 51) | void setWidth(T view, Dynamic value);
method setMaskUnits (line 52) | void setMaskUnits(T view, int value);
method setMaskContentUnits (line 53) | void setMaskContentUnits(T view, int value);
method setMaskType (line 54) | void setMaskType(T view, int value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGPathManagerDelegate.java
class RNSVGPathManagerDelegate (line 21) | public class RNSVGPathManagerDelegate<T extends View, U extends BaseView...
method RNSVGPathManagerDelegate (line 22) | public RNSVGPathManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGPathManagerInterface.java
type RNSVGPathManagerInterface (line 17) | public interface RNSVGPathManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setD (line 45) | void setD(T view, @Nullable String value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGPatternManagerDelegate.java
class RNSVGPatternManagerDelegate (line 21) | public class RNSVGPatternManagerDelegate<T extends View, U extends BaseV...
method RNSVGPatternManagerDelegate (line 22) | public RNSVGPatternManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGPatternManagerInterface.java
type RNSVGPatternManagerInterface (line 17) | public interface RNSVGPatternManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
method setX (line 48) | void setX(T view, Dynamic value);
method setY (line 49) | void setY(T view, Dynamic value);
method setHeight (line 50) | void setHeight(T view, Dynamic value);
method setWidth (line 51) | void setWidth(T view, Dynamic value);
method setPatternUnits (line 52) | void setPatternUnits(T view, int value);
method setPatternContentUnits (line 53) | void setPatternContentUnits(T view, int value);
method setPatternTransform (line 54) | void setPatternTransform(T view, @Nullable ReadableArray value);
method setMinX (line 55) | void setMinX(T view, float value);
method setMinY (line 56) | void setMinY(T view, float value);
method setVbWidth (line 57) | void setVbWidth(T view, float value);
method setVbHeight (line 58) | void setVbHeight(T view, float value);
method setAlign (line 59) | void setAlign(T view, @Nullable String value);
method setMeetOrSlice (line 60) | void setMeetOrSlice(T view, int value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGRadialGradientManagerDelegate.java
class RNSVGRadialGradientManagerDelegate (line 20) | public class RNSVGRadialGradientManagerDelegate<T extends View, U extend...
method RNSVGRadialGradientManagerDelegate (line 21) | public RNSVGRadialGradientManagerDelegate(U viewManager) {
method setProperty (line 24) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGRadialGradientManagerInterface.java
type RNSVGRadialGradientManagerInterface (line 17) | public interface RNSVGRadialGradientManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setFx (line 30) | void setFx(T view, Dynamic value);
method setFy (line 31) | void setFy(T view, Dynamic value);
method setCx (line 32) | void setCx(T view, Dynamic value);
method setCy (line 33) | void setCy(T view, Dynamic value);
method setRx (line 34) | void setRx(T view, Dynamic value);
method setRy (line 35) | void setRy(T view, Dynamic value);
method setGradient (line 36) | void setGradient(T view, @Nullable ReadableArray value);
method setGradientUnits (line 37) | void setGradientUnits(T view, int value);
method setGradientTransform (line 38) | void setGradientTransform(T view, @Nullable ReadableArray value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGRectManagerDelegate.java
class RNSVGRectManagerDelegate (line 21) | public class RNSVGRectManagerDelegate<T extends View, U extends BaseView...
method RNSVGRectManagerDelegate (line 22) | public RNSVGRectManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGRectManagerInterface.java
type RNSVGRectManagerInterface (line 17) | public interface RNSVGRectManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setX (line 45) | void setX(T view, Dynamic value);
method setY (line 46) | void setY(T view, Dynamic value);
method setHeight (line 47) | void setHeight(T view, Dynamic value);
method setWidth (line 48) | void setWidth(T view, Dynamic value);
method setRx (line 49) | void setRx(T view, Dynamic value);
method setRy (line 50) | void setRy(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGSvgViewAndroidManagerDelegate.java
class RNSVGSvgViewAndroidManagerDelegate (line 21) | public class RNSVGSvgViewAndroidManagerDelegate<T extends View, U extend...
method RNSVGSvgViewAndroidManagerDelegate (line 22) | public RNSVGSvgViewAndroidManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGSvgViewAndroidManagerInterface.java
type RNSVGSvgViewAndroidManagerInterface (line 17) | public interface RNSVGSvgViewAndroidManagerInterface<T extends View> {
method setBbWidth (line 18) | void setBbWidth(T view, Dynamic value);
method setBbHeight (line 19) | void setBbHeight(T view, Dynamic value);
method setMinX (line 20) | void setMinX(T view, float value);
method setMinY (line 21) | void setMinY(T view, float value);
method setVbWidth (line 22) | void setVbWidth(T view, float value);
method setVbHeight (line 23) | void setVbHeight(T view, float value);
method setAlign (line 24) | void setAlign(T view, @Nullable String value);
method setMeetOrSlice (line 25) | void setMeetOrSlice(T view, int value);
method setColor (line 26) | void setColor(T view, @Nullable Integer value);
method setPointerEvents (line 27) | void setPointerEvents(T view, @Nullable String value);
method setHasTVPreferredFocus (line 28) | void setHasTVPreferredFocus(T view, boolean value);
method setBorderBottomColor (line 29) | void setBorderBottomColor(T view, @Nullable Integer value);
method setNextFocusDown (line 30) | void setNextFocusDown(T view, int value);
method setBorderRightColor (line 31) | void setBorderRightColor(T view, @Nullable Integer value);
method setNextFocusRight (line 32) | void setNextFocusRight(T view, int value);
method setBorderLeftColor (line 33) | void setBorderLeftColor(T view, @Nullable Integer value);
method setBorderColor (line 34) | void setBorderColor(T view, @Nullable Integer value);
method setRemoveClippedSubviews (line 35) | void setRemoveClippedSubviews(T view, boolean value);
method setNextFocusForward (line 36) | void setNextFocusForward(T view, int value);
method setNextFocusUp (line 37) | void setNextFocusUp(T view, int value);
method setAccessible (line 38) | void setAccessible(T view, boolean value);
method setBorderStartColor (line 39) | void setBorderStartColor(T view, @Nullable Integer value);
method setBorderEndColor (line 40) | void setBorderEndColor(T view, @Nullable Integer value);
method setFocusable (line 41) | void setFocusable(T view, boolean value);
method setNativeBackgroundAndroid (line 42) | void setNativeBackgroundAndroid(T view, @Nullable ReadableMap value);
method setNativeForegroundAndroid (line 43) | void setNativeForegroundAndroid(T view, @Nullable ReadableMap value);
method setBackfaceVisibility (line 44) | void setBackfaceVisibility(T view, @Nullable String value);
method setBorderStyle (line 45) | void setBorderStyle(T view, @Nullable String value);
method setNeedsOffscreenAlphaCompositing (line 46) | void setNeedsOffscreenAlphaCompositing(T view, boolean value);
method setHitSlop (line 47) | void setHitSlop(T view, Dynamic value);
method setBorderTopColor (line 48) | void setBorderTopColor(T view, @Nullable Integer value);
method setNextFocusLeft (line 49) | void setNextFocusLeft(T view, int value);
method setBorderBlockColor (line 50) | void setBorderBlockColor(T view, @Nullable Integer value);
method setBorderBlockEndColor (line 51) | void setBorderBlockEndColor(T view, @Nullable Integer value);
method setBorderBlockStartColor (line 52) | void setBorderBlockStartColor(T view, @Nullable Integer value);
method setBorderRadius (line 53) | void setBorderRadius(T view, Dynamic value);
method setBorderTopLeftRadius (line 54) | void setBorderTopLeftRadius(T view, Dynamic value);
method setBorderTopRightRadius (line 55) | void setBorderTopRightRadius(T view, Dynamic value);
method setBorderBottomRightRadius (line 56) | void setBorderBottomRightRadius(T view, Dynamic value);
method setBorderBottomLeftRadius (line 57) | void setBorderBottomLeftRadius(T view, Dynamic value);
method setBorderTopStartRadius (line 58) | void setBorderTopStartRadius(T view, Dynamic value);
method setBorderTopEndRadius (line 59) | void setBorderTopEndRadius(T view, Dynamic value);
method setBorderBottomStartRadius (line 60) | void setBorderBottomStartRadius(T view, Dynamic value);
method setBorderBottomEndRadius (line 61) | void setBorderBottomEndRadius(T view, Dynamic value);
method setBorderEndEndRadius (line 62) | void setBorderEndEndRadius(T view, Dynamic value);
method setBorderEndStartRadius (line 63) | void setBorderEndStartRadius(T view, Dynamic value);
method setBorderStartEndRadius (line 64) | void setBorderStartEndRadius(T view, Dynamic value);
method setBorderStartStartRadius (line 65) | void setBorderStartStartRadius(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGSymbolManagerDelegate.java
class RNSVGSymbolManagerDelegate (line 21) | public class RNSVGSymbolManagerDelegate<T extends View, U extends BaseVi...
method RNSVGSymbolManagerDelegate (line 22) | public RNSVGSymbolManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGSymbolManagerInterface.java
type RNSVGSymbolManagerInterface (line 17) | public interface RNSVGSymbolManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
method setMinX (line 48) | void setMinX(T view, float value);
method setMinY (line 49) | void setMinY(T view, float value);
method setVbWidth (line 50) | void setVbWidth(T view, float value);
method setVbHeight (line 51) | void setVbHeight(T view, float value);
method setAlign (line 52) | void setAlign(T view, @Nullable String value);
method setMeetOrSlice (line 53) | void setMeetOrSlice(T view, int value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTSpanManagerDelegate.java
class RNSVGTSpanManagerDelegate (line 21) | public class RNSVGTSpanManagerDelegate<T extends View, U extends BaseVie...
method RNSVGTSpanManagerDelegate (line 22) | public RNSVGTSpanManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTSpanManagerInterface.java
type RNSVGTSpanManagerInterface (line 17) | public interface RNSVGTSpanManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
method setDx (line 48) | void setDx(T view, Dynamic value);
method setDy (line 49) | void setDy(T view, Dynamic value);
method setX (line 50) | void setX(T view, Dynamic value);
method setY (line 51) | void setY(T view, Dynamic value);
method setRotate (line 52) | void setRotate(T view, Dynamic value);
method setInlineSize (line 53) | void setInlineSize(T view, Dynamic value);
method setTextLength (line 54) | void setTextLength(T view, Dynamic value);
method setBaselineShift (line 55) | void setBaselineShift(T view, Dynamic value);
method setLengthAdjust (line 56) | void setLengthAdjust(T view, @Nullable String value);
method setAlignmentBaseline (line 57) | void setAlignmentBaseline(T view, @Nullable String value);
method setVerticalAlign (line 58) | void setVerticalAlign(T view, Dynamic value);
method setContent (line 59) | void setContent(T view, @Nullable String value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTextManagerDelegate.java
class RNSVGTextManagerDelegate (line 21) | public class RNSVGTextManagerDelegate<T extends View, U extends BaseView...
method RNSVGTextManagerDelegate (line 22) | public RNSVGTextManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTextManagerInterface.java
type RNSVGTextManagerInterface (line 17) | public interface RNSVGTextManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
method setDx (line 48) | void setDx(T view, Dynamic value);
method setDy (line 49) | void setDy(T view, Dynamic value);
method setX (line 50) | void setX(T view, Dynamic value);
method setY (line 51) | void setY(T view, Dynamic value);
method setRotate (line 52) | void setRotate(T view, Dynamic value);
method setInlineSize (line 53) | void setInlineSize(T view, Dynamic value);
method setTextLength (line 54) | void setTextLength(T view, Dynamic value);
method setBaselineShift (line 55) | void setBaselineShift(T view, Dynamic value);
method setLengthAdjust (line 56) | void setLengthAdjust(T view, @Nullable String value);
method setAlignmentBaseline (line 57) | void setAlignmentBaseline(T view, @Nullable String value);
method setVerticalAlign (line 58) | void setVerticalAlign(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTextPathManagerDelegate.java
class RNSVGTextPathManagerDelegate (line 21) | public class RNSVGTextPathManagerDelegate<T extends View, U extends Base...
method RNSVGTextPathManagerDelegate (line 22) | public RNSVGTextPathManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTextPathManagerInterface.java
type RNSVGTextPathManagerInterface (line 17) | public interface RNSVGTextPathManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setFontSize (line 45) | void setFontSize(T view, Dynamic value);
method setFontWeight (line 46) | void setFontWeight(T view, Dynamic value);
method setFont (line 47) | void setFont(T view, Dynamic value);
method setDx (line 48) | void setDx(T view, Dynamic value);
method setDy (line 49) | void setDy(T view, Dynamic value);
method setX (line 50) | void setX(T view, Dynamic value);
method setY (line 51) | void setY(T view, Dynamic value);
method setRotate (line 52) | void setRotate(T view, Dynamic value);
method setInlineSize (line 53) | void setInlineSize(T view, Dynamic value);
method setTextLength (line 54) | void setTextLength(T view, Dynamic value);
method setBaselineShift (line 55) | void setBaselineShift(T view, Dynamic value);
method setLengthAdjust (line 56) | void setLengthAdjust(T view, @Nullable String value);
method setAlignmentBaseline (line 57) | void setAlignmentBaseline(T view, @Nullable String value);
method setVerticalAlign (line 58) | void setVerticalAlign(T view, Dynamic value);
method setHref (line 59) | void setHref(T view, @Nullable String value);
method setSide (line 60) | void setSide(T view, @Nullable String value);
method setMethod (line 61) | void setMethod(T view, @Nullable String value);
method setMidLine (line 62) | void setMidLine(T view, @Nullable String value);
method setSpacing (line 63) | void setSpacing(T view, @Nullable String value);
method setStartOffset (line 64) | void setStartOffset(T view, Dynamic value);
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGUseManagerDelegate.java
class RNSVGUseManagerDelegate (line 21) | public class RNSVGUseManagerDelegate<T extends View, U extends BaseViewM...
method RNSVGUseManagerDelegate (line 22) | public RNSVGUseManagerDelegate(U viewManager) {
method setProperty (line 25) | @Override
FILE: android/src/paper/java/com/facebook/react/viewmanagers/RNSVGUseManagerInterface.java
type RNSVGUseManagerInterface (line 17) | public interface RNSVGUseManagerInterface<T extends View> {
method setName (line 18) | void setName(T view, @Nullable String value);
method setOpacity (line 19) | void setOpacity(T view, float value);
method setMatrix (line 20) | void setMatrix(T view, @Nullable ReadableArray value);
method setMask (line 21) | void setMask(T view, @Nullable String value);
method setMarkerStart (line 22) | void setMarkerStart(T view, @Nullable String value);
method setMarkerMid (line 23) | void setMarkerMid(T view, @Nullable String value);
method setMarkerEnd (line 24) | void setMarkerEnd(T view, @Nullable String value);
method setClipPath (line 25) | void setClipPath(T view, @Nullable String value);
method setClipRule (line 26) | void setClipRule(T view, int value);
method setResponsible (line 27) | void setResponsible(T view, boolean value);
method setDisplay (line 28) | void setDisplay(T view, @Nullable String value);
method setPointerEvents (line 29) | void setPointerEvents(T view, @Nullable String value);
method setColor (line 30) | void setColor(T view, @Nullable Integer value);
method setFill (line 31) | void setFill(T view, Dynamic value);
method setFillOpacity (line 32) | void setFillOpacity(T view, float value);
method setFillRule (line 33) | void setFillRule(T view, int value);
method setStroke (line 34) | void setStroke(T view, Dynamic value);
method setStrokeOpacity (line 35) | void setStrokeOpacity(T view, float value);
method setStrokeWidth (line 36) | void setStrokeWidth(T view, Dynamic value);
method setStrokeLinecap (line 37) | void setStrokeLinecap(T view, int value);
method setStrokeLinejoin (line 38) | void setStrokeLinejoin(T view, int value);
method setStrokeDasharray (line 39) | void setStrokeDasharray(T view, Dynamic value);
method setStrokeDashoffset (line 40) | void setStrokeDashoffset(T view, float value);
method setStrokeMiterlimit (line 41) | void setStrokeMiterlimit(T view, float value);
method setVectorEffect (line 42) | void setVectorEffect(T view, int value);
method setPropList (line 43) | void setPropList(T view, @Nullable ReadableArray value);
method setFilter (line 44) | void setFilter(T view, @Nullable String value);
method setHref (line 45) | void setHref(T view, @Nullable String value);
method setX (line 46) | void setX(T view, Dynamic value);
method setY (line 47) | void setY(T view, Dynamic value);
method setHeight (line 48) | void setHeight(T view, Dynamic value);
method setWidth (line 49) | void setWidth(T view, Dynamic value);
FILE: android/src/paper/java/com/horcrux/svg/NativeSvgRenderableModuleSpec.java
class NativeSvgRenderableModuleSpec (line 27) | public abstract class NativeSvgRenderableModuleSpec extends ReactContext...
method NativeSvgRenderableModuleSpec (line 30) | public NativeSvgRenderableModuleSpec(ReactApplicationContext reactCont...
method getName (line 34) | @Override
method isPointInFill (line 39) | @ReactMethod(isBlockingSynchronousMethod = true)
method isPointInStroke (line 43) | @ReactMethod(isBlockingSynchronousMethod = true)
method getTotalLength (line 47) | @ReactMethod(isBlockingSynchronousMethod = true)
method getPointAtLength (line 51) | @ReactMethod(isBlockingSynchronousMethod = true)
method getBBox (line 55) | @ReactMethod(isBlockingSynchronousMethod = true)
method getCTM (line 59) | @ReactMethod(isBlockingSynchronousMethod = true)
method getScreenCTM (line 63) | @ReactMethod(isBlockingSynchronousMethod = true)
method getRawResource (line 67) | @ReactMethod
FILE: android/src/paper/java/com/horcrux/svg/NativeSvgViewModuleSpec.java
class NativeSvgViewModuleSpec (line 26) | public abstract class NativeSvgViewModuleSpec extends ReactContextBaseJa...
method NativeSvgViewModuleSpec (line 29) | public NativeSvgViewModuleSpec(ReactApplicationContext reactContext) {
method getName (line 33) | @Override
method toDataURL (line 38) | @ReactMethod
FILE: apple/Brushes/RNSVGBrushType.h
type RNSVGBrushType (line 9) | typedef enum {
FILE: apple/Filters/MetalCI/RNSVGArithmeticFilter.h
function interface (line 3) | interface RNSVGArithmeticFilter : RNSVGCustomFilter {
FILE: apple/Filters/MetalCI/RNSVGCompositeXor.h
function interface (line 3) | interface RNSVGCompositeXor : RNSVGCustomFilter {
FILE: apple/Filters/MetalCI/RNSVGCustomFilter.h
function interface (line 3) | interface RNSVGCustomFilter : CIFilter {
FILE: apple/Filters/RNSVGBlendMode.h
type SVG_FEBLEND_MODE_UNKNOWN (line 1) | typedef CF_ENUM(int32_t, RNSVGBlendMode) {
FILE: apple/Filters/RNSVGColorMatrixType.h
type SVG_FECOLORMATRIX_TYPE_UNKNOWN (line 3) | typedef NS_ENUM(NSInteger, RNSVGColorMatrixType) {
FILE: apple/Filters/RNSVGCompositeOperator.h
type SVG_FECOMPOSITE_OPERATOR_UNKNOWN (line 1) | typedef CF_ENUM(int32_t, RNSVGCompositeOperator) {
FILE: apple/Filters/RNSVGEdgeMode.h
type SVG_EDGEMODE_UNKNOWN (line 3) | typedef NS_ENUM(NSInteger, RNSVGEdgeMode) {
FILE: apple/Text/RNSVGFontData.h
function interface (line 8) | interface RNSVGFontData : NSObject {
FILE: apple/Text/RNSVGTextProperties.h
type RNSVGAlignmentBaselineBaseline (line 6) | typedef NS_ENUM(NSInteger, RNSVGAlignmentBaseline) {
type RNSVGAlignmentBaseline (line 39) | enum RNSVGAlignmentBaseline
type RNSVGAlignmentBaseline (line 41) | enum RNSVGAlignmentBaseline
type RNSVGFontStyle (line 52) | enum RNSVGFontStyle
type RNSVGFontStyle (line 54) | enum RNSVGFontStyle
type RNSVGFontVariantLigatures (line 64) | enum RNSVGFontVariantLigatures
type RNSVGFontVariantLigatures (line 66) | enum RNSVGFontVariantLigatures
type RNSVGFontWeightNormal (line 68) | typedef NS_ENUM(NSInteger, RNSVGFontWeight) {
type RNSVGFontWeight (line 118) | enum RNSVGFontWeight
type RNSVGTextAnchor (line 131) | enum RNSVGTextAnchor
type RNSVGTextAnchor (line 133) | enum RNSVGTextAnchor
type RNSVGTextDecorationNone (line 135) | typedef NS_ENUM(NSInteger, RNSVGTextDecoration) {
type RNSVGTextDecoration (line 147) | enum RNSVGTextDecoration
type RNSVGTextDecoration (line 149) | enum RNSVGTextDecoration
type RNSVGTextLengthAdjust (line 159) | enum RNSVGTextLengthAdjust
type RNSVGTextLengthAdjust (line 161) | enum RNSVGTextLengthAdjust
type RNSVGTextPathMethod (line 171) | enum RNSVGTextPathMethod
type RNSVGTextPathMethod (line 173) | enum RNSVGTextPathMethod
type RNSVGTextPathMidLine (line 183) | enum RNSVGTextPathMidLine
type RNSVGTextPathMidLine (line 185) | enum RNSVGTextPathMidLine
type RNSVGTextPathSide (line 195) | enum RNSVGTextPathSide
type RNSVGTextPathSide (line 197) | enum RNSVGTextPathSide
type RNSVGTextPathSpacing (line 207) | enum RNSVGTextPathSpacing
type RNSVGTextPathSpacing (line 209) | enum RNSVGTextPathSpacing
FILE: apple/Utils/RNSVGCGFCRule.h
type kRNSVGCGFCRuleEvenodd (line 10) | typedef CF_ENUM(int32_t, RNSVGCGFCRule) {
FILE: apple/Utils/RNSVGFabricConversions.h
function id (line 17) | static id RNSVGConvertFollyDynamicToId(const folly::dynamic &dyn)
function RNSVGVBMOS (line 246) | static RNSVGVBMOS intToRNSVGVBMOS(int value)
FILE: apple/Utils/RNSVGLength.h
type SVG_LENGTHTYPE_UNKNOWN (line 7) | typedef CF_ENUM(unsigned short, RNSVGLengthUnitType) {
FILE: apple/Utils/RNSVGMarkerPosition.h
type RNSVGMarkerType (line 5) | typedef enum RNSVGMarkerType { kStartMarker, kMidMarker, kEndMarker } RN...
FILE: apple/Utils/RNSVGMaskType.h
type kRNSVGMaskTypeLuminance (line 1) | typedef CF_ENUM(int32_t, RNSVGMaskType) {
FILE: apple/Utils/RNSVGUnits.h
type kRNSVGUnitsObjectBoundingBox (line 9) | typedef CF_ENUM(int32_t, RNSVGUnits) {
FILE: apple/Utils/RNSVGVBMOS.h
type kRNSVGVBMOSMeet (line 9) | typedef CF_ENUM(int32_t, RNSVGVBMOS) {
FILE: apple/Utils/RNSVGVectorEffect.h
type kRNSVGVectorEffectDefault (line 9) | typedef CF_ENUM(int32_t, RNSVGVectorEffect) {
FILE: apps/common/example/ListScreen.tsx
type ListScreenProps (line 13) | type ListScreenProps = {
function ListScreen (line 18) | function ListScreen({navigation, examples}: ListScreenProps) {
function ItemSeparator (line 47) | function ItemSeparator() {
type ItemProps (line 50) | type ItemProps = {
function Item (line 56) | function Item({icon, title, onPress, wasClicked}: ItemProps) {
FILE: apps/common/example/e2e/TestingView.tsx
function isFabric (line 121) | function isFabric(): boolean {
FILE: apps/common/example/examples/Circle.tsx
function CircleExample (line 4) | function CircleExample() {
function StrokeCircle (line 14) | function StrokeCircle() {
function StrokeOpacityCircle (line 30) | function StrokeOpacityCircle() {
function PieCircle (line 47) | function PieCircle() {
FILE: apps/common/example/examples/Clipping.tsx
function ClipPathElement (line 17) | function ClipPathElement() {
function ClipRule (line 61) | function ClipRule() {
function TextClipping (line 80) | function TextClipping() {
FILE: apps/common/example/examples/Ellipse.tsx
function EllipseExample (line 4) | function EllipseExample() {
function PileEllipses (line 21) | function PileEllipses() {
function CombinedEllipses (line 33) | function CombinedEllipses() {
FILE: apps/common/example/examples/Empty.tsx
function EmptyExample (line 4) | function EmptyExample() {
FILE: apps/common/example/examples/FilterImage/FilterPicker.tsx
type FilterKeys (line 64) | type FilterKeys =
function FilterImagePickerExample (line 74) | function FilterImagePickerExample() {
FILE: apps/common/example/examples/Filters/FeBlend.tsx
function W3Blend (line 17) | function W3Blend() {
function SimpleExample (line 74) | function SimpleExample() {
function MDNExample (line 96) | function MDNExample() {
FILE: apps/common/example/examples/Filters/FeColorMatrix.tsx
function ReferenceExample (line 4) | function ReferenceExample() {
function IdentityExample (line 15) | function IdentityExample() {
function RgbToGreenExample (line 31) | function RgbToGreenExample() {
function SaturateExample (line 52) | function SaturateExample() {
function HueRotateExample (line 68) | function HueRotateExample() {
function LuminanceToAlphaExample (line 84) | function LuminanceToAlphaExample() {
FILE: apps/common/example/examples/Filters/FeComposite.tsx
function QuickTestExample (line 20) | function QuickTestExample() {
function ReferenceExample (line 40) | function ReferenceExample() {
FILE: apps/common/example/examples/Filters/FeDropShadow.tsx
function BasicMDN (line 5) | function BasicMDN() {
FILE: apps/common/example/examples/Filters/FeFlood.tsx
function BasicFlood (line 15) | function BasicFlood() {
function TestCase1 (line 34) | function TestCase1() {
function TestCase2 (line 60) | function TestCase2() {
FILE: apps/common/example/examples/Filters/FeGaussianBlur.tsx
function StdDeviation3Example (line 4) | function StdDeviation3Example() {
function StdDeviation7Example (line 20) | function StdDeviation7Example() {
function StdDeviation150Example (line 35) | function StdDeviation150Example() {
function StdDeviation025Example (line 51) | function StdDeviation025Example() {
FILE: apps/common/example/examples/Filters/FeMerge.tsx
function WithOffsetsExample (line 12) | function WithOffsetsExample() {
function WithHueRotateExample (line 38) | function WithHueRotateExample() {
FILE: apps/common/example/examples/Filters/FeOffset.tsx
function ReferenceExample (line 4) | function ReferenceExample() {
FILE: apps/common/example/examples/ForeignObject.tsx
function ForeignObjectExample (line 5) | function ForeignObjectExample() {
function ForeignObjectWithView (line 39) | function ForeignObjectWithView() {
function ForeignObjectWithBigView (line 75) | function ForeignObjectWithBigView() {
function ForeignObjectWithFlexView (line 98) | function ForeignObjectWithFlexView() {
FILE: apps/common/example/examples/G.tsx
function GTransform (line 37) | function GTransform() {
FILE: apps/common/example/examples/Gradients.tsx
function LinearGradientHorizontal (line 15) | function LinearGradientHorizontal() {
function LinearGradientHorizontalBug (line 37) | function LinearGradientHorizontalBug() {
function LinearGradientRotated (line 59) | function LinearGradientRotated() {
function GradientUnits (line 75) | function GradientUnits() {
function LinearGradientPercent (line 129) | function LinearGradientPercent() {
function RadialGradientExample (line 150) | function RadialGradientExample() {
function RadialGradientPercent (line 175) | function RadialGradientPercent() {
function RadialGradientPart (line 197) | function RadialGradientPart() {
function FillGradientWithOpacity (line 213) | function FillGradientWithOpacity() {
function FillGradientInRect (line 235) | function FillGradientInRect() {
FILE: apps/common/example/examples/Image.tsx
function ImageExample (line 5) | function ImageExample() {
function ClipImage (line 39) | function ClipImage() {
function DataURI (line 71) | function DataURI() {
FILE: apps/common/example/examples/Line.tsx
function LineExample (line 4) | function LineExample() {
function LineWithStrokeLinecap (line 13) | function LineWithStrokeLinecap() {
FILE: apps/common/example/examples/Markers.tsx
function EllipseExample (line 14) | function EllipseExample() {
function LineExample (line 49) | function LineExample() {
function CircleExample (line 81) | function CircleExample() {
function RectExample (line 109) | function RectExample() {
function PathExample (line 145) | function PathExample() {
FILE: apps/common/example/examples/Mask.tsx
function SimpleMask (line 24) | function SimpleMask() {
function AnotherMask (line 44) | function AnotherMask() {
function MaskWithText (line 83) | function MaskWithText() {
FILE: apps/common/example/examples/Path.tsx
function PathExample (line 4) | function PathExample() {
function UnclosedPath (line 21) | function UnclosedPath() {
function BezierCurve (line 35) | function BezierCurve() {
FILE: apps/common/example/examples/Polygon.tsx
function PolygonExample (line 4) | function PolygonExample() {
function FourSidePolygon (line 19) | function FourSidePolygon() {
function StarPolygon (line 34) | function StarPolygon() {
function EvenOddPolygon (line 50) | function EvenOddPolygon() {
FILE: apps/common/example/examples/Polyline.tsx
function PolylineExample (line 4) | function PolylineExample() {
function StraightLines (line 19) | function StraightLines() {
function PolylineFill (line 33) | function PolylineFill() {
function PolylineFillStroke (line 47) | function PolylineFillStroke() {
FILE: apps/common/example/examples/Reanimated.tsx
function ReanimatedRectExample (line 16) | function ReanimatedRectExample() {
FILE: apps/common/example/examples/Reanimated.windows.tsx
function ReanimatedRectExample (line 4) | function ReanimatedRectExample() {
FILE: apps/common/example/examples/Rect.tsx
function RectExample (line 5) | function RectExample() {
function RectStrokeFill (line 25) | function RectStrokeFill() {
function RoundedRect (line 44) | function RoundedRect() {
function EllipseRect (line 63) | function EllipseRect() {
function RoundOverflowRect (line 82) | function RoundOverflowRect() {
FILE: apps/common/example/examples/Reusable.tsx
function UseExample (line 17) | function UseExample() {
function UseShapes (line 34) | function UseShapes() {
function DefsExample (line 63) | function DefsExample() {
function SymbolExample (line 108) | function SymbolExample() {
FILE: apps/common/example/examples/Stroking.tsx
function StrokeExample (line 16) | function StrokeExample() {
function StrokeLinecap (line 30) | function StrokeLinecap() {
function StrokeDasharray (line 44) | function StrokeDasharray() {
function StrokeDashoffset (line 57) | function StrokeDashoffset() {
function StrokePattern (line 89) | function StrokePattern() {
FILE: apps/common/example/examples/Svg.tsx
function SvgExample (line 17) | function SvgExample() {
function SvgOpacity (line 42) | function SvgOpacity() {
function SvgViewbox (line 67) | function SvgViewbox() {
function SvgLayout (line 85) | function SvgLayout() {
function SvgNativeMethods (line 120) | function SvgNativeMethods() {
FILE: apps/common/example/examples/Text.tsx
function TextExample (line 15) | function TextExample() {
function TextRotate (line 29) | function TextRotate() {
function TextStroke (line 46) | function TextStroke() {
function TextFill (line 70) | function TextFill() {
function TextPathExample (line 102) | function TextPathExample() {
function TSpanExample (line 124) | function TSpanExample() {
FILE: apps/common/example/examples/Text.windows.tsx
function TextExample (line 13) | function TextExample() {
function TextRotate (line 24) | function TextRotate() {
function TextStroke (line 41) | function TextStroke() {
function TextFill (line 65) | function TextFill() {
function TextPathExample (line 97) | function TextPathExample() {
function TSpanExample (line 111) | function TSpanExample() {
FILE: apps/common/example/examples/TouchEvents.tsx
function PressExample (line 14) | function PressExample() {
function HoverExample (line 39) | function HoverExample() {
function GroupExample (line 70) | function GroupExample() {
FILE: apps/common/example/examples/Transforms.tsx
function PatternTransformExample (line 32) | function PatternTransformExample() {
function GradientTransformExample (line 90) | function GradientTransformExample() {
FILE: apps/common/example/index.tsx
function App (line 28) | function App() {
type ScreenProps (line 70) | type ScreenProps = {navigation: NavigationProp};
FILE: apps/common/example/utils/composeComponent.tsx
function composeComponents (line 5) | function composeComponents(
function ComponentTitle (line 35) | function ComponentTitle({title}: {title?: string}) {
function Separator (line 49) | function Separator() {
FILE: apps/common/example/utils/types.ts
type ExamplesKey (line 5) | type ExamplesKey = keyof typeof allScreens;
type Example (line 7) | interface Example {
type Examples (line 13) | type Examples = Record<string, Example>;
type NavigationProp (line 15) | type NavigationProp =
type RootStackParamList (line 18) | type RootStackParamList = {[P in ExamplesKey]: undefined} & {
type Sample (line 25) | type Sample = React.FC & {title: string};
FILE: apps/common/example/utils/usePersistNavigation.ts
function noop (line 6) | function noop() {} // do nothing
constant PERSISTENCE_KEY (line 9) | const PERSISTENCE_KEY = 'NAVIGATION_STATE_V1';
FILE: apps/common/noNavigationApp.tsx
function App (line 41) | function App() {
FILE: apps/common/test/PointerEventsBoxNone.tsx
function PointerEventsBoxNone (line 35) | function PointerEventsBoxNone() {
FILE: apps/common/test/Test1318.tsx
function Test (line 5) | function Test() {
FILE: apps/common/test/Test1374.tsx
function App (line 5) | function App() {
FILE: apps/common/test/Test1442.tsx
function Test1442 (line 5) | function Test1442() {
function TestRNImage (line 9) | function TestRNImage() {
function TestWithStrictSize (line 32) | function TestWithStrictSize(): React.JSX.Element {
FILE: apps/common/test/Test1790.tsx
function Test1790 (line 23) | function Test1790() {
FILE: apps/common/test/Test2071.tsx
function App (line 5) | function App() {
FILE: apps/common/test/Test2080.tsx
function App (line 5) | function App() {
FILE: apps/common/test/Test2086.tsx
function Test2086 (line 5) | function Test2086() {
FILE: apps/common/test/Test2142.tsx
function App (line 3) | function App() {
FILE: apps/common/test/Test2148.tsx
function App (line 5) | function App() {
FILE: apps/common/test/Test2170.tsx
function App (line 38) | function App() {
FILE: apps/common/test/Test2196.tsx
function App (line 12) | function App() {
FILE: apps/common/test/Test2233.tsx
function App (line 24) | function App() {
FILE: apps/common/test/Test2248.tsx
type Props (line 7) | type Props = {
FILE: apps/common/test/Test2363.tsx
function Test2363 (line 91) | function Test2363() {
FILE: apps/common/test/Test2380.tsx
function SvgComponent (line 52) | function SvgComponent() {
FILE: apps/common/test/Test2397.tsx
function App (line 24) | function App() {
FILE: apps/common/test/Test2403.tsx
constant EASING_IN (line 12) | const EASING_IN: (t: number) => number = Easing.bezier(0.7, 0, 0.3, 1);
constant EASING_OUT (line 13) | const EASING_OUT: (t: number) => number = Easing.bezier(0.5, 0, 0.5, 1);
function Playground (line 17) | function Playground() {
FILE: apps/common/test/Test2417.tsx
function App (line 4) | function App() {
FILE: apps/common/test/Test2670.tsx
function App (line 63) | function App() {
FILE: apps/common/test/index.tsx
function App (line 40) | function App() {
FILE: apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.cpp
type winrt::Microsoft::ReactNative (line 9) | namespace winrt::Microsoft::ReactNative
function RegisterAutolinkedNativeModulePackages (line 12) | void RegisterAutolinkedNativeModulePackages(winrt::Windows::Foundation...
FILE: apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.h
function namespace (line 5) | namespace winrt::Microsoft::ReactNative
FILE: apps/fabric-windows-example/windows/FabricExample/FabricExample.cpp
type CompReactPackageProvider (line 11) | struct CompReactPackageProvider
method CreatePackage (line 14) | void CreatePackage(winrt::Microsoft::ReactNative::IReactPackageBuilder...
function ScaleFactor (line 23) | float ScaleFactor(HWND hwnd) noexcept {
function UpdateRootViewSizeToAppWindow (line 27) | void UpdateRootViewSizeToAppWindow(
function CreateReactNativeHost (line 46) | winrt::Microsoft::ReactNative::ReactNativeHost CreateReactNativeHost(
function _Use_decl_annotations_ (line 86) | _Use_decl_annotations_ int CALLBACK WinMain(HINSTANCE instance, HINSTANC...
FILE: apps/paper-windows-example/windows/Example/App.cpp
type winrt::Example::implementation (line 14) | namespace winrt::Example::implementation
FILE: apps/paper-windows-example/windows/Example/App.h
function namespace (line 9) | namespace winrt::Example::implementation
FILE: apps/paper-windows-example/windows/Example/AutolinkedNativeModules.g.cpp
type winrt::Microsoft::ReactNative (line 15) | namespace winrt::Microsoft::ReactNative
function RegisterAutolinkedNativeModulePackages (line 18) | void RegisterAutolinkedNativeModulePackages(winrt::Windows::Foundation...
FILE: apps/paper-windows-example/windows/Example/AutolinkedNativeModules.g.h
function namespace (line 5) | namespace winrt::Microsoft::ReactNative
FILE: apps/paper-windows-example/windows/Example/MainPage.cpp
type winrt::Example::implementation (line 12) | namespace winrt::Example::implementation
FILE: apps/paper-windows-example/windows/Example/MainPage.h
function namespace (line 5) | namespace winrt::Example::implementation
function namespace (line 13) | namespace winrt::Example::factory_implementation
FILE: apps/paper-windows-example/windows/Example/ReactPackageProvider.cpp
type winrt::Example::implementation (line 7) | namespace winrt::Example::implementation
FILE: apps/paper-windows-example/windows/Example/ReactPackageProvider.h
function namespace (line 5) | namespace winrt::Example::implementation
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGComponentDescriptors.h
function namespace (line 7) | namespace facebook::react {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGConcreteShadowNode.h
function namespace (line 8) | namespace facebook::react {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGImageComponentDescriptor.h
function namespace (line 16) | namespace facebook {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGImageShadowNode.cpp
type facebook (line 15) | namespace facebook {
type react (line 16) | namespace react {
function ImageSource (line 26) | ImageSource RNSVGImageShadowNode::getImageSource() const {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGImageShadowNode.h
function namespace (line 19) | namespace facebook {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGImageState.cpp
type facebook (line 10) | namespace facebook {
type react (line 11) | namespace react {
function ImageSource (line 13) | ImageSource RNSVGImageState::getImageSource() const {
function ImageRequest (line 17) | ImageRequest const &RNSVGImageState::getImageRequest() const {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGImageState.h
function namespace (line 20) | namespace facebook {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGLayoutableShadowNode.cpp
type facebook::react (line 4) | namespace facebook::react {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGLayoutableShadowNode.h
function namespace (line 3) | namespace facebook::react {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGShadowNodes.cpp
type facebook::react (line 3) | namespace facebook::react {
FILE: common/cpp/react/renderer/components/rnsvg/RNSVGShadowNodes.h
function namespace (line 10) | namespace facebook::react {
FILE: e2e/matchTestCases.ts
function verifyComparisons (line 10) | function verifyComparisons(
FILE: e2e/readFailedCases.ts
function readFileOrCreateIfNotExists (line 7) | function readFileOrCreateIfNotExists(filePath: string): object {
type UpdateFailedResults (line 23) | interface UpdateFailedResults {
function storeFailedResult (line 31) | function storeFailedResult(
FILE: e2e/types.ts
type E2EMessage (line 1) | type E2EMessage = HandshakeMessage | RenderRequest | RenderResponse;
type HandshakeMessage (line 3) | interface HandshakeMessage {
type OS (line 12) | type OS = 'ios' | 'android';
type Arch (line 13) | type Arch = 'paper' | 'fabric';
type HandshakeMessageData (line 14) | interface HandshakeMessageData {
type RenderRequest (line 20) | interface RenderRequest {
type RenderResponse (line 27) | interface RenderResponse {
type FailedResults (line 32) | interface FailedResults {
FILE: scripts/codegen-utils.js
constant ERROR_PREFIX (line 6) | const ERROR_PREFIX = 'RNSVG';
constant ROOT_DIR (line 7) | const ROOT_DIR = path.resolve(__dirname, '..');
constant ANDROID_DIR (line 8) | const ANDROID_DIR = path.resolve(ROOT_DIR, 'android');
constant GENERATED_DIR (line 9) | const GENERATED_DIR = path.resolve(ANDROID_DIR, 'build/generated');
constant OLD_ARCH_DIR (line 10) | const OLD_ARCH_DIR = path.resolve(ANDROID_DIR, 'src/paper');
constant SPECS_DIR (line 11) | const SPECS_DIR = path.resolve(ROOT_DIR, packageJSON.codegenConfig.jsSrc...
constant PACKAGE_NAME (line 12) | const PACKAGE_NAME = packageJSON.codegenConfig.android.javaPackageName;
constant RN_DIR (line 13) | const RN_DIR = path.resolve(ROOT_DIR, 'node_modules/react-native');
constant RN_CODEGEN_DIR (line 14) | const RN_CODEGEN_DIR = path.resolve(
constant SOURCE_FOLDER (line 19) | const SOURCE_FOLDER = 'java/com/facebook/react/viewmanagers';
constant SOURCE_FOLDER_HORCRUX (line 20) | const SOURCE_FOLDER_HORCRUX = 'java/com/horcrux/svg';
constant SOURCE_FOLDERS (line 22) | const SOURCE_FOLDERS = [
function exec (line 28) | function exec(command) {
function fixOldArchJavaForRN72Compat (line 33) | function fixOldArchJavaForRN72Compat(dir) {
function generateCodegen (line 61) | async function generateCodegen() {
function generateCodegenJavaOldArch (line 75) | async function generateCodegenJavaOldArch() {
function compareFileAtTwoPaths (line 109) | function compareFileAtTwoPaths(filename, firstPath, secondPath) {
function checkCodegenIntegrity (line 120) | async function checkCodegenIntegrity() {
FILE: scripts/metal.js
constant ROOT_DIR (line 5) | const ROOT_DIR = path.resolve(__dirname, '..');
constant FILTERS_DIR (line 6) | const FILTERS_DIR = path.resolve(ROOT_DIR, 'apple/Filters/MetalCI');
function exec (line 8) | function exec(command) {
function clearGeneratedFiles (line 12) | function clearGeneratedFiles() {
function compileMetalFile (line 25) | function compileMetalFile(file, sdk) {
function generateMetallib (line 40) | function generateMetallib() {
FILE: scripts/rnsvg_utils.rb
function rnsvg_try_to_parse_react_native_package_json (line 2) | def rnsvg_try_to_parse_react_native_package_json(node_modules_dir)
function rnsvg_find_config (line 10) | def rnsvg_find_config()
FILE: src/css/LocalSvg.tsx
function getUriFromSource (line 8) | function getUriFromSource(source: ImageSourcePropType) {
function loadLocalRawResourceDefault (line 16) | function loadLocalRawResourceDefault(source: ImageSourcePropType) {
function isUriAnAndroidResourceIdentifier (line 21) | function isUriAnAndroidResourceIdentifier(uri?: string) {
function loadAndroidRawResource (line 25) | async function loadAndroidRawResource(uri: string) {
function loadLocalRawResourceAndroid (line 42) | function loadLocalRawResourceAndroid(source: ImageSourcePropType) {
type LocalProps (line 56) | type LocalProps = SvgProps & {
type LocalState (line 60) | type LocalState = { xml: string | null };
function LocalSvg (line 62) | function LocalSvg(props: LocalProps) {
class WithLocalSvg (line 71) | class WithLocalSvg extends Component<LocalProps, LocalState> {
method componentDidMount (line 73) | componentDidMount() {
method componentDidUpdate (line 77) | componentDidUpdate(prevProps: { asset: ImageSourcePropType }) {
method load (line 84) | async load(asset: ImageSourcePropType) {
method render (line 92) | render() {
FILE: src/css/css.tsx
function isTag (line 42) | function isTag(node: XmlAST | string): node is XmlAST {
function getParent (line 49) | function getParent(node: XmlAST | string): XmlAST {
function getChildren (line 55) | function getChildren(node: XmlAST | string): Array<XmlAST | string> {
function getName (line 61) | function getName(elem: XmlAST): string {
function getText (line 68) | function getText(_node: XmlAST | string): string {
function getAttributeValue (line 75) | function getAttributeValue(elem: XmlAST, name: string): string {
function removeSubsets (line 81) | function removeSubsets(nodes: Array<XmlAST | string>): Array<XmlAST | st...
function existsOne (line 115) | function existsOne(
function getSiblings (line 130) | function getSiblings(node: XmlAST | string): Array<XmlAST | string> {
function hasAttrib (line 136) | function hasAttrib(elem: XmlAST, name: string): boolean {
function findOne (line 142) | function findOne(
function findAll (line 167) | function findAll(
type FlatPseudoSelector (line 207) | type FlatPseudoSelector = {
type FlatPseudoSelectorList (line 211) | type FlatPseudoSelectorList = FlatPseudoSelector[];
type FlatSelector (line 212) | type FlatSelector = {
type FlatSelectorList (line 218) | type FlatSelectorList = FlatSelector[];
function flattenToSelectors (line 226) | function flattenToSelectors(cssAst: CssNode, selectors: FlatSelectorList) {
function filterByMqs (line 266) | function filterByMqs(selectors: FlatSelectorList) {
function filterByPseudos (line 288) | function filterByPseudos(selectors: FlatSelectorList) {
function cleanPseudos (line 309) | function cleanPseudos(selectors: FlatSelectorList) {
type Specificity (line 315) | type Specificity = [number, number, number];
function specificity (line 316) | function specificity(selector: Selector): Specificity {
function compareSpecificity (line 384) | function compareSpecificity(
type Spec (line 398) | type Spec = {
function selectorWithSpecificity (line 402) | function selectorWithSpecificity(selector: FlatSelector): Spec {
function bySelectorSpecificity (line 416) | function bySelectorSpecificity(a: Spec, b: Spec): number {
function pass (line 421) | function pass(arr: Spec[], len: number, chk: number, result: Spec[]) {
function exec (line 471) | function exec(arr: Spec[], len: number): Spec[] {
function sortSelectors (line 491) | function sortSelectors(selectors: FlatSelectorList) {
function CSSStyleDeclaration (line 505) | function CSSStyleDeclaration(ast: XmlAST) {
type StyledAST (line 548) | interface StyledAST extends XmlAST {
function initStyle (line 552) | function initStyle(selectedEl: XmlAST): StyledAST {
function closestElem (line 565) | function closestElem(node: XmlAST, elemName: string) {
function extractVariables (line 596) | function extractVariables(stylesheet: CssNode): Map<string, string> {
function resolveVariables (line 614) | function resolveVariables(
method enter (line 727) | enter(node: CssNode) {
function SvgCss (line 768) | function SvgCss(props: XmlProps) {
function SvgCssUri (line 782) | function SvgCssUri(props: UriProps) {
class SvgWithCss (line 807) | class SvgWithCss extends Component<XmlProps, XmlState> {
method componentDidMount (line 809) | componentDidMount() {
method componentDidUpdate (line 813) | componentDidUpdate(prevProps: { xml: string | null }) {
method parse (line 820) | parse(xml: string | null) {
method render (line 828) | render() {
class SvgWithCssUri (line 837) | class SvgWithCssUri extends Component<UriProps, UriState> {
method componentDidMount (line 839) | componentDidMount() {
method componentDidUpdate (line 843) | componentDidUpdate(prevProps: { uri: string | null }) {
method fetch (line 850) | async fetch(uri: string | null) {
method render (line 859) | render() {
FILE: src/deprecated.tsx
function showErrorCSS (line 1) | function showErrorCSS(name: string, type: string): never {
function SvgCss (line 7) | function SvgCss(): never {
function SvgCssUri (line 11) | function SvgCssUri(): never {
function SvgWithCss (line 15) | function SvgWithCss(): never {
function SvgWithCssUri (line 19) | function SvgWithCssUri(): never {
function inlineStyles (line 23) | function inlineStyles(): never {
function LocalSvg (line 27) | function LocalSvg(): never {
function WithLocalSvg (line 31) | function WithLocalSvg(): never {
function loadLocalRawResource (line 35) | function loadLocalRawResource(): never {
FILE: src/elements.web.ts
class Circle (line 56) | class Circle extends WebShape<BaseProps & CircleProps> {
class ClipPath (line 60) | class ClipPath extends WebShape<BaseProps & ClipPathProps> {
class Defs (line 64) | class Defs extends WebShape {
class Ellipse (line 68) | class Ellipse extends WebShape<BaseProps & EllipseProps> {
class FeBlend (line 72) | class FeBlend extends WebShape<BaseProps & FeBlendProps> {
class FeColorMatrix (line 76) | class FeColorMatrix extends WebShape<BaseProps & FeColorMatrixProps> {
class FeComponentTransfer (line 80) | class FeComponentTransfer extends WebShape<
class FeComposite (line 86) | class FeComposite extends WebShape<BaseProps & FeCompositeProps> {
class FeConvolveMatrix (line 90) | class FeConvolveMatrix extends WebShape<
class FeDiffuseLighting (line 96) | class FeDiffuseLighting extends WebShape<
class FeDisplacementMap (line 102) | class FeDisplacementMap extends WebShape<
class FeDistantLight (line 108) | class FeDistantLight extends WebShape<BaseProps & FeDistantLightProps> {
class FeDropShadow (line 112) | class FeDropShadow extends WebShape<BaseProps & FeDropShadowProps> {
class FeFlood (line 116) | class FeFlood extends WebShape<BaseProps & FeFloodProps> {
class FeFuncA (line 120) | class FeFuncA extends WebShape<BaseProps & FeFuncAProps> {
class FeFuncB (line 124) | class FeFuncB extends WebShape<BaseProps & FeFuncBProps> {
class FeFuncG (line 128) | class FeFuncG extends WebShape<BaseProps & FeFuncGProps> {
class FeFuncR (line 132) | class FeFuncR extends WebShape<BaseProps & FeFuncRProps> {
class FeGaussianBlur (line 136) | class FeGaussianBlur extends WebShape<BaseProps & FeGaussianBlurProps> {
class FeImage (line 140) | class FeImage extends WebShape<BaseProps & FeImageProps> {
class FeMerge (line 144) | class FeMerge extends WebShape<BaseProps & FeMergeProps> {
class FeMergeNode (line 148) | class FeMergeNode extends WebShape<BaseProps & FeMergeNodeProps> {
class FeMorphology (line 152) | class FeMorphology extends WebShape<BaseProps & FeMorphologyProps> {
class FeOffset (line 156) | class FeOffset extends WebShape<BaseProps & FeOffsetProps> {
class FePointLight (line 160) | class FePointLight extends WebShape<BaseProps & FePointLightProps> {
class FeSpecularLighting (line 164) | class FeSpecularLighting extends WebShape<
class FeSpotLight (line 170) | class FeSpotLight extends WebShape<BaseProps & FeSpotLightProps> {
class FeTile (line 174) | class FeTile extends WebShape<BaseProps & FeTileProps> {
class FeTurbulence (line 178) | class FeTurbulence extends WebShape<BaseProps & FeTurbulenceProps> {
class Filter (line 182) | class Filter extends WebShape<BaseProps & FilterProps> {
class ForeignObject (line 186) | class ForeignObject extends WebShape<BaseProps & ForeignObjectProps> {
class G (line 190) | class G extends WebShape<BaseProps & GProps> {
method prepareProps (line 192) | prepareProps(props: BaseProps & GProps) {
class Image (line 203) | class Image extends WebShape<BaseProps & ImageProps> {
class Line (line 207) | class Line extends WebShape<BaseProps & LineProps> {
class LinearGradient (line 211) | class LinearGradient extends WebShape<BaseProps & LinearGradientProps> {
class Marker (line 215) | class Marker extends WebShape<BaseProps & MarkerProps> {
class Mask (line 219) | class Mask extends WebShape<BaseProps & MaskProps> {
class Path (line 223) | class Path extends WebShape<BaseProps & PathProps> {
class Pattern (line 227) | class Pattern extends WebShape<BaseProps & PatternProps> {
class Polygon (line 231) | class Polygon extends WebShape<BaseProps & PolygonProps> {
class Polyline (line 235) | class Polyline extends WebShape<BaseProps & PolylineProps> {
class RadialGradient (line 239) | class RadialGradient extends WebShape<BaseProps & RadialGradientProps> {
class Rect (line 243) | class Rect extends WebShape<BaseProps & RectProps> {
class Stop (line 247) | class Stop extends WebShape<BaseProps & StopProps> {
class Svg (line 251) | class Svg extends WebShape<BaseProps & SvgProps> {
method toDataURL (line 253) | toDataURL(
class Symbol (line 290) | class Symbol extends WebShape<BaseProps & SymbolProps> {
class TSpan (line 294) | class TSpan extends WebShape<BaseProps & TSpanProps> {
class Text (line 298) | class Text extends WebShape<BaseProps & TextProps> {
class TextPath (line 302) | class TextPath extends WebShape<BaseProps & TextPathProps> {
class Use (line 306) | class Use extends WebShape<BaseProps & UseProps> {
FILE: src/elements/Circle.tsx
type CircleProps (line 8) | interface CircleProps extends CommonPathProps {
class Circle (line 15) | class Circle extends Shape<CircleProps> {
method render (line 24) | render() {
FILE: src/elements/ClipPath.tsx
type ClipPathProps (line 7) | interface ClipPathProps {
class ClipPath (line 12) | class ClipPath extends Shape<ClipPathProps> {
method render (line 15) | render() {
FILE: src/elements/Defs.tsx
class Defs (line 5) | class Defs extends Component<React.PropsWithChildren> {
method render (line 8) | render() {
FILE: src/elements/Ellipse.tsx
type EllipseProps (line 8) | interface EllipseProps extends CommonPathProps {
class Ellipse (line 16) | class Ellipse extends Shape<EllipseProps> {
method render (line 26) | render() {
FILE: src/elements/ForeignObject.tsx
type ForeignObjectProps (line 9) | interface ForeignObjectProps {
class ForeignObject (line 17) | class ForeignObject extends G<ForeignObjectProps> {
method render (line 27) | render() {
FILE: src/elements/G.tsx
type GProps (line 15) | interface GProps extends CommonPathProps, FontProps {
class G (line 20) | class G<P> extends Shape<GProps & P> {
method render (line 36) | render() {
FILE: src/elements/Image.tsx
type ImageProps (line 17) | interface ImageProps extends CommonPathProps {
class SvgImage (line 29) | class SvgImage extends Shape<ImageProps> {
method render (line 40) | render() {
FILE: src/elements/Line.tsx
type LineProps (line 8) | interface LineProps extends CommonPathProps {
class Line (line 16) | class Line extends Shape<LineProps> {
method render (line 26) | render() {
FILE: src/elements/LinearGradient.tsx
type LinearGradientProps (line 9) | interface LinearGradientProps {
class LinearGradient (line 20) | class LinearGradient extends Shape<LinearGradientProps> {
method render (line 30) | render() {
FILE: src/elements/Marker.tsx
type MarkerUnits (line 9) | type MarkerUnits = 'strokeWidth' | 'userSpaceOnUse';
type Orient (line 11) | type Orient = 'auto' | 'auto-start-reverse';
type MarkerProps (line 13) | interface MarkerProps {
class Marker (line 26) | class Marker extends Shape<MarkerProps> {
method render (line 38) | render() {
FILE: src/elements/Mask.tsx
type MaskProps (line 16) | interface MaskProps extends CommonPathProps {
class Mask (line 31) | class Mask extends Shape<MaskProps> {
method render (line 41) | render() {
FILE: src/elements/Path.tsx
type PathProps (line 8) | interface PathProps extends CommonPathProps {
class Path (line 13) | class Path extends Shape<PathProps> {
method render (line 16) | render() {
FILE: src/elements/Pattern.tsx
type PatternProps (line 11) | interface PatternProps extends TransformProps {
class Pattern (line 25) | class Pattern extends Shape<PatternProps> {
method render (line 35) | render() {
FILE: src/elements/Polygon.tsx
type PolygonProps (line 7) | interface PolygonProps extends CommonPathProps {
class Polygon (line 12) | class Polygon extends Shape<PolygonProps> {
method render (line 31) | render() {
FILE: src/elements/Polyline.tsx
type PolylineProps (line 7) | interface PolylineProps extends CommonPathProps {
class Polyline (line 12) | class Polyline extends Shape<PolylineProps> {
method render (line 31) | render() {
FILE: src/elements/RadialGradient.tsx
type RadialGradientProps (line 9) | interface RadialGradientProps {
class RadialGradient (line 23) | class RadialGradient extends Shape<RadialGradientProps> {
method render (line 32) | render() {
FILE: src/elements/Rect.tsx
type RectProps (line 8) | interface RectProps extends CommonPathProps {
class Rect (line 18) | class Rect extends Shape<RectProps> {
method render (line 28) | render() {
FILE: src/elements/Shape.tsx
type SVGBoundingBoxOptions (line 14) | interface SVGBoundingBoxOptions {
type DOMPointInit (line 21) | interface DOMPointInit {
type Point (line 28) | interface Point {
type SVGPoint (line 33) | interface SVGPoint extends Point {
method constructor (line 222) | constructor(point?: Point) {
method matrixTransform (line 233) | matrixTransform(matrix: Matrix): SVGPoint {
type Rect (line 37) | interface Rect {
type SVGRect (line 43) | type SVGRect = Rect;
type Matrix (line 45) | interface Matrix {
type SVGMatrix (line 54) | interface SVGMatrix extends Matrix {
method constructor (line 97) | constructor(matrix?: Matrix) {
method multiply (line 116) | multiply(secondMatrix: Matrix): SVGMatrix {
method inverse (line 120) | inverse(): SVGMatrix {
method translate (line 124) | translate(x: number, y: number): SVGMatrix {
method scale (line 130) | scale(scaleFactor: number): SVGMatrix {
method scaleNonUniform (line 143) | scaleNonUniform(scaleFactorX: number, scaleFactorY: number): SVGMatrix {
method rotate (line 156) | rotate(angle: number): SVGMatrix {
method rotateFromVector (line 164) | rotateFromVector(x: number, y: number): SVGMatrix {
method flipX (line 173) | flipX(): SVGMatrix {
method flipY (line 179) | flipY(): SVGMatrix {
method skewX (line 185) | skewX(angle: number): SVGMatrix {
method skewY (line 198) | skewY(angle: number): SVGMatrix {
function multiplyMatrices (line 68) | function multiplyMatrices(l: Matrix, r: Matrix): Matrix {
function invert (line 82) | function invert({ a, b, c, d, e, f }: Matrix): Matrix {
class SVGMatrix (line 96) | class SVGMatrix implements SVGMatrix {
method constructor (line 97) | constructor(matrix?: Matrix) {
method multiply (line 116) | multiply(secondMatrix: Matrix): SVGMatrix {
method inverse (line 120) | inverse(): SVGMatrix {
method translate (line 124) | translate(x: number, y: number): SVGMatrix {
method scale (line 130) | scale(scaleFactor: number): SVGMatrix {
method scaleNonUniform (line 143) | scaleNonUniform(scaleFactorX: number, scaleFactorY: number): SVGMatrix {
method rotate (line 156) | rotate(angle: number): SVGMatrix {
method rotateFromVector (line 164) | rotateFromVector(x: number, y: number): SVGMatrix {
method flipX (line 173) | flipX(): SVGMatrix {
method flipY (line 179) | flipY(): SVGMatrix {
method skewX (line 185) | skewX(angle: number): SVGMatrix {
method skewY (line 198) | skewY(angle: number): SVGMatrix {
function matrixTransform (line 212) | function matrixTransform(matrix: Matrix, point: Point): Point {
class SVGPoint (line 221) | class SVGPoint implements SVGPoint {
method constructor (line 222) | constructor(point?: Point) {
method matrixTransform (line 233) | matrixTransform(matrix: Matrix): SVGPoint {
method createSVGPoint (line 239) | createSVGPoint(): SVGPoint {
method createSVGMatrix (line 242) | createSVGMatrix(): SVGMatrix {
class Shape (line 247) | class Shape<P> extends Component<P> {
method constructor (line 250) | constructor(props: Readonly<P> | P) {
method getNativeScrollRef (line 262) | getNativeScrollRef(): (Shape<P> & NativeMethods) | null {
FILE: src/elements/Stop.tsx
type StopProps (line 5) | interface StopProps {
class Stop (line 12) | class Stop extends Component<StopProps> {
method render (line 22) | render() {
FILE: src/elements/Svg.tsx
type SvgProps (line 39) | interface SvgProps extends GProps, ViewProps, HitSlop {
class Svg (line 48) | class Svg extends Shape<SvgProps> {
method render (line 95) | render() {
FILE: src/elements/Symbol.tsx
type SymbolProps (line 9) | interface SymbolProps {
class Symbol (line 17) | class Symbol extends Shape<SymbolProps> {
method render (line 20) | render() {
FILE: src/elements/TSpan.tsx
type TSpanProps (line 18) | interface TSpanProps extends CommonPathProps, FontProps {
class TSpan (line 28) | class TSpan extends Shape<TSpanProps> {
method render (line 46) | render() {
FILE: src/elements/Text.tsx
type TextProps (line 17) | interface TextProps extends TextSpecificProps {
class Text (line 28) | class Text extends Shape<TextProps> {
method render (line 46) | render() {
FILE: src/elements/TextPath.tsx
type TextPathProps (line 21) | interface TextPathProps extends TextSpecificProps {
class TextPath (line 32) | class TextPath extends Shape<TextPathProps> {
method render (line 49) | render() {
FILE: src/elements/Use.tsx
type UseProps (line 10) | interface UseProps extends CommonPathProps {
class Use (line 21) | class Use extends Shape<UseProps> {
method rend
Condensed preview — 1052 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,787K chars).
[
{
"path": ".clang-format",
"chars": 2607,
"preview": "---\nAccessModifierOffset: -1\nAlignAfterOpenBracket: AlwaysBreak\nAlignConsecutiveAssignments: false\nAlignConsecutiveDecla"
},
{
"path": ".eslintignore",
"chars": 168,
"preview": "**/node_modules/\napps/**/node_modules/\napps/**/android/\napps/**/ios/\napps/**/windows/\napps/**/macos/\nscreenshots/\nandroi"
},
{
"path": ".eslintrc.js",
"chars": 1158,
"preview": "module.exports = {\n root: true,\n parser: '@typescript-eslint/parser',\n extends: [\n 'standard',\n 'plugin:@typesc"
},
{
"path": ".git-blame-ignore-revs",
"chars": 125,
"preview": "# .git-blame-ignore-revs\n# chore: add CI for JS, iOS and Android formatting (#1782)\n98c14b4f4588d55ecf1beb92a16e704e4489"
},
{
"path": ".gitattributes",
"chars": 378,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs diff=csharp\n\n# St"
},
{
"path": ".github/FUNDING.yml",
"chars": 25,
"preview": "github: software-mansion\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yaml",
"chars": 4510,
"preview": "name: Bug report\ndescription: Report an issue with SVG here.\nbody:\n - type: markdown\n attributes:\n value: |\n "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 365,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Question\n url: https://github.com/software-mansion/react-native-"
},
{
"path": ".github/ISSUE_TEMPLATE.md",
"chars": 205,
"preview": "# No Template\n\n👉 Please follow one of the issue templates provided by the repo - if you are seeing this message, it mean"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1259,
"preview": "<!-- Thanks for submitting a pull request! We appreciate you spending the time to work on these changes. Please follow t"
},
{
"path": ".github/workflows/android-build-test.yml",
"chars": 2370,
"preview": "name: Example Android check\non:\n pull_request:\n paths:\n - .github/workflows/android-build-test.yml\n - 'and"
},
{
"path": ".github/workflows/check-archs-consistency.yml",
"chars": 763,
"preview": "name: Test consistency between Paper & Fabric\non: \n pull_request:\n branches:\n - main\n paths: \n - src/fa"
},
{
"path": ".github/workflows/close-when-stale.yml",
"chars": 838,
"preview": "name: Check for stale issues\non:\n schedule:\n - cron: '37 21 * * *' # at 21:37 every day\n issues:\n types: [edited"
},
{
"path": ".github/workflows/e2e-android.yml",
"chars": 3667,
"preview": "name: E2E Android\non:\n pull_request:\n paths:\n - .github/workflows/e2e-android.yml\n - apps/common/example/*"
},
{
"path": ".github/workflows/e2e-ios.yml",
"chars": 3584,
"preview": "name: E2E iOS\non:\n pull_request:\n paths:\n - .github/workflows/e2e-ios.yml\n - apps/common/example/**\n "
},
{
"path": ".github/workflows/ios-build-test.yml",
"chars": 3440,
"preview": "name: Example iOS check\non:\n pull_request:\n paths:\n - .github/workflows/ios-build-test.yml\n - RNSVG.podspe"
},
{
"path": ".github/workflows/js-build-test.yml",
"chars": 741,
"preview": "name: Test JS build\nconcurrency:\n group: js-${{ github.ref }}\n cancel-in-progress: true\non:\n pull_request:\n branch"
},
{
"path": ".github/workflows/macos-build-test.yml",
"chars": 3315,
"preview": "name: Example macOS check\non:\n pull_request:\n paths:\n - .github/workflows/macos-build-test.yml\n - RNSVG.po"
},
{
"path": ".github/workflows/needs-more-info.yml",
"chars": 1549,
"preview": "name: Check issue template\nenv:\n YARN_ENABLE_HARDENED_MODE: 0\non:\n issues:\n types: [opened, edited]\n\njobs:\n main:\n"
},
{
"path": ".github/workflows/needs-repro.yml",
"chars": 1368,
"preview": "name: Check for reproduction\non:\n issues:\n types: [opened, edited]\n issue_comment:\n types: [created, edited, del"
},
{
"path": ".github/workflows/windows-build-test.yml",
"chars": 2024,
"preview": "name: Test Windows build\non:\n pull_request:\n paths:\n - '.github/workflows/windows-build-test.yml'\n - 'wind"
},
{
"path": ".gitignore",
"chars": 519,
"preview": "# OSX\n#\n.DS_Store\n.yarn\n.yarnrc.yml\n# Xcode\n#\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.m"
},
{
"path": ".husky/pre-commit",
"chars": 70,
"preview": "#!/usr/bin/env sh\n. \"$(dirname -- \"$0\")/_/husky.sh\"\n\nyarn lint-staged\n"
},
{
"path": ".npmignore",
"chars": 18,
"preview": "screenshots/\napps/"
},
{
"path": ".prettierrc.js",
"chars": 150,
"preview": "module.exports = {\n bracketSameLine: true,\n printWidth: 80,\n singleQuote: true,\n trailingComma: 'es5',\n tabWidth: 2"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3347,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 4081,
"preview": "# Contributing to React Native Svg\n\nThank you for helping out with react-native-svg!\nWe'd like to make contributions as "
},
{
"path": "LICENSE",
"chars": 1083,
"preview": "The MIT License (MIT)\n\nCopyright (c) [2015-2016] [Horcrux]\n\nPermission is hereby granted, free of charge, to any person "
},
{
"path": "README.md",
"chars": 4710,
"preview": "<img src=\"https://user-images.githubusercontent.com/39658211/200319759-006c214f-941c-496c-a3c2-7de5b7ce33dc.png\" width=\""
},
{
"path": "RNSVG.podspec",
"chars": 1871,
"preview": "require 'json'\nrequire_relative './scripts/rnsvg_utils'\n\npackage = JSON.parse(File.read(File.join(__dir__, 'package.json"
},
{
"path": "USAGE.md",
"chars": 44768,
"preview": "# Usage\n\nHere's a simple example. To render output like this:\n\n 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/CircleView.java",
"chars": 2120,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/ClipPathView.java",
"chars": 1157,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/CustomFilter.java",
"chars": 2024,
"preview": "package com.horcrux.svg;\n\nimport android.graphics.Bitmap;\n\ninterface CustomFilterFunction {\n float[] execute(float[] sr"
},
{
"path": "android/src/main/java/com/horcrux/svg/DefinitionView.java",
"chars": 865,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/DefsView.java",
"chars": 850,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/EllipseView.java",
"chars": 2399,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/FeBlendView.java",
"chars": 2947,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.graphics.Bitmap;\nimport android.graphic"
},
{
"path": "android/src/main/java/com/horcrux/svg/FeColorMatrixView.java",
"chars": 2996,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.graphics.Bitmap;\nimport android.graphic"
},
{
"path": "android/src/main/java/com/horcrux/svg/FeCompositeView.java",
"chars": 4059,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.graphics.Bitmap;\nimport android.graphic"
},
{
"path": "android/src/main/java/com/horcrux/svg/FeFloodView.java",
"chars": 4262,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.graphics.Bitmap;\nimport android.graphic"
},
{
"path": "android/src/main/java/com/horcrux/svg/FeGaussianBlurView.java",
"chars": 2506,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.content.Context;\nimport android.graphic"
},
{
"path": "android/src/main/java/com/horcrux/svg/FeMergeView.java",
"chars": 1196,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.graphics.Bitmap;\nimport android.graphic"
},
{
"path": "android/src/main/java/com/horcrux/svg/FeOffsetView.java",
"chars": 1494,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.graphics.Bitmap;\nimport android.graphic"
},
{
"path": "android/src/main/java/com/horcrux/svg/FilterPrimitiveView.java",
"chars": 1428,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.graphics.Bitmap;\nimport com.facebook.re"
},
{
"path": "android/src/main/java/com/horcrux/svg/FilterProperties.java",
"chars": 3956,
"preview": "package com.horcrux.svg;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport javax.annotation.Nonnull;\n\nclass Filter"
},
{
"path": "android/src/main/java/com/horcrux/svg/FilterRegion.java",
"chars": 1877,
"preview": "package com.horcrux.svg;\n\nimport android.graphics.Rect;\nimport android.graphics.RectF;\nimport com.facebook.react.bridge."
},
{
"path": "android/src/main/java/com/horcrux/svg/FilterUtils.java",
"chars": 1043,
"preview": "package com.horcrux.svg;\n\nimport android.graphics.Bitmap;\nimport android.graphics.Canvas;\nimport android.graphics.ColorM"
},
{
"path": "android/src/main/java/com/horcrux/svg/FilterView.java",
"chars": 3574,
"preview": "package com.horcrux.svg;\n\nimport android.annotation.SuppressLint;\nimport android.graphics.Bitmap;\nimport android.graphic"
},
{
"path": "android/src/main/java/com/horcrux/svg/FontData.java",
"chars": 7736,
"preview": "package com.horcrux.svg;\n\nimport static com.facebook.react.uimanager.ViewProps.FONT_FAMILY;\nimport static com.facebook.r"
},
{
"path": "android/src/main/java/com/horcrux/svg/ForeignObjectView.java",
"chars": 4135,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/GlyphContext.java",
"chars": 11850,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/GlyphPathBag.java",
"chars": 1065,
"preview": "package com.horcrux.svg;\n\nimport android.graphics.Paint;\nimport android.graphics.Path;\nimport java.util.ArrayList;\n\nclas"
},
{
"path": "android/src/main/java/com/horcrux/svg/GroupView.java",
"chars": 9500,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/ImageView.java",
"chars": 7861,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/LineView.java",
"chars": 1699,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/LinearGradientView.java",
"chars": 2898,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/MarkerView.java",
"chars": 4104,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/MaskView.java",
"chars": 2322,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/PathParser.java",
"chars": 18139,
"preview": "package com.horcrux.svg;\n\nimport android.graphics.Path;\nimport android.graphics.RectF;\nimport java.util.ArrayList;\n\nclas"
},
{
"path": "android/src/main/java/com/horcrux/svg/PathView.java",
"chars": 995,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/PatternView.java",
"chars": 4051,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/PropHelper.java",
"chars": 6558,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/RNSVGMarkerPosition.java",
"chars": 5622,
"preview": "package com.horcrux.svg;\n\nimport java.util.ArrayList;\n\nenum RNSVGMarkerType {\n kStartMarker,\n kMidMarker,\n kEndMarker"
},
{
"path": "android/src/main/java/com/horcrux/svg/RNSVGRenderableManager.java",
"chars": 8589,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/RadialGradientView.java",
"chars": 3131,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/RectView.java",
"chars": 3460,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/RenderableView.java",
"chars": 25854,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/RenderableViewManager.java",
"chars": 55093,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/SVGLength.java",
"chars": 4111,
"preview": "package com.horcrux.svg;\n\nimport com.facebook.react.bridge.Dynamic;\nimport com.facebook.react.bridge.ReadableArray;\nimpo"
},
{
"path": "android/src/main/java/com/horcrux/svg/SvgPackage.java",
"chars": 13071,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/SvgView.java",
"chars": 12561,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/SvgViewManager.java",
"chars": 11301,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/SvgViewModule.java",
"chars": 2787,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/SymbolView.java",
"chars": 1903,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/TSpanView.java",
"chars": 47076,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/TextLayoutAlgorithm.java",
"chars": 43864,
"preview": "package com.horcrux.svg;\n\n// TODO implement https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm\n\nimport static com."
},
{
"path": "android/src/main/java/com/horcrux/svg/TextPathView.java",
"chars": 2651,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/TextProperties.java",
"chars": 4848,
"preview": "package com.horcrux.svg;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport javax.annotation.Nonnull;\n\nclass TextPr"
},
{
"path": "android/src/main/java/com/horcrux/svg/TextView.java",
"chars": 6943,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/UseView.java",
"chars": 4016,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/ViewBox.java",
"chars": 3851,
"preview": "/*\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-styl"
},
{
"path": "android/src/main/java/com/horcrux/svg/VirtualView.java",
"chars": 17318,
"preview": "package com.horcrux.svg;\n\nimport static com.horcrux.svg.FontData.DEFAULT_FONT_SIZE;\n\nimport android.annotation.SuppressL"
},
{
"path": "android/src/main/java/com/horcrux/svg/events/SvgLoadEvent.java",
"chars": 1504,
"preview": "package com.horcrux.svg.events;\n\nimport com.facebook.react.bridge.Arguments;\nimport com.facebook.react.bridge.ReactConte"
},
{
"path": "android/src/main/java/com/horcrux/svg/events/SvgOnLayoutEvent.java",
"chars": 1396,
"preview": "package com.horcrux.svg.events;\n\nimport androidx.core.util.Pools.SynchronizedPool;\n\nimport com.facebook.react.bridge.Arg"
},
{
"path": "android/src/main/jni/CMakeLists.txt",
"chars": 2251,
"preview": "cmake_minimum_required(VERSION 3.13)\nset(CMAKE_VERBOSE_MAKEFILE ON)\n\nset(RNSVG_ANDROID_DIR ${CMAKE_CURRENT_SOURCE_DIR}/."
},
{
"path": "android/src/main/jni/rnsvg.cpp",
"chars": 6053,
"preview": "\n/**\n * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n *\n * Do "
},
{
"path": "android/src/main/jni/rnsvg.h",
"chars": 928,
"preview": "#pragma once\n\n#include <ReactCommon/JavaTurboModule.h>\n#include <ReactCommon/TurboModule.h>\n#include <jsi/jsi.h>\n#includ"
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGCircleManagerDelegate.java",
"chars": 4765,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGCircleManagerInterface.java",
"chars": 1957,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGClipPathManagerDelegate.java",
"chars": 4805,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGClipPathManagerInterface.java",
"chars": 1976,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGDefsManagerDelegate.java",
"chars": 2481,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGDefsManagerInterface.java",
"chars": 1109,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGEllipseManagerDelegate.java",
"chars": 4866,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGEllipseManagerInterface.java",
"chars": 1996,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerDelegate.java",
"chars": 1886,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerInterface.java",
"chars": 852,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeColorMatrixManagerDelegate.java",
"chars": 1942,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeColorMatrixManagerInterface.java",
"chars": 916,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerDelegate.java",
"chars": 2380,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerInterface.java",
"chars": 1001,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerDelegate.java",
"chars": 1836,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerInterface.java",
"chars": 800,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeGaussianBlurManagerDelegate.java",
"chars": 2088,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeGaussianBlurManagerInterface.java",
"chars": 908,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeMergeManagerDelegate.java",
"chars": 1729,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeMergeManagerInterface.java",
"chars": 814,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeOffsetManagerDelegate.java",
"chars": 1888,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeOffsetManagerInterface.java",
"chars": 832,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFilterManagerDelegate.java",
"chars": 1785,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFilterManagerInterface.java",
"chars": 820,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGForeignObjectManagerDelegate.java",
"chars": 5214,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGForeignObjectManagerInterface.java",
"chars": 2134,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGGroupManagerDelegate.java",
"chars": 4796,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGGroupManagerInterface.java",
"chars": 1973,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGImageManagerDelegate.java",
"chars": 5249,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGImageManagerInterface.java",
"chars": 2188,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGLineManagerDelegate.java",
"chars": 4857,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGLineManagerInterface.java",
"chars": 1993,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGLinearGradientManagerDelegate.java",
"chars": 3304,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGLinearGradientManagerInterface.java",
"chars": 1480,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGMarkerManagerDelegate.java",
"chars": 6211,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGMarkerManagerInterface.java",
"chars": 2496,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGMaskManagerDelegate.java",
"chars": 5586,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGMaskManagerInterface.java",
"chars": 2251,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGPathManagerDelegate.java",
"chars": 4576,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGPathManagerInterface.java",
"chars": 1890,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGPatternManagerDelegate.java",
"chars": 6343,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGPatternManagerInterface.java",
"chars": 2534,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGRadialGradientManagerDelegate.java",
"chars": 3496,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGRadialGradientManagerInterface.java",
"chars": 1554,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGRectManagerDelegate.java",
"chars": 5059,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGRectManagerInterface.java",
"chars": 2072,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGSvgViewAndroidManagerDelegate.java",
"chars": 7619,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGSvgViewAndroidManagerInterface.java",
"chars": 3109,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGSymbolManagerDelegate.java",
"chars": 5545,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGSymbolManagerInterface.java",
"chars": 2220,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTSpanManagerDelegate.java",
"chars": 6115,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTSpanManagerInterface.java",
"chars": 2514,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTextManagerDelegate.java",
"chars": 5997,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTextManagerInterface.java",
"chars": 2462,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTextPathManagerDelegate.java",
"chars": 6684,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGTextPathManagerInterface.java",
"chars": 2760,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGUseManagerDelegate.java",
"chars": 4973,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/facebook/react/viewmanagers/RNSVGUseManagerInterface.java",
"chars": 2045,
"preview": "/**\n* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n*\n* Do not "
},
{
"path": "android/src/paper/java/com/horcrux/svg/NativeSvgRenderableModuleSpec.java",
"chars": 2387,
"preview": "\n/**\n * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n *\n * Do "
},
{
"path": "android/src/paper/java/com/horcrux/svg/NativeSvgViewModuleSpec.java",
"chars": 1340,
"preview": "\n/**\n * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n *\n * Do "
},
{
"path": "apple/.npmignore",
"chars": 71,
"preview": "*/project.xcworkspace/\n*/xcuserdata/\n.DS_Store\n.npmignore\nPods/\nbuild/\n"
},
{
"path": "apple/Brushes/RNSVGBrush.h",
"chars": 1208,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Brushes/RNSVGBrush.mm",
"chars": 847,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Brushes/RNSVGBrushType.h",
"chars": 328,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Brushes/RNSVGContextBrush.h",
"chars": 350,
"preview": "/**\n * Copyright (c) 2015-present, react-native-community.\n * All rights reserved.\n *\n * This source code is licensed un"
},
{
"path": "apple/Brushes/RNSVGContextBrush.mm",
"chars": 1663,
"preview": "/**\n * Copyright (c) 2015-present, react-native-community.\n * All rights reserved.\n *\n * This source code is licensed un"
},
{
"path": "apple/Brushes/RNSVGPainter.h",
"chars": 1080,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Brushes/RNSVGPainter.mm",
"chars": 8446,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Brushes/RNSVGPainterBrush.h",
"chars": 280,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Brushes/RNSVGPainterBrush.mm",
"chars": 1071,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Brushes/RNSVGSolidColorBrush.h",
"chars": 386,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Brushes/RNSVGSolidColorBrush.mm",
"chars": 1543,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGClipPath.h",
"chars": 390,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGClipPath.mm",
"chars": 2008,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGDefs.h",
"chars": 363,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGDefs.mm",
"chars": 1645,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGForeignObject.h",
"chars": 318,
"preview": "\n#import \"RNSVGGroup.h\"\n#import \"RNSVGLength.h\"\n\n@interface RNSVGForeignObject : RNSVGGroup\n\n@property (nonatomic, stron"
},
{
"path": "apple/Elements/RNSVGForeignObject.mm",
"chars": 7300,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGGroup.h",
"chars": 723,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGGroup.mm",
"chars": 9041,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGImage.h",
"chars": 1051,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGImage.mm",
"chars": 11761,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGLinearGradient.h",
"chars": 675,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGLinearGradient.mm",
"chars": 4794,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGMarker.h",
"chars": 895,
"preview": "\n#import \"RNSVGGroup.h\"\n#import \"RNSVGLength.h\"\n#import \"RNSVGMarkerPosition.h\"\n\n@interface RNSVGMarker : RNSVGGroup\n\n@p"
},
{
"path": "apple/Elements/RNSVGMarker.mm",
"chars": 6737,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGMask.h",
"chars": 456,
"preview": "\n#import \"RNSVGGroup.h\"\n#import \"RNSVGLength.h\"\n\n@interface RNSVGMask : RNSVGGroup\n\n@property (nonatomic, strong) RNSVGL"
},
{
"path": "apple/Elements/RNSVGMask.mm",
"chars": 3932,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGPath.h",
"chars": 395,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGPath.mm",
"chars": 2079,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGPattern.h",
"chars": 768,
"preview": "\n#import \"RNSVGGroup.h\"\n#import \"RNSVGLength.h\"\n\n@interface RNSVGPattern : RNSVGGroup\n\n@property (nonatomic, strong) RNS"
},
{
"path": "apple/Elements/RNSVGPattern.mm",
"chars": 6160,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGRadialGradient.h",
"chars": 769,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGRadialGradient.mm",
"chars": 5254,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGSvgView.h",
"chars": 2476,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGSvgView.mm",
"chars": 13305,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGSymbol.h",
"chars": 745,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGSymbol.mm",
"chars": 3454,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGUse.h",
"chars": 645,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Elements/RNSVGUse.mm",
"chars": 5802,
"preview": "/**\n * Copyright (c) 2015-present, Horcrux.\n * All rights reserved.\n *\n * This source code is licensed under the MIT-sty"
},
{
"path": "apple/Filters/MetalCI/RNSVGArithmeticFilter.h",
"chars": 202,
"preview": "#import \"RNSVGCustomFilter.h\"\n\n@interface RNSVGArithmeticFilter : RNSVGCustomFilter {\n CIImage *inputImage2;\n NSNumber"
}
]
// ... and 852 more files (download for full content)
About this extraction
This page contains the full source code of the software-mansion/react-native-svg GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1052 files (7.1 MB), approximately 1.9M tokens, and a symbol index with 3169 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.