Browse Source

Add generated struct for Svg reading with manual types.

Beoran 2 years ago
commit
18d7afeaf8
8 changed files with 2313 additions and 0 deletions
  1. 26 0
      .gitignore
  2. 8 0
      LICENSE
  3. 3 0
      README.md
  4. 3 0
      go.mod
  5. 2093 0
      svg/svg.go
  6. 0 0
      testdata/svg
  7. 90 0
      testdata/yellow_circle.svg
  8. 90 0
      testdata/yellow_circle_plain.svg

+ 26 - 0
.gitignore

@@ -0,0 +1,26 @@
+# ---> Go
+# Compiled Object files, Static and Dynamic libs (Shared Objects)
+*.o
+*.a
+*.so
+
+# Folders
+_obj
+_test
+
+# Architecture specific extensions/prefixes
+*.[568vq]
+[568vq].out
+
+*.cgo1.go
+*.cgo2.c
+_cgo_defun.c
+_cgo_gotypes.go
+_cgo_export.*
+
+_testmain.go
+
+*.exe
+*.test
+*.prof
+

+ 8 - 0
LICENSE

@@ -0,0 +1,8 @@
+MIT License
+Copyright (c) <year> <copyright holders>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 3 - 0
README.md

@@ -0,0 +1,3 @@
+# ebisvg
+
+SVG loader and renderer for Ebiten.

+ 3 - 0
go.mod

@@ -0,0 +1,3 @@
+module src.eruta.nl/beoran/ebisvg
+
+go 1.16

+ 2093 - 0
svg/svg.go

@@ -0,0 +1,2093 @@
+package svg
+
+import "time"
+import "encoding/xml"
+
+type Chardata string
+type D string
+type Version string
+type Docbase string
+type Xmlns string
+type Cc string
+type Dc string
+type Inkscape string
+type Rdf string
+type Docname string
+type Sodipodi string
+type G string
+type Space string
+type Style string
+type Box string
+type Xlink string
+type L string
+type Filename string
+type Xdpi string
+type Ydpi string
+type Background string
+type Bounds string
+type Origin string
+type Overflow string
+type A string
+type Graph string
+type I string
+type Rule string
+type Rendering string
+type Ratio string
+type Fill string
+type Linecap string
+type Linejoin string
+type Ns string
+type Ns0 string
+type Xap string
+type Img string
+type Pdf string
+type Pdfx string
+type Pdfy string
+type Author string
+type Text string
+type About string
+type Title string
+type Description string
+type Date time.Time
+type Resource string
+type Language string
+type Collect string
+type Transform string
+type Units string
+type Href string
+type Method string
+type Format string
+type Offset string
+type Stockid string
+type Nodetypes string
+type Type string
+type Orient string
+
+type Fx = float32
+type Fy = float32
+type Rx = float32
+type Ry = float32
+type R = float32
+type R1 = float32
+type R2 = float32
+type W = float32
+type H = float32
+type Cx = float32
+type Cy = float32
+
+type Stroke string
+type Variant string
+type Weight string
+type Name string
+type Family string
+type Unicode string
+type Layer string
+type Pageshadow string
+type Zoom string
+type Bbox string
+type Showgrid string
+type Showguides string
+type Guidetolerance string
+type Points string
+type Gridspacingx float32
+type Gridspacingy float32
+type Gridtolerance string
+type Gridcolor = Color
+type Gridopacity = Opacity
+type Gridoriginx = float32
+type Gridoriginy = float32
+type Gridhicolor = Color
+type Gridempcolor = Color
+type Gridempopacity = Opacity
+type Gridempspacing string
+
+type Guidecolor = Color
+type Guidehicolor = Color
+type Guidehiopacity = Opacity
+type Guideopacity = Opacity
+type Snaptogrid string
+type Showborder string
+type Snaptoguides string
+type Borderlayer string
+
+type Bordercolor = Color
+type Borderopacity = Opacity
+type Pagecolor = Color
+type Pageopacity = Opacity
+
+type Groupmode string
+type Label string
+type Insensitive string
+type Percent string
+type Knockout string
+type Trio string
+type Display string
+type Visible string
+type Visibility string
+type Cmyk string
+type Path string
+type Flatsided string
+type Rounded string
+type Arg1 string
+type Arg2 string
+type Sides string
+type Randomized string
+type Size string // XXX
+type Anchor string
+type Linespacing = Spacing
+type Role string
+type S string
+type Extensions string
+type Align string
+type Valign string
+type Spacing string
+type Desc string
+type Class string
+type Original string
+type Radius = float32
+type Miterlimit string
+type End string
+type Open string
+type Start string
+type Argument string
+type Extension string
+type Revolution string
+type T0 = float32
+type Isolated string
+type Absref string
+type Of string
+type Expansion string
+type Extraneous string
+type Matrix string
+type Span string
+
+type Orientation string // XXX
+type Position string    // XXX
+
+type Color string   // XXX
+type Opacity string // XXX
+
+type SVG struct {
+	XMLName             xml.Name   `xml:"Svg"`
+	Chardata            Chardata   `xml:",chardata"`
+	Height              float32    `xml:"height,attr"`
+	ID                  D          `xml:"id,attr"`
+	Version             Version    `xml:"version,attr"`
+	Docbase             Docbase    `xml:"docbase,attr"`
+	Docname             Docname    `xml:"docname,attr"`
+	Width               float32    `xml:"width,attr"`
+	Xmlns               Xmlns      `xml:"xmlns,attr"`
+	Cc                  Cc         `xml:"cc,attr"`
+	Dc                  Dc         `xml:"dc,attr"`
+	Inkscape            Inkscape   `xml:"inkscape,attr"`
+	Rdf                 Rdf        `xml:"rdf,attr"`
+	Sodipodi            Sodipodi   `xml:"sodipodi,attr"`
+	SVG                 G          `xml:"svg,attr"`
+	Space               Space      `xml:"space,attr"`
+	AttrStyle           Style      `xml:"style,attr"`
+	ViewBox             Box        `xml:"viewBox,attr"`
+	Xlink               Xlink      `xml:"xlink,attr"`
+	XML                 L          `xml:"xml,attr"`
+	X                   float32    `xml:"x,attr"`
+	Y                   float32    `xml:"y,attr"`
+	ExportFilename      Filename   `xml:"export-filename,attr"`
+	ExportXdpi          Xdpi       `xml:"export-xdpi,attr"`
+	ExportYdpi          Ydpi       `xml:"export-ydpi,attr"`
+	EnableBackground    Background `xml:"enable-background,attr"`
+	PageBounds          Bounds     `xml:"pageBounds,attr"`
+	RulerOrigin         Origin     `xml:"rulerOrigin,attr"`
+	ViewOrigin          Origin     `xml:"viewOrigin,attr"`
+	Overflow            Overflow   `xml:"overflow,attr"`
+	A                   A          `xml:"a,attr"`
+	Graph               Graph      `xml:"graph,attr"`
+	I                   I          `xml:"i,attr"`
+	FillRule            Rule       `xml:"fill-rule,attr"`
+	ImageRendering      Rendering  `xml:"image-rendering,attr"`
+	ShapeRendering      Rendering  `xml:"shape-rendering,attr"`
+	TextRendering       Rendering  `xml:"text-rendering,attr"`
+	PreserveAspectRatio Ratio      `xml:"preserveAspectRatio,attr"`
+	Fill                Fill       `xml:"fill,attr"`
+	StrokeLinecap       Linecap    `xml:"stroke-linecap,attr"`
+	StrokeLinejoin      Linejoin   `xml:"stroke-linejoin,attr"`
+	StrokeWidth         float32    `xml:"stroke-width,attr"`
+	Ns                  Ns         `xml:"ns,attr"`
+	Ns0                 Ns0        `xml:"ns0,attr"`
+	Xap                 Xap        `xml:"xap,attr"`
+	XapGImg             Img        `xml:"xapGImg,attr"`
+	Pdf                 Pdf        `xml:"pdf,attr"`
+	Pdfx                Pdfx       `xml:"pdfx,attr"`
+	Author              Author     `xml:"author,attr"`
+	Metadata            struct {
+		Text Text `xml:",chardata"`
+		RDF  struct {
+			Text Text `xml:",chardata"`
+			Cc   Cc   `xml:"cc,attr"`
+			Dc   Dc   `xml:"dc,attr"`
+			Rdf  Rdf  `xml:"rdf,attr"`
+			Work struct {
+				Text        Text        `xml:",chardata"`
+				About       About       `xml:"about,attr"`
+				Title       Title       `xml:"title"`       // shopping_cart, rss_button...
+				Description Description `xml:"description"` // Button to indicate a link...
+				Subject     struct {
+					Text Text `xml:",chardata"`
+					Bag  struct {
+						Text Text     `xml:",chardata"`
+						Li   []string `xml:"li"` // activities, shopping, car...
+					} `xml:"Bag"`
+				} `xml:"subject"`
+				Publisher struct {
+					Text  Text `xml:",chardata"`
+					Agent struct {
+						Text  Text  `xml:",chardata"`
+						About About `xml:"about,attr"`
+						Title Title `xml:"title"` // Open Clip Art Library, Op...
+					} `xml:"Agent"`
+				} `xml:"publisher"`
+				Creator struct {
+					Text  Text `xml:",chardata"`
+					Agent struct {
+						Text  Text  `xml:",chardata"`
+						About About `xml:"about,attr"`
+						Title Title `xml:"title"` // mimooh, Roman Bertle, Lum...
+					} `xml:"Agent"`
+				} `xml:"creator"`
+				Rights struct {
+					Text  Text `xml:",chardata"`
+					Agent struct {
+						Text  Text  `xml:",chardata"`
+						About About `xml:"about,attr"`
+						Title Title `xml:"title"` // mimooh, Roman Bertle, Lum...
+					} `xml:"Agent"`
+				} `xml:"rights"`
+				Date   Date   `xml:"date"`   // 2005-09-01, 29 08 2005, S...
+				Format Format `xml:"format"` // image/svg+xml, image/svg+...
+				Type   struct {
+					Text     Text     `xml:",chardata"`
+					Resource Resource `xml:"resource,attr"`
+				} `xml:"type"`
+				License struct {
+					Text     Text     `xml:",chardata"`
+					Resource Resource `xml:"resource,attr"`
+				} `xml:"license"`
+				Language Language `xml:"language"` // en, en, All, en, en, en, ...
+			} `xml:"Work"`
+			License struct {
+				Text    Text  `xml:",chardata"`
+				About   About `xml:"about,attr"`
+				Permits []struct {
+					Text     Text     `xml:",chardata"`
+					Resource Resource `xml:"resource,attr"`
+				} `xml:"permits"`
+			} `xml:"License"`
+		} `xml:"RDF"`
+	} `xml:"metadata"`
+	Defs struct {
+		Text           Text `xml:",chardata"`
+		ID             D    `xml:"id,attr"`
+		LinearGradient []struct {
+			Text              Text      `xml:",chardata"`
+			ID                D         `xml:"id,attr"`
+			Collect           Collect   `xml:"collect,attr"`
+			GradientTransform Transform `xml:"gradientTransform,attr"`
+			GradientUnits     Units     `xml:"gradientUnits,attr"`
+			X1                float32   `xml:"x1,attr"`
+			X2                float32   `xml:"x2,attr"`
+			Href              Href      `xml:"href,attr"`
+			Y1                float32   `xml:"y1,attr"`
+			Y2                float32   `xml:"y2,attr"`
+			SpreadMethod      Method    `xml:"spreadMethod,attr"`
+			Stop              []struct {
+				Text   Text   `xml:",chardata"`
+				ID     D      `xml:"id,attr"`
+				Offset Offset `xml:"offset,attr"`
+				Style  Style  `xml:"style,attr"`
+			} `xml:"stop"`
+		} `xml:"linearGradient"`
+		Style struct {
+			Text Text `xml:",chardata"` // .str0 {stroke:#1F1A17;str...
+			ID   D    `xml:"id,attr"`
+			Type Type `xml:"type,attr"`
+		} `xml:"style"`
+		Mask []struct {
+			Text           Text `xml:",chardata"`
+			ID             D    `xml:"id,attr"`
+			LinearGradient struct {
+				Text          Text    `xml:",chardata"`
+				GradientUnits Units   `xml:"gradientUnits,attr"`
+				ID            D       `xml:"id,attr"`
+				X1            float32 `xml:"x1,attr"`
+				X2            float32 `xml:"x2,attr"`
+				Y1            float32 `xml:"y1,attr"`
+				Y2            float32 `xml:"y2,attr"`
+				Stop          []struct {
+					Text   Text   `xml:",chardata"`
+					ID     D      `xml:"id,attr"`
+					Offset Offset `xml:"offset,attr"`
+					Style  Style  `xml:"style,attr"`
+				} `xml:"stop"`
+			} `xml:"linearGradient"`
+			Rect struct {
+				Text   Text    `xml:",chardata"`
+				Height float32 `xml:"height,attr"`
+				ID     D       `xml:"id,attr"`
+				Style  Style   `xml:"style,attr"`
+				Width  float32 `xml:"width,attr"`
+				X      float32 `xml:"x,attr"`
+				Y      float32 `xml:"y,attr"`
+			} `xml:"rect"`
+		} `xml:"mask"`
+		Marker []struct {
+			Text         Text    `xml:",chardata"`
+			ID           D       `xml:"id,attr"`
+			MarkerHeight float32 `xml:"markerHeight,attr"`
+			MarkerUnits  Units   `xml:"markerUnits,attr"`
+			MarkerWidth  float32 `xml:"markerWidth,attr"`
+			Orient       Orient  `xml:"orient,attr"`
+			RefX         float32 `xml:"refX,attr"`
+			RefY         float32 `xml:"refY,attr"`
+			ViewBox      Box     `xml:"viewBox,attr"`
+			Stockid      Stockid `xml:"stockid,attr"`
+			Style        Style   `xml:"style,attr"`
+			Path         struct {
+				Text      Text      `xml:",chardata"`
+				D         D         `xml:"d,attr"`
+				ID        D         `xml:"id,attr"`
+				Nodetypes Nodetypes `xml:"nodetypes,attr"`
+				Style     Style     `xml:"style,attr"`
+				Transform Transform `xml:"transform,attr"`
+			} `xml:"path"`
+		} `xml:"marker"`
+		RadialGradient []struct {
+			Text              Text      `xml:",chardata"`
+			ID                D         `xml:"id,attr"`
+			Href              Href      `xml:"href,attr"`
+			Cx                Cx        `xml:"cx,attr"`
+			Cy                Cy        `xml:"cy,attr"`
+			Fx                Fx        `xml:"fx,attr"`
+			Fy                Fy        `xml:"fy,attr"`
+			R                 R         `xml:"r,attr"`
+			GradientTransform Transform `xml:"gradientTransform,attr"`
+			GradientUnits     Units     `xml:"gradientUnits,attr"`
+			Collect           Collect   `xml:"collect,attr"`
+			SpreadMethod      Method    `xml:"spreadMethod,attr"`
+		} `xml:"radialGradient"`
+		Rect []struct {
+			Text   Text    `xml:",chardata"`
+			Fill   Fill    `xml:"fill,attr"`
+			Height float32 `xml:"height,attr"`
+			ID     D       `xml:"id,attr"`
+			Stroke Stroke  `xml:"stroke,attr"`
+			Width  float32 `xml:"width,attr"`
+			X      float32 `xml:"x,attr"`
+			Y      float32 `xml:"y,attr"`
+		} `xml:"rect"`
+		G []struct {
+			Text Text `xml:",chardata"`
+			ID   D    `xml:"id,attr"`
+			Use  []struct {
+				Text Text    `xml:",chardata"`
+				X    float32 `xml:"x,attr"`
+				Href Href    `xml:"href,attr"`
+				Y    float32 `xml:"y,attr"`
+			} `xml:"use"`
+		} `xml:"g"`
+		ClipPath []struct {
+			Text Text `xml:",chardata"`
+			ID   D    `xml:"id,attr"`
+			Path struct {
+				Text Text `xml:",chardata"`
+				D    D    `xml:"d,attr"`
+			} `xml:"path"`
+		} `xml:"clipPath"`
+		Defs []struct {
+			Text Text `xml:",chardata"`
+			ID   D    `xml:"id,attr"`
+			Mask struct {
+				Text Text `xml:",chardata"`
+				ID   D    `xml:"id,attr"`
+				Defs struct {
+					Text           Text `xml:",chardata"`
+					ID             D    `xml:"id,attr"`
+					LinearGradient struct {
+						Text          Text    `xml:",chardata"`
+						GradientUnits Units   `xml:"gradientUnits,attr"`
+						ID            D       `xml:"id,attr"`
+						X1            float32 `xml:"x1,attr"`
+						X2            float32 `xml:"x2,attr"`
+						Y1            float32 `xml:"y1,attr"`
+						Y2            float32 `xml:"y2,attr"`
+						Stop          []struct {
+							Text   Text   `xml:",chardata"`
+							ID     D      `xml:"id,attr"`
+							Offset Offset `xml:"offset,attr"`
+							Style  Style  `xml:"style,attr"`
+						} `xml:"stop"`
+					} `xml:"linearGradient"`
+				} `xml:"defs"`
+				Rect struct {
+					Text   Text    `xml:",chardata"`
+					Height float32 `xml:"height,attr"`
+					ID     D       `xml:"id,attr"`
+					Style  Style   `xml:"style,attr"`
+					Width  float32 `xml:"width,attr"`
+					X      float32 `xml:"x,attr"`
+					Y      float32 `xml:"y,attr"`
+				} `xml:"rect"`
+			} `xml:"mask"`
+		} `xml:"defs"`
+		Path struct {
+			Text Text `xml:",chardata"`
+			D    D    `xml:"d,attr"`
+			Fill Fill `xml:"fill,attr"`
+			ID   D    `xml:"id,attr"`
+		} `xml:"path"`
+		Namedview []struct {
+			Text Text `xml:",chardata"`
+			ID   D    `xml:"id,attr"`
+		} `xml:"namedview"`
+		Font struct {
+			Text         Text    `xml:",chardata"`
+			FontVariant  Variant `xml:"fontVariant,attr"`
+			FontWeight   Weight  `xml:"fontWeight,attr"`
+			FullFontName Name    `xml:"fullFontName,attr"`
+			ID           D       `xml:"id,attr"`
+			FontFace     struct {
+				Text       Text   `xml:",chardata"`
+				FontFamily Family `xml:"font-family,attr"`
+				ID         D      `xml:"id,attr"`
+			} `xml:"font-face"`
+			MissingGlyph struct {
+				Text Text `xml:",chardata"`
+				ID   D    `xml:"id,attr"`
+				Path struct {
+					Text Text `xml:",chardata"`
+					D    D    `xml:"d,attr"`
+					ID   D    `xml:"id,attr"`
+				} `xml:"path"`
+			} `xml:"missing-glyph"`
+			Glyph []struct {
+				Text      Text    `xml:",chardata"`
+				HorizAdvX float32 `xml:"horiz-adv-x,attr"`
+				ID        D       `xml:"id,attr"`
+				Unicode   Unicode `xml:"unicode,attr"`
+				Path      struct {
+					Text Text `xml:",chardata"`
+					D    D    `xml:"d,attr"`
+					ID   D    `xml:"id,attr"`
+				} `xml:"path"`
+			} `xml:"glyph"`
+		} `xml:"font"`
+	} `xml:"defs"`
+	Namedview struct {
+		Text           Text           `xml:",chardata"`
+		Bordercolor    Bordercolor    `xml:"bordercolor,attr"`
+		Borderopacity  Borderopacity  `xml:"borderopacity,attr"`
+		ID             D              `xml:"id,attr"`
+		CurrentLayer   Layer          `xml:"current-layer,attr"`
+		Cx             Cx             `xml:"cx,attr"`
+		Cy             Cy             `xml:"cy,attr"`
+		Pageopacity    Pageopacity    `xml:"pageopacity,attr"`
+		Pageshadow     Pageshadow     `xml:"pageshadow,attr"`
+		WindowHeight   float32        `xml:"window-height,attr"`
+		WindowWidth    float32        `xml:"window-width,attr"`
+		WindowX        float32        `xml:"window-x,attr"`
+		WindowY        float32        `xml:"window-y,attr"`
+		Zoom           Zoom           `xml:"zoom,attr"`
+		Pagecolor      Pagecolor      `xml:"pagecolor,attr"`
+		DocumentUnits  Units          `xml:"document-units,attr"`
+		GridBbox       Bbox           `xml:"grid-bbox,attr"`
+		GuideBbox      Bbox           `xml:"guide-bbox,attr"`
+		Showgrid       Showgrid       `xml:"showgrid,attr"`
+		Showguides     Showguides     `xml:"showguides,attr"`
+		Guidetolerance Guidetolerance `xml:"guidetolerance,attr"`
+		GuidePoints    Points         `xml:"guide-points,attr"`
+		Gridspacingx   Gridspacingx   `xml:"gridspacingx,attr"`
+		Gridspacingy   Gridspacingy   `xml:"gridspacingy,attr"`
+		Gridtolerance  Gridtolerance  `xml:"gridtolerance,attr"`
+		GridPoints     Points         `xml:"grid-points,attr"`
+		Gridcolor      Gridcolor      `xml:"gridcolor,attr"`
+		Gridopacity    Gridopacity    `xml:"gridopacity,attr"`
+		Gridoriginx    Gridoriginx    `xml:"gridoriginx,attr"`
+		Gridoriginy    Gridoriginy    `xml:"gridoriginy,attr"`
+		Guidecolor     Guidecolor     `xml:"guidecolor,attr"`
+		Guidehicolor   Guidehicolor   `xml:"guidehicolor,attr"`
+		Guidehiopacity Guidehiopacity `xml:"guidehiopacity,attr"`
+		Guideopacity   Guideopacity   `xml:"guideopacity,attr"`
+		Snaptogrid     Snaptogrid     `xml:"snaptogrid,attr"`
+		Fill           Fill           `xml:"fill,attr"`
+		Gridhicolor    Gridhicolor    `xml:"gridhicolor,attr"`
+		Showborder     Showborder     `xml:"showborder,attr"`
+		Snaptoguides   Snaptoguides   `xml:"snaptoguides,attr"`
+		Borderlayer    Borderlayer    `xml:"borderlayer,attr"`
+		Gridempcolor   Gridempcolor   `xml:"gridempcolor,attr"`
+		Gridempopacity Gridempopacity `xml:"gridempopacity,attr"`
+		Gridempspacing Gridempspacing `xml:"gridempspacing,attr"`
+		Guide          []struct {
+			Text        Text        `xml:",chardata"`
+			ID          D           `xml:"id,attr"`
+			Orientation Orientation `xml:"orientation,attr"`
+			Position    Position    `xml:"position,attr"`
+		} `xml:"guide"`
+	} `xml:"namedview"`
+	G []struct {
+		Chardata       Chardata    `xml:",chardata"`
+		ID             D           `xml:"id,attr"`
+		Transform      Transform   `xml:"transform,attr"`
+		Groupmode      Groupmode   `xml:"groupmode,attr"`
+		Label          Label       `xml:"label,attr"`
+		Insensitive    Insensitive `xml:"insensitive,attr"`
+		Style          Style       `xml:"style,attr"`
+		DimmedPercent  Percent     `xml:"dimmedPercent,attr"`
+		Knockout       Knockout    `xml:"knockout,attr"`
+		Layer          Layer       `xml:"layer,attr"`
+		RgbTrio        Trio        `xml:"rgbTrio,attr"`
+		Display        Display     `xml:"display,attr"`
+		Visible        Visible     `xml:"visible,attr"`
+		Visibility     Visibility  `xml:"visibility,attr"`
+		Fill           Fill        `xml:"fill,attr"`
+		Stroke         Stroke      `xml:"stroke,attr"`
+		StrokeWidth    float32     `xml:"stroke-width,attr"`
+		ExportFilename Filename    `xml:"export-filename,attr"`
+		ExportXdpi     Xdpi        `xml:"export-xdpi,attr"`
+		ExportYdpi     Ydpi        `xml:"export-ydpi,attr"`
+		StrokeLinecap  Linecap     `xml:"stroke-linecap,attr"`
+		Rect           []struct {
+			Text        Text        `xml:",chardata"`
+			Height      float32     `xml:"height,attr"`
+			ID          D           `xml:"id,attr"`
+			Rx          Rx          `xml:"rx,attr"`
+			Ry          Ry          `xml:"ry,attr"`
+			Style       Style       `xml:"style,attr"`
+			Width       float32     `xml:"width,attr"`
+			X           float32     `xml:"x,attr"`
+			Y           float32     `xml:"y,attr"`
+			Transform   Transform   `xml:"transform,attr"`
+			Fill        Fill        `xml:"fill,attr"`
+			Stroke      Stroke      `xml:"stroke,attr"`
+			StrokeWidth float32     `xml:"stroke-width,attr"`
+			Label       Label       `xml:"label,attr"`
+			FillCmyk    Cmyk        `xml:"fill-cmyk,attr"`
+			Insensitive Insensitive `xml:"insensitive,attr"`
+		} `xml:"rect"`
+		G []struct {
+			Chardata       Chardata  `xml:",chardata"`
+			ID             D         `xml:"id,attr"`
+			Transform      Transform `xml:"transform,attr"`
+			Style          Style     `xml:"style,attr"`
+			ExportFilename Filename  `xml:"export-filename,attr"`
+			ExportXdpi     Xdpi      `xml:"export-xdpi,attr"`
+			ExportYdpi     Ydpi      `xml:"export-ydpi,attr"`
+			Groupmode      Groupmode `xml:"groupmode,attr"`
+			Label          Label     `xml:"label,attr"`
+			Display        Display   `xml:"display,attr"`
+			Knockout       Knockout  `xml:"knockout,attr"`
+			G              []struct {
+				Chardata  Chardata  `xml:",chardata"`
+				ID        D         `xml:"id,attr"`
+				Transform Transform `xml:"transform,attr"`
+				Style     Style     `xml:"style,attr"`
+				Path      []struct {
+					Text        Text      `xml:",chardata"`
+					D           D         `xml:"d,attr"`
+					ID          D         `xml:"id,attr"`
+					Cx          Cx        `xml:"cx,attr"`
+					Cy          Cy        `xml:"cy,attr"`
+					Rx          Rx        `xml:"rx,attr"`
+					Ry          Ry        `xml:"ry,attr"`
+					Type        Type      `xml:"type,attr"`
+					Style       Style     `xml:"style,attr"`
+					Transform   Transform `xml:"transform,attr"`
+					Fill        Fill      `xml:"fill,attr"`
+					Knockout    Knockout  `xml:"knockout,attr"`
+					Stroke      Stroke    `xml:"stroke,attr"`
+					StrokeWidth float32   `xml:"stroke-width,attr"`
+					Nodetypes   Nodetypes `xml:"nodetypes,attr"`
+					TileCx      Cx        `xml:"tile-cx,attr"`
+					TileCy      Cy        `xml:"tile-cy,attr"`
+					TileH       H         `xml:"tile-h,attr"`
+					TileW       W         `xml:"tile-w,attr"`
+					ClipPath    Path      `xml:"clip-path,attr"`
+					ClipRule    Rule      `xml:"clip-rule,attr"`
+					FillRule    Rule      `xml:"fill-rule,attr"`
+					Flatsided   Flatsided `xml:"flatsided,attr"`
+					Rounded     Rounded   `xml:"rounded,attr"`
+					Arg1        Arg1      `xml:"arg1,attr"`
+					Arg2        Arg2      `xml:"arg2,attr"`
+					R1          R1        `xml:"r1,attr"`
+					R2          R2        `xml:"r2,attr"`
+					Sides       Sides     `xml:"sides,attr"`
+				} `xml:"path"`
+				G []struct {
+					Chardata     Chardata  `xml:",chardata"`
+					ID           D         `xml:"id,attr"`
+					Style        Style     `xml:"style,attr"`
+					Transform    Transform `xml:"transform,attr"`
+					AttrClipPath Path      `xml:"clip-path,attr"`
+					Path         []struct {
+						Text        Text       `xml:",chardata"`
+						D           D          `xml:"d,attr"`
+						ID          D          `xml:"id,attr"`
+						Cx          Cx         `xml:"cx,attr"`
+						Cy          Cy         `xml:"cy,attr"`
+						Rx          Rx         `xml:"rx,attr"`
+						Ry          Ry         `xml:"ry,attr"`
+						Type        Type       `xml:"type,attr"`
+						Style       Style      `xml:"style,attr"`
+						Transform   Transform  `xml:"transform,attr"`
+						Knockout    Knockout   `xml:"knockout,attr"`
+						Stroke      Stroke     `xml:"stroke,attr"`
+						StrokeWidth float32    `xml:"stroke-width,attr"`
+						Flatsided   Flatsided  `xml:"flatsided,attr"`
+						Randomized  Randomized `xml:"randomized,attr"`
+						Rounded     Rounded    `xml:"rounded,attr"`
+						Arg1        Arg1       `xml:"arg1,attr"`
+						Arg2        Arg2       `xml:"arg2,attr"`
+						R1          R1         `xml:"r1,attr"`
+						R2          R2         `xml:"r2,attr"`
+						Sides       Sides      `xml:"sides,attr"`
+						Nodetypes   Nodetypes  `xml:"nodetypes,attr"`
+					} `xml:"path"`
+					Use []struct {
+						Text      Text      `xml:",chardata"`
+						Transform Transform `xml:"transform,attr"`
+						Href      Href      `xml:"href,attr"`
+					} `xml:"use"`
+					Text []struct {
+						Text        Text        `xml:",chardata"`
+						FontSize    Size        `xml:"font-size,attr"`
+						ID          D           `xml:"id,attr"`
+						TextAnchor  Anchor      `xml:"text-anchor,attr"`
+						X           float32     `xml:"x,attr"`
+						Y           float32     `xml:"y,attr"`
+						Linespacing Linespacing `xml:"linespacing,attr"`
+						Style       Style       `xml:"style,attr"`
+						Space       Space       `xml:"space,attr"`
+						Tspan       []struct {
+							Text Text    `xml:",chardata"` // 0, 0, 75678, 16412, 5, c,...
+							ID   D       `xml:"id,attr"`
+							Role Role    `xml:"role,attr"`
+							X    float32 `xml:"x,attr"`
+							Y    float32 `xml:"y,attr"`
+						} `xml:"tspan"`
+					} `xml:"text"`
+					G []struct {
+						Text         Text      `xml:",chardata"`
+						ID           D         `xml:"id,attr"`
+						Transform    Transform `xml:"transform,attr"`
+						Style        Style     `xml:"style,attr"`
+						AttrClipPath Path      `xml:"clip-path,attr"`
+						Path         []struct {
+							Text      Text      `xml:",chardata"`
+							D         D         `xml:"d,attr"`
+							ID        D         `xml:"id,attr"`
+							Style     Style     `xml:"style,attr"`
+							Transform Transform `xml:"transform,attr"`
+							Nodetypes Nodetypes `xml:"nodetypes,attr"`
+						} `xml:"path"`
+						Rect []struct {
+							Text      Text      `xml:",chardata"`
+							Height    float32   `xml:"height,attr"`
+							ID        D         `xml:"id,attr"`
+							Style     Style     `xml:"style,attr"`
+							Transform Transform `xml:"transform,attr"`
+							Width     float32   `xml:"width,attr"`
+							X         float32   `xml:"x,attr"`
+							Y         float32   `xml:"y,attr"`
+						} `xml:"rect"`
+						G []struct {
+							Text         Text      `xml:",chardata"`
+							ID           D         `xml:"id,attr"`
+							Transform    Transform `xml:"transform,attr"`
+							Style        Style     `xml:"style,attr"`
+							AttrClipPath Path      `xml:"clip-path,attr"`
+							Path         []struct {
+								Text      Text      `xml:",chardata"`
+								D         D         `xml:"d,attr"`
+								ID        D         `xml:"id,attr"`
+								Style     Style     `xml:"style,attr"`
+								Nodetypes Nodetypes `xml:"nodetypes,attr"`
+								Transform Transform `xml:"transform,attr"`
+							} `xml:"path"`
+							G []struct {
+								Text      Text      `xml:",chardata"`
+								ID        D         `xml:"id,attr"`
+								Style     Style     `xml:"style,attr"`
+								ClipPath  Path      `xml:"clip-path,attr"`
+								Transform Transform `xml:"transform,attr"`
+								Path      []struct {
+									Text      Text      `xml:",chardata"`
+									D         D         `xml:"d,attr"`
+									ID        D         `xml:"id,attr"`
+									Nodetypes Nodetypes `xml:"nodetypes,attr"`
+									Style     Style     `xml:"style,attr"`
+									Transform Transform `xml:"transform,attr"`
+								} `xml:"path"`
+								Switch struct {
+									Text          Text      `xml:",chardata"`
+									ObjectNS      S         `xml:"objectNS,attr"`
+									ObjectType    Type      `xml:"objectType,attr"`
+									ID            D         `xml:"id,attr"`
+									Transform     Transform `xml:"transform,attr"`
+									ForeignObject struct {
+										Text               Text       `xml:",chardata"`
+										Height             float32    `xml:"height,attr"`
+										Overflow           Overflow   `xml:"overflow,attr"`
+										RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
+										Width              float32    `xml:"width,attr"`
+										X                  float32    `xml:"x,attr"`
+										Y                  float32    `xml:"y,attr"`
+										ImageReplacement   struct {
+											Text            Text    `xml:",chardata"`
+											Align           Align   `xml:"align,attr"`
+											Height          float32 `xml:"height,attr"`
+											PlacementMethod Method  `xml:"placementMethod,attr"`
+											RefHeight       float32 `xml:"refHeight,attr"`
+											RefWidth        float32 `xml:"refWidth,attr"`
+											Valign          Valign  `xml:"valign,attr"`
+											Width           float32 `xml:"width,attr"`
+											X               float32 `xml:"x,attr"`
+											Xmlns           Xmlns   `xml:"xmlns,attr"`
+											Y               float32 `xml:"y,attr"`
+										} `xml:"imageReplacement"`
+										TargetRef struct {
+											Text Text `xml:",chardata"`
+											Href Href `xml:"href,attr"`
+										} `xml:"targetRef"`
+									} `xml:"foreignObject"`
+									Image struct {
+										Text     Text     `xml:",chardata"`
+										Height   float32  `xml:"height,attr"`
+										Knockout Knockout `xml:"knockout,attr"`
+										ID       D        `xml:"id,attr"`
+										Width    float32  `xml:"width,attr"`
+										Href     Href     `xml:"href,attr"`
+									} `xml:"image"`
+								} `xml:"switch"`
+								Rect struct {
+									Text   Text    `xml:",chardata"`
+									Height float32 `xml:"height,attr"`
+									ID     D       `xml:"id,attr"`
+									Style  Style   `xml:"style,attr"`
+									Width  float32 `xml:"width,attr"`
+									X      float32 `xml:"x,attr"`
+									Y      float32 `xml:"y,attr"`
+								} `xml:"rect"`
+								Ellipse struct {
+									Text      Text      `xml:",chardata"`
+									Cx        Cx        `xml:"cx,attr"`
+									Cy        Cy        `xml:"cy,attr"`
+									ID        D         `xml:"id,attr"`
+									Rx        Rx        `xml:"rx,attr"`
+									Ry        Ry        `xml:"ry,attr"`
+									Style     Style     `xml:"style,attr"`
+									Transform Transform `xml:"transform,attr"`
+								} `xml:"ellipse"`
+								G []struct {
+									Text      Text      `xml:",chardata"`
+									ID        D         `xml:"id,attr"`
+									Transform Transform `xml:"transform,attr"`
+									Rect      struct {
+										Text   Text    `xml:",chardata"`
+										Height float32 `xml:"height,attr"`
+										ID     D       `xml:"id,attr"`
+										Style  Style   `xml:"style,attr"`
+										Width  float32 `xml:"width,attr"`
+										X      float32 `xml:"x,attr"`
+										Y      float32 `xml:"y,attr"`
+									} `xml:"rect"`
+									Ellipse struct {
+										Text      Text      `xml:",chardata"`
+										Cx        Cx        `xml:"cx,attr"`
+										Cy        Cy        `xml:"cy,attr"`
+										ID        D         `xml:"id,attr"`
+										Rx        Rx        `xml:"rx,attr"`
+										Ry        Ry        `xml:"ry,attr"`
+										Style     Style     `xml:"style,attr"`
+										Transform Transform `xml:"transform,attr"`
+									} `xml:"ellipse"`
+									G []struct {
+										Text      Text      `xml:",chardata"`
+										ID        D         `xml:"id,attr"`
+										Transform Transform `xml:"transform,attr"`
+										Rect      struct {
+											Text   Text    `xml:",chardata"`
+											Height float32 `xml:"height,attr"`
+											ID     D       `xml:"id,attr"`
+											Style  Style   `xml:"style,attr"`
+											Width  float32 `xml:"width,attr"`
+											X      float32 `xml:"x,attr"`
+											Y      float32 `xml:"y,attr"`
+										} `xml:"rect"`
+										Ellipse struct {
+											Text      Text      `xml:",chardata"`
+											Cx        Cx        `xml:"cx,attr"`
+											Cy        Cy        `xml:"cy,attr"`
+											ID        D         `xml:"id,attr"`
+											Rx        Rx        `xml:"rx,attr"`
+											Ry        Ry        `xml:"ry,attr"`
+											Style     Style     `xml:"style,attr"`
+											Transform Transform `xml:"transform,attr"`
+										} `xml:"ellipse"`
+									} `xml:"g"`
+								} `xml:"g"`
+							} `xml:"g"`
+							Defs struct {
+								Text Text `xml:",chardata"`
+								Rect struct {
+									Text      Text      `xml:",chardata"`
+									Height    float32   `xml:"height,attr"`
+									ID        D         `xml:"id,attr"`
+									Transform Transform `xml:"transform,attr"`
+									Width     float32   `xml:"width,attr"`
+									X         float32   `xml:"x,attr"`
+									Y         float32   `xml:"y,attr"`
+								} `xml:"rect"`
+							} `xml:"defs"`
+							ClipPath struct {
+								Text Text `xml:",chardata"`
+								ID   D    `xml:"id,attr"`
+								Use  struct {
+									Text Text `xml:",chardata"`
+									Href Href `xml:"href,attr"`
+								} `xml:"use"`
+							} `xml:"clipPath"`
+							Switch struct {
+								Text          Text      `xml:",chardata"`
+								ObjectNS      S         `xml:"objectNS,attr"`
+								ObjectType    Type      `xml:"objectType,attr"`
+								ID            D         `xml:"id,attr"`
+								Transform     Transform `xml:"transform,attr"`
+								ForeignObject struct {
+									Text               Text       `xml:",chardata"`
+									Height             float32    `xml:"height,attr"`
+									Overflow           Overflow   `xml:"overflow,attr"`
+									RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
+									Width              float32    `xml:"width,attr"`
+									X                  float32    `xml:"x,attr"`
+									Y                  float32    `xml:"y,attr"`
+									ImageReplacement   struct {
+										Text            Text    `xml:",chardata"`
+										Align           Align   `xml:"align,attr"`
+										Height          float32 `xml:"height,attr"`
+										PlacementMethod Method  `xml:"placementMethod,attr"`
+										RefHeight       float32 `xml:"refHeight,attr"`
+										RefWidth        float32 `xml:"refWidth,attr"`
+										Valign          Valign  `xml:"valign,attr"`
+										Width           float32 `xml:"width,attr"`
+										X               float32 `xml:"x,attr"`
+										Xmlns           Xmlns   `xml:"xmlns,attr"`
+										Y               float32 `xml:"y,attr"`
+									} `xml:"imageReplacement"`
+									TargetRef struct {
+										Text Text `xml:",chardata"`
+										Href Href `xml:"href,attr"`
+									} `xml:"targetRef"`
+								} `xml:"foreignObject"`
+								Image struct {
+									Text     Text     `xml:",chardata"`
+									Height   float32  `xml:"height,attr"`
+									Knockout Knockout `xml:"knockout,attr"`
+									ID       D        `xml:"id,attr"`
+									Width    float32  `xml:"width,attr"`
+									Href     Href     `xml:"href,attr"`
+								} `xml:"image"`
+							} `xml:"switch"`
+							Rect struct {
+								Text   Text    `xml:",chardata"`
+								Height float32 `xml:"height,attr"`
+								ID     D       `xml:"id,attr"`
+								Style  Style   `xml:"style,attr"`
+								Width  float32 `xml:"width,attr"`
+								X      float32 `xml:"x,attr"`
+								Y      float32 `xml:"y,attr"`
+							} `xml:"rect"`
+							Ellipse struct {
+								Text      Text      `xml:",chardata"`
+								Cx        Cx        `xml:"cx,attr"`
+								Cy        Cy        `xml:"cy,attr"`
+								ID        D         `xml:"id,attr"`
+								Rx        Rx        `xml:"rx,attr"`
+								Ry        Ry        `xml:"ry,attr"`
+								Style     Style     `xml:"style,attr"`
+								Transform Transform `xml:"transform,attr"`
+							} `xml:"ellipse"`
+						} `xml:"g"`
+						Defs struct {
+							Text Text `xml:",chardata"`
+							Rect struct {
+								Text   Text    `xml:",chardata"`
+								Height float32 `xml:"height,attr"`
+								ID     D       `xml:"id,attr"`
+								Width  float32 `xml:"width,attr"`
+								X      float32 `xml:"x,attr"`
+								Y      float32 `xml:"y,attr"`
+							} `xml:"rect"`
+						} `xml:"defs"`
+						ClipPath struct {
+							Text Text `xml:",chardata"`
+							ID   D    `xml:"id,attr"`
+							Use  struct {
+								Text Text `xml:",chardata"`
+								Href Href `xml:"href,attr"`
+							} `xml:"use"`
+						} `xml:"clipPath"`
+						Ellipse []struct {
+							Text      Text      `xml:",chardata"`
+							Cx        Cx        `xml:"cx,attr"`
+							Cy        Cy        `xml:"cy,attr"`
+							ID        D         `xml:"id,attr"`
+							Rx        Rx        `xml:"rx,attr"`
+							Ry        Ry        `xml:"ry,attr"`
+							Style     Style     `xml:"style,attr"`
+							Transform Transform `xml:"transform,attr"`
+						} `xml:"ellipse"`
+					} `xml:"g"`
+					Rect []struct {
+						Text      Text      `xml:",chardata"`
+						Height    float32   `xml:"height,attr"`
+						ID        D         `xml:"id,attr"`
+						Style     Style     `xml:"style,attr"`
+						Width     float32   `xml:"width,attr"`
+						X         float32   `xml:"x,attr"`
+						Y         float32   `xml:"y,attr"`
+						Transform Transform `xml:"transform,attr"`
+						Rx        Rx        `xml:"rx,attr"`
+						Ry        Ry        `xml:"ry,attr"`
+					} `xml:"rect"`
+					Defs struct {
+						Text Text `xml:",chardata"`
+						Rect struct {
+							Text      Text      `xml:",chardata"`
+							Height    float32   `xml:"height,attr"`
+							ID        D         `xml:"id,attr"`
+							Transform Transform `xml:"transform,attr"`
+							Width     float32   `xml:"width,attr"`
+							X         float32   `xml:"x,attr"`
+							Y         float32   `xml:"y,attr"`
+						} `xml:"rect"`
+					} `xml:"defs"`
+					ClipPath struct {
+						Text Text `xml:",chardata"`
+						ID   D    `xml:"id,attr"`
+						Use  struct {
+							Text Text `xml:",chardata"`
+							Href Href `xml:"href,attr"`
+						} `xml:"use"`
+					} `xml:"clipPath"`
+					Polygon []struct {
+						Text      Text      `xml:",chardata"`
+						ID        D         `xml:"id,attr"`
+						Points    Points    `xml:"points,attr"`
+						Arg1      Arg1      `xml:"arg1,attr"`
+						Arg2      Arg2      `xml:"arg2,attr"`
+						Cx        Cx        `xml:"cx,attr"`
+						Cy        Cy        `xml:"cy,attr"`
+						R1        R1        `xml:"r1,attr"`
+						R2        R2        `xml:"r2,attr"`
+						Sides     Sides     `xml:"sides,attr"`
+						Type      Type      `xml:"type,attr"`
+						Style     Style     `xml:"style,attr"`
+						Transform Transform `xml:"transform,attr"`
+					} `xml:"polygon"`
+					A struct {
+						Text      Text      `xml:",chardata"`
+						ID        D         `xml:"id,attr"`
+						Transform Transform `xml:"transform,attr"`
+						G         struct {
+							Text      Text      `xml:",chardata"`
+							ID        D         `xml:"id,attr"`
+							Transform Transform `xml:"transform,attr"`
+							G         []struct {
+								Text      Text      `xml:",chardata"`
+								ID        D         `xml:"id,attr"`
+								Transform Transform `xml:"transform,attr"`
+								Path      []struct {
+									Text      Text      `xml:",chardata"`
+									D         D         `xml:"d,attr"`
+									ID        D         `xml:"id,attr"`
+									Nodetypes Nodetypes `xml:"nodetypes,attr"`
+									Style     Style     `xml:"style,attr"`
+								} `xml:"path"`
+							} `xml:"g"`
+						} `xml:"g"`
+					} `xml:"a"`
+					Ellipse []struct {
+						Text      Text      `xml:",chardata"`
+						Cx        Cx        `xml:"cx,attr"`
+						Cy        Cy        `xml:"cy,attr"`
+						ID        D         `xml:"id,attr"`
+						Rx        Rx        `xml:"rx,attr"`
+						Ry        Ry        `xml:"ry,attr"`
+						Style     Style     `xml:"style,attr"`
+						Transform Transform `xml:"transform,attr"`
+					} `xml:"ellipse"`
+				} `xml:"g"`
+				Rect []struct {
+					Text        Text      `xml:",chardata"`
+					Fill        Fill      `xml:"fill,attr"`
+					Height      float32   `xml:"height,attr"`
+					Knockout    Knockout  `xml:"knockout,attr"`
+					Stroke      Stroke    `xml:"stroke,attr"`
+					StrokeWidth float32   `xml:"stroke-width,attr"`
+					Transform   Transform `xml:"transform,attr"`
+					Width       float32   `xml:"width,attr"`
+					X           float32   `xml:"x,attr"`
+					Y           float32   `xml:"y,attr"`
+					ID          D         `xml:"id,attr"`
+					Style       Style     `xml:"style,attr"`
+					Rx          Rx        `xml:"rx,attr"`
+					Ry          Ry        `xml:"ry,attr"`
+					ClipPath    Path      `xml:"clip-path,attr"`
+				} `xml:"rect"`
+				LinearGradient struct {
+					Text          Text    `xml:",chardata"`
+					GradientUnits Units   `xml:"gradientUnits,attr"`
+					ID            D       `xml:"id,attr"`
+					X1            float32 `xml:"x1,attr"`
+					X2            float32 `xml:"x2,attr"`
+					Y1            float32 `xml:"y1,attr"`
+					Y2            float32 `xml:"y2,attr"`
+					Stop          []struct {
+						Text   Text   `xml:",chardata"`
+						Offset Offset `xml:"offset,attr"`
+						Style  Style  `xml:"style,attr"`
+					} `xml:"stop"`
+					MidPointStop []struct {
+						Text   Text   `xml:",chardata"`
+						Offset Offset `xml:"offset,attr"`
+						Style  Style  `xml:"style,attr"`
+					} `xml:"midPointStop"`
+				} `xml:"linearGradient"`
+				Desc Desc `xml:"desc"` // Drawing, Drawing, Drawing...
+				Defs struct {
+					Text Text `xml:",chardata"`
+					Rect struct {
+						Text   Text    `xml:",chardata"`
+						Height float32 `xml:"height,attr"`
+						ID     D       `xml:"id,attr"`
+						Width  float32 `xml:"width,attr"`
+						X      float32 `xml:"x,attr"`
+						Y      float32 `xml:"y,attr"`
+					} `xml:"rect"`
+					Path struct {
+						Text Text `xml:",chardata"`
+						D    D    `xml:"d,attr"`
+						ID   D    `xml:"id,attr"`
+					} `xml:"path"`
+				} `xml:"defs"`
+				ClipPath struct {
+					Text Text `xml:",chardata"`
+					ID   D    `xml:"id,attr"`
+					Use  struct {
+						Text Text `xml:",chardata"`
+						Href Href `xml:"href,attr"`
+					} `xml:"use"`
+				} `xml:"clipPath"`
+				Ellipse []struct {
+					Text      Text      `xml:",chardata"`
+					Cx        Cx        `xml:"cx,attr"`
+					Cy        Cy        `xml:"cy,attr"`
+					ID        D         `xml:"id,attr"`
+					Rx        Rx        `xml:"rx,attr"`
+					Ry        Ry        `xml:"ry,attr"`
+					Style     Style     `xml:"style,attr"`
+					Transform Transform `xml:"transform,attr"`
+				} `xml:"ellipse"`
+				Polygon []struct {
+					Text      Text      `xml:",chardata"`
+					ID        D         `xml:"id,attr"`
+					Points    Points    `xml:"points,attr"`
+					Arg1      Arg1      `xml:"arg1,attr"`
+					Arg2      Arg2      `xml:"arg2,attr"`
+					Cx        Cx        `xml:"cx,attr"`
+					Cy        Cy        `xml:"cy,attr"`
+					R1        R1        `xml:"r1,attr"`
+					R2        R2        `xml:"r2,attr"`
+					Sides     Sides     `xml:"sides,attr"`
+					Type      Type      `xml:"type,attr"`
+					Style     Style     `xml:"style,attr"`
+					Transform Transform `xml:"transform,attr"`
+				} `xml:"polygon"`
+				Use []struct {
+					Text      Text      `xml:",chardata"`
+					Height    float32   `xml:"height,attr"`
+					ID        D         `xml:"id,attr"`
+					Transform Transform `xml:"transform,attr"`
+					Width     float32   `xml:"width,attr"`
+					X         float32   `xml:"x,attr"`
+					Href      Href      `xml:"href,attr"`
+					Y         float32   `xml:"y,attr"`
+				} `xml:"use"`
+				Text []struct {
+					Text        Text        `xml:",chardata"`
+					ID          D           `xml:"id,attr"`
+					Linespacing Linespacing `xml:"linespacing,attr"`
+					Style       Style       `xml:"style,attr"`
+					X           float32     `xml:"x,attr"`
+					Y           float32     `xml:"y,attr"`
+					Tspan       struct {
+						Text Text    `xml:",chardata"` // L, I, B, E, R, T, A, S
+						ID   D       `xml:"id,attr"`
+						Role Role    `xml:"role,attr"`
+						X    float32 `xml:"x,attr"`
+						Y    float32 `xml:"y,attr"`
+					} `xml:"tspan"`
+				} `xml:"text"`
+			} `xml:"g"`
+			Path []struct {
+				Text             Text       `xml:",chardata"`
+				D                D          `xml:"d,attr"`
+				ID               D          `xml:"id,attr"`
+				Nodetypes        Nodetypes  `xml:"nodetypes,attr"`
+				Style            Style      `xml:"style,attr"`
+				Cx               Cx         `xml:"cx,attr"`
+				Cy               Cy         `xml:"cy,attr"`
+				Rx               Rx         `xml:"rx,attr"`
+				Ry               Ry         `xml:"ry,attr"`
+				Type             Type       `xml:"type,attr"`
+				Transform        Transform  `xml:"transform,attr"`
+				Class            Class      `xml:"class,attr"`
+				Fill             Fill       `xml:"fill,attr"`
+				Knockout         Knockout   `xml:"knockout,attr"`
+				Stroke           Stroke     `xml:"stroke,attr"`
+				StrokeWidth      float32    `xml:"stroke-width,attr"`
+				Original         Original   `xml:"original,attr"`
+				Radius           Radius     `xml:"radius,attr"`
+				ClipRule         Rule       `xml:"clip-rule,attr"`
+				FillRule         Rule       `xml:"fill-rule,attr"`
+				StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
+				Flatsided        Flatsided  `xml:"flatsided,attr"`
+				Randomized       Randomized `xml:"randomized,attr"`
+				Rounded          Rounded    `xml:"rounded,attr"`
+				Arg1             Arg1       `xml:"arg1,attr"`
+				Arg2             Arg2       `xml:"arg2,attr"`
+				R1               R1         `xml:"r1,attr"`
+				R2               R2         `xml:"r2,attr"`
+				Sides            Sides      `xml:"sides,attr"`
+				Opacity          Opacity    `xml:"opacity,attr"`
+				End              End        `xml:"end,attr"`
+				Open             Open       `xml:"open,attr"`
+				Start            Start      `xml:"start,attr"`
+				Argument         Argument   `xml:"argument,attr"`
+				Expansion        Expansion  `xml:"expansion,attr"`
+				Revolution       Revolution `xml:"revolution,attr"`
+				T0               T0         `xml:"t0,attr"`
+			} `xml:"path"`
+			Rect []struct {
+				Text        Text      `xml:",chardata"`
+				Height      float32   `xml:"height,attr"`
+				ID          D         `xml:"id,attr"`
+				Rx          Rx        `xml:"rx,attr"`
+				Ry          Ry        `xml:"ry,attr"`
+				Style       Style     `xml:"style,attr"`
+				Width       float32   `xml:"width,attr"`
+				X           float32   `xml:"x,attr"`
+				Y           float32   `xml:"y,attr"`
+				Transform   Transform `xml:"transform,attr"`
+				Fill        Fill      `xml:"fill,attr"`
+				Knockout    Knockout  `xml:"knockout,attr"`
+				Stroke      Stroke    `xml:"stroke,attr"`
+				StrokeWidth float32   `xml:"stroke-width,attr"`
+				FillCmyk    Cmyk      `xml:"fill-cmyk,attr"`
+				Class       Class     `xml:"class,attr"`
+			} `xml:"rect"`
+			Text []struct {
+				Text        Text        `xml:",chardata"`
+				ID          D           `xml:"id,attr"`
+				Linespacing Linespacing `xml:"linespacing,attr"`
+				Space       Space       `xml:"space,attr"`
+				Style       Style       `xml:"style,attr"`
+				X           float32     `xml:"x,attr"`
+				Y           float32     `xml:"y,attr"`
+				Transform   Transform   `xml:"transform,attr"`
+				Tspan       struct {
+					Text  Text    `xml:",chardata"` // RSS, RSS, 12, 6, 3, 9, W,...
+					ID    D       `xml:"id,attr"`
+					Role  Role    `xml:"role,attr"`
+					Style Style   `xml:"style,attr"`
+					X     float32 `xml:"x,attr"`
+					Y     float32 `xml:"y,attr"`
+				} `xml:"tspan"`
+			} `xml:"text"`
+			LinearGradient []struct {
+				Text              Text      `xml:",chardata"`
+				GradientUnits     Units     `xml:"gradientUnits,attr"`
+				ID                D         `xml:"id,attr"`
+				X1                float32   `xml:"x1,attr"`
+				X2                float32   `xml:"x2,attr"`
+				Y1                float32   `xml:"y1,attr"`
+				Y2                float32   `xml:"y2,attr"`
+				GradientTransform Transform `xml:"gradientTransform,attr"`
+				Stop              []struct {
+					Text   Text   `xml:",chardata"`
+					Offset Offset `xml:"offset,attr"`
+					Style  Style  `xml:"style,attr"`
+					ID     D      `xml:"id,attr"`
+				} `xml:"stop"`
+				MidPointStop []struct {
+					Text   Text   `xml:",chardata"`
+					Offset Offset `xml:"offset,attr"`
+					Style  Style  `xml:"style,attr"`
+				} `xml:"midPointStop"`
+			} `xml:"linearGradient"`
+			Defs struct {
+				Text Text `xml:",chardata"`
+				ID   D    `xml:"id,attr"`
+				Path struct {
+					Text Text `xml:",chardata"`
+					D    D    `xml:"d,attr"`
+					ID   D    `xml:"id,attr"`
+				} `xml:"path"`
+				LinearGradient []struct {
+					Text              Text      `xml:",chardata"`
+					ID                D         `xml:"id,attr"`
+					X1                float32   `xml:"x1,attr"`
+					X2                float32   `xml:"x2,attr"`
+					Href              Href      `xml:"href,attr"`
+					Y1                float32   `xml:"y1,attr"`
+					Y2                float32   `xml:"y2,attr"`
+					GradientTransform Transform `xml:"gradientTransform,attr"`
+					Stop              []struct {
+						Text   Text   `xml:",chardata"`
+						ID     D      `xml:"id,attr"`
+						Offset Offset `xml:"offset,attr"`
+						Style  Style  `xml:"style,attr"`
+					} `xml:"stop"`
+				} `xml:"linearGradient"`
+				Defs struct {
+					Text Text `xml:",chardata"`
+					ID   D    `xml:"id,attr"`
+				} `xml:"defs"`
+				Namedview struct {
+					Text Text `xml:",chardata"`
+					ID   D    `xml:"id,attr"`
+				} `xml:"namedview"`
+				RadialGradient []struct {
+					Text              Text      `xml:",chardata"`
+					Cx                Cx        `xml:"cx,attr"`
+					Cy                Cy        `xml:"cy,attr"`
+					Fx                Fx        `xml:"fx,attr"`
+					Fy                Fy        `xml:"fy,attr"`
+					ID                D         `xml:"id,attr"`
+					R                 R         `xml:"r,attr"`
+					Href              Href      `xml:"href,attr"`
+					GradientTransform Transform `xml:"gradientTransform,attr"`
+				} `xml:"radialGradient"`
+			} `xml:"defs"`
+			ClipPath struct {
+				Text Text `xml:",chardata"`
+				ID   D    `xml:"id,attr"`
+				Use  struct {
+					Text Text `xml:",chardata"`
+					ID   D    `xml:"id,attr"`
+					Href Href `xml:"href,attr"`
+				} `xml:"use"`
+			} `xml:"clipPath"`
+			Use []struct {
+				Text      Text      `xml:",chardata"`
+				Height    float32   `xml:"height,attr"`
+				ID        D         `xml:"id,attr"`
+				Transform Transform `xml:"transform,attr"`
+				Width     float32   `xml:"width,attr"`
+				X         float32   `xml:"x,attr"`
+				Href      Href      `xml:"href,attr"`
+				Y         float32   `xml:"y,attr"`
+			} `xml:"use"`
+			Desc      Desc `xml:"desc"` // Drawing, Drawing, Group
+			Namedview struct {
+				Text          Text          `xml:",chardata"`
+				Bordercolor   Bordercolor   `xml:"bordercolor,attr"`
+				Borderlayer   Borderlayer   `xml:"borderlayer,attr"`
+				Borderopacity Borderopacity `xml:"borderopacity,attr"`
+				ID            D             `xml:"id,attr"`
+				Showgrid      Showgrid      `xml:"showgrid,attr"`
+			} `xml:"namedview"`
+			Ellipse []struct {
+				Text      Text      `xml:",chardata"`
+				Cx        Cx        `xml:"cx,attr"`
+				Cy        Cy        `xml:"cy,attr"`
+				ID        D         `xml:"id,attr"`
+				Rx        Rx        `xml:"rx,attr"`
+				Ry        Ry        `xml:"ry,attr"`
+				Style     Style     `xml:"style,attr"`
+				Transform Transform `xml:"transform,attr"`
+			} `xml:"ellipse"`
+			Polygon []struct {
+				Text      Text      `xml:",chardata"`
+				ID        D         `xml:"id,attr"`
+				Points    Points    `xml:"points,attr"`
+				Arg1      Arg1      `xml:"arg1,attr"`
+				Arg2      Arg2      `xml:"arg2,attr"`
+				Cx        Cx        `xml:"cx,attr"`
+				Cy        Cy        `xml:"cy,attr"`
+				R1        R1        `xml:"r1,attr"`
+				R2        R2        `xml:"r2,attr"`
+				Sides     Sides     `xml:"sides,attr"`
+				Type      Type      `xml:"type,attr"`
+				Style     Style     `xml:"style,attr"`
+				Transform Transform `xml:"transform,attr"`
+			} `xml:"polygon"`
+		} `xml:"g"`
+		Path []struct {
+			Text             Text       `xml:",chardata"`
+			D                D          `xml:"d,attr"`
+			ID               D          `xml:"id,attr"`
+			Style            Style      `xml:"style,attr"`
+			Transform        Transform  `xml:"transform,attr"`
+			Nodetypes        Nodetypes  `xml:"nodetypes,attr"`
+			Class            Class      `xml:"class,attr"`
+			Cx               Cx         `xml:"cx,attr"`
+			Cy               Cy         `xml:"cy,attr"`
+			Rx               Rx         `xml:"rx,attr"`
+			Ry               Ry         `xml:"ry,attr"`
+			Type             Type       `xml:"type,attr"`
+			Fill             Fill       `xml:"fill,attr"`
+			Knockout         Knockout   `xml:"knockout,attr"`
+			TileCx           Cx         `xml:"tile-cx,attr"`
+			TileCy           Cy         `xml:"tile-cy,attr"`
+			TileH            H          `xml:"tile-h,attr"`
+			TileW            W          `xml:"tile-w,attr"`
+			ClipRule         Rule       `xml:"clip-rule,attr"`
+			FillRule         Rule       `xml:"fill-rule,attr"`
+			Stroke           Stroke     `xml:"stroke,attr"`
+			StrokeWidth      float32    `xml:"stroke-width,attr"`
+			EnableBackground Background `xml:"enable-background,attr"`
+			Isolated         Isolated   `xml:"isolated,attr"`
+			Opacity          Opacity    `xml:"opacity,attr"`
+			ExportXdpi       Xdpi       `xml:"export-xdpi,attr"`
+			ExportYdpi       Ydpi       `xml:"export-ydpi,attr"`
+			End              End        `xml:"end,attr"`
+			Open             Open       `xml:"open,attr"`
+			Start            Start      `xml:"start,attr"`
+			StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
+			Flatsided        Flatsided  `xml:"flatsided,attr"`
+			Label            Label      `xml:"label,attr"`
+			Randomized       Randomized `xml:"randomized,attr"`
+			Rounded          Rounded    `xml:"rounded,attr"`
+			Arg1             Arg1       `xml:"arg1,attr"`
+			Arg2             Arg2       `xml:"arg2,attr"`
+			R1               R1         `xml:"r1,attr"`
+			R2               R2         `xml:"r2,attr"`
+			Sides            Sides      `xml:"sides,attr"`
+			FillCmyk         Cmyk       `xml:"fill-cmyk,attr"`
+		} `xml:"path"`
+		Circle []struct {
+			Text      Text      `xml:",chardata"`
+			Class     Class     `xml:"class,attr"`
+			Cx        Cx        `xml:"cx,attr"`
+			Cy        Cy        `xml:"cy,attr"`
+			ID        D         `xml:"id,attr"`
+			R         R         `xml:"r,attr"`
+			Rx        Rx        `xml:"rx,attr"`
+			Ry        Ry        `xml:"ry,attr"`
+			Style     Style     `xml:"style,attr"`
+			Transform Transform `xml:"transform,attr"`
+			Fill      Fill      `xml:"fill,attr"`
+		} `xml:"circle"`
+		Text []struct {
+			Text        Text        `xml:",chardata"` // Ukraine
+			ID          D           `xml:"id,attr"`
+			Style       Style       `xml:"style,attr"`
+			X           float32     `xml:"x,attr"`
+			Space       Space       `xml:"space,attr"`
+			Y           float32     `xml:"y,attr"`
+			Linespacing Linespacing `xml:"linespacing,attr"`
+			Transform   Transform   `xml:"transform,attr"`
+			Class       Class       `xml:"class,attr"`
+			Tspan       []struct {
+				Text  Text    `xml:",chardata"` // LOVE, produced by Math Pr...
+				ID    D       `xml:"id,attr"`
+				Role  Role    `xml:"role,attr"`
+				X     float32 `xml:"x,attr"`
+				Y     float32 `xml:"y,attr"`
+				Style Style   `xml:"style,attr"`
+			} `xml:"tspan"`
+		} `xml:"text"`
+		Ellipse []struct {
+			Text      Text      `xml:",chardata"`
+			Cx        Cx        `xml:"cx,attr"`
+			Cy        Cy        `xml:"cy,attr"`
+			ID        D         `xml:"id,attr"`
+			Rx        Rx        `xml:"rx,attr"`
+			Ry        Ry        `xml:"ry,attr"`
+			Style     Style     `xml:"style,attr"`
+			Transform Transform `xml:"transform,attr"`
+		} `xml:"ellipse"`
+		Image []struct {
+			Text      Text      `xml:",chardata"`
+			Height    float32   `xml:"height,attr"`
+			ID        D         `xml:"id,attr"`
+			Absref    Absref    `xml:"absref,attr"`
+			Width     float32   `xml:"width,attr"`
+			X         float32   `xml:"x,attr"`
+			Href      Href      `xml:"href,attr"`
+			Y         float32   `xml:"y,attr"`
+			Transform Transform `xml:"transform,attr"`
+			Style     Style     `xml:"style,attr"`
+		} `xml:"image"`
+		Line []struct {
+			Text  Text    `xml:",chardata"`
+			ID    D       `xml:"id,attr"`
+			Style Style   `xml:"style,attr"`
+			X1    float32 `xml:"x1,attr"`
+			X2    float32 `xml:"x2,attr"`
+			Y1    float32 `xml:"y1,attr"`
+			Y2    float32 `xml:"y2,attr"`
+		} `xml:"line"`
+		Defs struct {
+			Text           Text `xml:",chardata"`
+			ID             D    `xml:"id,attr"`
+			LinearGradient []struct {
+				Text              Text      `xml:",chardata"`
+				ID                D         `xml:"id,attr"`
+				X1                float32   `xml:"x1,attr"`
+				X2                float32   `xml:"x2,attr"`
+				Href              Href      `xml:"href,attr"`
+				Y1                float32   `xml:"y1,attr"`
+				Y2                float32   `xml:"y2,attr"`
+				GradientTransform Transform `xml:"gradientTransform,attr"`
+				Stop              []struct {
+					Text   Text   `xml:",chardata"`
+					ID     D      `xml:"id,attr"`
+					Offset Offset `xml:"offset,attr"`
+					Style  Style  `xml:"style,attr"`
+				} `xml:"stop"`
+			} `xml:"linearGradient"`
+			Defs struct {
+				Text Text `xml:",chardata"`
+				ID   D    `xml:"id,attr"`
+			} `xml:"defs"`
+			RadialGradient []struct {
+				Text              Text      `xml:",chardata"`
+				Cx                Cx        `xml:"cx,attr"`
+				Cy                Cy        `xml:"cy,attr"`
+				Fx                Fx        `xml:"fx,attr"`
+				Fy                Fy        `xml:"fy,attr"`
+				ID                D         `xml:"id,attr"`
+				R                 R         `xml:"r,attr"`
+				Href              Href      `xml:"href,attr"`
+				GradientTransform Transform `xml:"gradientTransform,attr"`
+			} `xml:"radialGradient"`
+		} `xml:"defs"`
+		Use []struct {
+			Text         Text      `xml:",chardata"`
+			Height       float32   `xml:"height,attr"`
+			ID           D         `xml:"id,attr"`
+			TiledCloneOf Of        `xml:"tiled-clone-of,attr"`
+			Transform    Transform `xml:"transform,attr"`
+			Width        float32   `xml:"width,attr"`
+			X            float32   `xml:"x,attr"`
+			Href         Href      `xml:"href,attr"`
+			Y            float32   `xml:"y,attr"`
+		} `xml:"use"`
+		LinearGradient []struct {
+			Text              Text      `xml:",chardata"`
+			GradientUnits     Units     `xml:"gradientUnits,attr"`
+			ID                D         `xml:"id,attr"`
+			X1                float32   `xml:"x1,attr"`
+			X2                float32   `xml:"x2,attr"`
+			Y1                float32   `xml:"y1,attr"`
+			Y2                float32   `xml:"y2,attr"`
+			GradientTransform Transform `xml:"gradientTransform,attr"`
+			Stop              []struct {
+				Text   Text   `xml:",chardata"`
+				Offset Offset `xml:"offset,attr"`
+				Style  Style  `xml:"style,attr"`
+				ID     D      `xml:"id,attr"`
+			} `xml:"stop"`
+			MidPointStop []struct {
+				Text   Text   `xml:",chardata"`
+				Offset Offset `xml:"offset,attr"`
+				Style  Style  `xml:"style,attr"`
+			} `xml:"midPointStop"`
+		} `xml:"linearGradient"`
+		Desc  Desc `xml:"desc"` // Master slide, Slide
+		Title struct {
+			Text Text `xml:",chardata"` // Vertical Tricolor: black,...
+			ID   D    `xml:"id,attr"`
+		} `xml:"title"`
+		Polygon []struct {
+			Text      Text      `xml:",chardata"`
+			ID        D         `xml:"id,attr"`
+			Points    Points    `xml:"points,attr"`
+			Style     Style     `xml:"style,attr"`
+			Arg1      Arg1      `xml:"arg1,attr"`
+			Arg2      Arg2      `xml:"arg2,attr"`
+			Cx        Cx        `xml:"cx,attr"`
+			Cy        Cy        `xml:"cy,attr"`
+			R1        R1        `xml:"r1,attr"`
+			R2        R2        `xml:"r2,attr"`
+			Sides     Sides     `xml:"sides,attr"`
+			Type      Type      `xml:"type,attr"`
+			Transform Transform `xml:"transform,attr"`
+		} `xml:"polygon"`
+		Namedview struct {
+			Text Text `xml:",chardata"`
+			ID   D    `xml:"id,attr"`
+		} `xml:"namedview"`
+		FlowRoot struct {
+			Text       Text      `xml:",chardata"`
+			ID         D         `xml:"id,attr"`
+			Space      Space     `xml:"space,attr"`
+			Style      Style     `xml:"style,attr"`
+			Transform  Transform `xml:"transform,attr"`
+			FlowRegion struct {
+				Text Text `xml:",chardata"`
+				ID   D    `xml:"id,attr"`
+				Rect struct {
+					Text   Text    `xml:",chardata"`
+					Height float32 `xml:"height,attr"`
+					ID     D       `xml:"id,attr"`
+					Style  Style   `xml:"style,attr"`
+					Width  float32 `xml:"width,attr"`
+					X      float32 `xml:"x,attr"`
+					Y      float32 `xml:"y,attr"`
+				} `xml:"rect"`
+			} `xml:"flowRegion"`
+			FlowPara []struct {
+				Text Text `xml:",chardata"` // Felipe Maciel, ffmaciel@g...
+				ID   D    `xml:"id,attr"`
+			} `xml:"flowPara"`
+		} `xml:"flowRoot"`
+	} `xml:"g"`
+	Symbol struct {
+		Text    Text `xml:",chardata"`
+		ID      D    `xml:"id,attr"`
+		ViewBox Box  `xml:"viewBox,attr"`
+		Path    struct {
+			Text  Text  `xml:",chardata"`
+			Class Class `xml:"class,attr"`
+			D     D     `xml:"d,attr"`
+			ID    D     `xml:"id,attr"`
+		} `xml:"path"`
+	} `xml:"symbol"`
+	Path []struct {
+		Text        Text       `xml:",chardata"`
+		D           D          `xml:"d,attr"`
+		ID          D          `xml:"id,attr"`
+		Style       Style      `xml:"style,attr"`
+		Nodetypes   Nodetypes  `xml:"nodetypes,attr"`
+		Transform   Transform  `xml:"transform,attr"`
+		Cx          Cx         `xml:"cx,attr"`
+		Cy          Cy         `xml:"cy,attr"`
+		Rx          Rx         `xml:"rx,attr"`
+		Ry          Ry         `xml:"ry,attr"`
+		Type        Type       `xml:"type,attr"`
+		Flatsided   Flatsided  `xml:"flatsided,attr"`
+		Rounded     Rounded    `xml:"rounded,attr"`
+		Arg1        Arg1       `xml:"arg1,attr"`
+		Arg2        Arg2       `xml:"arg2,attr"`
+		R1          R1         `xml:"r1,attr"`
+		R2          R2         `xml:"r2,attr"`
+		Sides       Sides      `xml:"sides,attr"`
+		Fill        Fill       `xml:"fill,attr"`
+		Stroke      Stroke     `xml:"stroke,attr"`
+		StrokeWidth float32    `xml:"stroke-width,attr"`
+		FillCmyk    Cmyk       `xml:"fill-cmyk,attr"`
+		End         End        `xml:"end,attr"`
+		Start       Start      `xml:"start,attr"`
+		Argument    Argument   `xml:"argument,attr"`
+		Expansion   Expansion  `xml:"expansion,attr"`
+		Radius      Radius     `xml:"radius,attr"`
+		Revolution  Revolution `xml:"revolution,attr"`
+		T0          T0         `xml:"t0,attr"`
+		Class       Class      `xml:"class,attr"`
+	} `xml:"path"`
+	Rect []struct {
+		Text        Text        `xml:",chardata"`
+		Height      float32     `xml:"height,attr"`
+		ID          D           `xml:"id,attr"`
+		Rx          Rx          `xml:"rx,attr"`
+		Ry          Ry          `xml:"ry,attr"`
+		Style       Style       `xml:"style,attr"`
+		Transform   Transform   `xml:"transform,attr"`
+		Width       float32     `xml:"width,attr"`
+		X           float32     `xml:"x,attr"`
+		Y           float32     `xml:"y,attr"`
+		Fill        Fill        `xml:"fill,attr"`
+		Stroke      Stroke      `xml:"stroke,attr"`
+		FillCmyk    Cmyk        `xml:"fill-cmyk,attr"`
+		Insensitive Insensitive `xml:"insensitive,attr"`
+	} `xml:"rect"`
+	Title struct {
+		Text Text `xml:",chardata"` // EAN-13 Bar Code, Iraqi fl...
+		ID   D    `xml:"id,attr"`
+	} `xml:"title"`
+	Desc struct {
+		Text Text `xml:",chardata"` // A Bar Code: EAN-13., The ...
+		ID   D    `xml:"id,attr"`
+	} `xml:"desc"`
+	Text []struct {
+		Text        Text        `xml:",chardata"` // PACE, Moscow, Stockholm, ...
+		ID          D           `xml:"id,attr"`
+		Style       Style       `xml:"style,attr"`
+		X           float32     `xml:"x,attr"`
+		Space       Space       `xml:"space,attr"`
+		Y           float32     `xml:"y,attr"`
+		Linespacing Linespacing `xml:"linespacing,attr"`
+		Transform   Transform   `xml:"transform,attr"`
+		Fill        Fill        `xml:"fill,attr"`
+		FontFamily  Family      `xml:"font-family,attr"`
+		FontSize    Size        `xml:"font-size,attr"`
+		FontWeight  Weight      `xml:"font-weight,attr"`
+		TextAnchor  Anchor      `xml:"text-anchor,attr"`
+		Class       Class       `xml:"class,attr"`
+		Tspan       []struct {
+			Text  Text    `xml:",chardata"` // FOR SALE, 858-361-2811, $...
+			ID    D       `xml:"id,attr"`
+			Role  Role    `xml:"role,attr"`
+			X     float32 `xml:"x,attr"`
+			Y     float32 `xml:"y,attr"`
+			Style Style   `xml:"style,attr"`
+		} `xml:"tspan"`
+	} `xml:"text"`
+	Style struct {
+		Text Text `xml:",chardata"` // @font-face{font-family:'L...
+		Type Type `xml:"type,attr"`
+		ID   D    `xml:"id,attr"`
+	} `xml:"style"`
+	Switch struct {
+		Text          Text `xml:",chardata"`
+		ID            D    `xml:"id,attr"`
+		ForeignObject struct {
+			Text               Text       `xml:",chardata"`
+			Height             float32    `xml:"height,attr"`
+			RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
+			Width              float32    `xml:"width,attr"`
+			X                  float32    `xml:"x,attr"`
+			Y                  float32    `xml:"y,attr"`
+			ID                 D          `xml:"id,attr"`
+			PgfRef             struct {
+				Text Text `xml:",chardata"`
+				Href Href `xml:"href,attr"`
+				ID   D    `xml:"id,attr"`
+			} `xml:"pgfRef"`
+		} `xml:"foreignObject"`
+		G struct {
+			Text       Text       `xml:",chardata"`
+			Extraneous Extraneous `xml:"extraneous,attr"`
+			ID         D          `xml:"id,attr"`
+			G          struct {
+				Text          Text    `xml:",chardata"`
+				DimmedPercent Percent `xml:"dimmedPercent,attr"`
+				Layer         Layer   `xml:"layer,attr"`
+				RgbTrio       Trio    `xml:"rgbTrio,attr"`
+				ID            D       `xml:"id,attr"`
+				G             []struct {
+					Text Text `xml:",chardata"`
+					ID   D    `xml:"id,attr"`
+					G    []struct {
+						Text     Text     `xml:",chardata"`
+						Knockout Knockout `xml:"knockout,attr"`
+						ID       D        `xml:"id,attr"`
+						G        []struct {
+							Text Text `xml:",chardata"`
+							ID   D    `xml:"id,attr"`
+							Path []struct {
+								Text     Text     `xml:",chardata"`
+								D        D        `xml:"d,attr"`
+								Fill     Fill     `xml:"fill,attr"`
+								Knockout Knockout `xml:"knockout,attr"`
+							} `xml:"path"`
+							Polygon struct {
+								Text   Text   `xml:",chardata"`
+								Fill   Fill   `xml:"fill,attr"`
+								ID     D      `xml:"id,attr"`
+								Points Points `xml:"points,attr"`
+							} `xml:"polygon"`
+						} `xml:"g"`
+						Polygon struct {
+							Text        Text     `xml:",chardata"`
+							Fill        Fill     `xml:"fill,attr"`
+							Knockout    Knockout `xml:"knockout,attr"`
+							ID          D        `xml:"id,attr"`
+							Points      Points   `xml:"points,attr"`
+							Stroke      Stroke   `xml:"stroke,attr"`
+							StrokeWidth float32  `xml:"stroke-width,attr"`
+						} `xml:"polygon"`
+					} `xml:"g"`
+					Path []struct {
+						Text             Text       `xml:",chardata"`
+						ClipRule         Rule       `xml:"clip-rule,attr"`
+						D                D          `xml:"d,attr"`
+						FillRule         Rule       `xml:"fill-rule,attr"`
+						Knockout         Knockout   `xml:"knockout,attr"`
+						Stroke           Stroke     `xml:"stroke,attr"`
+						StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
+						StrokeWidth      float32    `xml:"stroke-width,attr"`
+						Fill             Fill       `xml:"fill,attr"`
+						ID               D          `xml:"id,attr"`
+					} `xml:"path"`
+					Rect []struct {
+						Text        Text     `xml:",chardata"`
+						Fill        Fill     `xml:"fill,attr"`
+						Height      float32  `xml:"height,attr"`
+						Knockout    Knockout `xml:"knockout,attr"`
+						ID          D        `xml:"id,attr"`
+						Width       float32  `xml:"width,attr"`
+						X           float32  `xml:"x,attr"`
+						Y           float32  `xml:"y,attr"`
+						Stroke      Stroke   `xml:"stroke,attr"`
+						StrokeWidth float32  `xml:"stroke-width,attr"`
+					} `xml:"rect"`
+					Polygon []struct {
+						Text        Text     `xml:",chardata"`
+						Fill        Fill     `xml:"fill,attr"`
+						Knockout    Knockout `xml:"knockout,attr"`
+						ID          D        `xml:"id,attr"`
+						Points      Points   `xml:"points,attr"`
+						Stroke      Stroke   `xml:"stroke,attr"`
+						StrokeWidth float32  `xml:"stroke-width,attr"`
+					} `xml:"polygon"`
+					Circle struct {
+						Text        Text     `xml:",chardata"`
+						Cx          Cx       `xml:"cx,attr"`
+						Cy          Cy       `xml:"cy,attr"`
+						Fill        Fill     `xml:"fill,attr"`
+						Knockout    Knockout `xml:"knockout,attr"`
+						R           R        `xml:"r,attr"`
+						Stroke      Stroke   `xml:"stroke,attr"`
+						StrokeWidth float32  `xml:"stroke-width,attr"`
+					} `xml:"circle"`
+					Switch []struct {
+						Text          Text `xml:",chardata"`
+						ObjectNS      S    `xml:"objectNS,attr"`
+						ObjectType    Type `xml:"objectType,attr"`
+						ForeignObject struct {
+							Text               Text       `xml:",chardata"`
+							Height             float32    `xml:"height,attr"`
+							Overflow           Overflow   `xml:"overflow,attr"`
+							RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
+							Width              float32    `xml:"width,attr"`
+							X                  float32    `xml:"x,attr"`
+							Y                  float32    `xml:"y,attr"`
+							FlowDef            struct {
+								Text   Text  `xml:",chardata"`
+								Xmlns  Xmlns `xml:"xmlns,attr"`
+								Region struct {
+									Text       Text   `xml:",chardata"`
+									TextMatrix Matrix `xml:"textMatrix,attr"`
+									Path       struct {
+										Text     Text     `xml:",chardata"`
+										D        D        `xml:"d,attr"`
+										Fill     Fill     `xml:"fill,attr"`
+										Knockout Knockout `xml:"knockout,attr"`
+									} `xml:"path"`
+								} `xml:"region"`
+								Flow struct {
+									Text       Text   `xml:",chardata"`
+									FontFamily Family `xml:"font-family,attr"`
+									FontSize   Size   `xml:"font-size,attr"`
+									Xmlns      Xmlns  `xml:"xmlns,attr"`
+									P          struct {
+										Text Text `xml:",chardata"`
+										Span struct {
+											Text        Text    `xml:",chardata"` // ORDEM    PROGRESSO  PROGR...
+											Fill        Fill    `xml:"fill,attr"`
+											Stroke      Stroke  `xml:"stroke,attr"`
+											StrokeWidth float32 `xml:"stroke-width,attr"`
+										} `xml:"span"`
+									} `xml:"p"`
+								} `xml:"flow"`
+							} `xml:"flowDef"`
+							TargetRef struct {
+								Text Text `xml:",chardata"`
+								Href Href `xml:"href,attr"`
+							} `xml:"targetRef"`
+						} `xml:"foreignObject"`
+						G struct {
+							Chardata Chardata `xml:",chardata"`
+							Path     struct {
+								Text     Text     `xml:",chardata"`
+								D        D        `xml:"d,attr"`
+								Fill     Fill     `xml:"fill,attr"`
+								Knockout Knockout `xml:"knockout,attr"`
+							} `xml:"path"`
+							G struct {
+								Chardata Chardata `xml:",chardata"`
+								ID       D        `xml:"id,attr"`
+								Text     []struct {
+									Text        Text      `xml:",chardata"` // O, R, D, E, M, P, R, O, G...
+									Fill        Fill      `xml:"fill,attr"`
+									FontFamily  Family    `xml:"font-family,attr"`
+									FontSize    Size      `xml:"font-size,attr"`
+									Stroke      Stroke    `xml:"stroke,attr"`
+									StrokeWidth float32   `xml:"stroke-width,attr"`
+									Transform   Transform `xml:"transform,attr"`
+								} `xml:"text"`
+							} `xml:"g"`
+							Line struct {
+								Text     Text     `xml:",chardata"`
+								Fill     Fill     `xml:"fill,attr"`
+								Knockout Knockout `xml:"knockout,attr"`
+								X1       float32  `xml:"x1,attr"`
+								X2       float32  `xml:"x2,attr"`
+								Y1       float32  `xml:"y1,attr"`
+								Y2       float32  `xml:"y2,attr"`
+							} `xml:"line"`
+							Text struct {
+								Text      Text      `xml:",chardata"`
+								ID        D         `xml:"id,attr"`
+								Transform Transform `xml:"transform,attr"`
+								Tspan     struct {
+									Text        Text    `xml:",chardata"` // E
+									Fill        Fill    `xml:"fill,attr"`
+									FontFamily  Family  `xml:"font-family,attr"`
+									FontSize    Size    `xml:"font-size,attr"`
+									Stroke      Stroke  `xml:"stroke,attr"`
+									StrokeWidth float32 `xml:"stroke-width,attr"`
+									X           float32 `xml:"x,attr"`
+									Y           float32 `xml:"y,attr"`
+								} `xml:"tspan"`
+							} `xml:"text"`
+						} `xml:"g"`
+					} `xml:"switch"`
+				} `xml:"g"`
+				Switch []struct {
+					Chardata      Chardata `xml:",chardata"`
+					Knockout      Knockout `xml:"knockout,attr"`
+					ObjectNS      S        `xml:"objectNS,attr"`
+					ObjectType    Type     `xml:"objectType,attr"`
+					ForeignObject struct {
+						Text               Text       `xml:",chardata"`
+						Height             float32    `xml:"height,attr"`
+						Overflow           Overflow   `xml:"overflow,attr"`
+						RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
+						Width              float32    `xml:"width,attr"`
+						X                  float32    `xml:"x,attr"`
+						Y                  float32    `xml:"y,attr"`
+						FlowDef            struct {
+							Text   Text  `xml:",chardata"`
+							Xmlns  Xmlns `xml:"xmlns,attr"`
+							Region struct {
+								Text Text `xml:",chardata"`
+								Path struct {
+									Text Text `xml:",chardata"`
+									D    D    `xml:"d,attr"`
+								} `xml:"path"`
+							} `xml:"region"`
+							Flow struct {
+								Text       Text   `xml:",chardata"`
+								FontFamily Family `xml:"font-family,attr"`
+								FontSize   Size   `xml:"font-size,attr"`
+								Xmlns      Xmlns  `xml:"xmlns,attr"`
+								P          struct {
+									Text Text `xml:",chardata"`
+									Span Span `xml:"span"` // 9, 12, 6, 3, 9, 12, 6, 3
+								} `xml:"p"`
+							} `xml:"flow"`
+						} `xml:"flowDef"`
+						TargetRef struct {
+							Text Text `xml:",chardata"`
+							Href Href `xml:"href,attr"`
+						} `xml:"targetRef"`
+					} `xml:"foreignObject"`
+					Text struct {
+						Text      Text      `xml:",chardata"`
+						ID        D         `xml:"id,attr"`
+						Transform Transform `xml:"transform,attr"`
+						Tspan     struct {
+							Text       Text    `xml:",chardata"` // 9, 12, 6, 3, 9, 12, 6, 3
+							FontFamily Family  `xml:"font-family,attr"`
+							FontSize   Size    `xml:"font-size,attr"`
+							X          float32 `xml:"x,attr"`
+							Y          float32 `xml:"y,attr"`
+						} `xml:"tspan"`
+					} `xml:"text"`
+				} `xml:"switch"`
+				Path []struct {
+					Text             Text       `xml:",chardata"`
+					ClipRule         Rule       `xml:"clip-rule,attr"`
+					D                D          `xml:"d,attr"`
+					Fill             Fill       `xml:"fill,attr"`
+					FillRule         Rule       `xml:"fill-rule,attr"`
+					Knockout         Knockout   `xml:"knockout,attr"`
+					Stroke           Stroke     `xml:"stroke,attr"`
+					StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
+					StrokeWidth      float32    `xml:"stroke-width,attr"`
+					ID               D          `xml:"id,attr"`
+				} `xml:"path"`
+				LinearGradient []struct {
+					Text          Text    `xml:",chardata"`
+					GradientUnits Units   `xml:"gradientUnits,attr"`
+					ID            D       `xml:"id,attr"`
+					X1            float32 `xml:"x1,attr"`
+					X2            float32 `xml:"x2,attr"`
+					Y1            float32 `xml:"y1,attr"`
+					Y2            float32 `xml:"y2,attr"`
+					Stop          []struct {
+						Text   Text   `xml:",chardata"`
+						Offset Offset `xml:"offset,attr"`
+						Style  Style  `xml:"style,attr"`
+					} `xml:"stop"`
+					MidPointStop []struct {
+						Text   Text   `xml:",chardata"`
+						Offset Offset `xml:"offset,attr"`
+						Style  Style  `xml:"style,attr"`
+					} `xml:"midPointStop"`
+				} `xml:"linearGradient"`
+				RadialGradient []struct {
+					Text          Text  `xml:",chardata"`
+					Cx            Cx    `xml:"cx,attr"`
+					Cy            Cy    `xml:"cy,attr"`
+					Fx            Fx    `xml:"fx,attr"`
+					Fy            Fy    `xml:"fy,attr"`
+					GradientUnits Units `xml:"gradientUnits,attr"`
+					ID            D     `xml:"id,attr"`
+					R             R     `xml:"r,attr"`
+					Stop          []struct {
+						Text   Text   `xml:",chardata"`
+						Offset Offset `xml:"offset,attr"`
+						Style  Style  `xml:"style,attr"`
+					} `xml:"stop"`
+					MidPointStop []struct {
+						Text   Text   `xml:",chardata"`
+						Offset Offset `xml:"offset,attr"`
+						Style  Style  `xml:"style,attr"`
+					} `xml:"midPointStop"`
+				} `xml:"radialGradient"`
+			} `xml:"g"`
+		} `xml:"g"`
+	} `xml:"switch"`
+	RadialGradient struct {
+		Text          Text  `xml:",chardata"`
+		Cx            Cx    `xml:"cx,attr"`
+		Cy            Cy    `xml:"cy,attr"`
+		GradientUnits Units `xml:"gradientUnits,attr"`
+		ID            D     `xml:"id,attr"`
+		R             R     `xml:"r,attr"`
+		Stop          []struct {
+			Text   Text   `xml:",chardata"`
+			ID     D      `xml:"id,attr"`
+			Offset Offset `xml:"offset,attr"`
+			Style  Style  `xml:"style,attr"`
+		} `xml:"stop"`
+	} `xml:"radialGradient"`
+	Circle []struct {
+		Text  Text  `xml:",chardata"`
+		Cx    Cx    `xml:"cx,attr"`
+		Cy    Cy    `xml:"cy,attr"`
+		Fill  Fill  `xml:"fill,attr"`
+		ID    D     `xml:"id,attr"`
+		R     R     `xml:"r,attr"`
+		Class Class `xml:"class,attr"`
+		Rx    Rx    `xml:"rx,attr"`
+		Ry    Ry    `xml:"ry,attr"`
+		Style Style `xml:"style,attr"`
+	} `xml:"circle"`
+	Use []struct {
+		Text      Text      `xml:",chardata"`
+		ID        D         `xml:"id,attr"`
+		Transform Transform `xml:"transform,attr"`
+		Href      Href      `xml:"href,attr"`
+		Height    float32   `xml:"height,attr"`
+		Width     float32   `xml:"width,attr"`
+		X         float32   `xml:"x,attr"`
+		Y         float32   `xml:"y,attr"`
+	} `xml:"use"`
+	Image struct {
+		Text        Text        `xml:",chardata"`
+		Height      float32     `xml:"height,attr"`
+		ID          D           `xml:"id,attr"`
+		Absref      Absref      `xml:"absref,attr"`
+		Insensitive Insensitive `xml:"insensitive,attr"`
+		Style       Style       `xml:"style,attr"`
+		Width       float32     `xml:"width,attr"`
+		X           float32     `xml:"x,attr"`
+		Href        Href        `xml:"href,attr"`
+		Y           float32     `xml:"y,attr"`
+	} `xml:"image"`
+	Polygon []struct {
+		Text      Text      `xml:",chardata"`
+		ID        D         `xml:"id,attr"`
+		Points    Points    `xml:"points,attr"`
+		Arg1      Arg1      `xml:"arg1,attr"`
+		Arg2      Arg2      `xml:"arg2,attr"`
+		Cx        Cx        `xml:"cx,attr"`
+		Cy        Cy        `xml:"cy,attr"`
+		R1        R1        `xml:"r1,attr"`
+		R2        R2        `xml:"r2,attr"`
+		Sides     Sides     `xml:"sides,attr"`
+		Type      Type      `xml:"type,attr"`
+		Style     Style     `xml:"style,attr"`
+		Transform Transform `xml:"transform,attr"`
+		Fill      Fill      `xml:"fill,attr"`
+		FillCmyk  Cmyk      `xml:"fill-cmyk,attr"`
+	} `xml:"polygon"`
+	Ellipse []struct {
+		Text        Text      `xml:",chardata"`
+		Cx          Cx        `xml:"cx,attr"`
+		Cy          Cy        `xml:"cy,attr"`
+		ID          D         `xml:"id,attr"`
+		Rx          Rx        `xml:"rx,attr"`
+		Ry          Ry        `xml:"ry,attr"`
+		Style       Style     `xml:"style,attr"`
+		Stroke      Stroke    `xml:"stroke,attr"`
+		StrokeWidth float32   `xml:"stroke-width,attr"`
+		Transform   Transform `xml:"transform,attr"`
+	} `xml:"ellipse"`
+	RDF struct {
+		Text  Text  `xml:",chardata"`
+		Xmlns Xmlns `xml:"xmlns,attr"`
+		Dc    Dc    `xml:"dc,attr"`
+		Rdf   Rdf   `xml:"rdf,attr"`
+		Work  struct {
+			Text        Text        `xml:",chardata"`
+			About       About       `xml:"about,attr"`
+			Title       Title       `xml:"title"`       // Kansasflag, Kansasflag
+			Description Description `xml:"description"` // state flag, state flag
+			Subject     struct {
+				Text Text `xml:",chardata"`
+				Bag  struct {
+					Text Text     `xml:",chardata"`
+					Li   []string `xml:"li"` // symbol, flag, usa, Kansas...
+				} `xml:"Bag"`
+			} `xml:"subject"`
+			Publisher struct {
+				Text  Text `xml:",chardata"`
+				Agent struct {
+					Text  Text  `xml:",chardata"`
+					About About `xml:"about,attr"`
+					Title Title `xml:"title"` // Open Clip Art Library, Op...
+				} `xml:"Agent"`
+			} `xml:"publisher"`
+			Creator struct {
+				Text  Text `xml:",chardata"`
+				Agent struct {
+					Text  Text  `xml:",chardata"`
+					About About `xml:"about,attr"`
+					Title Title `xml:"title"` // Dave Reckoning, Dave Reck...
+				} `xml:"Agent"`
+			} `xml:"creator"`
+			Rights struct {
+				Text  Text `xml:",chardata"`
+				Agent struct {
+					Text  Text  `xml:",chardata"`
+					About About `xml:"about,attr"`
+					Title Title `xml:"title"`
+				} `xml:"Agent"`
+			} `xml:"rights"`
+			Date   Date   `xml:"date"`
+			Format Format `xml:"format"` // image/svg+xml, image/svg+...
+			Type   struct {
+				Text     Text     `xml:",chardata"`
+				Resource Resource `xml:"resource,attr"`
+			} `xml:"type"`
+			License struct {
+				Text     Text     `xml:",chardata"`
+				Resource Resource `xml:"resource,attr"`
+				Date     Date     `xml:"date"` // 59, 59
+			} `xml:"license"`
+			Language Language `xml:"language"` // en, en
+		} `xml:"Work"`
+		License struct {
+			Text    Text  `xml:",chardata"`
+			About   About `xml:"about,attr"`
+			Permits []struct {
+				Text     Text     `xml:",chardata"`
+				Resource Resource `xml:"resource,attr"`
+			} `xml:"permits"`
+		} `xml:"License"`
+	} `xml:"RDF"`
+}

+ 0 - 0
testdata/svg


+ 90 - 0
testdata/yellow_circle.svg

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg5"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <defs
+     id="defs2">
+    <linearGradient
+       id="linearGradient5432">
+      <stop
+         style="stop-color:#ffff00;stop-opacity:1;"
+         offset="0"
+         id="stop5428" />
+      <stop
+         style="stop-color:#ffff00;stop-opacity:0;"
+         offset="1"
+         id="stop5430" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5344">
+      <stop
+         style="stop-color:#0000ff;stop-opacity:1;"
+         offset="0"
+         id="stop5340" />
+      <stop
+         style="stop-color:#0000ff;stop-opacity:0;"
+         offset="1"
+         id="stop5342" />
+    </linearGradient>
+    <linearGradient
+       xlink:href="#linearGradient5344"
+       id="linearGradient5346"
+       x1="89.193062"
+       y1="92.165146"
+       x2="177.97886"
+       y2="92.165146"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       xlink:href="#linearGradient5432"
+       id="radialGradient5434"
+       cx="70.214874"
+       cy="52.364155"
+       fx="70.214874"
+       fy="52.364155"
+       r="39.470493"
+       gradientTransform="matrix(1,0,0,0.95443934,0,2.3857454)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     id="layer1">
+    <ellipse
+       style="fill:url(#radialGradient5434);stroke-width:0.264583;fill-opacity:1"
+       id="path49"
+       cx="70.214874"
+       cy="52.364155"
+       rx="39.470493"
+       ry="37.672192" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="59.172764"
+       y="104.7185"
+       id="text1574"><tspan
+         style="stroke-width:0.264583"
+         x="59.172764"
+         y="104.7185"
+         id="tspan1576">hello</tspan></text>
+    <rect
+       style="fill:url(#linearGradient5346);stroke-width:0.264583;fill-opacity:1"
+       id="rect4440"
+       width="88.785797"
+       height="80.465088"
+       x="89.193062"
+       y="51.932602" />
+    <rect
+       style="fill:#0000ff;stroke-width:0.264583"
+       id="rect5458"
+       width="36.873154"
+       height="22.471991"
+       x="31.896166"
+       y="133.12292" />
+  </g>
+</svg>

+ 90 - 0
testdata/yellow_circle_plain.svg

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg5"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <defs
+     id="defs2">
+    <linearGradient
+       id="linearGradient5432">
+      <stop
+         style="stop-color:#ffff00;stop-opacity:1;"
+         offset="0"
+         id="stop5428" />
+      <stop
+         style="stop-color:#ffff00;stop-opacity:0;"
+         offset="1"
+         id="stop5430" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5344">
+      <stop
+         style="stop-color:#0000ff;stop-opacity:1;"
+         offset="0"
+         id="stop5340" />
+      <stop
+         style="stop-color:#0000ff;stop-opacity:0;"
+         offset="1"
+         id="stop5342" />
+    </linearGradient>
+    <linearGradient
+       xlink:href="#linearGradient5344"
+       id="linearGradient5346"
+       x1="89.193062"
+       y1="92.165146"
+       x2="177.97886"
+       y2="92.165146"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       xlink:href="#linearGradient5432"
+       id="radialGradient5434"
+       cx="70.214874"
+       cy="52.364155"
+       fx="70.214874"
+       fy="52.364155"
+       r="39.470493"
+       gradientTransform="matrix(1,0,0,0.95443934,0,2.3857454)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     id="layer1">
+    <ellipse
+       style="fill:url(#radialGradient5434);stroke-width:0.264583;fill-opacity:1"
+       id="path49"
+       cx="70.214874"
+       cy="52.364155"
+       rx="39.470493"
+       ry="37.672192" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="59.172764"
+       y="104.7185"
+       id="text1574"><tspan
+         style="stroke-width:0.264583"
+         x="59.172764"
+         y="104.7185"
+         id="tspan1576">hello</tspan></text>
+    <rect
+       style="fill:url(#linearGradient5346);stroke-width:0.264583;fill-opacity:1"
+       id="rect4440"
+       width="88.785797"
+       height="80.465088"
+       x="89.193062"
+       y="51.932602" />
+    <rect
+       style="fill:#0000ff;stroke-width:0.264583"
+       id="rect5458"
+       width="36.873154"
+       height="22.471991"
+       x="31.896166"
+       y="133.12292" />
+  </g>
+</svg>