    {-# LANGUAGE OverloadedStrings #-}
    {-# LANGUAGE FlexibleContexts  #-}

    -------------------------------------------------------------------------------
    -- |
    -- Module      :  Graphics.Svg.Elements
    -- Copyright   :  (c) 2015 Jeffrey Rosenbluth
    -- License     :  BSD-style (see LICENSE)
    -- Maintainer  :  jeffrey.rosenbluth@gmail.com
    --
    -- SVG elements.
    --
    -------------------------------------------------------------------------------

    module Graphics.Svg.Elements where

    import Graphics.Svg.Core

    -- | @DOCTYPE@ element
    doctype :: Element
    doctype :: Element
    doctype = Text -> Element
    makeElementDoctype "?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n    \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\""

    -- | @svg@ element + svg 1.1 Attribute
    svg11_:: Element -> Element
    svg11_ :: Element -> Element
    svg11_ = [Attribute] -> Element -> Element
    forall result. Term result => [Attribute] -> result
    svg_ [ Text -> Text -> Attribute
    makeAttribute "xmlns" "http://www.w3.org/2000/svg"
                  , Text -> Text -> Attribute
    makeAttribute "xmlns:xlink" "http://www.w3.org/1999/xlink"
                  , Text -> Text -> Attribute
    makeAttribute "version" "1.1" ]

    -- | @a@ element
    a_ :: Term result => [Attribute] -> result
    a_ :: [Attribute] -> result
    a_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "a"

    -- | @altglyph@ element
    {-# DEPRECATED altGlyph_ "Removed from web standards." #-}
    altGlyph_ :: Term result => [Attribute] -> result
    altGlyph_ :: [Attribute] -> result
    altGlyph_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "altGlyph"

    -- | @altglyphdef@ element
    {-# DEPRECATED altGlyphDef_ "Removed from web standards." #-}
    altGlyphDef_ :: Term result => [Attribute] -> result
    altGlyphDef_ :: [Attribute] -> result
    altGlyphDef_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "altGlyphDef"

    -- | @altglyphitem@ element
    {-# DEPRECATED altGlyphItem_ "Removed from web standards." #-}
    altGlyphItem_ :: Term result => [Attribute] -> result
    altGlyphItem_ :: [Attribute] -> result
    altGlyphItem_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "altGlyphItem"

    -- | @animate@ element
    animate_ :: Term result => [Attribute] -> result
    animate_ :: [Attribute] -> result
    animate_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "animate"

    -- | @animatecolor@ element
    {-# DEPRECATED animateColor_ "Removed from web standards." #-}
    animateColor_ :: Term result => [Attribute] -> result
    animateColor_ :: [Attribute] -> result
    animateColor_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "animateColor"

    -- | @animatemotion@ element
    animateMotion_ :: Term result => [Attribute] -> result
    animateMotion_ :: [Attribute] -> result
    animateMotion_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "animateMotion"

    -- | @animatetransform@ element
    animateTransform_ :: Term result => [Attribute] -> result
    animateTransform_ :: [Attribute] -> result
    animateTransform_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "animateTransform"

    -- | @circle@ element
    circle_ :: Term result => [Attribute] -> result
    circle_ :: [Attribute] -> result
    circle_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "circle"

    -- | @clipPath@ element or attribute
    clipPath_ :: Term result => [Attribute] -> result
    clipPath_ :: [Attribute] -> result
    clipPath_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "clipPath"

    -- | @colorProfile@ element
    colorProfile_ :: Term result => [Attribute] -> result
    colorProfile_ :: [Attribute] -> result
    colorProfile_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "color-profile"

    -- | @cursor@ element
    cursor_ :: Term result => [Attribute] -> result
    cursor_ :: [Attribute] -> result
    cursor_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "cursor"

    -- | @defs@ element
    defs_ :: Term result => [Attribute] -> result
    defs_ :: [Attribute] -> result
    defs_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "defs"

    -- | @desc@ element
    desc_ :: Term result => [Attribute] -> result
    desc_ :: [Attribute] -> result
    desc_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "desc"

    -- | @ellipse@ element
    ellipse_ :: Term result => [Attribute] -> result
    ellipse_ :: [Attribute] -> result
    ellipse_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "ellipse"

    -- | @feblend@ element
    feBlend_ :: Term result => [Attribute] -> result
    feBlend_ :: [Attribute] -> result
    feBlend_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feBlend"

    -- | @fecolormatrix@ element
    feColorMatrix_ :: Term result => [Attribute] -> result
    feColorMatrix_ :: [Attribute] -> result
    feColorMatrix_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feColorMatrix"

    -- | @fecomponenttransfer@ element
    feComponentTransfer_ :: Term result => [Attribute] -> result
    feComponentTransfer_ :: [Attribute] -> result
    feComponentTransfer_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feComponentTransfer"

    -- | @fecomposite@ element
    feComposite_ :: Term result => [Attribute] -> result
    feComposite_ :: [Attribute] -> result
    feComposite_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feComposite"

    -- | @feconvolvematrix@ element
    feConvolveMatrix_ :: Term result => [Attribute] -> result
    feConvolveMatrix_ :: [Attribute] -> result
    feConvolveMatrix_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feConvolveMatrix"

    -- | @fediffuselighting@ element
    feDiffuseLighting_ :: Term result => [Attribute] -> result
    feDiffuseLighting_ :: [Attribute] -> result
    feDiffuseLighting_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feDiffuseLighting"

    -- | @fedisplacementmap@ element
    feDisplacementMap_ :: Term result => [Attribute] -> result
    feDisplacementMap_ :: [Attribute] -> result
    feDisplacementMap_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feDisplacementMap"

    -- | @fedistantlight@ element
    feDistantLight_ :: Term result => [Attribute] -> result
    feDistantLight_ :: [Attribute] -> result
    feDistantLight_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feDistantLight"

    -- | @feflood@ element
    feFlood_ :: Term result => [Attribute] -> result
    feFlood_ :: [Attribute] -> result
    feFlood_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feFlood"

    -- | @fefunca@ element
    feFuncA_ :: Term result => [Attribute] -> result
    feFuncA_ :: [Attribute] -> result
    feFuncA_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feFuncA"

    -- | @fefuncb@ element
    feFuncB_ :: Term result => [Attribute] -> result
    feFuncB_ :: [Attribute] -> result
    feFuncB_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feFuncB"

    -- | @fefuncg@ element
    feFuncG_ :: Term result => [Attribute] -> result
    feFuncG_ :: [Attribute] -> result
    feFuncG_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feFuncG"

    -- | @fefuncr@ element
    feFuncR_ :: Term result => [Attribute] -> result
    feFuncR_ :: [Attribute] -> result
    feFuncR_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feFuncR"

    -- | @fegaussianblur@ element
    feGaussianBlur_ :: Term result => [Attribute] -> result
    feGaussianBlur_ :: [Attribute] -> result
    feGaussianBlur_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feGaussianBlur"

    -- | @feimage@ element
    feImage_ :: Term result => [Attribute] -> result
    feImage_ :: [Attribute] -> result
    feImage_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feImage"

    -- | @femerge@ element
    feMerge_ :: Term result => [Attribute] -> result
    feMerge_ :: [Attribute] -> result
    feMerge_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feMerge"

    -- | @femergenode@ element
    feMergeNode_ :: Term result => [Attribute] -> result
    feMergeNode_ :: [Attribute] -> result
    feMergeNode_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feMergeNode"

    -- | @femorphology@ element
    feMorphology_ :: Term result => [Attribute] -> result
    feMorphology_ :: [Attribute] -> result
    feMorphology_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feMorphology"

    -- | @feoffset@ element
    feOffset_ :: Term result => [Attribute] -> result
    feOffset_ :: [Attribute] -> result
    feOffset_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feOffset"

    -- | @fepointlight@ element
    fePointLight_ :: Term result => [Attribute] -> result
    fePointLight_ :: [Attribute] -> result
    fePointLight_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "fePointLight"

    -- | @fespecularlighting@ element
    feSpecularLighting_ :: Term result => [Attribute] -> result
    feSpecularLighting_ :: [Attribute] -> result
    feSpecularLighting_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feSpecularLighting"

    -- | @fespotlight@ element
    feSpotLight_ :: Term result => [Attribute] -> result
    feSpotLight_ :: [Attribute] -> result
    feSpotLight_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feSpotLight"

    -- | @fetile@ element
    feTile_ :: Term result => [Attribute] -> result
    feTile_ :: [Attribute] -> result
    feTile_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feTile"

    -- | @feturbulence@ element
    feTurbulence_ :: Term result => [Attribute] -> result
    feTurbulence_ :: [Attribute] -> result
    feTurbulence_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "feTurbulence"

    -- | @filter_@ element
    filter_ :: Term result => [Attribute] -> result
    filter_ :: [Attribute] -> result
    filter_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "filter"

    -- | @font@ element
    font_ :: Term result => [Attribute] -> result
    font_ :: [Attribute] -> result
    font_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "font"

    -- | @fontFace@ element
    fontFace_ :: Term result => [Attribute] -> result
    fontFace_ :: [Attribute] -> result
    fontFace_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "font-face"

    -- | @fontFaceFormat@ element
    fontFaceFormat_ :: [Attribute] -> Element
    fontFaceFormat_ :: [Attribute] -> Element
    fontFaceFormat_ = Element -> [Attribute] -> Element
    with (Element -> [Attribute] -> Element)
    -> Element -> [Attribute] -> Element
    forall a b. (a -> b) -> a -> b
    $ Text -> Element
    makeElementNoEnd "font-face-format"

    -- | @fontFaceName@ element
    fontFaceName_ :: [Attribute] -> Element
    fontFaceName_ :: [Attribute] -> Element
    fontFaceName_ = Element -> [Attribute] -> Element
    with (Element -> [Attribute] -> Element)
    -> Element -> [Attribute] -> Element
    forall a b. (a -> b) -> a -> b
    $ Text -> Element
    makeElementNoEnd "font-face-name"

    -- | @fontFaceSrc@ element
    fontFaceSrc_ :: Term result => [Attribute] -> result
    fontFaceSrc_ :: [Attribute] -> result
    fontFaceSrc_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "font-face-src"

    -- | @fontFaceUri@ element
    fontFaceUri_ :: Term result => [Attribute] -> result
    fontFaceUri_ :: [Attribute] -> result
    fontFaceUri_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "font-face-uri"

    -- | @foreignobject@ element
    foreignObject_ :: Term result => [Attribute] -> result
    foreignObject_ :: [Attribute] -> result
    foreignObject_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "foreignObject"

    -- | @g@ element
    g_ :: Term result => [Attribute] -> result
    g_ :: [Attribute] -> result
    g_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "g"

    -- | @glyph@ element or attribute
    glyph_ :: Term result => [Attribute] -> result
    glyph_ :: [Attribute] -> result
    glyph_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "glyph"

    -- | @glyphref@ element
    glyphRef_ :: [Attribute] -> Element
    glyphRef_ :: [Attribute] -> Element
    glyphRef_ = Element -> [Attribute] -> Element
    with (Element -> [Attribute] -> Element)
    -> Element -> [Attribute] -> Element
    forall a b. (a -> b) -> a -> b
    $ Text -> Element
    makeElementNoEnd "glyphRef"

    -- | @hkern@ element
    hkern_ :: [Attribute] -> Element
    hkern_ :: [Attribute] -> Element
    hkern_ = Element -> [Attribute] -> Element
    with (Element -> [Attribute] -> Element)
    -> Element -> [Attribute] -> Element
    forall a b. (a -> b) -> a -> b
    $ Text -> Element
    makeElementNoEnd "hkern"

    -- | @image@ element
    image_ :: Term result => [Attribute] -> result
    image_ :: [Attribute] -> result
    image_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "image"

    -- | @line@ element
    line_ :: Term result => [Attribute] -> result
    line_ :: [Attribute] -> result
    line_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "line"

    -- | @lineargradient@ element
    linearGradient_ :: Term result => [Attribute] -> result
    linearGradient_ :: [Attribute] -> result
    linearGradient_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "linearGradient"

    -- | @marker@ element
    marker_ :: Term result => [Attribute] -> result
    marker_ :: [Attribute] -> result
    marker_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "marker"

    -- | @mask@ element or attribute
    mask_ :: Term result => [Attribute] -> result
    mask_ :: [Attribute] -> result
    mask_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "mask"

    -- | @metadata@ element
    metadata_ :: Term result => [Attribute] -> result
    metadata_ :: [Attribute] -> result
    metadata_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "metadata"

    -- | @missingGlyph@ element
    missingGlyph_ :: Term result => [Attribute] -> result
    missingGlyph_ :: [Attribute] -> result
    missingGlyph_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "missing-glyph"

    -- | @mpath@ element
    mpath_ :: Term result => [Attribute] -> result
    mpath_ :: [Attribute] -> result
    mpath_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "mpath"

    -- | @path@ element
    path_ :: Term result => [Attribute] -> result
    path_ :: [Attribute] -> result
    path_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "path"

    -- | @pattern@ element
    pattern_ :: Term result => [Attribute] -> result
    pattern_ :: [Attribute] -> result
    pattern_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "pattern"

    -- | @polygon@ element
    polygon_ :: Term result => [Attribute] -> result
    polygon_ :: [Attribute] -> result
    polygon_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "polygon"

    -- | @polyline@ element
    polyline_ :: Term result => [Attribute] -> result
    polyline_ :: [Attribute] -> result
    polyline_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "polyline"

    -- | @radialgradient@ element
    radialGradient_ :: Term result => [Attribute] -> result
    radialGradient_ :: [Attribute] -> result
    radialGradient_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "radialGradient"

    -- | @rect@ element
    rect_ :: Term result => [Attribute] -> result
    rect_ :: [Attribute] -> result
    rect_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "rect"

    -- | @script@ element
    script_ :: Term result => [Attribute] -> result
    script_ :: [Attribute] -> result
    script_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "script"

    -- | @set@ element
    set_ :: Term result => [Attribute] -> result
    set_ :: [Attribute] -> result
    set_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "set"

    -- | @stop@ element
    stop_ :: Term result => [Attribute] -> result
    stop_ :: [Attribute] -> result
    stop_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "stop"

    -- | @style@ element
    style_ :: Term result => [Attribute] -> result
    style_ :: [Attribute] -> result
    style_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "style"

    -- | @svg@ element
    svg_ :: Term result => [Attribute] -> result
    svg_ :: [Attribute] -> result
    svg_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "svg"

    -- | @switch@ element
    switch_ :: Term result => [Attribute] -> result
    switch_ :: [Attribute] -> result
    switch_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "switch"

    -- | @symbol@ element
    symbol_ :: Term result => [Attribute] -> result
    symbol_ :: [Attribute] -> result
    symbol_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "symbol"

    -- | @text_@ element
    text_ :: Term result => [Attribute] -> result
    text_ :: [Attribute] -> result
    text_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "text"

    -- | @textpath@ element
    textPath_ :: Term result => [Attribute] -> result
    textPath_ :: [Attribute] -> result
    textPath_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "textPath"

    -- | @title@ element
    title_ :: Term result => [Attribute] -> result
    title_ :: [Attribute] -> result
    title_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "title"

    -- | @tref@ element
    tref_ :: Term result => [Attribute] -> result
    tref_ :: [Attribute] -> result
    tref_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "tref"

    -- | @tspan@ element
    tspan_ :: Term result => [Attribute] -> result
    tspan_ :: [Attribute] -> result
    tspan_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "tspan"

    -- | @use@ element
    use_ :: Term result => [Attribute] -> result
    use_ :: [Attribute] -> result
    use_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "use"

    -- | @view@ element
    view_ :: Term result => [Attribute] -> result
    view_ :: [Attribute] -> result
    view_ = Text -> [Attribute] -> result
    forall result. Term result => Text -> [Attribute] -> result
    term "view"

    -- | @vkern@ element
    vkern_ :: [Attribute] -> Element
    vkern_ :: [Attribute] -> Element
    vkern_ = Element -> [Attribute] -> Element
    with (Element -> [Attribute] -> Element)
    -> Element -> [Attribute] -> Element
    forall a b. (a -> b) -> a -> b
    $ Text -> Element
    makeElementNoEnd "vkern"