-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | SVG file loader and serializer
--   
--   svg-tree provides types representing a SVG document, and allows to
--   load and save it.
--   
--   The types definition are aimed at rendering, so they are rather
--   comple. For simpler SVG document building, look after `lucid-svg`.
--   
--   To render an svg document you can use the `rasterific-svg` package
@package svg-tree
@version 0.6.1


-- | Define the types used to describes CSS elements
module Graphics.Svg.CssTypes

-- | Define complex selector.
data CssSelector

-- | Correspond to the <a>+</a> CSS selector.
Nearby :: CssSelector

-- | Correspond to the <a>&gt;</a> CSS selectro.
DirectChildren :: CssSelector

-- | Grouping construct, all the elements of the list must be matched.
AllOf :: [CssDescriptor] -> CssSelector

-- | A CssSelectorRule is a list of all the elements that must be meet in a
--   depth first search fashion.
type CssSelectorRule = [CssSelector]

-- | Represent a CSS selector and the different declarations to apply to
--   the matched elemens.
data CssRule
CssRule :: ![CssSelectorRule] -> ![CssDeclaration] -> CssRule

-- | At the first level represent a list of elements to be matched. If any
--   match is made, you can apply the declarations. At the second level
[cssRuleSelector] :: CssRule -> ![CssSelectorRule]

-- | Declarations to apply to the matched element.
[cssDeclarations] :: CssRule -> ![CssDeclaration]

-- | Describe an element of a CSS selector. Multiple elements can be
--   combined in a CssSelector type.
data CssDescriptor

-- | .IDENT
OfClass :: Text -> CssDescriptor

-- | IDENT
OfName :: Text -> CssDescriptor

-- | #IDENT
OfId :: Text -> CssDescriptor

-- | `:IDENT` (ignore function syntax)
OfPseudoClass :: Text -> CssDescriptor

-- | <a>*</a>
AnyElem :: CssDescriptor

-- | ``
WithAttrib :: Text -> Text -> CssDescriptor

-- | Represent the content to apply to some CSS matched rules.
data CssDeclaration
CssDeclaration :: Text -> [[CssElement]] -> CssDeclaration

-- | Property name to change (like font-family or color).
[_cssDeclarationProperty] :: CssDeclaration -> Text

-- | List of values
[_cssDecarationlValues] :: CssDeclaration -> [[CssElement]]

-- | Value of a CSS property.
data CssElement
CssIdent :: !Text -> CssElement
CssString :: !Text -> CssElement
CssReference :: !Text -> CssElement
CssNumber :: !Number -> CssElement
CssColor :: !PixelRGBA8 -> CssElement
CssFunction :: !Text -> ![CssElement] -> CssElement
CssOpComa :: CssElement
CssOpSlash :: CssElement

-- | Interface for elements to be matched against some CssRule.
class CssMatcheable a

-- | For an element, tell its optional ID attribute.
cssIdOf :: CssMatcheable a => a -> Maybe Text

-- | For an element, return all of it's class attributes.
cssClassOf :: CssMatcheable a => a -> [Text]

-- | Return the name of the tagname of the element
cssNameOf :: CssMatcheable a => a -> Text

-- | Return a value of a given attribute if present
cssAttribOf :: CssMatcheable a => a -> Text -> Maybe Text

-- | Represent a zipper in depth at the first list level, and the previous
--   nodes at in the second list level.
type CssContext a = [[a]]

-- | Alias describing a "dot per inch" information used for size
--   calculation (see toUserUnit).
type Dpi = Int

-- | Encode complex number possibly dependant to the current render size.
data Number

-- | Simple coordinate in current user coordinate.
Num :: Double -> Number

-- | With suffix "px"
Px :: Double -> Number

-- | Number relative to the current font size.
Em :: Double -> Number

-- | Number relative to the current viewport size.
Percent :: Double -> Number
Pc :: Double -> Number

-- | Number in millimeters, relative to DPI.
Mm :: Double -> Number

-- | Number in centimeters, relative to DPI.
Cm :: Double -> Number

-- | Number in points, relative to DPI.
Point :: Double -> Number

-- | Number in inches, relative to DPI.
Inches :: Double -> Number

-- | Encode the number to string which can be used in a CSS or a svg
--   attributes.
serializeNumber :: Number -> String

-- | Given CSS rules, find all the declaration to apply to the element in a
--   given context.
findMatchingDeclarations :: CssMatcheable a => [CssRule] -> CssContext a -> [CssDeclaration]

-- | This function replace all device dependant units to user units given
--   it's DPI configuration. Preserve percentage and "em" notation.
toUserUnit :: Dpi -> Number -> Number

-- | Helper function to modify inner value of a number
mapNumber :: (Double -> Double) -> Number -> Number

-- | Serialize an element to a text builder.
tserialize :: TextBuildable a => a -> Builder
instance GHC.Show.Show Graphics.Svg.CssTypes.CssRule
instance GHC.Classes.Eq Graphics.Svg.CssTypes.CssRule
instance GHC.Show.Show Graphics.Svg.CssTypes.CssDeclaration
instance GHC.Classes.Eq Graphics.Svg.CssTypes.CssDeclaration
instance GHC.Show.Show Graphics.Svg.CssTypes.CssElement
instance GHC.Classes.Eq Graphics.Svg.CssTypes.CssElement
instance GHC.Show.Show Graphics.Svg.CssTypes.Number
instance GHC.Classes.Eq Graphics.Svg.CssTypes.Number
instance GHC.Show.Show Graphics.Svg.CssTypes.CssSelector
instance GHC.Classes.Eq Graphics.Svg.CssTypes.CssSelector
instance GHC.Show.Show Graphics.Svg.CssTypes.CssDescriptor
instance GHC.Classes.Eq Graphics.Svg.CssTypes.CssDescriptor
instance Graphics.Svg.CssTypes.TextBuildable Graphics.Svg.CssTypes.CssDescriptor
instance Graphics.Svg.CssTypes.TextBuildable Graphics.Svg.CssTypes.CssSelector
instance Graphics.Svg.CssTypes.TextBuildable Graphics.Svg.CssTypes.CssRule
instance Graphics.Svg.CssTypes.TextBuildable Graphics.Svg.CssTypes.CssDeclaration
instance Graphics.Svg.CssTypes.TextBuildable Graphics.Svg.CssTypes.Number
instance Graphics.Svg.CssTypes.TextBuildable Graphics.Svg.CssTypes.CssElement


-- | This module define all the types used in the definition of a svg
--   scene.
--   
--   Most of the types are lensified.
module Graphics.Svg.Types

-- | Basic coordiante type.
type Coord = Double

-- | Tell if a path command is absolute (in the current user coordiante) or
--   relative to the previous poitn.
data Origin

-- | Next point in absolute coordinate
OriginAbsolute :: Origin

-- | Next point relative to the previous
OriginRelative :: Origin

-- | Possibly context dependant point.
type Point = (Number, Number)

-- | Real Point, fully determined and not dependant of the rendering
--   context.
type RPoint = V2 Coord

-- | Path command definition.
data PathCommand

-- | <tt>M</tt> or <tt>m</tt> command
MoveTo :: !Origin -> ![RPoint] -> PathCommand

-- | Line to, <tt>L</tt> or <tt>l</tt> Svg path command.
LineTo :: !Origin -> ![RPoint] -> PathCommand

-- | Equivalent to the <tt>H</tt> or <tt>h</tt> svg path command.
HorizontalTo :: !Origin -> ![Coord] -> PathCommand

-- | Equivalent to the <tt>V</tt> or <tt>v</tt> svg path command.
VerticalTo :: !Origin -> ![Coord] -> PathCommand

-- | Cubic bezier, <tt>C</tt> or <tt>c</tt> command
CurveTo :: !Origin -> ![(RPoint, RPoint, RPoint)] -> PathCommand

-- | Smooth cubic bezier, equivalent to <tt>S</tt> or <tt>s</tt> command
SmoothCurveTo :: !Origin -> ![(RPoint, RPoint)] -> PathCommand

-- | Quadratic bezier, <tt>Q</tt> or <tt>q</tt> command
QuadraticBezier :: !Origin -> ![(RPoint, RPoint)] -> PathCommand

-- | Quadratic bezier, <tt>T</tt> or <tt>t</tt> command
SmoothQuadraticBezierCurveTo :: !Origin -> ![RPoint] -> PathCommand

-- | Eliptical arc, <tt>A</tt> or <tt>a</tt> command.
EllipticalArc :: !Origin -> ![(Coord, Coord, Coord, Bool, Bool, RPoint)] -> PathCommand

-- | Close the path, <tt>Z</tt> or <tt>z</tt> svg path command.
EndPath :: PathCommand

-- | Describe the content of the <tt>transformation</tt> attribute. see
--   <a>_transform</a> and <a>transform</a>.
data Transformation

-- | Directly encode the translation matrix.
TransformMatrix :: !Coord -> !Coord -> !Coord -> !Coord -> !Coord -> !Coord -> Transformation

-- | Translation along a vector
Translate :: !Double -> !Double -> Transformation

-- | Scaling on both axis or on X axis and Y axis.
Scale :: !Double -> !(Maybe Double) -> Transformation

-- | Rotation around `(0, 0)` or around an optional point.
Rotate :: !Double -> !(Maybe (Double, Double)) -> Transformation

-- | Skew transformation along the X axis.
SkewX :: !Double -> Transformation

-- | Skew transformation along the Y axis.
SkewY :: !Double -> Transformation

-- | Unkown transformation, like identity.
TransformUnknown :: Transformation

-- | Correspond to the possible values of the the attributes which are
--   either <tt>none</tt> or `url(#elem)`
data ElementRef

-- | Value for <tt>none</tt>
RefNone :: ElementRef

-- | Equivalent to `url()` attribute.
Ref :: String -> ElementRef

-- | Define the possible values of various *units attributes used in the
--   definition of the gradients and masks.
data CoordinateUnits

-- | <tt>userSpaceOnUse</tt> value
CoordUserSpace :: CoordinateUnits

-- | <tt>objectBoundingBox</tt> value
CoordBoundingBox :: CoordinateUnits

-- | Little helper function to build a point.
toPoint :: Number -> Number -> Point

-- | Encode the number to string which can be used in a CSS or a svg
--   attributes.
serializeNumber :: Number -> String

-- | Convert the Transformation to a string which can be directly used in a
--   svg attributes.
serializeTransformation :: Transformation -> String

-- | Transform a list of transformations to a string for svg
--   <a>transform</a> attributes.
serializeTransformations :: [Transformation] -> String

-- | Describe how the line should be terminated when stroking them.
--   Describe the values of the `stroke-linecap` attribute. See
--   <a>_strokeLineCap</a>
data Cap

-- | End with a round (<a>round</a> value)
CapRound :: Cap

-- | Define straight just at the end (<tt>butt</tt> value)
CapButt :: Cap

-- | Straight further of the ends (<tt>square</tt> value)
CapSquare :: Cap

-- | Define the possible values of the `stroke-linejoin` attribute. see
--   <a>_strokeLineJoin</a>
data LineJoin

-- | <tt>miter</tt> value
JoinMiter :: LineJoin

-- | <tt>bevel</tt> value
JoinBevel :: LineJoin

-- | <a>round</a> value
JoinRound :: LineJoin

-- | Main type for the scene description, reorient to specific type
--   describing each tag.
data Tree
None :: Tree
UseTree :: !Use -> !(Maybe Tree) -> Tree
[useInformation] :: Tree -> !Use
[useSubTree] :: Tree -> !(Maybe Tree)
GroupTree :: !(Group Tree) -> Tree
SymbolTree :: !(Symbol Tree) -> Tree
PathTree :: !Path -> Tree
CircleTree :: !Circle -> Tree
PolyLineTree :: !PolyLine -> Tree
PolygonTree :: !Polygon -> Tree
EllipseTree :: !Ellipse -> Tree
LineTree :: !Line -> Tree
RectangleTree :: !Rectangle -> Tree
TextTree :: !(Maybe TextPath) -> !Text -> Tree
ImageTree :: !Image -> Tree
MeshGradientTree :: !MeshGradient -> Tree

-- | Encode complex number possibly dependant to the current render size.
data Number

-- | Simple coordinate in current user coordinate.
Num :: Double -> Number

-- | With suffix "px"
Px :: Double -> Number

-- | Number relative to the current font size.
Em :: Double -> Number

-- | Number relative to the current viewport size.
Percent :: Double -> Number
Pc :: Double -> Number

-- | Number in millimeters, relative to DPI.
Mm :: Double -> Number

-- | Number in centimeters, relative to DPI.
Cm :: Double -> Number

-- | Number in points, relative to DPI.
Point :: Double -> Number

-- | Number in inches, relative to DPI.
Inches :: Double -> Number

-- | Define the possible values for the <tt>spreadMethod</tt> values used
--   for the gradient definitions.
data Spread

-- | <tt>reapeat</tt> value
SpreadRepeat :: Spread

-- | <tt>pad</tt> value
SpreadPad :: Spread

-- | `reflect value`
SpreadReflect :: Spread

-- | Describe the different value which can be used in the <tt>fill</tt> or
--   <tt>stroke</tt> attributes.
data Texture

-- | Direct solid color (rgb)
ColorRef :: PixelRGBA8 -> Texture

-- | Link to a complex texture (url(#name))
TextureRef :: String -> Texture

-- | Equivalent to the <tt>none</tt> value.
FillNone :: Texture

-- | Sum types helping keeping track of all the namable elemens in a SVG
--   document.
data Element
ElementLinearGradient :: LinearGradient -> Element
ElementRadialGradient :: RadialGradient -> Element
ElementMeshGradient :: MeshGradient -> Element
ElementGeometry :: Tree -> Element
ElementPattern :: Pattern -> Element
ElementMarker :: Marker -> Element
ElementMask :: Mask -> Element
ElementClipPath :: ClipPath -> Element

-- | Describe the possile filling algorithms. Map the values of the
--   `fill-rule` attributes.
data FillRule

-- | Correspond to the <tt>evenodd</tt> value.
FillEvenOdd :: FillRule

-- | Correspond to the <tt>nonzero</tt> value.
FillNonZero :: FillRule

-- | Classify the font style, used to search a matching font in the
--   FontCache.
data FontStyle
FontStyleNormal :: FontStyle
FontStyleItalic :: FontStyle
FontStyleOblique :: FontStyle

-- | Alias describing a "dot per inch" information used for size
--   calculation (see toUserUnit).
type Dpi = Int

-- | Define an empty 'default' element for the SVG tree. It is used as base
--   when parsing the element from XML.
class WithDefaultSvg a

-- | The default element.
defaultSvg :: WithDefaultSvg a => a

-- | Represent a full svg document with style, geometry and named elements.
data Document
Document :: Maybe (Double, Double, Double, Double) -> Maybe Number -> Maybe Number -> [Tree] -> Map String Element -> String -> [CssRule] -> FilePath -> Document
[_viewBox] :: Document -> Maybe (Double, Double, Double, Double)
[_width] :: Document -> Maybe Number
[_height] :: Document -> Maybe Number
[_elements] :: Document -> [Tree]
[_definitions] :: Document -> Map String Element
[_description] :: Document -> String
[_styleRules] :: Document -> [CssRule]
[_documentLocation] :: Document -> FilePath

-- | Lenses associated to a SVG document.
class HasDocument c_aZwW where definitions = (.) document definitions description = (.) document description documentLocation = (.) document documentLocation elements = (.) document elements height = (.) document height styleRules = (.) document styleRules viewBox = (.) document viewBox width = (.) document width
document :: HasDocument c_aZwW => Lens' c_aZwW Document
definitions :: HasDocument c_aZwW => Lens' c_aZwW (Map String Element)
description :: HasDocument c_aZwW => Lens' c_aZwW String
documentLocation :: HasDocument c_aZwW => Lens' c_aZwW FilePath
elements :: HasDocument c_aZwW => Lens' c_aZwW [Tree]
height :: HasDocument c_aZwW => Lens' c_aZwW (Maybe Number)
styleRules :: HasDocument c_aZwW => Lens' c_aZwW [CssRule]
viewBox :: HasDocument c_aZwW => Lens' c_aZwW (Maybe (Double, Double, Double, Double))
width :: HasDocument c_aZwW => Lens' c_aZwW (Maybe Number)

-- | Calculate the document size in function of the different available
--   attributes in the document.
documentSize :: Dpi -> Document -> (Int, Int)

-- | This type define how to draw any primitives, which color to use, how
--   to stroke the primitives and the potential transformations to use.
--   
--   All these attributes are propagated to the children.
data DrawAttributes
DrawAttributes :: !(Last Number) -> !(Last Texture) -> !(Maybe Float) -> !(Last Cap) -> !(Last LineJoin) -> !(Last Double) -> !(Last Texture) -> !(Maybe Float) -> !(Maybe Float) -> !(Maybe [Transformation]) -> !(Last FillRule) -> !(Last ElementRef) -> !(Last ElementRef) -> !(Last FillRule) -> ![Text] -> !(Maybe String) -> !(Last Number) -> !(Last [Number]) -> !(Last Number) -> !(Last [String]) -> !(Last FontStyle) -> !(Last TextAnchor) -> !(Last ElementRef) -> !(Last ElementRef) -> !(Last ElementRef) -> DrawAttributes

-- | Attribute corresponding to the `stroke-width` SVG attribute.
[_strokeWidth] :: DrawAttributes -> !(Last Number)

-- | Correspond to the <tt>stroke</tt> attribute.
[_strokeColor] :: DrawAttributes -> !(Last Texture)

-- | Define the `stroke-opacity` attribute, the transparency for the
--   "border".
[_strokeOpacity] :: DrawAttributes -> !(Maybe Float)

-- | Correspond to the `stroke-linecap` SVG attribute
[_strokeLineCap] :: DrawAttributes -> !(Last Cap)

-- | Correspond to the `stroke-linejoin` SVG attribute
[_strokeLineJoin] :: DrawAttributes -> !(Last LineJoin)

-- | Define the distance of the miter join, correspond to the
--   `stroke-miterlimit` attritbue.
[_strokeMiterLimit] :: DrawAttributes -> !(Last Double)

-- | Define the filling color of the elements. Corresponding to the
--   <tt>fill</tt> attribute.
[_fillColor] :: DrawAttributes -> !(Last Texture)

-- | Define the `fill-opacity` attribute, the transparency for the
--   "content".
[_fillOpacity] :: DrawAttributes -> !(Maybe Float)

-- | Define the global or group opacity attribute.
[_groupOpacity] :: DrawAttributes -> !(Maybe Float)

-- | Content of the <a>transform</a> attribute
[_transform] :: DrawAttributes -> !(Maybe [Transformation])

-- | Define the `fill-rule` used during the rendering.
[_fillRule] :: DrawAttributes -> !(Last FillRule)

-- | Define the <a>mask</a> attribute.
[_maskRef] :: DrawAttributes -> !(Last ElementRef)

-- | Define the `clip-path` attribute.
[_clipPathRef] :: DrawAttributes -> !(Last ElementRef)

-- | Define the `clip-rule` attribute.
[_clipRule] :: DrawAttributes -> !(Last FillRule)

-- | Map to the `class` attribute. Used for the CSS rewriting.
[_attrClass] :: DrawAttributes -> ![Text]

-- | Map to the <a>id</a> attribute. Used for the CSS rewriting.
[_attrId] :: DrawAttributes -> !(Maybe String)

-- | Define the start distance of the dashing pattern. Correspond to the
--   `stroke-dashoffset` attribute.
[_strokeOffset] :: DrawAttributes -> !(Last Number)

-- | Define the dashing pattern for the lines. Correspond to the
--   `stroke-dasharray` attribute.
[_strokeDashArray] :: DrawAttributes -> !(Last [Number])

-- | Current size of the text, correspond to the `font-size` SVG attribute.
[_fontSize] :: DrawAttributes -> !(Last Number)

-- | Define the possible fonts to be used for text rendering. Map to the
--   `font-family` attribute.
[_fontFamily] :: DrawAttributes -> !(Last [String])

-- | Map to the `font-style` attribute.
[_fontStyle] :: DrawAttributes -> !(Last FontStyle)

-- | Define how to interpret the text position, correspond to the
--   `text-anchor` attribute.
[_textAnchor] :: DrawAttributes -> !(Last TextAnchor)

-- | Define the marker used for the start of the line. Correspond to the
--   `marker-start` attribute.
[_markerStart] :: DrawAttributes -> !(Last ElementRef)

-- | Define the marker used for every point of the polyline/path Correspond
--   to the `marker-mid` attribute.
[_markerMid] :: DrawAttributes -> !(Last ElementRef)

-- | Define the marker used for the end of the line. Correspond to the
--   `marker-end` attribute.
[_markerEnd] :: DrawAttributes -> !(Last ElementRef)

-- | Lenses for the DrawAttributes type.
class HasDrawAttributes c_aU5X where attrClass = (.) drawAttributes attrClass attrId = (.) drawAttributes attrId clipPathRef = (.) drawAttributes clipPathRef clipRule = (.) drawAttributes clipRule fillColor = (.) drawAttributes fillColor fillOpacity = (.) drawAttributes fillOpacity fillRule = (.) drawAttributes fillRule fontFamily = (.) drawAttributes fontFamily fontSize = (.) drawAttributes fontSize fontStyle = (.) drawAttributes fontStyle groupOpacity = (.) drawAttributes groupOpacity markerEnd = (.) drawAttributes markerEnd markerMid = (.) drawAttributes markerMid markerStart = (.) drawAttributes markerStart maskRef = (.) drawAttributes maskRef strokeColor = (.) drawAttributes strokeColor strokeDashArray = (.) drawAttributes strokeDashArray strokeLineCap = (.) drawAttributes strokeLineCap strokeLineJoin = (.) drawAttributes strokeLineJoin strokeMiterLimit = (.) drawAttributes strokeMiterLimit strokeOffset = (.) drawAttributes strokeOffset strokeOpacity = (.) drawAttributes strokeOpacity strokeWidth = (.) drawAttributes strokeWidth textAnchor = (.) drawAttributes textAnchor transform = (.) drawAttributes transform
drawAttributes :: HasDrawAttributes c_aU5X => Lens' c_aU5X DrawAttributes
attrClass :: HasDrawAttributes c_aU5X => Lens' c_aU5X [Text]
attrId :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Maybe String)
clipPathRef :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last ElementRef)
clipRule :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last FillRule)
fillColor :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last Texture)
fillOpacity :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Maybe Float)
fillRule :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last FillRule)
fontFamily :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last [String])
fontSize :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last Number)
fontStyle :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last FontStyle)
groupOpacity :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Maybe Float)
markerEnd :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last ElementRef)
markerMid :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last ElementRef)
markerStart :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last ElementRef)
maskRef :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last ElementRef)
strokeColor :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last Texture)
strokeDashArray :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last [Number])
strokeLineCap :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last Cap)
strokeLineJoin :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last LineJoin)
strokeMiterLimit :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last Double)
strokeOffset :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last Number)
strokeOpacity :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Maybe Float)
strokeWidth :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last Number)
textAnchor :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Last TextAnchor)
transform :: HasDrawAttributes c_aU5X => Lens' c_aU5X (Maybe [Transformation])

-- | Class helping find the drawing attributes for all the SVG attributes.
class WithDrawAttributes a

-- | Lens which can be used to read/write primitives.
drawAttr :: WithDrawAttributes a => Lens' a DrawAttributes

-- | Define a rectangle. Correspond to `&lt;rectangle&gt;` svg tag.
data Rectangle
Rectangle :: !DrawAttributes -> !Point -> !Number -> !Number -> !(Number, Number) -> Rectangle

-- | Rectangle drawing attributes.
[_rectDrawAttributes] :: Rectangle -> !DrawAttributes

-- | Upper left corner of the rectangle, correspond to the attributes
--   <tt>x</tt> and <tt>y</tt>.
[_rectUpperLeftCorner] :: Rectangle -> !Point

-- | Rectangle width, correspond, strangely, to the <a>width</a> attribute.
[_rectWidth] :: Rectangle -> !Number

-- | Rectangle height, correspond, amazingly, to the <a>height</a>
--   attribute.
[_rectHeight] :: Rectangle -> !Number

-- | Define the rounded corner radius radius of the rectangle. Correspond
--   to the <tt>rx</tt> and <tt>ry</tt> attributes.
[_rectCornerRadius] :: Rectangle -> !(Number, Number)

-- | Lenses for the Rectangle type.
class HasRectangle c_aUPF where rectCornerRadius = (.) rectangle rectCornerRadius rectDrawAttributes = (.) rectangle rectDrawAttributes rectHeight = (.) rectangle rectHeight rectUpperLeftCorner = (.) rectangle rectUpperLeftCorner rectWidth = (.) rectangle rectWidth
rectangle :: HasRectangle c_aUPF => Lens' c_aUPF Rectangle
rectCornerRadius :: HasRectangle c_aUPF => Lens' c_aUPF (Number, Number)
rectDrawAttributes :: HasRectangle c_aUPF => Lens' c_aUPF DrawAttributes
rectHeight :: HasRectangle c_aUPF => Lens' c_aUPF Number
rectUpperLeftCorner :: HasRectangle c_aUPF => Lens' c_aUPF Point
rectWidth :: HasRectangle c_aUPF => Lens' c_aUPF Number

-- | Define a simple line. Correspond to the `&lt;line&gt;` tag.
data Line
Line :: !DrawAttributes -> !Point -> !Point -> Line

-- | Drawing attributes of line.
[_lineDrawAttributes] :: Line -> !DrawAttributes

-- | First point of the the line, correspond to the <tt>x1</tt> and
--   <tt>y1</tt> attributes.
[_linePoint1] :: Line -> !Point

-- | Second point of the the line, correspond to the <tt>x2</tt> and
--   <tt>y2</tt> attributes.
[_linePoint2] :: Line -> !Point

-- | Lenses for the Line type.
class HasLine c_aUJl where lineDrawAttributes = (.) line lineDrawAttributes linePoint1 = (.) line linePoint1 linePoint2 = (.) line linePoint2
line :: HasLine c_aUJl => Lens' c_aUJl Line
lineDrawAttributes :: HasLine c_aUJl => Lens' c_aUJl DrawAttributes
linePoint1 :: HasLine c_aUJl => Lens' c_aUJl Point
linePoint2 :: HasLine c_aUJl => Lens' c_aUJl Point

-- | Primitive decriving polygon composed of segements. Correspond to the
--   `&lt;polygon&gt;` tag
data Polygon
Polygon :: !DrawAttributes -> ![RPoint] -> Polygon

-- | Drawing attributes for the polygon.
[_polygonDrawAttributes] :: Polygon -> !DrawAttributes

-- | Points of the polygon. Correspond to the <tt>points</tt> attributes.
[_polygonPoints] :: Polygon -> ![RPoint]

-- | Lenses for the Polygon type
class HasPolygon c_aUEK where polygonDrawAttributes = (.) polygon polygonDrawAttributes polygonPoints = (.) polygon polygonPoints
polygon :: HasPolygon c_aUEK => Lens' c_aUEK Polygon
polygonDrawAttributes :: HasPolygon c_aUEK => Lens' c_aUEK DrawAttributes
polygonPoints :: HasPolygon c_aUEK => Lens' c_aUEK [RPoint]

-- | This primitive describe an unclosed suite of segments. Correspond to
--   the `&lt;polyline&gt;` tag.
data PolyLine
PolyLine :: !DrawAttributes -> ![RPoint] -> PolyLine

-- | drawing attributes of the polyline.
[_polyLineDrawAttributes] :: PolyLine -> !DrawAttributes

-- | Geometry definition of the polyline. correspond to the <tt>points</tt>
--   attribute
[_polyLinePoints] :: PolyLine -> ![RPoint]

-- | Lenses for the PolyLine type.
class HasPolyLine c_aUAw where polyLineDrawAttributes = (.) polyLine polyLineDrawAttributes polyLinePoints = (.) polyLine polyLinePoints
polyLine :: HasPolyLine c_aUAw => Lens' c_aUAw PolyLine
polyLineDrawAttributes :: HasPolyLine c_aUAw => Lens' c_aUAw DrawAttributes
polyLinePoints :: HasPolyLine c_aUAw => Lens' c_aUAw [RPoint]

-- | Type mapping the `&lt;path&gt;` svg tag.
data Path
Path :: !DrawAttributes -> ![PathCommand] -> Path

-- | Drawing attributes of the path.
[_pathDrawAttributes] :: Path -> !DrawAttributes

-- | Definition of the path, correspond to the <tt>d</tt> attributes.
[_pathDefinition] :: Path -> ![PathCommand]

-- | Lenses for the Path type
class HasPath c_aUWn where pathDefinition = (.) path pathDefinition pathDrawAttributes = (.) path pathDrawAttributes
path :: HasPath c_aUWn => Lens' c_aUWn Path
pathDefinition :: HasPath c_aUWn => Lens' c_aUWn [PathCommand]
pathDrawAttributes :: HasPath c_aUWn => Lens' c_aUWn DrawAttributes

-- | Define a `&lt;circle&gt;`.
data Circle
Circle :: !DrawAttributes -> !Point -> !Number -> Circle

-- | Drawing attributes of the circle.
[_circleDrawAttributes] :: Circle -> !DrawAttributes

-- | Define the center of the circle, describe the <tt>cx</tt> and
--   <tt>cy</tt> attributes.
[_circleCenter] :: Circle -> !Point

-- | Radius of the circle, equivalent to the <tt>r</tt> attribute.
[_circleRadius] :: Circle -> !Number

-- | Lenses for the Circle type.
class HasCircle c_aWBX where circleCenter = (.) circle circleCenter circleDrawAttributes = (.) circle circleDrawAttributes circleRadius = (.) circle circleRadius
circle :: HasCircle c_aWBX => Lens' c_aWBX Circle
circleCenter :: HasCircle c_aWBX => Lens' c_aWBX Point
circleDrawAttributes :: HasCircle c_aWBX => Lens' c_aWBX DrawAttributes
circleRadius :: HasCircle c_aWBX => Lens' c_aWBX Number

-- | Define an `&lt;ellipse&gt;`
data Ellipse
Ellipse :: !DrawAttributes -> !Point -> !Number -> !Number -> Ellipse

-- | Drawing attributes of the ellipse.
[_ellipseDrawAttributes] :: Ellipse -> !DrawAttributes

-- | Center of the ellipse, map to the <tt>cx</tt> and <tt>cy</tt>
--   attributes.
[_ellipseCenter] :: Ellipse -> !Point

-- | Radius along the X axis, map the <tt>rx</tt> attribute.
[_ellipseXRadius] :: Ellipse -> !Number

-- | Radius along the Y axis, map the <tt>ry</tt> attribute.
[_ellipseYRadius] :: Ellipse -> !Number

-- | Lenses for the ellipse type.
class HasEllipse c_aWHJ where ellipseCenter = (.) ellipse ellipseCenter ellipseDrawAttributes = (.) ellipse ellipseDrawAttributes ellipseXRadius = (.) ellipse ellipseXRadius ellipseYRadius = (.) ellipse ellipseYRadius
ellipse :: HasEllipse c_aWHJ => Lens' c_aWHJ Ellipse
ellipseCenter :: HasEllipse c_aWHJ => Lens' c_aWHJ Point
ellipseDrawAttributes :: HasEllipse c_aWHJ => Lens' c_aWHJ DrawAttributes
ellipseXRadius :: HasEllipse c_aWHJ => Lens' c_aWHJ Number
ellipseYRadius :: HasEllipse c_aWHJ => Lens' c_aWHJ Number

-- | Description of path used in meshgradient tag
data GradientPathCommand

-- | Line to, <tt>L</tt> or <tt>l</tt> Svg path command.
GLine :: !Origin -> !(Maybe RPoint) -> GradientPathCommand

-- | Cubic bezier, <tt>C</tt> or <tt>c</tt> command
GCurve :: !Origin -> !RPoint -> !RPoint -> !(Maybe RPoint) -> GradientPathCommand

-- | <tt>Z</tt> command
GClose :: GradientPathCommand
data MeshGradientType
GradientBilinear :: MeshGradientType
GradientBicubic :: MeshGradientType

-- | Define a `&lt;meshgradient&gt;` tag.
data MeshGradient
MeshGradient :: !DrawAttributes -> !Number -> !Number -> !MeshGradientType -> !CoordinateUnits -> ![Transformation] -> ![MeshGradientRow] -> MeshGradient
[_meshGradientDrawAttributes] :: MeshGradient -> !DrawAttributes

-- | Original x coordinate of the mesh gradient
[_meshGradientX] :: MeshGradient -> !Number

-- | Original y coordinate of the mesh gradient
[_meshGradientY] :: MeshGradient -> !Number

-- | Type of color interpolation to use
[_meshGradientType] :: MeshGradient -> !MeshGradientType

-- | Coordiante system to use
[_meshGradientUnits] :: MeshGradient -> !CoordinateUnits

-- | Optional transform
[_meshGradientTransform] :: MeshGradient -> ![Transformation]

-- | List of patch rows in the the mesh.
[_meshGradientRows] :: MeshGradient -> ![MeshGradientRow]
class HasMeshGradient c_aX1F where meshGradientDrawAttributes = (.) meshGradient meshGradientDrawAttributes meshGradientRows = (.) meshGradient meshGradientRows meshGradientTransform = (.) meshGradient meshGradientTransform meshGradientType = (.) meshGradient meshGradientType meshGradientUnits = (.) meshGradient meshGradientUnits meshGradientX = (.) meshGradient meshGradientX meshGradientY = (.) meshGradient meshGradientY
meshGradient :: HasMeshGradient c_aX1F => Lens' c_aX1F MeshGradient
meshGradientDrawAttributes :: HasMeshGradient c_aX1F => Lens' c_aX1F DrawAttributes
meshGradientRows :: HasMeshGradient c_aX1F => Lens' c_aX1F [MeshGradientRow]
meshGradientTransform :: HasMeshGradient c_aX1F => Lens' c_aX1F [Transformation]
meshGradientType :: HasMeshGradient c_aX1F => Lens' c_aX1F MeshGradientType
meshGradientUnits :: HasMeshGradient c_aX1F => Lens' c_aX1F CoordinateUnits
meshGradientX :: HasMeshGradient c_aX1F => Lens' c_aX1F Number
meshGradientY :: HasMeshGradient c_aX1F => Lens' c_aX1F Number

-- | Define a `&lt;meshrow&gt;` tag.
data MeshGradientRow
MeshGradientRow :: ![MeshGradientPatch] -> MeshGradientRow

-- | List of patch in a row
[_meshGradientRowPatches] :: MeshGradientRow -> ![MeshGradientPatch]
class HasMeshGradientRow c_aWWy where meshGradientRowPatches = (.) meshGradientRow meshGradientRowPatches
meshGradientRow :: HasMeshGradientRow c_aWWy => Lens' c_aWWy MeshGradientRow
meshGradientRowPatches :: HasMeshGradientRow c_aWWy => Lens' c_aWWy [MeshGradientPatch]

-- | Define `&lt;meshpatch&gt;` SVG tag
data MeshGradientPatch
MeshGradientPatch :: ![GradientStop] -> MeshGradientPatch

-- | List of stop, from 2 to 4 in a patch
[_meshGradientPatchStops] :: MeshGradientPatch -> ![GradientStop]
class HasMeshGradientPatch c_aWTH where meshGradientPatchStops = (.) meshGradientPatch meshGradientPatchStops
meshGradientPatch :: HasMeshGradientPatch c_aWTH => Lens' c_aWTH MeshGradientPatch
meshGradientPatchStops :: HasMeshGradientPatch c_aWTH => Lens' c_aWTH [GradientStop]

-- | Define an `&lt;image&gt;` tag.
data Image
Image :: !DrawAttributes -> !Point -> !Number -> !Number -> !String -> !PreserveAspectRatio -> Image

-- | Drawing attributes of the image
[_imageDrawAttributes] :: Image -> !DrawAttributes

-- | Position of the image referenced by its upper left corner.
[_imageCornerUpperLeft] :: Image -> !Point

-- | Image width
[_imageWidth] :: Image -> !Number

-- | Image Height
[_imageHeight] :: Image -> !Number

-- | Image href, pointing to the real image.
[_imageHref] :: Image -> !String

-- | preserveAspectRatio attribute
[_imageAspectRatio] :: Image -> !PreserveAspectRatio

-- | Lenses for the Image type.
class HasImage c_aXbP where imageAspectRatio = (.) image imageAspectRatio imageCornerUpperLeft = (.) image imageCornerUpperLeft imageDrawAttributes = (.) image imageDrawAttributes imageHeight = (.) image imageHeight imageHref = (.) image imageHref imageWidth = (.) image imageWidth
image :: HasImage c_aXbP => Lens' c_aXbP Image
imageAspectRatio :: HasImage c_aXbP => Lens' c_aXbP PreserveAspectRatio
imageCornerUpperLeft :: HasImage c_aXbP => Lens' c_aXbP Point
imageDrawAttributes :: HasImage c_aXbP => Lens' c_aXbP DrawAttributes
imageHeight :: HasImage c_aXbP => Lens' c_aXbP Number
imageHref :: HasImage c_aXbP => Lens' c_aXbP String
imageWidth :: HasImage c_aXbP => Lens' c_aXbP Number

-- | Define an `&lt;use&gt;` for a named content. Every named content can
--   be reused in the document using this element.
data Use
Use :: Point -> String -> Maybe Number -> Maybe Number -> DrawAttributes -> Use

-- | Position where to draw the "used" element. Correspond to the
--   <tt>x</tt> and <tt>y</tt> attributes.
[_useBase] :: Use -> Point

-- | Referenced name, correspond to `xlink:href` attribute.
[_useName] :: Use -> String

-- | Define the width of the region where to place the element. Map to the
--   <a>width</a> attribute.
[_useWidth] :: Use -> Maybe Number

-- | Define the height of the region where to place the element. Map to the
--   <a>height</a> attribute.
[_useHeight] :: Use -> Maybe Number

-- | Use draw attributes.
[_useDrawAttributes] :: Use -> DrawAttributes

-- | Lenses for the Use type.
class HasUse c_aXkz where useBase = (.) use useBase useDrawAttributes = (.) use useDrawAttributes useHeight = (.) use useHeight useName = (.) use useName useWidth = (.) use useWidth
use :: HasUse c_aXkz => Lens' c_aXkz Use
useBase :: HasUse c_aXkz => Lens' c_aXkz Point
useDrawAttributes :: HasUse c_aXkz => Lens' c_aXkz DrawAttributes
useHeight :: HasUse c_aXkz => Lens' c_aXkz (Maybe Number)
useName :: HasUse c_aXkz => Lens' c_aXkz String
useWidth :: HasUse c_aXkz => Lens' c_aXkz (Maybe Number)

-- | Define a SVG group, corresponding `&lt;g&gt;` tag.
data Group a
Group :: !DrawAttributes -> ![a] -> !(Maybe (Double, Double, Double, Double)) -> !PreserveAspectRatio -> Group a

-- | Group drawing attributes, propagated to all of its children.
[_groupDrawAttributes] :: Group a -> !DrawAttributes

-- | Content of the group, corresponding to all the tags inside the
--   `&lt;g&gt;` tag.
[_groupChildren] :: Group a -> ![a]

-- | Mapped to the attribute <a>viewBox</a>
[_groupViewBox] :: Group a -> !(Maybe (Double, Double, Double, Double))

-- | used for symbols only
[_groupAspectRatio] :: Group a -> !PreserveAspectRatio

-- | Lenses associated to the Group type.
class HasGroup c_aWmt a_aUWG | c_aWmt -> a_aUWG where groupAspectRatio = (.) group groupAspectRatio groupChildren = (.) group groupChildren groupDrawAttributes = (.) group groupDrawAttributes groupViewBox = (.) group groupViewBox
group :: HasGroup c_aWmt a_aUWG => Lens' c_aWmt (Group a_aUWG)
groupAspectRatio :: HasGroup c_aWmt a_aUWG => Lens' c_aWmt PreserveAspectRatio
groupChildren :: HasGroup c_aWmt a_aUWG => Lens' c_aWmt [a_aUWG]
groupDrawAttributes :: HasGroup c_aWmt a_aUWG => Lens' c_aWmt DrawAttributes
groupViewBox :: HasGroup c_aWmt a_aUWG => Lens' c_aWmt (Maybe (Double, Double, Double, Double))

-- | Define the `&lt;symbol&gt;` tag, equivalent to a named group.
newtype Symbol a
Symbol :: Group a -> Symbol a
[_groupOfSymbol] :: Symbol a -> Group a

-- | Lenses associated with the Symbol type.
groupOfSymbol :: forall a_aWn1 a_aWtQ. Iso (Symbol a_aWn1) (Symbol a_aWtQ) (Group a_aWn1) (Group a_aWtQ)

-- | Define the global `&lt;tag&gt;` SVG tag.
data Text
Text :: !TextAdjust -> !TextSpan -> Text

-- | Define the <tt>lengthAdjust</tt> attribute.
[_textAdjust] :: Text -> !TextAdjust

-- | Root of the text content.
[_textRoot] :: Text -> !TextSpan

-- | Lenses for the Text type.
class HasText c_aXSy where textAdjust = (.) text textAdjust textRoot = (.) text textRoot
text :: HasText c_aXSy => Lens' c_aXSy Text
textAdjust :: HasText c_aXSy => Lens' c_aXSy TextAdjust
textRoot :: HasText c_aXSy => Lens' c_aXSy TextSpan

-- | Tell where to anchor the text, where the position given is realative
--   to the text.
data TextAnchor

-- | The text with left aligned, or start at the postion If the point is
--   the <a>*</a> then the text will be printed this way:
--   
--   <pre>
--   *THE_TEXT_TO_PRINT
--   </pre>
--   
--   Equivalent to the <tt>start</tt> value.
TextAnchorStart :: TextAnchor

-- | The text is middle aligned, so the text will be at the left and right
--   of the position:
--   
--   <pre>
--   THE_TEXT*TO_PRINT
--   </pre>
--   
--   Equivalent to the <tt>middle</tt> value.
TextAnchorMiddle :: TextAnchor

-- | The text is right aligned.
--   
--   <pre>
--   THE_TEXT_TO_PRINT*
--   </pre>
--   
--   Equivalent to the <tt>end</tt> value.
TextAnchorEnd :: TextAnchor

-- | Little helper to create a SVG text at a given baseline position.
textAt :: Point -> Text -> Text

-- | Describe the `&lt;textpath&gt;` SVG tag.
data TextPath
TextPath :: !Number -> !String -> !TextPathMethod -> !TextPathSpacing -> ![PathCommand] -> TextPath

-- | Define the beginning offset on the path, the <tt>startOffset</tt>
--   attribute.
[_textPathStartOffset] :: TextPath -> !Number

-- | Define the `xlink:href` attribute.
[_textPathName] :: TextPath -> !String

-- | Correspond to the <tt>method</tt> attribute.
[_textPathMethod] :: TextPath -> !TextPathMethod

-- | Correspond to the <tt>spacing</tt> attribute.
[_textPathSpacing] :: TextPath -> !TextPathSpacing

-- | Real content of the path.
[_textPathData] :: TextPath -> ![PathCommand]

-- | Lenses for the TextPath type.
class HasTextPath c_aXLb where textPathData = (.) textPath textPathData textPathMethod = (.) textPath textPathMethod textPathName = (.) textPath textPathName textPathSpacing = (.) textPath textPathSpacing textPathStartOffset = (.) textPath textPathStartOffset
textPath :: HasTextPath c_aXLb => Lens' c_aXLb TextPath
textPathData :: HasTextPath c_aXLb => Lens' c_aXLb [PathCommand]
textPathMethod :: HasTextPath c_aXLb => Lens' c_aXLb TextPathMethod
textPathName :: HasTextPath c_aXLb => Lens' c_aXLb String
textPathSpacing :: HasTextPath c_aXLb => Lens' c_aXLb TextPathSpacing
textPathStartOffset :: HasTextPath c_aXLb => Lens' c_aXLb Number

-- | Describe the content of the <tt>spacing</tt> text path attribute.
data TextPathSpacing

-- | Map to the <tt>exact</tt> value.
TextPathSpacingExact :: TextPathSpacing

-- | Map to the <tt>auto</tt> value.
TextPathSpacingAuto :: TextPathSpacing

-- | Describe the content of the <tt>method</tt> attribute on text path.
data TextPathMethod

-- | Map to the <tt>align</tt> value.
TextPathAlign :: TextPathMethod

-- | Map to the <tt>stretch</tt> value.
TextPathStretch :: TextPathMethod

-- | Define the content of a `&lt;tspan&gt;` tag.
data TextSpanContent

-- | Raw text
SpanText :: !Text -> TextSpanContent

-- | Equivalent to a `&lt;tref&gt;`
SpanTextRef :: !String -> TextSpanContent

-- | Define a `&lt;tspan&gt;`
SpanSub :: !TextSpan -> TextSpanContent

-- | Define a `&lt;tspan&gt;` tag.
data TextSpan
TextSpan :: !TextInfo -> !DrawAttributes -> ![TextSpanContent] -> TextSpan

-- | Placing information for the text.
[_spanInfo] :: TextSpan -> !TextInfo

-- | Drawing attributes for the text span.
[_spanDrawAttributes] :: TextSpan -> !DrawAttributes

-- | Content of the span.
[_spanContent] :: TextSpan -> ![TextSpanContent]

-- | Lenses for the TextSpan type.
class HasTextSpan c_aXDm where spanContent = (.) textSpan spanContent spanDrawAttributes = (.) textSpan spanDrawAttributes spanInfo = (.) textSpan spanInfo
textSpan :: HasTextSpan c_aXDm => Lens' c_aXDm TextSpan
spanContent :: HasTextSpan c_aXDm => Lens' c_aXDm [TextSpanContent]
spanDrawAttributes :: HasTextSpan c_aXDm => Lens' c_aXDm DrawAttributes
spanInfo :: HasTextSpan c_aXDm => Lens' c_aXDm TextInfo

-- | Define position information associated to `&lt;text&gt;` or
--   `&lt;tspan&gt;` svg tag.
data TextInfo
TextInfo :: ![Number] -> ![Number] -> ![Number] -> ![Number] -> ![Double] -> !(Maybe Number) -> TextInfo

-- | <tt>x</tt> attribute.
[_textInfoX] :: TextInfo -> ![Number]

-- | <tt>y</tt> attribute.
[_textInfoY] :: TextInfo -> ![Number]

-- | <tt>dx</tt> attribute.
[_textInfoDX] :: TextInfo -> ![Number]

-- | <tt>dy</tt> attribute.
[_textInfoDY] :: TextInfo -> ![Number]

-- | <a>rotate</a> attribute.
[_textInfoRotate] :: TextInfo -> ![Double]

-- | <tt>textLength</tt> attribute.
[_textInfoLength] :: TextInfo -> !(Maybe Number)

-- | Lenses for the TextInfo type.
class HasTextInfo c_aXtF where textInfoDX = (.) textInfo textInfoDX textInfoDY = (.) textInfo textInfoDY textInfoLength = (.) textInfo textInfoLength textInfoRotate = (.) textInfo textInfoRotate textInfoX = (.) textInfo textInfoX textInfoY = (.) textInfo textInfoY
textInfo :: HasTextInfo c_aXtF => Lens' c_aXtF TextInfo
textInfoDX :: HasTextInfo c_aXtF => Lens' c_aXtF [Number]
textInfoDY :: HasTextInfo c_aXtF => Lens' c_aXtF [Number]
textInfoLength :: HasTextInfo c_aXtF => Lens' c_aXtF (Maybe Number)
textInfoRotate :: HasTextInfo c_aXtF => Lens' c_aXtF [Double]
textInfoX :: HasTextInfo c_aXtF => Lens' c_aXtF [Number]
textInfoY :: HasTextInfo c_aXtF => Lens' c_aXtF [Number]

-- | Define the possible values of the <tt>lengthAdjust</tt> attribute.
data TextAdjust

-- | Value <tt>spacing</tt>
TextAdjustSpacing :: TextAdjust

-- | Value <tt>spacingAndGlyphs</tt>
TextAdjustSpacingAndGlyphs :: TextAdjust

-- | Define the `&lt;marker&gt;` tag.
data Marker
Marker :: DrawAttributes -> !(Number, Number) -> !(Maybe Number) -> !(Maybe Number) -> !(Maybe MarkerOrientation) -> !(Maybe MarkerUnit) -> !(Maybe (Double, Double, Double, Double)) -> !(Maybe Overflow) -> !PreserveAspectRatio -> [Tree] -> Marker

-- | Draw attributes of the marker.
[_markerDrawAttributes] :: Marker -> DrawAttributes

-- | Define the reference point of the marker. correspond to the
--   <tt>refX</tt> and <tt>refY</tt> attributes.
[_markerRefPoint] :: Marker -> !(Number, Number)

-- | Define the width of the marker. Correspond to the <a>markerWidth</a>
--   attribute.
[_markerWidth] :: Marker -> !(Maybe Number)

-- | Define the height of the marker. Correspond to the <a>markerHeight</a>
--   attribute.
[_markerHeight] :: Marker -> !(Maybe Number)

-- | Correspond to the <tt>orient</tt> attribute.
[_markerOrient] :: Marker -> !(Maybe MarkerOrientation)

-- | Map the <a>markerUnits</a> attribute.
[_markerUnits] :: Marker -> !(Maybe MarkerUnit)

-- | Optional viewbox
[_markerViewBox] :: Marker -> !(Maybe (Double, Double, Double, Double))

-- | Elements defining the marker.
[_markerOverflow] :: Marker -> !(Maybe Overflow)

-- | preserveAspectRatio attribute
[_markerAspectRatio] :: Marker -> !PreserveAspectRatio

-- | Elements defining the marker.
[_markerElements] :: Marker -> [Tree]

-- | Define the content of the <a>markerUnits</a> attribute on the Marker.
data Overflow

-- | Value <tt>visible</tt>
OverflowVisible :: Overflow

-- | Value <tt>hidden</tt>
OverflowHidden :: Overflow

-- | Define the orientation, associated to the <tt>orient</tt> attribute on
--   the Marker
data MarkerOrientation

-- | Auto value
OrientationAuto :: MarkerOrientation

-- | Specific angle.
OrientationAngle :: Coord -> MarkerOrientation

-- | Define the content of the <a>markerUnits</a> attribute on the Marker.
data MarkerUnit

-- | Value <a>strokeWidth</a>
MarkerUnitStrokeWidth :: MarkerUnit

-- | Value <tt>userSpaceOnUse</tt>
MarkerUnitUserSpaceOnUse :: MarkerUnit

-- | Lenses for the Marker type.
class HasMarker c_aYaD where markerAspectRatio = (.) marker markerAspectRatio markerDrawAttributes = (.) marker markerDrawAttributes markerElements = (.) marker markerElements markerHeight = (.) marker markerHeight markerOrient = (.) marker markerOrient markerOverflow = (.) marker markerOverflow markerRefPoint = (.) marker markerRefPoint markerUnits = (.) marker markerUnits markerViewBox = (.) marker markerViewBox markerWidth = (.) marker markerWidth
marker :: HasMarker c_aYaD => Lens' c_aYaD Marker
markerAspectRatio :: HasMarker c_aYaD => Lens' c_aYaD PreserveAspectRatio
markerDrawAttributes :: HasMarker c_aYaD => Lens' c_aYaD DrawAttributes
markerElements :: HasMarker c_aYaD => Lens' c_aYaD [Tree]
markerHeight :: HasMarker c_aYaD => Lens' c_aYaD (Maybe Number)
markerOrient :: HasMarker c_aYaD => Lens' c_aYaD (Maybe MarkerOrientation)
markerOverflow :: HasMarker c_aYaD => Lens' c_aYaD (Maybe Overflow)
markerRefPoint :: HasMarker c_aYaD => Lens' c_aYaD (Number, Number)
markerUnits :: HasMarker c_aYaD => Lens' c_aYaD (Maybe MarkerUnit)
markerViewBox :: HasMarker c_aYaD => Lens' c_aYaD (Maybe (Double, Double, Double, Double))
markerWidth :: HasMarker c_aYaD => Lens' c_aYaD (Maybe Number)

-- | Define a color stop for the gradients. Represent the `&lt;stop&gt;`
--   SVG tag.
data GradientStop
GradientStop :: !Float -> !PixelRGBA8 -> !(Maybe GradientPathCommand) -> !(Maybe Float) -> GradientStop

-- | Gradient offset between 0 and 1, correspond to the <tt>offset</tt>
--   attribute.
[_gradientOffset] :: GradientStop -> !Float

-- | Color of the gradient stop. Correspond to the `stop-color` attribute.
[_gradientColor] :: GradientStop -> !PixelRGBA8

-- | Path command used in mesh patch
[_gradientPath] :: GradientStop -> !(Maybe GradientPathCommand)

-- | Stop color opacity
[_gradientOpacity] :: GradientStop -> !(Maybe Float)

-- | Lenses for the GradientStop type.
class HasGradientStop c_aWOk where gradientColor = (.) gradientStop gradientColor gradientOffset = (.) gradientStop gradientOffset gradientOpacity = (.) gradientStop gradientOpacity gradientPath = (.) gradientStop gradientPath
gradientStop :: HasGradientStop c_aWOk => Lens' c_aWOk GradientStop
gradientColor :: HasGradientStop c_aWOk => Lens' c_aWOk PixelRGBA8
gradientOffset :: HasGradientStop c_aWOk => Lens' c_aWOk Float
gradientOpacity :: HasGradientStop c_aWOk => Lens' c_aWOk (Maybe Float)
gradientPath :: HasGradientStop c_aWOk => Lens' c_aWOk (Maybe GradientPathCommand)

-- | Define a `&lt;linearGradient&gt;` tag.
data LinearGradient
LinearGradient :: CoordinateUnits -> Point -> Point -> Spread -> [Transformation] -> [GradientStop] -> LinearGradient

-- | Define coordinate system of the gradient, associated to the
--   <tt>gradientUnits</tt> attribute.
[_linearGradientUnits] :: LinearGradient -> CoordinateUnits

-- | Point defining the beginning of the line gradient. Associated to the
--   <tt>x1</tt> and <tt>y1</tt> attribute.
[_linearGradientStart] :: LinearGradient -> Point

-- | Point defining the end of the line gradient. Associated to the
--   <tt>x2</tt> and <tt>y2</tt> attribute.
[_linearGradientStop] :: LinearGradient -> Point

-- | Define how to handle the values outside the gradient start and stop.
--   Associated to the <tt>spreadMethod</tt> attribute.
[_linearGradientSpread] :: LinearGradient -> Spread

-- | Define the transformation to apply to the gradient points. Associated
--   to the <tt>gradientTransform</tt> attribute.
[_linearGradientTransform] :: LinearGradient -> [Transformation]

-- | List of color stops of the linear gradient.
[_linearGradientStops] :: LinearGradient -> [GradientStop]

-- | Lenses for the LinearGradient type.
class HasLinearGradient c_aYEF where linearGradientSpread = (.) linearGradient linearGradientSpread linearGradientStart = (.) linearGradient linearGradientStart linearGradientStop = (.) linearGradient linearGradientStop linearGradientStops = (.) linearGradient linearGradientStops linearGradientTransform = (.) linearGradient linearGradientTransform linearGradientUnits = (.) linearGradient linearGradientUnits
linearGradient :: HasLinearGradient c_aYEF => Lens' c_aYEF LinearGradient
linearGradientSpread :: HasLinearGradient c_aYEF => Lens' c_aYEF Spread
linearGradientStart :: HasLinearGradient c_aYEF => Lens' c_aYEF Point
linearGradientStop :: HasLinearGradient c_aYEF => Lens' c_aYEF Point
linearGradientStops :: HasLinearGradient c_aYEF => Lens' c_aYEF [GradientStop]
linearGradientTransform :: HasLinearGradient c_aYEF => Lens' c_aYEF [Transformation]
linearGradientUnits :: HasLinearGradient c_aYEF => Lens' c_aYEF CoordinateUnits

-- | Define a `&lt;radialGradient&gt;` tag.
data RadialGradient
RadialGradient :: CoordinateUnits -> Point -> Number -> Maybe Number -> Maybe Number -> Spread -> [Transformation] -> [GradientStop] -> RadialGradient

-- | Define coordinate system of the gradient, associated to the
--   <tt>gradientUnits</tt> attribute.
[_radialGradientUnits] :: RadialGradient -> CoordinateUnits

-- | Center of the radial gradient. Associated to the <tt>cx</tt> and
--   <tt>cy</tt> attributes.
[_radialGradientCenter] :: RadialGradient -> Point

-- | Radius of the radial gradient. Associated to the <tt>r</tt> attribute.
[_radialGradientRadius] :: RadialGradient -> Number

-- | X coordinate of the focus point of the radial gradient. Associated to
--   the <tt>fx</tt> attribute.
[_radialGradientFocusX] :: RadialGradient -> Maybe Number

-- | Y coordinate of the focus point of the radial gradient. Associated to
--   the <tt>fy</tt> attribute.
[_radialGradientFocusY] :: RadialGradient -> Maybe Number

-- | Define how to handle the values outside the gradient start and stop.
--   Associated to the <tt>spreadMethod</tt> attribute.
[_radialGradientSpread] :: RadialGradient -> Spread

-- | Define the transformation to apply to the gradient points. Associated
--   to the <tt>gradientTransform</tt> attribute.
[_radialGradientTransform] :: RadialGradient -> [Transformation]

-- | List of color stops of the radial gradient.
[_radialGradientStops] :: RadialGradient -> [GradientStop]

-- | Lenses for the RadialGradient type.
class HasRadialGradient c_aYOd where radialGradientCenter = (.) radialGradient radialGradientCenter radialGradientFocusX = (.) radialGradient radialGradientFocusX radialGradientFocusY = (.) radialGradient radialGradientFocusY radialGradientRadius = (.) radialGradient radialGradientRadius radialGradientSpread = (.) radialGradient radialGradientSpread radialGradientStops = (.) radialGradient radialGradientStops radialGradientTransform = (.) radialGradient radialGradientTransform radialGradientUnits = (.) radialGradient radialGradientUnits
radialGradient :: HasRadialGradient c_aYOd => Lens' c_aYOd RadialGradient
radialGradientCenter :: HasRadialGradient c_aYOd => Lens' c_aYOd Point
radialGradientFocusX :: HasRadialGradient c_aYOd => Lens' c_aYOd (Maybe Number)
radialGradientFocusY :: HasRadialGradient c_aYOd => Lens' c_aYOd (Maybe Number)
radialGradientRadius :: HasRadialGradient c_aYOd => Lens' c_aYOd Number
radialGradientSpread :: HasRadialGradient c_aYOd => Lens' c_aYOd Spread
radialGradientStops :: HasRadialGradient c_aYOd => Lens' c_aYOd [GradientStop]
radialGradientTransform :: HasRadialGradient c_aYOd => Lens' c_aYOd [Transformation]
radialGradientUnits :: HasRadialGradient c_aYOd => Lens' c_aYOd CoordinateUnits

-- | Define a `&lt;pattern&gt;` tag.
data Pattern
Pattern :: !DrawAttributes -> !(Maybe (Double, Double, Double, Double)) -> !Number -> !Number -> !Point -> !String -> ![Tree] -> !CoordinateUnits -> !PreserveAspectRatio -> !(Maybe [Transformation]) -> Pattern

-- | Pattern drawing attributes.
[_patternDrawAttributes] :: Pattern -> !DrawAttributes

-- | Possible <a>viewBox</a>.
[_patternViewBox] :: Pattern -> !(Maybe (Double, Double, Double, Double))

-- | Width of the pattern tile, mapped to the <a>width</a> attribute
[_patternWidth] :: Pattern -> !Number

-- | Height of the pattern tile, mapped to the <a>height</a> attribute
[_patternHeight] :: Pattern -> !Number

-- | Pattern tile base, mapped to the <tt>x</tt> and <tt>y</tt> attributes.
[_patternPos] :: Pattern -> !Point

-- | Patterns can be chained, so this is a potential reference to another
--   pattern
[_patternHref] :: Pattern -> !String

-- | Elements used in the pattern.
[_patternElements] :: Pattern -> ![Tree]

-- | Define the cordinate system to use for the pattern. Mapped to the
--   <tt>patternUnits</tt> attribute.
[_patternUnit] :: Pattern -> !CoordinateUnits

-- | Value of the "preserveAspectRatio" attribute
[_patternAspectRatio] :: Pattern -> !PreserveAspectRatio

-- | Value of "patternTransform" attribute
[_patternTransform] :: Pattern -> !(Maybe [Transformation])

-- | Lenses for the Patter type.
class HasPattern c_aZfl where patternAspectRatio = (.) pattern patternAspectRatio patternDrawAttributes = (.) pattern patternDrawAttributes patternElements = (.) pattern patternElements patternHeight = (.) pattern patternHeight patternHref = (.) pattern patternHref patternPos = (.) pattern patternPos patternTransform = (.) pattern patternTransform patternUnit = (.) pattern patternUnit patternViewBox = (.) pattern patternViewBox patternWidth = (.) pattern patternWidth
pattern :: HasPattern c_aZfl => Lens' c_aZfl Pattern
patternAspectRatio :: HasPattern c_aZfl => Lens' c_aZfl PreserveAspectRatio
patternDrawAttributes :: HasPattern c_aZfl => Lens' c_aZfl DrawAttributes
patternElements :: HasPattern c_aZfl => Lens' c_aZfl [Tree]
patternHeight :: HasPattern c_aZfl => Lens' c_aZfl Number
patternHref :: HasPattern c_aZfl => Lens' c_aZfl String
patternPos :: HasPattern c_aZfl => Lens' c_aZfl Point
patternTransform :: HasPattern c_aZfl => Lens' c_aZfl (Maybe [Transformation])
patternUnit :: HasPattern c_aZfl => Lens' c_aZfl CoordinateUnits
patternViewBox :: HasPattern c_aZfl => Lens' c_aZfl (Maybe (Double, Double, Double, Double))
patternWidth :: HasPattern c_aZfl => Lens' c_aZfl Number

-- | Define a SVG `&lt;mask&gt;` tag.
data Mask
Mask :: DrawAttributes -> CoordinateUnits -> CoordinateUnits -> Point -> Number -> Number -> [Tree] -> Mask

-- | Drawing attributes of the Mask
[_maskDrawAttributes] :: Mask -> DrawAttributes

-- | Correspond to the <a>maskContentUnits</a> attributes.
[_maskContentUnits] :: Mask -> CoordinateUnits

-- | Mapping to the <a>maskUnits</a> attribute.
[_maskUnits] :: Mask -> CoordinateUnits

-- | Map to the <tt>x</tt> and <tt>y</tt> attributes.
[_maskPosition] :: Mask -> Point

-- | Map to the <a>width</a> attribute
[_maskWidth] :: Mask -> Number

-- | Map to the <a>height</a> attribute.
[_maskHeight] :: Mask -> Number

-- | Children of the `&lt;mask&gt;` tag.
[_maskContent] :: Mask -> [Tree]

-- | Lenses for the Mask type.
class HasMask c_aYZj where maskContent = (.) mask maskContent maskContentUnits = (.) mask maskContentUnits maskDrawAttributes = (.) mask maskDrawAttributes maskHeight = (.) mask maskHeight maskPosition = (.) mask maskPosition maskUnits = (.) mask maskUnits maskWidth = (.) mask maskWidth
mask :: HasMask c_aYZj => Lens' c_aYZj Mask
maskContent :: HasMask c_aYZj => Lens' c_aYZj [Tree]
maskContentUnits :: HasMask c_aYZj => Lens' c_aYZj CoordinateUnits
maskDrawAttributes :: HasMask c_aYZj => Lens' c_aYZj DrawAttributes
maskHeight :: HasMask c_aYZj => Lens' c_aYZj Number
maskPosition :: HasMask c_aYZj => Lens' c_aYZj Point
maskUnits :: HasMask c_aYZj => Lens' c_aYZj CoordinateUnits
maskWidth :: HasMask c_aYZj => Lens' c_aYZj Number

-- | Define a `&lt;clipPath&gt;` tag.
data ClipPath
ClipPath :: DrawAttributes -> CoordinateUnits -> [Tree] -> ClipPath
[_clipPathDrawAttributes] :: ClipPath -> DrawAttributes

-- | Maps to the <a>clipPathUnits</a> attribute
[_clipPathUnits] :: ClipPath -> CoordinateUnits

-- | Maps to the content of the tree
[_clipPathContent] :: ClipPath -> [Tree]

-- | Lenses for the ClipPath type.
class HasClipPath c_aZ8j where clipPathContent = (.) clipPath clipPathContent clipPathDrawAttributes = (.) clipPath clipPathDrawAttributes clipPathUnits = (.) clipPath clipPathUnits
clipPath :: HasClipPath c_aZ8j => Lens' c_aZ8j ClipPath
clipPathContent :: HasClipPath c_aZ8j => Lens' c_aZ8j [Tree]
clipPathDrawAttributes :: HasClipPath c_aZ8j => Lens' c_aZ8j DrawAttributes
clipPathUnits :: HasClipPath c_aZ8j => Lens' c_aZ8j CoordinateUnits

-- | Describe the content of the preserveAspectRatio attribute.
data PreserveAspectRatio
PreserveAspectRatio :: !Bool -> !Alignment -> !(Maybe MeetSlice) -> PreserveAspectRatio
[_aspectRatioDefer] :: PreserveAspectRatio -> !Bool
[_aspectRatioAlign] :: PreserveAspectRatio -> !Alignment
[_aspectRatioMeetSlice] :: PreserveAspectRatio -> !(Maybe MeetSlice)

-- | This type represent the align information of the preserveAspectRatio
--   SVGattribute
data Alignment

-- | "none" value
AlignNone :: Alignment
AlignxMinYMin :: Alignment

-- | "xMidYMin" value
AlignxMidYMin :: Alignment

-- | "xMaxYMin" value
AlignxMaxYMin :: Alignment

-- | "xMinYMid" value
AlignxMinYMid :: Alignment

-- | "xMidYMid" value
AlignxMidYMid :: Alignment

-- | "xMaxYMid" value
AlignxMaxYMid :: Alignment

-- | "xMinYMax" value
AlignxMinYMax :: Alignment

-- | "xMidYMax" value
AlignxMidYMax :: Alignment

-- | "xMaxYMax" value
AlignxMaxYMax :: Alignment

-- | This type represent the "meet or slice" information of the
--   preserveAspectRatio SVGattribute
data MeetSlice
Meet :: MeetSlice
Slice :: MeetSlice

-- | Lenses for the PreserveAspectRatio type
class HasPreserveAspectRatio c_aTAo where aspectRatioAlign = (.) preserveAspectRatio aspectRatioAlign aspectRatioDefer = (.) preserveAspectRatio aspectRatioDefer aspectRatioMeetSlice = (.) preserveAspectRatio aspectRatioMeetSlice
preserveAspectRatio :: HasPreserveAspectRatio c_aTAo => Lens' c_aTAo PreserveAspectRatio
aspectRatioAlign :: HasPreserveAspectRatio c_aTAo => Lens' c_aTAo Alignment
aspectRatioDefer :: HasPreserveAspectRatio c_aTAo => Lens' c_aTAo Bool
aspectRatioMeetSlice :: HasPreserveAspectRatio c_aTAo => Lens' c_aTAo (Maybe MeetSlice)

-- | Tell if the path command is an EllipticalArc.
isPathArc :: PathCommand -> Bool

-- | Tell if a full path contain an EllipticalArc.
isPathWithArc :: Foldable f => f PathCommand -> Bool

-- | For every element of a svg tree, associate it's SVG tag name.
nameOfTree :: Tree -> Text

-- | Map a tree while propagating context information. The function passed
--   in parameter receive a list representing the the path used to go
--   arrive to the current node.
zipTree :: ([[Tree]] -> Tree) -> Tree -> Tree

-- | Helper function mapping every tree element.
mapTree :: (Tree -> Tree) -> Tree -> Tree

-- | Fold all nodes of a SVG tree.
foldTree :: (a -> Tree -> a) -> a -> Tree -> a

-- | This function replace all device dependant units to user units given
--   it's DPI configuration. Preserve percentage and "em" notation.
toUserUnit :: Dpi -> Number -> Number

-- | Helper function to modify inner value of a number
mapNumber :: (Double -> Double) -> Number -> Number
instance Graphics.Svg.Types.HasDocument Graphics.Svg.Types.Document
instance GHC.Base.Monoid Graphics.Svg.Types.DrawAttributes
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.DrawAttributes
instance Graphics.Svg.CssTypes.CssMatcheable Graphics.Svg.Types.Tree
instance GHC.Show.Show Graphics.Svg.Types.Document
instance GHC.Show.Show Graphics.Svg.Types.Element
instance Graphics.Svg.Types.HasPattern Graphics.Svg.Types.Pattern
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Pattern
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Pattern
instance GHC.Show.Show Graphics.Svg.Types.Pattern
instance Graphics.Svg.Types.HasClipPath Graphics.Svg.Types.ClipPath
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.ClipPath
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.ClipPath
instance GHC.Show.Show Graphics.Svg.Types.ClipPath
instance GHC.Classes.Eq Graphics.Svg.Types.ClipPath
instance Graphics.Svg.Types.HasMask Graphics.Svg.Types.Mask
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Mask
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Mask
instance GHC.Show.Show Graphics.Svg.Types.Mask
instance GHC.Classes.Eq Graphics.Svg.Types.Mask
instance Graphics.Svg.Types.HasRadialGradient Graphics.Svg.Types.RadialGradient
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.RadialGradient
instance GHC.Show.Show Graphics.Svg.Types.RadialGradient
instance GHC.Classes.Eq Graphics.Svg.Types.RadialGradient
instance Graphics.Svg.Types.HasLinearGradient Graphics.Svg.Types.LinearGradient
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.LinearGradient
instance GHC.Show.Show Graphics.Svg.Types.LinearGradient
instance GHC.Classes.Eq Graphics.Svg.Types.LinearGradient
instance GHC.Show.Show Graphics.Svg.Types.Spread
instance GHC.Classes.Eq Graphics.Svg.Types.Spread
instance Graphics.Svg.Types.HasMarker Graphics.Svg.Types.Marker
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Marker
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Marker
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Tree
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Tree
instance GHC.Show.Show Graphics.Svg.Types.Marker
instance GHC.Classes.Eq Graphics.Svg.Types.Marker
instance GHC.Show.Show Graphics.Svg.Types.Overflow
instance GHC.Classes.Eq Graphics.Svg.Types.Overflow
instance GHC.Show.Show Graphics.Svg.Types.MarkerUnit
instance GHC.Classes.Eq Graphics.Svg.Types.MarkerUnit
instance GHC.Show.Show Graphics.Svg.Types.MarkerOrientation
instance GHC.Classes.Eq Graphics.Svg.Types.MarkerOrientation
instance GHC.Show.Show Graphics.Svg.Types.Tree
instance GHC.Classes.Eq Graphics.Svg.Types.Tree
instance Graphics.Svg.Types.HasText Graphics.Svg.Types.Text
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Text
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Text
instance GHC.Show.Show Graphics.Svg.Types.Text
instance GHC.Classes.Eq Graphics.Svg.Types.Text
instance GHC.Show.Show Graphics.Svg.Types.TextAdjust
instance GHC.Classes.Eq Graphics.Svg.Types.TextAdjust
instance Graphics.Svg.Types.HasTextPath Graphics.Svg.Types.TextPath
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.TextPath
instance GHC.Show.Show Graphics.Svg.Types.TextPath
instance GHC.Classes.Eq Graphics.Svg.Types.TextPath
instance GHC.Show.Show Graphics.Svg.Types.TextPathSpacing
instance GHC.Classes.Eq Graphics.Svg.Types.TextPathSpacing
instance GHC.Show.Show Graphics.Svg.Types.TextPathMethod
instance GHC.Classes.Eq Graphics.Svg.Types.TextPathMethod
instance Graphics.Svg.Types.HasTextSpan Graphics.Svg.Types.TextSpan
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.TextSpan
instance GHC.Show.Show Graphics.Svg.Types.TextSpanContent
instance GHC.Classes.Eq Graphics.Svg.Types.TextSpanContent
instance GHC.Show.Show Graphics.Svg.Types.TextSpan
instance GHC.Classes.Eq Graphics.Svg.Types.TextSpan
instance Graphics.Svg.Types.HasTextInfo Graphics.Svg.Types.TextInfo
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.TextInfo
instance GHC.Show.Show Graphics.Svg.Types.TextInfo
instance GHC.Classes.Eq Graphics.Svg.Types.TextInfo
instance Graphics.Svg.Types.HasUse Graphics.Svg.Types.Use
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Use
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Use
instance GHC.Base.Monoid Graphics.Svg.Types.TextInfo
instance GHC.Show.Show Graphics.Svg.Types.Use
instance GHC.Classes.Eq Graphics.Svg.Types.Use
instance Graphics.Svg.Types.HasImage Graphics.Svg.Types.Image
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Image
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Image
instance GHC.Show.Show Graphics.Svg.Types.Image
instance GHC.Classes.Eq Graphics.Svg.Types.Image
instance Graphics.Svg.Types.HasMeshGradient Graphics.Svg.Types.MeshGradient
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.MeshGradient
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.MeshGradient
instance GHC.Show.Show Graphics.Svg.Types.MeshGradient
instance GHC.Classes.Eq Graphics.Svg.Types.MeshGradient
instance Graphics.Svg.Types.HasMeshGradientRow Graphics.Svg.Types.MeshGradientRow
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.MeshGradientRow
instance GHC.Show.Show Graphics.Svg.Types.MeshGradientRow
instance GHC.Classes.Eq Graphics.Svg.Types.MeshGradientRow
instance Graphics.Svg.Types.HasMeshGradientPatch Graphics.Svg.Types.MeshGradientPatch
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.MeshGradientPatch
instance GHC.Show.Show Graphics.Svg.Types.MeshGradientPatch
instance GHC.Classes.Eq Graphics.Svg.Types.MeshGradientPatch
instance Graphics.Svg.Types.HasGradientStop Graphics.Svg.Types.GradientStop
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.GradientStop
instance GHC.Show.Show Graphics.Svg.Types.GradientStop
instance GHC.Classes.Eq Graphics.Svg.Types.GradientStop
instance Graphics.Svg.Types.HasEllipse Graphics.Svg.Types.Ellipse
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Ellipse
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Ellipse
instance GHC.Show.Show Graphics.Svg.Types.Ellipse
instance GHC.Classes.Eq Graphics.Svg.Types.Ellipse
instance Graphics.Svg.Types.HasCircle Graphics.Svg.Types.Circle
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Circle
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Circle
instance GHC.Show.Show Graphics.Svg.Types.Circle
instance GHC.Classes.Eq Graphics.Svg.Types.Circle
instance Graphics.Svg.Types.WithDrawAttributes (Graphics.Svg.Types.Symbol a)
instance Graphics.Svg.Types.WithDefaultSvg (Graphics.Svg.Types.Symbol a)
instance GHC.Show.Show a => GHC.Show.Show (Graphics.Svg.Types.Symbol a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Graphics.Svg.Types.Symbol a)
instance Graphics.Svg.Types.HasGroup (Graphics.Svg.Types.Group a0) a0
instance Graphics.Svg.Types.WithDrawAttributes (Graphics.Svg.Types.Group a)
instance Graphics.Svg.Types.WithDefaultSvg (Graphics.Svg.Types.Group a)
instance GHC.Show.Show a => GHC.Show.Show (Graphics.Svg.Types.Group a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Graphics.Svg.Types.Group a)
instance Graphics.Svg.Types.HasPath Graphics.Svg.Types.Path
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Path
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Path
instance GHC.Show.Show Graphics.Svg.Types.Path
instance GHC.Classes.Eq Graphics.Svg.Types.Path
instance Graphics.Svg.Types.HasRectangle Graphics.Svg.Types.Rectangle
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Rectangle
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Rectangle
instance GHC.Show.Show Graphics.Svg.Types.Rectangle
instance GHC.Classes.Eq Graphics.Svg.Types.Rectangle
instance Graphics.Svg.Types.HasLine Graphics.Svg.Types.Line
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Line
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Line
instance GHC.Show.Show Graphics.Svg.Types.Line
instance GHC.Classes.Eq Graphics.Svg.Types.Line
instance Graphics.Svg.Types.HasPolygon Graphics.Svg.Types.Polygon
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.Polygon
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.Polygon
instance GHC.Show.Show Graphics.Svg.Types.Polygon
instance GHC.Classes.Eq Graphics.Svg.Types.Polygon
instance Graphics.Svg.Types.HasPolyLine Graphics.Svg.Types.PolyLine
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.PolyLine
instance Graphics.Svg.Types.WithDrawAttributes Graphics.Svg.Types.PolyLine
instance GHC.Show.Show Graphics.Svg.Types.PolyLine
instance GHC.Classes.Eq Graphics.Svg.Types.PolyLine
instance Graphics.Svg.Types.HasDrawAttributes Graphics.Svg.Types.DrawAttributes
instance GHC.Show.Show Graphics.Svg.Types.DrawAttributes
instance GHC.Classes.Eq Graphics.Svg.Types.DrawAttributes
instance GHC.Show.Show Graphics.Svg.Types.ElementRef
instance GHC.Classes.Eq Graphics.Svg.Types.ElementRef
instance GHC.Show.Show Graphics.Svg.Types.TextAnchor
instance GHC.Classes.Eq Graphics.Svg.Types.TextAnchor
instance GHC.Show.Show Graphics.Svg.Types.FontStyle
instance GHC.Classes.Eq Graphics.Svg.Types.FontStyle
instance GHC.Show.Show Graphics.Svg.Types.Transformation
instance GHC.Classes.Eq Graphics.Svg.Types.Transformation
instance GHC.Show.Show Graphics.Svg.Types.FillRule
instance GHC.Classes.Eq Graphics.Svg.Types.FillRule
instance GHC.Show.Show Graphics.Svg.Types.Texture
instance GHC.Classes.Eq Graphics.Svg.Types.Texture
instance GHC.Show.Show Graphics.Svg.Types.LineJoin
instance GHC.Classes.Eq Graphics.Svg.Types.LineJoin
instance GHC.Show.Show Graphics.Svg.Types.Cap
instance GHC.Classes.Eq Graphics.Svg.Types.Cap
instance Graphics.Svg.Types.HasPreserveAspectRatio Graphics.Svg.Types.PreserveAspectRatio
instance Graphics.Svg.Types.WithDefaultSvg Graphics.Svg.Types.PreserveAspectRatio
instance GHC.Show.Show Graphics.Svg.Types.PreserveAspectRatio
instance GHC.Classes.Eq Graphics.Svg.Types.PreserveAspectRatio
instance GHC.Show.Show Graphics.Svg.Types.MeetSlice
instance GHC.Classes.Eq Graphics.Svg.Types.MeetSlice
instance GHC.Show.Show Graphics.Svg.Types.Alignment
instance GHC.Classes.Eq Graphics.Svg.Types.Alignment
instance GHC.Show.Show Graphics.Svg.Types.CoordinateUnits
instance GHC.Classes.Eq Graphics.Svg.Types.CoordinateUnits
instance GHC.Show.Show Graphics.Svg.Types.GradientPathCommand
instance GHC.Classes.Eq Graphics.Svg.Types.GradientPathCommand
instance GHC.Show.Show Graphics.Svg.Types.PathCommand
instance GHC.Classes.Eq Graphics.Svg.Types.PathCommand
instance GHC.Show.Show Graphics.Svg.Types.MeshGradientType
instance GHC.Classes.Eq Graphics.Svg.Types.MeshGradientType
instance GHC.Show.Show Graphics.Svg.Types.Origin
instance GHC.Classes.Eq Graphics.Svg.Types.Origin


-- | Module providing basic input/output for the SVG document, for document
--   building, please refer to Graphics.Svg.Types.
module Graphics.Svg

-- | Try to load an svg file on disc and parse it as a SVG Document.
loadSvgFile :: FilePath -> IO (Maybe Document)

-- | Parse an in-memory SVG file
parseSvgFile :: FilePath -> ByteString -> Maybe Document

-- | Transform a SVG document to a XML node.
xmlOfDocument :: Document -> Element

-- | Save a svg Document on a file on disk.
saveXmlFile :: FilePath -> Document -> IO ()

-- | Rewrite a SVG Tree using some CSS rules.
--   
--   This action will propagate the definition of the css directly in each
--   matched element.
cssApply :: [CssRule] -> Tree -> Tree

-- | Parse CSS text into rules.
cssRulesOfText :: Text -> [CssRule]

-- | Rewrite the document by applying the CSS rules embedded inside it.
applyCSSRules :: Document -> Document

-- | For every <a>use</a> tag, try to resolve the geometry associated with
--   it and place it in the scene Tree. It is important to resolve the
--   <a>use</a> tag before applying the CSS rules, as some rules may apply
--   some elements matching the children of "use".
resolveUses :: Document -> Document
