├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ ├── gradle.yml │ ├── snapshot.yml │ ├── sonarcloud.yml │ └── spotless.yml ├── .gitignore ├── .gitmodules ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── annotations-processor ├── build.gradle.kts └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── weisj │ │ └── jsvg │ │ └── annotations │ │ └── processor │ │ └── SealedClassProcessor.java │ └── resources │ └── META-INF │ ├── gradle │ └── incremental.annotation.processors │ └── services │ └── javax.annotation.processing.Processor ├── annotations ├── build.gradle.kts └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── weisj │ │ └── jsvg │ │ └── annotations │ │ └── Sealed.java │ └── module │ └── module-info.java ├── build.gradle.kts ├── buildSrc ├── .gitattributes ├── build.gradle.kts ├── settings.gradle.kts └── src │ └── main │ └── kotlin │ └── ModuleInfoCompilePlugin.kt ├── config ├── LICENSE_HEADER.txt └── java.eclipseformat.xml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── images └── svg_logo.png ├── jsvg ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── com │ │ └── github │ │ └── weisj │ │ └── jsvg │ │ ├── SVGDocument.java │ │ ├── animation │ │ ├── Additive.java │ │ ├── AnimationPeriod.java │ │ ├── AnimationValuesType.java │ │ ├── Fill.java │ │ ├── Track.java │ │ ├── interpolation │ │ │ ├── DefaultInterpolator.java │ │ │ ├── FloatInterpolator.java │ │ │ ├── FloatListInterpolator.java │ │ │ ├── PaintInterpolator.java │ │ │ └── TransformInterpolator.java │ │ ├── time │ │ │ ├── Duration.java │ │ │ ├── Interval.java │ │ │ └── TimeUnit.java │ │ └── value │ │ │ ├── AnimatedColor.java │ │ │ ├── AnimatedFloat.java │ │ │ ├── AnimatedFloatList.java │ │ │ ├── AnimatedLength.java │ │ │ ├── AnimatedPaint.java │ │ │ ├── AnimatedPath.java │ │ │ ├── AnimatedPercentage.java │ │ │ ├── AnimatedTransform.java │ │ │ └── NeutralElements.java │ │ ├── attributes │ │ ├── Animatable.java │ │ ├── ColorInterpolation.java │ │ ├── Coordinate.java │ │ ├── Default.java │ │ ├── FillRule.java │ │ ├── HasMatchName.java │ │ ├── Inherited.java │ │ ├── MarkerOrientation.java │ │ ├── MarkerUnitType.java │ │ ├── Overflow.java │ │ ├── PaintOrder.java │ │ ├── PresentationAttribute.java │ │ ├── PreserveAspectRatio.java │ │ ├── SpreadMethod.java │ │ ├── SuffixUnit.java │ │ ├── UnitType.java │ │ ├── VectorEffect.java │ │ ├── filter │ │ │ ├── BlendMode.java │ │ │ ├── ColorChannel.java │ │ │ ├── CompositeMode.java │ │ │ ├── DefaultFilterChannel.java │ │ │ ├── EdgeMode.java │ │ │ ├── FilterChannelKey.java │ │ │ ├── LayoutBounds.java │ │ │ └── TransferFunctionType.java │ │ ├── font │ │ │ ├── AWTSVGFont.java │ │ │ ├── AttributeFontSpec.java │ │ │ ├── FontParser.java │ │ │ ├── FontResolver.java │ │ │ ├── FontSize.java │ │ │ ├── FontSpec.java │ │ │ ├── FontStretch.java │ │ │ ├── FontStyle.java │ │ │ ├── FontWeight.java │ │ │ ├── LengthFontSize.java │ │ │ ├── MeasurableFontSpec.java │ │ │ ├── NumberFontWeight.java │ │ │ ├── PredefinedFontSize.java │ │ │ ├── PredefinedFontWeight.java │ │ │ └── SVGFont.java │ │ ├── stroke │ │ │ ├── LineCap.java │ │ │ ├── LineJoin.java │ │ │ └── StrokeResolver.java │ │ ├── text │ │ │ ├── DominantBaseline.java │ │ │ ├── GlyphRenderMethod.java │ │ │ ├── LengthAdjust.java │ │ │ ├── Side.java │ │ │ ├── Spacing.java │ │ │ └── TextAnchor.java │ │ ├── transform │ │ │ ├── TransformBox.java │ │ │ └── TransformPart.java │ │ └── value │ │ │ ├── ColorValue.java │ │ │ ├── ConstantFloat.java │ │ │ ├── ConstantFloatList.java │ │ │ ├── ConstantLengthTransform.java │ │ │ ├── ConstantTransform.java │ │ │ ├── ConstantValue.java │ │ │ ├── FloatListValue.java │ │ │ ├── FloatValue.java │ │ │ ├── LengthValue.java │ │ │ ├── PercentageDimension.java │ │ │ ├── PercentageValue.java │ │ │ ├── TransformValue.java │ │ │ └── Value.java │ │ ├── geometry │ │ ├── AWTSVGShape.java │ │ ├── FillRuleAwareAWTSVGShape.java │ │ ├── SVGCircle.java │ │ ├── SVGEllipse.java │ │ ├── SVGLine.java │ │ ├── SVGRectangle.java │ │ ├── SVGRoundRectangle.java │ │ ├── SVGShape.java │ │ ├── mesh │ │ │ ├── Bezier.java │ │ │ ├── CoonPatch.java │ │ │ ├── CoonValues.java │ │ │ ├── LineBezier.java │ │ │ ├── MeshUtil.java │ │ │ ├── Split.java │ │ │ └── Subdivided.java │ │ ├── noise │ │ │ └── PerlinTurbulence.java │ │ ├── path │ │ │ ├── Arc.java │ │ │ ├── BezierPathCommand.java │ │ │ ├── BuildHistory.java │ │ │ ├── Cubic.java │ │ │ ├── CubicBezierCommand.java │ │ │ ├── CubicSmooth.java │ │ │ ├── Horizontal.java │ │ │ ├── LineTo.java │ │ │ ├── LineToBezier.java │ │ │ ├── MoveTo.java │ │ │ ├── PathCommand.java │ │ │ ├── PathParser.java │ │ │ ├── Quadratic.java │ │ │ ├── QuadraticSmooth.java │ │ │ ├── Terminal.java │ │ │ └── Vertical.java │ │ ├── size │ │ │ ├── Angle.java │ │ │ ├── AngleUnit.java │ │ │ ├── FloatInsets.java │ │ │ ├── Length.java │ │ │ ├── Percentage.java │ │ │ └── Unit.java │ │ └── util │ │ │ ├── GeometryUtil.java │ │ │ ├── PathLengthCalculator.java │ │ │ ├── ReversePathIterator.java │ │ │ ├── SegmentIteratorWithLookBehind.java │ │ │ └── TransformUtil.java │ │ ├── nodes │ │ ├── AbstractGradient.java │ │ ├── AbstractPolyShape.java │ │ ├── AbstractSVGNode.java │ │ ├── Anchor.java │ │ ├── Circle.java │ │ ├── ClipPath.java │ │ ├── Defs.java │ │ ├── Desc.java │ │ ├── Ellipse.java │ │ ├── Group.java │ │ ├── Image.java │ │ ├── Line.java │ │ ├── LinearGradient.java │ │ ├── Marker.java │ │ ├── Mask.java │ │ ├── MetaSVGNode.java │ │ ├── Metadata.java │ │ ├── Path.java │ │ ├── Pattern.java │ │ ├── Polygon.java │ │ ├── Polyline.java │ │ ├── RadialGradient.java │ │ ├── Rect.java │ │ ├── RenderableSVGNode.java │ │ ├── SVG.java │ │ ├── SVGNode.java │ │ ├── ShapeNode.java │ │ ├── SolidColor.java │ │ ├── Stop.java │ │ ├── Style.java │ │ ├── Symbol.java │ │ ├── Title.java │ │ ├── Use.java │ │ ├── View.java │ │ ├── animation │ │ │ ├── Animate.java │ │ │ ├── AnimateTransform.java │ │ │ ├── BaseAnimationNode.java │ │ │ └── Set.java │ │ ├── container │ │ │ ├── BaseContainerNode.java │ │ │ ├── BaseInnerViewContainer.java │ │ │ ├── CommonInnerViewContainer.java │ │ │ ├── CommonRenderableContainerNode.java │ │ │ └── ContainerNode.java │ │ ├── filter │ │ │ ├── AbstractBlendComposite.java │ │ │ ├── AbstractCompositeFilterPrimitive.java │ │ │ ├── AbstractFilterPrimitive.java │ │ │ ├── AlphaImageFilter.java │ │ │ ├── BlendModeComposite.java │ │ │ ├── ChainedFilterPrimitive.java │ │ │ ├── Channel.java │ │ │ ├── ChannelStorage.java │ │ │ ├── CompositeModeComposite.java │ │ │ ├── DummyFilterPrimitive.java │ │ │ ├── FeBlend.java │ │ │ ├── FeColorMatrix.java │ │ │ ├── FeComponentTransfer.java │ │ │ ├── FeComposite.java │ │ │ ├── FeDisplacementMap.java │ │ │ ├── FeDropShadow.java │ │ │ ├── FeFlood.java │ │ │ ├── FeGaussianBlur.java │ │ │ ├── FeMerge.java │ │ │ ├── FeMergeNode.java │ │ │ ├── FeOffset.java │ │ │ ├── FeTurbulence.java │ │ │ ├── Filter.java │ │ │ ├── FilterContext.java │ │ │ ├── FilterLayoutContext.java │ │ │ ├── FilterPrimitive.java │ │ │ ├── FilterPrimitiveBase.java │ │ │ ├── IllegalFilterStateException.java │ │ │ ├── ImageProducerChannel.java │ │ │ ├── InplaceBoxBlurFilter.java │ │ │ ├── MultiConvolveOp.java │ │ │ ├── PixelProvider.java │ │ │ └── TransferFunctionElement.java │ │ ├── mesh │ │ │ ├── MeshBuilder.java │ │ │ ├── MeshGradient.java │ │ │ ├── MeshPatch.java │ │ │ └── MeshRow.java │ │ ├── prototype │ │ │ ├── Container.java │ │ │ ├── HasClip.java │ │ │ ├── HasContext.java │ │ │ ├── HasFilter.java │ │ │ ├── HasFontContext.java │ │ │ ├── HasFontRenderContext.java │ │ │ ├── HasGeometryContext.java │ │ │ ├── HasPaintContext.java │ │ │ ├── HasShape.java │ │ │ ├── HasVectorEffects.java │ │ │ ├── Instantiator.java │ │ │ ├── Mutator.java │ │ │ ├── Renderable.java │ │ │ ├── ShapedContainer.java │ │ │ ├── Transformable.java │ │ │ ├── impl │ │ │ │ ├── HasContextImpl.java │ │ │ │ └── HasGeometryContextImpl.java │ │ │ └── spec │ │ │ │ ├── Category.java │ │ │ │ ├── ElementCategories.java │ │ │ │ ├── NotImplemented.java │ │ │ │ └── PermittedContent.java │ │ └── text │ │ │ ├── AbstractGlyphRun.java │ │ │ ├── EmojiGlyph.java │ │ │ ├── Glyph.java │ │ │ ├── GlyphAdvancement.java │ │ │ ├── GlyphCursor.java │ │ │ ├── GlyphRenderer.java │ │ │ ├── GlyphRun.java │ │ │ ├── GlyphRunTextOutput.java │ │ │ ├── LinearTextContainer.java │ │ │ ├── MutableGlyphRun.java │ │ │ ├── NullTextOutput.java │ │ │ ├── PathGlyphCursor.java │ │ │ ├── StringTextSegment.java │ │ │ ├── Text.java │ │ │ ├── TextContainer.java │ │ │ ├── TextMetrics.java │ │ │ ├── TextPath.java │ │ │ ├── TextSegment.java │ │ │ └── TextSpan.java │ │ ├── paint │ │ ├── SVGPaint.java │ │ ├── SimplePaintSVGPaint.java │ │ └── impl │ │ │ ├── AwtSVGPaint.java │ │ │ ├── DefaultPaintParser.java │ │ │ ├── MaskedPaint.java │ │ │ ├── NonePaint.java │ │ │ ├── PredefinedPaints.java │ │ │ ├── RGBColor.java │ │ │ ├── SentinelPaint.java │ │ │ ├── TransformedPaint.java │ │ │ └── jdk │ │ │ ├── SVGMultipleGradientPaint.java │ │ │ ├── SVGMultipleGradientPaintContext.java │ │ │ ├── SVGRadialGradientPaint.java │ │ │ └── SVGRadialGradientPaintContext.java │ │ ├── parser │ │ ├── DocumentLimits.java │ │ ├── DomDocument.java │ │ ├── DomElement.java │ │ ├── DomProcessor.java │ │ ├── ElementLoader.java │ │ ├── LoaderContext.java │ │ ├── PaintParser.java │ │ ├── SVGLoader.java │ │ ├── XMLInput.java │ │ ├── css │ │ │ ├── CssParser.java │ │ │ ├── StyleProperty.java │ │ │ ├── StyleSheet.java │ │ │ └── impl │ │ │ │ ├── Lexer.java │ │ │ │ ├── ParserException.java │ │ │ │ ├── SimpleCssParser.java │ │ │ │ ├── SimpleStyleSheet.java │ │ │ │ ├── Token.java │ │ │ │ └── TokenType.java │ │ ├── impl │ │ │ ├── AttributeNode.java │ │ │ ├── AttributeParser.java │ │ │ ├── CharacterDataParser.java │ │ │ ├── DefaultElementLoader.java │ │ │ ├── DocumentConstructorAccessor.java │ │ │ ├── ExternalDocumentLoader.java │ │ │ ├── InputStreamXMLInput.java │ │ │ ├── LoadHelper.java │ │ │ ├── MutableLoaderContext.java │ │ │ ├── NodeSupplier.java │ │ │ ├── ParsedDocument.java │ │ │ ├── ParsedElement.java │ │ │ ├── ParserUtil.java │ │ │ ├── SVGDocumentBuilder.java │ │ │ ├── SeparatorMode.java │ │ │ ├── StaxSVGLoader.java │ │ │ └── StreamUtil.java │ │ └── resources │ │ │ ├── RenderableResource.java │ │ │ ├── ResourceLoader.java │ │ │ ├── ResourcePolicy.java │ │ │ ├── ResourceSupplier.java │ │ │ └── impl │ │ │ ├── DefaultResourcePolicy.java │ │ │ ├── ImageResource.java │ │ │ ├── MissingImageResource.java │ │ │ ├── SVGResource.java │ │ │ ├── SynchronousResourceLoader.java │ │ │ └── ValueResourceSupplier.java │ │ ├── renderer │ │ ├── MeasureContext.java │ │ ├── NullPlatformSupport.java │ │ ├── PlatformSupport.java │ │ ├── RenderContext.java │ │ ├── SVGRenderingHints.java │ │ ├── animation │ │ │ ├── Animation.java │ │ │ └── AnimationState.java │ │ ├── awt │ │ │ └── AwtComponentPlatformSupport.java │ │ ├── impl │ │ │ ├── ElementBounds.java │ │ │ ├── Info.java │ │ │ ├── IsolationEffects.java │ │ │ ├── NodeRenderer.java │ │ │ ├── PaintResolver.java │ │ │ ├── ShapeRenderer.java │ │ │ └── context │ │ │ │ ├── ContextElementAttributes.java │ │ │ │ ├── FontRenderContext.java │ │ │ │ ├── PaintContext.java │ │ │ │ ├── RenderContextAccessor.java │ │ │ │ └── StrokeContext.java │ │ └── output │ │ │ ├── Output.java │ │ │ ├── TextOutput.java │ │ │ └── impl │ │ │ ├── Graphics2DOutput.java │ │ │ ├── GraphicsResetHelper.java │ │ │ ├── GraphicsUtil.java │ │ │ ├── NullOutput.java │ │ │ ├── RenderingHintsUtil.java │ │ │ └── ShapeOutput.java │ │ ├── ui │ │ └── AnimationPlayer.java │ │ ├── util │ │ ├── AttributeUtil.java │ │ ├── BlittableImage.java │ │ ├── CachedSurfaceSupplier.java │ │ ├── ColorSpaceAwareRGBImageFilter.java │ │ ├── ColorUtil.java │ │ ├── DataUri.java │ │ ├── ImageUtil.java │ │ ├── ParserBase.java │ │ ├── PathUtil.java │ │ ├── ResourceUtil.java │ │ ├── ShapeUtil.java │ │ ├── SystemUtil.java │ │ └── supplier │ │ │ ├── ConstantSupplier.java │ │ │ └── LazySupplier.java │ │ └── view │ │ ├── FloatSize.java │ │ └── ViewBox.java │ └── test │ ├── java │ └── com │ │ └── github │ │ └── weisj │ │ └── jsvg │ │ ├── AspectRatioTest.java │ │ ├── BasicShapesTest.java │ │ ├── BlitImageTest.java │ │ ├── CSSTest.java │ │ ├── ClipPathTest.java │ │ ├── ElementLoaderTest.java │ │ ├── FillTest.java │ │ ├── FilterTest.java │ │ ├── GeometryAttributesTest.java │ │ ├── GradientTest.java │ │ ├── HrefTest.java │ │ ├── ImageTest.java │ │ ├── MarkerTest.java │ │ ├── MaskTest.java │ │ ├── OverflowTest.java │ │ ├── PaintOrderTest.java │ │ ├── PaintsTest.java │ │ ├── PathTest.java │ │ ├── PatternTest.java │ │ ├── ReSvgTestSuite.java │ │ ├── ReferenceTest.java │ │ ├── ResourceWalker.java │ │ ├── SVGViewer.java │ │ ├── ShadowRenderDemo.java │ │ ├── StrokeTest.java │ │ ├── SymbolTest.java │ │ ├── TextTest.java │ │ ├── ToShapeTest.java │ │ ├── TransformTest.java │ │ ├── UnitsTest.java │ │ ├── UseTest.java │ │ ├── Utils.java │ │ ├── VectorEffectsTest.java │ │ ├── ViewBoxTest.java │ │ ├── attribute │ │ ├── AttributeParserTest.java │ │ └── FontTest.java │ │ ├── geometry │ │ └── path │ │ │ └── PathParserTest.java │ │ ├── parser │ │ └── impl │ │ │ ├── CharacterDataParserTest.java │ │ │ ├── CssParserTest.java │ │ │ ├── PaintParserTest.java │ │ │ ├── ParserTestUtil.java │ │ │ ├── ResourceSupplierTest.java │ │ │ ├── StyleParserTest.java │ │ │ └── UseValidationTest.java │ │ └── util │ │ ├── DataUriTest.java │ │ └── RandomData.java │ └── resources │ └── com │ └── github │ └── weisj │ └── jsvg │ ├── aspect │ ├── aspect.svg │ ├── aspect1.svg │ ├── aspect2.svg │ ├── aspect3.svg │ └── aspectWithFontSizeAdjust.svg │ ├── clipPath │ ├── clipPathTransform.svg │ ├── clipPathUnits.svg │ ├── clipPathUnits2.svg │ ├── filterAndClipPath.svg │ └── filterAndClipPath2.svg │ ├── css │ ├── brokenUpCharContent.svg │ ├── multipleSelectorsOnRule.svg │ ├── multipleStyleSheets.svg │ ├── precedence.svg │ └── selectorTypes.svg │ ├── externalResource │ ├── external.svg │ ├── externalFromClassPath.svg │ └── externalFromClassPath_ref.svg │ ├── fillOnSVG.svg │ ├── fillRule.svg │ ├── filter │ ├── blend.svg │ ├── blend_bug41.svg │ ├── blur.svg │ ├── blur2.svg │ ├── channelSourceAlpha.svg │ ├── channelSourceAlphaBlend.svg │ ├── channelSourceAlphaBlend2.svg │ ├── channelSourceAlphaBlend_sRGB.svg │ ├── channelSourceGraphic.svg │ ├── colormatrix_bug41_1.svg │ ├── colormatrix_bug41_2.svg │ ├── colormatrix_linearRGB.svg │ ├── colormatrix_sRGB.svg │ ├── componentTransfer.svg │ ├── componentTransfer_sRGB.svg │ ├── composite.svg │ ├── composite_bug33.svg │ ├── displacement.svg │ ├── dropShadow.svg │ ├── dropShadow_ref.svg │ ├── edgeModeDuplicate.svg │ ├── edgeModeNone.svg │ ├── edgeModeWrap.svg │ ├── emptyGroupNoTransform.svg │ ├── emptyGroupTransform.svg │ ├── filterOnRoot_bug61.svg │ ├── filterPrimitiveRegionClip.svg │ ├── filterPrimitiveRegionClip2.svg │ ├── filterRegionClip.svg │ ├── flood.svg │ ├── floodColor_bug29.svg │ ├── merge.svg │ ├── merge_composite_bug33.svg │ ├── offset.svg │ ├── outOfBoundsHidden.svg │ ├── outOfBoundsVisible.svg │ ├── ptr_bug62.svg │ ├── ptr_ref_bug62.svg │ ├── slim.svg │ ├── source_alpha_bug30.svg │ ├── turbulence1.svg │ ├── turbulence2.svg │ └── turbulence3.svg │ ├── fontSizeAdjust.svg │ ├── gradient │ ├── bad_gradient_stop_issue_51.svg │ ├── linearGradient.svg │ ├── radialGradient.svg │ ├── radialGradient2.svg │ ├── radialGradient3.svg │ ├── radialGradientFocusRadius.svg │ └── stripes.svg │ ├── href │ ├── gradientForwardReference.svg │ └── gradientForwardReference2.svg │ ├── icons │ ├── desktop.svg │ ├── drive.svg │ ├── folder.svg │ ├── general.svg │ ├── homeFolder.svg │ ├── image.svg │ ├── missingImage.svg │ ├── newFolder.svg │ ├── pendingImage.svg │ ├── text.svg │ ├── unknown.svg │ └── upFolder.svg │ ├── image │ ├── imageBase64.svg │ ├── imageExternal.svg │ └── imageExternalNoLoad.svg │ ├── line.svg │ ├── marker │ ├── marker1.svg │ ├── marker2.svg │ ├── marker3.svg │ └── marker3_flattened.svg │ ├── mask │ ├── chromeLogo.svg │ ├── classIcon.svg │ ├── complexTransform_bug32.svg │ ├── empty_group_issue_48.svg │ ├── filterMask_bug84.svg │ ├── mask1.svg │ ├── mask2.svg │ ├── maskContentUnits.svg │ ├── maskUnits.svg │ ├── maskUnitsPercentages.svg │ ├── mask_isolation_2_bug74.svg │ ├── mask_isolation_2_bug74_ref.svg │ ├── mask_isolation_bug74.svg │ ├── nestedMask.svg │ ├── overlapping.svg │ ├── translucentMask.svg │ └── translucentMask_ref.svg │ ├── mesh │ ├── mesh.svg │ ├── mesh2.svg │ ├── mesh3.svg │ └── mesh4.svg │ ├── overflow.svg │ ├── overflowImage.svg │ ├── paint │ ├── context.svg │ └── currentColor.svg │ ├── paintOrder │ ├── inherit_bug83.svg │ ├── inherit_bug83_ref.svg │ └── paintOrder.svg │ ├── parser │ ├── manyImplicitPathsThroughUse.svg │ ├── useCycle.svg │ ├── useCycleSelfReference.svg │ └── useNesting.svg │ ├── path │ ├── closePath.svg │ ├── cubicBezier.svg │ ├── ellipticalArc.svg │ ├── lineTo.svg │ ├── moveTo.svg │ ├── partiallyValid.svg │ ├── partiallyValid_ref.svg │ └── quadraticBezier.svg │ ├── pathLength │ ├── pathLength.svg │ └── pathLength_ref.svg │ ├── pattern │ ├── pattern.svg │ ├── patternContentUnits.svg │ ├── patternContentUnits_ref.svg │ └── patternUnits.svg │ ├── roundShadow │ ├── bottom.svg │ ├── bottomLeft.svg │ ├── bottomRight.svg │ ├── left.svg │ ├── right.svg │ ├── top.svg │ ├── topLeft.svg │ └── topRight.svg │ ├── shadow │ ├── bottom.svg │ ├── bottomLeft.svg │ ├── bottomRight.svg │ ├── left.svg │ ├── right.svg │ ├── top.svg │ ├── topLeft.svg │ └── topRight.svg │ ├── stroke │ ├── stroke1.svg │ ├── stroke2.svg │ ├── stroke3.svg │ ├── stroke4.svg │ ├── stroke5.svg │ └── stroke_miterlimit_invalid.svg │ ├── svg_logo.svg │ ├── symbol │ ├── symbol1.svg │ └── symbol2.svg │ ├── test.svg │ ├── test2.svg │ ├── text │ ├── baselineOnPath.svg │ ├── baselineOnPath_ref.svg │ ├── dominantBaseline.svg │ ├── extractText.svg │ ├── extractText2.svg │ ├── fontStretch.svg │ ├── gradientText0.svg │ ├── gradientText1.svg │ ├── gradientText2.svg │ ├── lengthAdjust.svg │ ├── letterSpacing.svg │ ├── startOffset.svg │ ├── text0.svg │ ├── text1.svg │ ├── text2.svg │ ├── text3.svg │ ├── text4.svg │ ├── text5.svg │ ├── text6.svg │ ├── textAnchor.svg │ ├── textClip.svg │ ├── textLength.svg │ └── textLengthPath.svg │ ├── tmp2.svg │ ├── tmp4.svg │ ├── transform │ ├── SVGinSVG.svg │ ├── matrix.svg │ ├── rotate.svg │ ├── scale.svg │ ├── skewX.svg │ ├── skewY.svg │ ├── transform.svg │ ├── transformBoxFill.svg │ ├── transformBoxFillTranslate.svg │ ├── transformBoxFillTranslate_ref.svg │ ├── transformBoxFill_ref.svg │ ├── transformBoxStroke.svg │ ├── transformBoxStrokeTranslate.svg │ ├── transformBoxStrokeTranslate_ref.svg │ ├── transformBoxStroke_ref.svg │ └── translate.svg │ ├── units │ ├── relativeUnits.svg │ ├── relativeUnits2.svg │ └── relativeUnits3.svg │ ├── use.svg │ ├── vectorEffect │ ├── before.svg │ ├── fixedPosition.svg │ ├── nonRotation.svg │ ├── nonRotationFixedPosition.svg │ ├── nonScalingSize.svg │ ├── nonScalingSizeFixedPosition.svg │ ├── nonScalingSizeNonRotation.svg │ ├── nonScalingSizeNonRotationFixedPosition.svg │ ├── nonScalingStroke.svg │ └── none.svg │ └── viewBox │ ├── viewBox.svg │ ├── viewBox2.svg │ └── viewBox3.svg └── settings.gradle.kts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | trim_trailing_whitespace = true 5 | insert_final_newline = true 6 | charset = utf-8 7 | indent_style = space 8 | 9 | [*.md] 10 | indent_size = 4 11 | trim_trailing_whitespace = false 12 | 13 | [{*.sh, gradlew}] 14 | end_of_line = lf 15 | 16 | [{*.bat, *.cmd}] 17 | end_of_line = crlf 18 | 19 | [{*.kts, *.kt}] 20 | ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL 21 | ij_kotlin_name_count_to_use_star_import = 999 22 | ij_kotlin_name_count_to_use_star_import_for_members = 999 23 | 24 | [*.java] 25 | # Doc: https://youtrack.jetbrains.com/issue/IDEA-170643#focus=streamItem-27-3708697.0-0 26 | indent_size = 4 27 | max_line_length = 120 28 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | *.java text 5 | *.html text 6 | *.css text 7 | *.js text 8 | *.sql text 9 | *.q text 10 | 11 | # Note: executable is a non-standard attribute, and it is used by the release plugin 12 | *.sh text eol=lf executable 13 | *.cgi text eol=lf executable 14 | 15 | *.bat text eol=crlf 16 | *.cmd text eol=crlf 17 | 18 | # Images are explicitly configured as binary, just in case 19 | *.gif binary 20 | *.jpg binary 21 | *.jpeg binary 22 | *.png binary 23 | 24 | # Below files don't have extension, so we mention them explicitly 25 | /gradlew text eol=lf executable 26 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: [ 13 | 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=44DYEVYYW5MR4&source=url', 14 | 'https://buymeacoffee.com/weisj' 15 | ] 16 | -------------------------------------------------------------------------------- /.github/workflows/snapshot.yml: -------------------------------------------------------------------------------- 1 | name: Build nightly SNAPSHOT 2 | 3 | on: 4 | schedule: 5 | # Midnight every day 6 | - cron: "0 0 * * *" 7 | push: 8 | # Rerun if workflow changes 9 | branches: 10 | - 'master' 11 | paths: 12 | - '**/snapshot.yml' 13 | 14 | jobs: 15 | gradle: 16 | name: Publish nightly snapshot 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v4 20 | with: 21 | fetch-depth: 10 22 | - name: Set up JDK 21 23 | uses: actions/setup-java@v4 24 | with: 25 | distribution: 'zulu' 26 | java-version: 21 27 | - name: Publish 28 | env: 29 | PROPS_RELEASE: "-Prc=1 -Pgh -Prelease=false -PskipJavadoc -PskipSpotless" 30 | PROPS_GIT: "-PghGitSourceUsername=${{ secrets.GH_GIT_USERNAME }} -PghGitSourcePassword=${{ secrets.GITHUB_TOKEN }}" 31 | PROPS_NEXUS: "-PghNexusUsername=${{ secrets.GH_NEXUS_USERNAME }} -PghNexusPassword=${{ secrets.GH_NEXUS_PASSWORD }}" 32 | PROPS_SIGNING: "-PuseInMemoryKey=true -Psigning.inMemoryKey=${{ secrets.IN_MEMORY_KEY }} -Psigning.password=${{ secrets.SIGNING_PASSWORD }}" 33 | PROPS_GITHUB: "-PgithubAccessToken=${{ secrets.GITHUB_TOKEN }}" 34 | run: ./gradlew prepareVote $(echo $PROPS_RELEASE $PROPS_GIT $PROPS_NEXUS $PROPS_SIGNING $PROPS_GITHUB) -x test 35 | -------------------------------------------------------------------------------- /.github/workflows/sonarcloud.yml: -------------------------------------------------------------------------------- 1 | name: Sonarcloud 2 | on: 3 | push: 4 | branches: 5 | - master 6 | pull_request: 7 | types: [opened, synchronize, reopened] 8 | jobs: 9 | build: 10 | name: Build 11 | runs-on: ubuntu-latest 12 | if: ${{!github.event.pull_request.head.repo.fork}} 13 | steps: 14 | - uses: actions/checkout@v4 15 | with: 16 | submodules: recursive 17 | fetch-depth: 0 18 | - name: Set up JDK 21 19 | uses: actions/setup-java@v4 20 | with: 21 | distribution: 'zulu' 22 | java-version: 21 23 | - name: Cache SonarCloud packages 24 | uses: actions/cache@v4 25 | with: 26 | path: ~/.sonar/cache 27 | key: ${{ runner.os }}-sonar 28 | restore-keys: ${{ runner.os }}-sonar 29 | - name: Cache Gradle packages 30 | uses: actions/cache@v4 31 | with: 32 | path: ~/.gradle/caches 33 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} 34 | restore-keys: ${{ runner.os }}-gradle 35 | - name: Build 36 | run: ./gradlew build jacocoTestReport -PskipSpotless 37 | - name: Build and analyze 38 | env: 39 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any 40 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} 41 | run: ./gradlew sonarqube -PskipSpotless --info 42 | -------------------------------------------------------------------------------- /.github/workflows/spotless.yml: -------------------------------------------------------------------------------- 1 | name: Spotless 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | spotless: 7 | name: "Spotless" 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | with: 12 | fetch-depth: 10 13 | - name: Set up JDK 21 14 | uses: actions/setup-java@v4 15 | with: 16 | distribution: 'zulu' 17 | java-version: 21 18 | - name: Check 19 | run: ./gradlew spotlessCheck -PspotlessRatchet=false 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Local test files 2 | jsvg/src/test/resources/**/tmp.svg 3 | 4 | # SVN 5 | .svn 6 | repo/ 7 | 8 | # VIM locks 9 | *.swp 10 | 11 | # LibreOffice locks 12 | .~lock.*# 13 | 14 | *.tmp 15 | 16 | # Word temporary 17 | ~$*.doc* 18 | # 19 | # # Excel temporary 20 | ~$*.xls* 21 | # 22 | # # Excel Backup File 23 | *.xlk 24 | 25 | # intelliJ 26 | .idea/ 27 | /out/ 28 | /buildSrc/out/ 29 | /*/out/ 30 | *.iml 31 | *.ipr 32 | *.iws 33 | .run/ 34 | 35 | # VS Code 36 | .vscode/ 37 | 38 | # maven 39 | target/ 40 | 41 | # gradle 42 | /.gradle/ 43 | /build/ 44 | /buildSrc/.gradle/ 45 | /*/build/ 46 | 47 | # Python 48 | venv/ 49 | 50 | # Mac 51 | .DS_Store 52 | 53 | # Windows 54 | Thumbs.db 55 | /.recommenders/ 56 | /key.gpg 57 | 58 | # Project 59 | /bin/ 60 | /buildSrc/bin/ 61 | /*/bin/ 62 | *.dylib 63 | *.dll 64 | /scratch/ 65 | /documentation/ 66 | 67 | # Eclipse 68 | .classpath 69 | .project 70 | .settings 71 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "resvg-test-suite"] 2 | path = resvg-test-suite 3 | url = https://github.com/RazrFalcon/resvg-test-suite.git 4 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | If you want to contribute to the project please create a corresponding issue with the feature/problem you 2 | are working on or comment on an existing issue that you would like to work on it. 3 | 4 | To ensure proper formatting you can run 5 | ```` 6 | gradlew spotlessApply 7 | ```` 8 | for automatic formatting. 9 | 10 | Some remarks on the non-formatting related conventions for this project: 11 | - If possible classes should expose a minimal amout of internal details. It isn't an aim of this project to provide dom introspection. 12 | - If possible classes should be immutable. 13 | - Where possible all fields and method parameters should be marked `@Nullable` or `@NotNull`. 14 | - Accessor methods don't use the `getThing` beans standard but are simply called `thing`. 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021-2024 Jannis Weis 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /annotations-processor/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `java-library` 3 | id("biz.aQute.bnd.builder") 4 | } 5 | 6 | dependencies { 7 | compileOnly(libs.nullabilityAnnotations) 8 | implementation(projects.annotations) 9 | } 10 | 11 | tasks { 12 | jar { 13 | bundle { 14 | bnd( 15 | """ 16 | Bundle-SymbolicName: com.github.weisj.jsvg.annotations.processor 17 | 18 | -jpms-module-info: 19 | -removeheaders: Private-Package,Tool 20 | """, 21 | ) 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /annotations-processor/src/main/resources/META-INF/gradle/incremental.annotation.processors: -------------------------------------------------------------------------------- 1 | com.github.weisj.jsvg.annotations.processor.SealedClassProcessor,ISOLATING 2 | -------------------------------------------------------------------------------- /annotations-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor: -------------------------------------------------------------------------------- 1 | com.github.weisj.jsvg.annotations.processor.SealedClassProcessor 2 | -------------------------------------------------------------------------------- /annotations/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `java-library` 3 | id("biz.aQute.bnd.builder") 4 | } 5 | 6 | dependencies { 7 | compileOnly(libs.nullabilityAnnotations) 8 | } 9 | 10 | tasks { 11 | jar { 12 | bundle { 13 | bnd( 14 | """ 15 | Bundle-SymbolicName: com.github.weisj.jsvg.annotations 16 | -exportcontents: \ 17 | com.github.weisj.jsvg.annotations 18 | 19 | -jpms-module-info: 20 | -removeheaders: Private-Package,Tool 21 | """, 22 | ) 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /annotations/src/main/module/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | */ 25 | module com.github.weisj.jsvg.annotations { 26 | requires static org.jetbrains.annotations; 27 | 28 | exports com.github.weisj.jsvg.annotations; 29 | } 30 | -------------------------------------------------------------------------------- /buildSrc/.gitattributes: -------------------------------------------------------------------------------- 1 | # For some reason Gradle requires LF eol for precompiled script plugins 2 | # Otherwise buildSrc compilation fails on Windows 3 | /src/main/kotlin/**/*.gradle.kts text eol=lf 4 | -------------------------------------------------------------------------------- /buildSrc/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `kotlin-dsl` 3 | `java-gradle-plugin` 4 | } 5 | 6 | dependencies { 7 | implementation(gradleApi()) 8 | } 9 | 10 | repositories { 11 | mavenCentral() 12 | gradlePluginPortal() 13 | } 14 | 15 | gradlePlugin { 16 | plugins { 17 | create("module-info-compile") { 18 | id = "module-info-compile" 19 | implementationClass = "ModuleInfoCompilePlugin" 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /buildSrc/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "buildSrc" 2 | -------------------------------------------------------------------------------- /config/LICENSE_HEADER.txt: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) $YEAR Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weisJ/jsvg/d4c5c4a2bec4998628b78378dff8be1cf649dcb2/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /images/svg_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weisJ/jsvg/d4c5c4a2bec4998628b78378dff8be1cf649dcb2/images/svg_logo.png -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/animation/Additive.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.animation; 23 | 24 | public enum Additive { 25 | SUM, 26 | REPLACE; 27 | } 28 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/animation/AnimationValuesType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.animation; 23 | 24 | 25 | public enum AnimationValuesType { 26 | VALUES, 27 | FROM_TO, 28 | FROM_BY, 29 | BY, 30 | TO; 31 | 32 | public boolean endIsBy() { 33 | return this == FROM_BY || this == BY; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/animation/Fill.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.animation; 23 | 24 | import com.github.weisj.jsvg.attributes.Default; 25 | 26 | public enum Fill { 27 | @Default 28 | REMOVE, 29 | FREEZE 30 | } 31 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/animation/interpolation/FloatInterpolator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.animation.interpolation; 23 | 24 | public interface FloatInterpolator { 25 | 26 | float interpolate(float initial, float a, float b, float progress); 27 | } 28 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/Animatable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes; 23 | 24 | public enum Animatable { 25 | YES, 26 | NO 27 | } 28 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/HasMatchName.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes; 23 | 24 | import org.jetbrains.annotations.NotNull; 25 | 26 | public interface HasMatchName { 27 | @NotNull 28 | String matchName(); 29 | } 30 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/Inherited.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024-2025 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes; 23 | 24 | public enum Inherited { 25 | YES, 26 | NO 27 | } 28 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/MarkerUnitType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes; 23 | 24 | public enum MarkerUnitType { 25 | UserSpaceOnUse, 26 | @Default 27 | StrokeWidth 28 | } 29 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/SuffixUnit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes; 23 | 24 | import org.jetbrains.annotations.NotNull; 25 | 26 | public interface SuffixUnit { 27 | 28 | @NotNull 29 | String suffix(); 30 | 31 | @NotNull 32 | SuffixUnit @NotNull [] units(); 33 | 34 | @NotNull 35 | V valueOf(float value); 36 | } 37 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/filter/TransferFunctionType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes.filter; 23 | 24 | public enum TransferFunctionType { 25 | Identity, 26 | Table, 27 | Discrete, 28 | Linear, 29 | Gamma 30 | } 31 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/font/FontSize.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021-2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes.font; 23 | 24 | import org.jetbrains.annotations.NotNull; 25 | 26 | import com.github.weisj.jsvg.geometry.size.Length; 27 | 28 | public interface FontSize { 29 | @NotNull 30 | Length size(@NotNull Length parentSize); 31 | } 32 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/font/FontWeight.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes.font; 23 | 24 | import com.google.errorprone.annotations.Immutable; 25 | 26 | @Immutable 27 | interface FontWeight { 28 | int weight(int parentWeight); 29 | } 30 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/text/LengthAdjust.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021-2022 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes.text; 23 | 24 | import com.github.weisj.jsvg.attributes.Default; 25 | 26 | public enum LengthAdjust { 27 | @Default 28 | Spacing, 29 | SpacingAndGlyphs 30 | } 31 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/text/TextAnchor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes.text; 23 | 24 | public enum TextAnchor { 25 | Start, 26 | Middle, 27 | End 28 | } 29 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/value/PercentageDimension.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes.value; 23 | 24 | public enum PercentageDimension { 25 | WIDTH, 26 | HEIGHT, 27 | LENGTH, 28 | CUSTOM, 29 | NONE 30 | } 31 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/attributes/value/Value.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2024-2025 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.attributes.value; 23 | 24 | import org.jetbrains.annotations.NotNull; 25 | 26 | import com.github.weisj.jsvg.renderer.MeasureContext; 27 | 28 | public interface Value { 29 | 30 | T get(@NotNull MeasureContext context); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/nodes/filter/IllegalFilterStateException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2023 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.nodes.filter; 23 | 24 | import org.jetbrains.annotations.NotNull; 25 | 26 | final class IllegalFilterStateException extends IllegalStateException { 27 | 28 | public IllegalFilterStateException(@NotNull String s) { 29 | super(s); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/nodes/filter/PixelProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021-2023 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.nodes.filter; 23 | 24 | @FunctionalInterface 25 | public interface PixelProvider { 26 | 27 | int pixelAt(double x, double y); 28 | } 29 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/nodes/prototype/HasFilter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.nodes.prototype; 23 | 24 | import org.jetbrains.annotations.Nullable; 25 | 26 | import com.github.weisj.jsvg.nodes.filter.Filter; 27 | 28 | public interface HasFilter { 29 | 30 | @Nullable 31 | Filter filter(); 32 | } 33 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/nodes/prototype/Mutator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.nodes.prototype; 23 | 24 | import org.jetbrains.annotations.NotNull; 25 | 26 | @FunctionalInterface 27 | public interface Mutator { 28 | 29 | @NotNull 30 | T mutate(@NotNull T element); 31 | } 32 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/nodes/prototype/spec/ElementCategories.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.nodes.prototype.spec; 23 | 24 | import java.lang.annotation.*; 25 | 26 | @Documented 27 | @Target(ElementType.TYPE) 28 | @Retention(RetentionPolicy.RUNTIME) 29 | public @interface ElementCategories { 30 | Category[] value(); 31 | } 32 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/nodes/prototype/spec/NotImplemented.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.nodes.prototype.spec; 23 | 24 | import java.lang.annotation.*; 25 | 26 | @Documented 27 | @Target({ElementType.METHOD, ElementType.FIELD}) 28 | @Retention(RetentionPolicy.SOURCE) 29 | public @interface NotImplemented { 30 | String value() default ""; 31 | } 32 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/parser/DomProcessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2021-2025 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.parser; 23 | 24 | import org.jetbrains.annotations.NotNull; 25 | 26 | @FunctionalInterface 27 | public interface DomProcessor { 28 | 29 | void process(@NotNull DomElement root); 30 | } 31 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/parser/XMLInput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2025 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.parser; 23 | 24 | import javax.xml.stream.XMLEventReader; 25 | import javax.xml.stream.XMLStreamException; 26 | 27 | import org.jetbrains.annotations.NotNull; 28 | 29 | public interface XMLInput { 30 | 31 | @NotNull 32 | XMLEventReader createReader() throws XMLStreamException; 33 | } 34 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/parser/css/CssParser.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2023 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.parser.css; 23 | 24 | import java.util.List; 25 | 26 | import org.jetbrains.annotations.NotNull; 27 | 28 | public interface CssParser { 29 | @NotNull 30 | StyleSheet parse(@NotNull List input); 31 | } 32 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/parser/css/impl/ParserException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2023 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.parser.css.impl; 23 | 24 | final class ParserException extends RuntimeException { 25 | } 26 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/parser/css/impl/TokenType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2023 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.parser.css.impl; 23 | 24 | public enum TokenType { 25 | START, 26 | CURLY_OPEN, 27 | CURLY_CLOSE, 28 | COMMENT, 29 | COLON, 30 | COMMA, 31 | SEMICOLON, 32 | RAW_DATA, 33 | CLASS_NAME, 34 | ID_NAME, 35 | IDENTIFIER, 36 | EOF 37 | } 38 | -------------------------------------------------------------------------------- /jsvg/src/main/java/com/github/weisj/jsvg/renderer/animation/Animation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2025 Jannis Weis 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 7 | * associated documentation files (the "Software"), to deal in the Software without restriction, 8 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, 9 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in all copies or 13 | * substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 16 | * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | */ 22 | package com.github.weisj.jsvg.renderer.animation; 23 | 24 | public interface Animation { 25 | long duration(); 26 | 27 | long startTime(); 28 | 29 | long endTime(); 30 | } 31 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/aspect/aspect3.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/aspect/aspectWithFontSizeAdjust.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/clipPath/clipPathTransform.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/clipPath/clipPathUnits.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/clipPath/clipPathUnits2.svg: -------------------------------------------------------------------------------- 1 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/clipPath/filterAndClipPath.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/clipPath/filterAndClipPath2.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/css/brokenUpCharContent.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 27 | 28 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/css/multipleSelectorsOnRule.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/css/multipleStyleSheets.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 16 | 24 | 25 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/css/precedence.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/css/selectorTypes.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/externalResource/external.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/externalResource/externalFromClassPath.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/externalResource/externalFromClassPath_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/fillOnSVG.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/fillRule.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/blend.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/blend_bug41.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/blur.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/blur2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 17 | 19 | 20 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/channelSourceAlpha.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/channelSourceAlphaBlend.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/channelSourceAlphaBlend2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 24 | 25 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/channelSourceAlphaBlend_sRGB.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/channelSourceGraphic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/colormatrix_bug41_1.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/colormatrix_bug41_2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/composite_bug33.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 8 | 10 | 12 | 14 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/displacement.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 9 | 10 | 11 | 13 | 14 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/dropShadow.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 19 | 20 | 22 | 23 | 25 | 26 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/edgeModeDuplicate.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/edgeModeNone.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/edgeModeWrap.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/emptyGroupNoTransform.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/emptyGroupTransform.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/filterOnRoot_bug61.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/filterPrimitiveRegionClip.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/filterPrimitiveRegionClip2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/filterRegionClip.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/flood.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 10 | 11 | 12 | 14 | 16 | 17 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/floodColor_bug29.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/merge.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/offset.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 15 | 17 | 19 | 20 | 22 | 24 | 26 | 27 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/outOfBoundsHidden.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/outOfBoundsVisible.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/slim.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 8 | 10 | 12 | 14 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/source_alpha_bug30.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/turbulence1.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/filter/turbulence2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/fontSizeAdjust.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | This text uses 5 | the Times font (10px), which is hard to read in small 6 | sizes. 7 | 8 | 9 | This text 10 | uses the Verdana font (10px), which has relatively large 11 | lowercase 12 | letters. 13 | 14 | 16 | This is the 10px Times, but now adjusted to the same 17 | aspect ratio as the 18 | Verdana. 19 | 20 | 21 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/gradient/bad_gradient_stop_issue_51.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/gradient/linearGradient.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/gradient/radialGradient.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/gradient/radialGradient2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 16 | 17 | 18 | (fx,fy) 20 | (cx,cy) 22 | 23 | 24 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/gradient/radialGradient3.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 25 | 27 | 28 | Pad 30 | Repeat 32 | Reflect 34 | 35 | 36 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/gradient/radialGradientFocusRadius.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/gradient/stripes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/href/gradientForwardReference.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/href/gradientForwardReference2.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/desktop.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/drive.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 18 | 19 | 21 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/folder.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/general.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/homeFolder.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/image.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 25 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/newFolder.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 14 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/text.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/unknown.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 17 | 19 | 20 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/icons/upFolder.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/image/imageBase64.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/image/imageExternal.svg: -------------------------------------------------------------------------------- 1 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/image/imageExternalNoLoad.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/line.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/marker/marker1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 22 | 23 | 24 | 27 | 28 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/marker/marker2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/marker/marker3.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | 9 | 10 | 12 | Placing an arrowhead at the end of a path. 13 | 14 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/classIcon.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/complexTransform_bug32.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 15 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/empty_group_issue_48.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/filterMask_bug84.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/mask1.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/mask2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/maskContentUnits.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/maskUnits.svg: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/maskUnitsPercentages.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/mask_isolation_2_bug74.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/mask_isolation_2_bug74_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 27 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/mask_isolation_bug74.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/nestedMask.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/overlapping.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/translucentMask.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mask/translucentMask_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/mesh/mesh3.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/overflowImage.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/paint/context.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/paint/currentColor.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/paintOrder/inherit_bug83.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/paintOrder/inherit_bug83_ref.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/paintOrder/paintOrder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | stroke over 11 | stroke under 12 | 13 | 14 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/parser/useCycle.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/parser/useCycleSelfReference.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/parser/useNesting.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/path/closePath.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 8 | 9 | 10 | 12 | 13 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/path/cubicBezier.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/path/ellipticalArc.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 8 | 9 | 12 | 13 | 16 | 17 | 20 | 21 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/path/lineTo.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 10 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/path/moveTo.svg: -------------------------------------------------------------------------------- 1 | 3 | 15 | 16 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/path/partiallyValid.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/path/partiallyValid_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/path/quadraticBezier.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/pathLength/pathLength.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/pathLength/pathLength_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/pattern/pattern.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 16 | 17 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/pattern/patternContentUnits.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 8 | 9 | 10 | 11 | 14 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 26 | 27 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/pattern/patternUnits.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 22 | 23 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/roundShadow/bottom.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 13 | 14 | 17 | 18 | 19 | 21 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/roundShadow/bottomLeft.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | 11 | 12 | 13 | 15 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/roundShadow/bottomRight.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 16 | 17 | 18 | 20 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/roundShadow/left.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 14 | 15 | 18 | 19 | 20 | 22 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/roundShadow/right.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 14 | 15 | 18 | 19 | 20 | 22 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/roundShadow/top.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 14 | 15 | 18 | 19 | 20 | 22 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/roundShadow/topLeft.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 16 | 17 | 18 | 20 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/roundShadow/topRight.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 16 | 17 | 18 | 20 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/shadow/bottom.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 10 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/shadow/bottomLeft.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 10 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/shadow/bottomRight.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 10 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/shadow/left.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 10 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/shadow/right.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 10 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/shadow/top.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 10 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/shadow/topLeft.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 10 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/shadow/topRight.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 10 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/stroke/stroke1.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 10 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/stroke/stroke2.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/stroke/stroke4.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 14 | 15 | 16 | 18 | 19 | 20 | 22 | 23 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/stroke/stroke5.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 13 | 14 | 15 | 17 | 18 | 20 | 22 | 23 | 25 | 27 | 28 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/stroke/stroke_miterlimit_invalid.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/symbol/symbol1.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/symbol/symbol2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/test.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 19 | 20 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/test2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/baselineOnPath.svg: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | 8 | TEST 9 | 10 | 11 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/baselineOnPath_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | TEST 7 | 8 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/dominantBaseline.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 14 | 15 | 16 | 17 | ÜAx- auto 18 | ÜAx- middle 19 | ÜAx- 20 | mathematical 21 | ÜAx- hanging 22 | ÜAx- text-top 23 | 24 | Ax 25 | Ax 26 | Ax 27 | Ax 28 | Ax 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/extractText.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | A 5 | B 6 | 7 | C 8 | D 9 | E 10 | 11 | F 12 | 13 | 14 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/extractText2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | A 5 | B 6 | 7 | C 8 | D 9 | E 10 | 11 | F 12 | 0123456789 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/fontStretch.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | ABC 7 | ABC 8 | ABC 9 | ABC 10 | ABC 11 | ABC 12 | ABC 13 | ABC 14 | ABC 15 | 16 | 17 | 18 | ultra-condensed 19 | extra-condensed 20 | condensed 21 | semi-condensed 22 | normal 23 | semi-expanded 24 | expanded 25 | extra-expanded 26 | ultra-expanded 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/gradientText0.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | Hello lovely World! 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/gradientText1.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Hello 11 | lovely 12 | World! 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/gradientText2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Hello 11 | lovely 12 | World! 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/lengthAdjust.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | Stretched using 6 | spacing only. 7 | 8 | 10 | Stretched using spacing and glyphs. 11 | 12 | 13 | Shrunk using 14 | spacing only. 15 | 16 | 18 | Shrunk using spacing and glyphs. 19 | 20 | 21 | Very shrunk 22 | using spacing only. 23 | 24 | 26 | Very shrunk using spacing and glyphs. 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/letterSpacing.svg: -------------------------------------------------------------------------------- 1 | 3 | Bigger letter-spacing 4 | Smaller letter-spacing 5 | 6 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/startOffset.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | Text on a path. 14 | 15 | 16 | 17 | 18 | 19 | 20 | Text on a path. 21 | 22 | 23 | 24 | 25 | 26 | 27 | Text on a path. 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/text0.svg: -------------------------------------------------------------------------------- 1 | 3 | Hello lovely 4 | World! 5 | 6 | 7 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/text1.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | Test 17 | SVG 18 | 19 | 20 | SVG 21 | 22 | 23 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/text2.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 8 | You are 9 | 10 | not 11 | inner 12 | 13 | a 14 | banana 15 | ! 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/text3.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | Example tspan05 - propagation of rotation values to nested tspan 6 | elements. 7 | 8 | 10 | Not 11 | 12 | 13 | all characters 14 | 15 | 16 | in 17 | 18 | 19 | the 20 | 21 | 22 | 23 | 24 | text 25 | 26 | 27 | have a 28 | 29 | 30 | 31 | specified 32 | 33 | 34 | rotation 35 | 36 | 37 | 38 | 40 | 41 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/text4.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | THE QUICK 14 | BROWN 15 | FOX JUMPS OVER THE LAZY DOG SHOULD BE INVISIBLE 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/text6.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 12 | Example toap04 - text on a path layout rules 13 | 14 | 15 | 17 | 18 | Choose 19 | shame 20 | or get war 21 | 22 | 23 | 24 | 25 | 27 | 28 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/textAnchor.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | 9 | 10 | A 11 | A 12 | A 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/textClip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hello 4 | World! 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/textLength.svg: -------------------------------------------------------------------------------- 1 | 3 | Small text length 4 | Small text length 5 | 6 | 7 | Big text length 8 | 9 | 10 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/text/textLengthPath.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 12 | Example toap04 - text on a path layout rules 13 | 14 | 15 | 17 | 18 | Choose 19 | shame 20 | or get war 21 | 22 | 23 | 24 | 25 | 26 | 28 | 29 | Choose 30 | . 31 | or get war 32 | 33 | 34 | 35 | 36 | 37 | 39 | 40 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/tmp2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/tmp4.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/SVGinSVG.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/matrix.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/rotate.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/scale.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/skewX.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/skewY.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transform.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 8 | 9 | 10 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transformBoxFill.svg: -------------------------------------------------------------------------------- 1 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transformBoxFillTranslate.svg: -------------------------------------------------------------------------------- 1 | 3 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transformBoxFillTranslate_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transformBoxFill_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transformBoxStroke.svg: -------------------------------------------------------------------------------- 1 | 3 | 10 | 11 | 13 | 14 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transformBoxStrokeTranslate.svg: -------------------------------------------------------------------------------- 1 | 3 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transformBoxStrokeTranslate_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/transformBoxStroke_ref.svg: -------------------------------------------------------------------------------- 1 | 3 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/transform/translate.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 13 | 14 | 15 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/units/relativeUnits.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/units/relativeUnits3.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/use.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/vectorEffect/nonScalingStroke.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 11 | 12 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/viewBox/viewBox.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/viewBox/viewBox2.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jsvg/src/test/resources/com/github/weisj/jsvg/viewBox/viewBox3.svg: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | 11 | 12 | 13 | --------------------------------------------------------------------------------