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


-- | DSL for building SVG.
--   
--   Fast, easy to write SVG.
@package svg-builder
@version 0.1.1


-- | svg-builder Core types and functions.
module Graphics.Svg.Core

-- | Attribute name value.
data Attribute

-- | Type of an SVG element.
data Element

-- | Things that can be converted to SVG elements.
class ToElement a
toElement :: ToElement a => a -> Element

-- | Used to make specific SVG element builders.
class Term result

-- | Used for constructing elements e.g. <tt>term "circle"</tt> yields
--   <tt>circle_</tt>.
term :: Term result => Text -> [Attribute] -> result

-- | Make an attribute.
makeAttribute :: Text -> Text -> Attribute

-- | Make an SVG element builder
makeElement :: Text -> Element -> Element

-- | Make an SVG element with no end tag, contains only attributes.
makeElementNoEnd :: Text -> Element

-- | Make an SVG doctype element builder.
makeElementDoctype :: Text -> Element

-- | Add a list of attributes to an element
with :: Element -> [Attribute] -> Element

-- | Render a <a>Element</a> to lazy bytestring.
renderBS :: Element -> ByteString

-- | Render a <a>Element</a> to a file.
renderToFile :: FilePath -> Element -> IO ()

-- | Reder an <a>Element</a> to lazy text.
renderText :: Element -> Text
instance GHC.Classes.Eq Graphics.Svg.Core.Attribute
instance GHC.Show.Show Graphics.Svg.Core.Attribute
instance (e GHC.Types.~ Graphics.Svg.Core.Element) => Graphics.Svg.Core.Term (e -> Graphics.Svg.Core.Element)
instance Graphics.Svg.Core.Term Graphics.Svg.Core.Element
instance Data.String.IsString Graphics.Svg.Core.Element
instance Graphics.Svg.Core.ToElement GHC.Base.String
instance Graphics.Svg.Core.ToElement Data.Text.Internal.Text
instance Graphics.Svg.Core.ToElement Data.Text.Internal.Lazy.Text
instance GHC.Show.Show Graphics.Svg.Core.Element
instance GHC.Base.Semigroup Graphics.Svg.Core.Element
instance GHC.Base.Monoid Graphics.Svg.Core.Element
instance Data.Hashable.Class.Hashable Graphics.Svg.Core.Attribute


-- | SVG Attributes.
module Graphics.Svg.Attributes

-- | Infix version of <a>bindAttr</a> Each argument is set using
--   <a>&lt;&lt;-</a>, the <a>bindAttr</a> function or <a>-&gt;&gt;</a>.
--   
--   <pre>
--   [Width_ &lt;&lt;- "100%", Height_ &lt;&lt;- "100%", Fill_ &lt;&lt;- "red"]
--   </pre>
(<<-) :: AttrTag -> Text -> Attribute
infix 4 <<-

-- | Infix version of <a>bindAttr</a> with it's arguments reversed.
--   
--   <pre>
--   ["100%" -&gt;&gt; Width_, "100%" -&gt;&gt; Height_, "red" -&gt;&gt; Fill_]
--   </pre>
(->>) :: Text -> AttrTag -> Attribute
infix 4 ->>

-- | Make an <a>Attribute</a> from it's value constructor and it's text
--   value. by combining an <a>AttrTag</a> with it's value.
--   
--   <pre>
--   [bindAttr Width "100%, bindAttr Height "100%", bindAttr Fill "red"]
--   </pre>
bindAttr :: AttrTag -> Text -> Attribute
data AttrTag
Accent_height_ :: AttrTag
Accumulate_ :: AttrTag
Additive_ :: AttrTag
Alignment_baseline_ :: AttrTag
Alphabetic_ :: AttrTag
Amplitude_ :: AttrTag
Arabic_form_ :: AttrTag
Ascent_ :: AttrTag
AttributeName_ :: AttrTag
AttributeType_ :: AttrTag
Azimuth_ :: AttrTag
BaseFrequency_ :: AttrTag
Baseprofile_ :: AttrTag
Baseline_shift_ :: AttrTag
Bbox_ :: AttrTag
Begin_ :: AttrTag
Bias_ :: AttrTag
By_ :: AttrTag
CalcMode_ :: AttrTag
Cap_height_ :: AttrTag
Class_ :: AttrTag
Clip_ :: AttrTag
Clip_path_ :: AttrTag
Clip_rule_ :: AttrTag
ClipPathUnits_ :: AttrTag
Color_ :: AttrTag
Color_interpolation_ :: AttrTag
Color_interpolation_filters_ :: AttrTag
Color_profile_ :: AttrTag
Color_rendering_ :: AttrTag
ContentScriptType_ :: AttrTag
ContentStyleType_ :: AttrTag
Cursor_ :: AttrTag
Cx_ :: AttrTag
Cy_ :: AttrTag
D_ :: AttrTag
Descent_ :: AttrTag
DiffuseConstant_ :: AttrTag
Direction_ :: AttrTag
Display_ :: AttrTag
Divisor_ :: AttrTag
Dominant_baseline_ :: AttrTag
Dur_ :: AttrTag
Dx_ :: AttrTag
Dy_ :: AttrTag
EdgeMode_ :: AttrTag
Elevation_ :: AttrTag
Enable_background_ :: AttrTag
End_ :: AttrTag
Exponent_ :: AttrTag
ExternalResourcesRequired_ :: AttrTag
Fill_ :: AttrTag
Fill_opacity_ :: AttrTag
Fill_rule_ :: AttrTag
Filter_ :: AttrTag
FilterRes_ :: AttrTag
FilterUnits_ :: AttrTag
Flood_color_ :: AttrTag
Flood_opacity_ :: AttrTag
Font_family_ :: AttrTag
Font_size_ :: AttrTag
Font_size_adjust_ :: AttrTag
Font_stretch_ :: AttrTag
Font_style_ :: AttrTag
Font_variant_ :: AttrTag
Font_weight_ :: AttrTag
Format_ :: AttrTag
From_ :: AttrTag
Fx_ :: AttrTag
Fy_ :: AttrTag
G1_ :: AttrTag
G2_ :: AttrTag
Glyph_name_ :: AttrTag
Glyph_orientation_horizontal_ :: AttrTag
Glyph_orientation_vertical_ :: AttrTag
GradientTransform_ :: AttrTag
GradientUnits_ :: AttrTag
Hanging_ :: AttrTag
Height_ :: AttrTag
Horiz_adv_x_ :: AttrTag
Horiz_origin_x_ :: AttrTag
Horiz_origin_y_ :: AttrTag
Id_ :: AttrTag
Ideographic_ :: AttrTag
Image_rendering_ :: AttrTag
In_ :: AttrTag
In2_ :: AttrTag
Intercept_ :: AttrTag
K_ :: AttrTag
K1_ :: AttrTag
K2_ :: AttrTag
K3_ :: AttrTag
K4_ :: AttrTag
KernelMatrix_ :: AttrTag
KernelUnitLength_ :: AttrTag
Kerning_ :: AttrTag
KeyPoints_ :: AttrTag
KeySplines_ :: AttrTag
KeyTimes_ :: AttrTag
Lang_ :: AttrTag
LengthAdjust_ :: AttrTag
Letter_spacing_ :: AttrTag
Lighting_color_ :: AttrTag
LimitingConeAngle_ :: AttrTag
Local_ :: AttrTag
Marker_end_ :: AttrTag
Marker_mid_ :: AttrTag
Marker_start_ :: AttrTag
MarkerHeight_ :: AttrTag
MarkerUnits_ :: AttrTag
MarkerWidth_ :: AttrTag
MaskContentUnits_ :: AttrTag
MaskUnits_ :: AttrTag
Mathematical_ :: AttrTag
Max_ :: AttrTag
Media_ :: AttrTag
Method_ :: AttrTag
Min_ :: AttrTag
Mode_ :: AttrTag
Name_ :: AttrTag
NumOctaves_ :: AttrTag
Offset_ :: AttrTag
Onabort_ :: AttrTag
Onactivate_ :: AttrTag
Onbegin_ :: AttrTag
Onclick_ :: AttrTag
Onend_ :: AttrTag
Onerror_ :: AttrTag
Onfocusin_ :: AttrTag
Onfocusout_ :: AttrTag
Onload_ :: AttrTag
Onmousedown_ :: AttrTag
Onmousemove_ :: AttrTag
Onmouseout_ :: AttrTag
Onmouseover_ :: AttrTag
Onmouseup_ :: AttrTag
Onrepeat_ :: AttrTag
Onresize_ :: AttrTag
Onscroll_ :: AttrTag
Onunload_ :: AttrTag
Onzoom_ :: AttrTag
Opacity_ :: AttrTag
Operator_ :: AttrTag
Order_ :: AttrTag
Orient_ :: AttrTag
Orientation_ :: AttrTag
Origin_ :: AttrTag
Overflow_ :: AttrTag
Overline_position_ :: AttrTag
Overline_thickness_ :: AttrTag
Panose_1_ :: AttrTag
Paint_order_ :: AttrTag
Path_ :: AttrTag
PathLength_ :: AttrTag
PatternContentUnits_ :: AttrTag
PatternTransform_ :: AttrTag
PatternUnits_ :: AttrTag
Pointer_events_ :: AttrTag
Points_ :: AttrTag
PointsAtX_ :: AttrTag
PointsAtY_ :: AttrTag
PointsAtZ_ :: AttrTag
PreserveAlpha_ :: AttrTag
PreserveAspectRatio_ :: AttrTag
PrimitiveUnits_ :: AttrTag
R_ :: AttrTag
Radius_ :: AttrTag
RefX_ :: AttrTag
RefY_ :: AttrTag
Rendering_intent_ :: AttrTag
RepeatCount_ :: AttrTag
RepeatDur_ :: AttrTag
RequiredExtensions_ :: AttrTag
RequiredFeatures_ :: AttrTag
Restart_ :: AttrTag
Result_ :: AttrTag
Rotate_ :: AttrTag
Rx_ :: AttrTag
Ry_ :: AttrTag
Scale_ :: AttrTag
Seed_ :: AttrTag
Shape_rendering_ :: AttrTag
Slope_ :: AttrTag
Spacing_ :: AttrTag
SpecularConstant_ :: AttrTag
SpecularExponent_ :: AttrTag
SpreadMethod_ :: AttrTag
StartOffset_ :: AttrTag
StdDeviation_ :: AttrTag
Stemh_ :: AttrTag
Stemv_ :: AttrTag
StitchTiles_ :: AttrTag
Stop_color_ :: AttrTag
Stop_opacity_ :: AttrTag
Strikethrough_position_ :: AttrTag
Strikethrough_thickness_ :: AttrTag
String_ :: AttrTag
Stroke_ :: AttrTag
Stroke_dasharray_ :: AttrTag
Stroke_dashoffset_ :: AttrTag
Stroke_linecap_ :: AttrTag
Stroke_linejoin_ :: AttrTag
Stroke_miterlimit_ :: AttrTag
Stroke_opacity_ :: AttrTag
Stroke_width_ :: AttrTag
Style_ :: AttrTag
SurfaceScale_ :: AttrTag
SystemLanguage_ :: AttrTag
TableValues_ :: AttrTag
Target_ :: AttrTag
TargetX_ :: AttrTag
TargetY_ :: AttrTag
Text_anchor_ :: AttrTag
Text_decoration_ :: AttrTag
Text_rendering_ :: AttrTag
TextLength_ :: AttrTag
To_ :: AttrTag
Transform_ :: AttrTag
Type_ :: AttrTag
U1_ :: AttrTag
U2_ :: AttrTag
Underline_position_ :: AttrTag
Underline_thickness_ :: AttrTag
Unicode_ :: AttrTag
Unicode_bidi_ :: AttrTag
Unicode_range_ :: AttrTag
Units_per_em_ :: AttrTag
V_alphabetic_ :: AttrTag
V_hanging_ :: AttrTag
V_ideographic_ :: AttrTag
V_mathematical_ :: AttrTag
Values_ :: AttrTag
Version_ :: AttrTag
Vert_adv_y_ :: AttrTag
Vert_origin_x_ :: AttrTag
Vert_origin_y_ :: AttrTag
ViewBox_ :: AttrTag
ViewTarget_ :: AttrTag
Visibility_ :: AttrTag
Width_ :: AttrTag
Widths_ :: AttrTag
Word_spacing_ :: AttrTag
Writing_mode_ :: AttrTag
X_ :: AttrTag
X_height_ :: AttrTag
X1_ :: AttrTag
X2_ :: AttrTag
XChannelSelector_ :: AttrTag
XlinkActuate_ :: AttrTag
XlinkArcrole_ :: AttrTag
XlinkHref_ :: AttrTag
XlinkRole_ :: AttrTag
XlinkShow_ :: AttrTag
XlinkTitle_ :: AttrTag
XlinkType_ :: AttrTag
XmlBase_ :: AttrTag
XmlLang_ :: AttrTag
XmlSpace_ :: AttrTag
Y_ :: AttrTag
Y1_ :: AttrTag
Y2_ :: AttrTag
YChannelselector_ :: AttrTag
Z_ :: AttrTag
ZoomAndPan_ :: AttrTag


-- | SVG elements.
module Graphics.Svg.Elements

-- | <tt>DOCTYPE</tt> element
doctype :: Element

-- | <tt>svg</tt> element + svg 1.1 Attribute
svg11_ :: Element -> Element

-- | <tt>a</tt> element
a_ :: Term result => [Attribute] -> result

-- | <tt>altglyph</tt> element

-- | <i>Deprecated: Removed from web standards.</i>
altGlyph_ :: Term result => [Attribute] -> result

-- | <tt>altglyphdef</tt> element

-- | <i>Deprecated: Removed from web standards.</i>
altGlyphDef_ :: Term result => [Attribute] -> result

-- | <tt>altglyphitem</tt> element

-- | <i>Deprecated: Removed from web standards.</i>
altGlyphItem_ :: Term result => [Attribute] -> result

-- | <tt>animate</tt> element
animate_ :: Term result => [Attribute] -> result

-- | <tt>animatecolor</tt> element

-- | <i>Deprecated: Removed from web standards.</i>
animateColor_ :: Term result => [Attribute] -> result

-- | <tt>animatemotion</tt> element
animateMotion_ :: Term result => [Attribute] -> result

-- | <tt>animatetransform</tt> element
animateTransform_ :: Term result => [Attribute] -> result

-- | <tt>circle</tt> element
circle_ :: Term result => [Attribute] -> result

-- | <tt>clipPath</tt> element or attribute
clipPath_ :: Term result => [Attribute] -> result

-- | <tt>colorProfile</tt> element
colorProfile_ :: Term result => [Attribute] -> result

-- | <tt>cursor</tt> element
cursor_ :: Term result => [Attribute] -> result

-- | <tt>defs</tt> element
defs_ :: Term result => [Attribute] -> result

-- | <tt>desc</tt> element
desc_ :: Term result => [Attribute] -> result

-- | <tt>ellipse</tt> element
ellipse_ :: Term result => [Attribute] -> result

-- | <tt>feblend</tt> element
feBlend_ :: Term result => [Attribute] -> result

-- | <tt>fecolormatrix</tt> element
feColorMatrix_ :: Term result => [Attribute] -> result

-- | <tt>fecomponenttransfer</tt> element
feComponentTransfer_ :: Term result => [Attribute] -> result

-- | <tt>fecomposite</tt> element
feComposite_ :: Term result => [Attribute] -> result

-- | <tt>feconvolvematrix</tt> element
feConvolveMatrix_ :: Term result => [Attribute] -> result

-- | <tt>fediffuselighting</tt> element
feDiffuseLighting_ :: Term result => [Attribute] -> result

-- | <tt>fedisplacementmap</tt> element
feDisplacementMap_ :: Term result => [Attribute] -> result

-- | <tt>fedistantlight</tt> element
feDistantLight_ :: Term result => [Attribute] -> result

-- | <tt>feflood</tt> element
feFlood_ :: Term result => [Attribute] -> result

-- | <tt>fefunca</tt> element
feFuncA_ :: Term result => [Attribute] -> result

-- | <tt>fefuncb</tt> element
feFuncB_ :: Term result => [Attribute] -> result

-- | <tt>fefuncg</tt> element
feFuncG_ :: Term result => [Attribute] -> result

-- | <tt>fefuncr</tt> element
feFuncR_ :: Term result => [Attribute] -> result

-- | <tt>fegaussianblur</tt> element
feGaussianBlur_ :: Term result => [Attribute] -> result

-- | <tt>feimage</tt> element
feImage_ :: Term result => [Attribute] -> result

-- | <tt>femerge</tt> element
feMerge_ :: Term result => [Attribute] -> result

-- | <tt>femergenode</tt> element
feMergeNode_ :: Term result => [Attribute] -> result

-- | <tt>femorphology</tt> element
feMorphology_ :: Term result => [Attribute] -> result

-- | <tt>feoffset</tt> element
feOffset_ :: Term result => [Attribute] -> result

-- | <tt>fepointlight</tt> element
fePointLight_ :: Term result => [Attribute] -> result

-- | <tt>fespecularlighting</tt> element
feSpecularLighting_ :: Term result => [Attribute] -> result

-- | <tt>fespotlight</tt> element
feSpotLight_ :: Term result => [Attribute] -> result

-- | <tt>fetile</tt> element
feTile_ :: Term result => [Attribute] -> result

-- | <tt>feturbulence</tt> element
feTurbulence_ :: Term result => [Attribute] -> result

-- | <tt>filter_</tt> element
filter_ :: Term result => [Attribute] -> result

-- | <tt>font</tt> element
font_ :: Term result => [Attribute] -> result

-- | <tt>fontFace</tt> element
fontFace_ :: Term result => [Attribute] -> result

-- | <tt>fontFaceFormat</tt> element
fontFaceFormat_ :: [Attribute] -> Element

-- | <tt>fontFaceName</tt> element
fontFaceName_ :: [Attribute] -> Element

-- | <tt>fontFaceSrc</tt> element
fontFaceSrc_ :: Term result => [Attribute] -> result

-- | <tt>fontFaceUri</tt> element
fontFaceUri_ :: Term result => [Attribute] -> result

-- | <tt>foreignobject</tt> element
foreignObject_ :: Term result => [Attribute] -> result

-- | <tt>g</tt> element
g_ :: Term result => [Attribute] -> result

-- | <tt>glyph</tt> element or attribute
glyph_ :: Term result => [Attribute] -> result

-- | <tt>glyphref</tt> element
glyphRef_ :: [Attribute] -> Element

-- | <tt>hkern</tt> element
hkern_ :: [Attribute] -> Element

-- | <tt>image</tt> element
image_ :: Term result => [Attribute] -> result

-- | <tt>line</tt> element
line_ :: Term result => [Attribute] -> result

-- | <tt>lineargradient</tt> element
linearGradient_ :: Term result => [Attribute] -> result

-- | <tt>marker</tt> element
marker_ :: Term result => [Attribute] -> result

-- | <tt>mask</tt> element or attribute
mask_ :: Term result => [Attribute] -> result

-- | <tt>metadata</tt> element
metadata_ :: Term result => [Attribute] -> result

-- | <tt>missingGlyph</tt> element
missingGlyph_ :: Term result => [Attribute] -> result

-- | <tt>mpath</tt> element
mpath_ :: Term result => [Attribute] -> result

-- | <tt>path</tt> element
path_ :: Term result => [Attribute] -> result

-- | <tt>pattern</tt> element
pattern_ :: Term result => [Attribute] -> result

-- | <tt>polygon</tt> element
polygon_ :: Term result => [Attribute] -> result

-- | <tt>polyline</tt> element
polyline_ :: Term result => [Attribute] -> result

-- | <tt>radialgradient</tt> element
radialGradient_ :: Term result => [Attribute] -> result

-- | <tt>rect</tt> element
rect_ :: Term result => [Attribute] -> result

-- | <tt>script</tt> element
script_ :: Term result => [Attribute] -> result

-- | <tt>set</tt> element
set_ :: Term result => [Attribute] -> result

-- | <tt>stop</tt> element
stop_ :: Term result => [Attribute] -> result

-- | <tt>style</tt> element
style_ :: Term result => [Attribute] -> result

-- | <tt>svg</tt> element
svg_ :: Term result => [Attribute] -> result

-- | <tt>switch</tt> element
switch_ :: Term result => [Attribute] -> result

-- | <tt>symbol</tt> element
symbol_ :: Term result => [Attribute] -> result

-- | <tt>text_</tt> element
text_ :: Term result => [Attribute] -> result

-- | <tt>textpath</tt> element
textPath_ :: Term result => [Attribute] -> result

-- | <tt>title</tt> element
title_ :: Term result => [Attribute] -> result

-- | <tt>tref</tt> element
tref_ :: Term result => [Attribute] -> result

-- | <tt>tspan</tt> element
tspan_ :: Term result => [Attribute] -> result

-- | <tt>use</tt> element
use_ :: Term result => [Attribute] -> result

-- | <tt>view</tt> element
view_ :: Term result => [Attribute] -> result

-- | <tt>vkern</tt> element
vkern_ :: [Attribute] -> Element


-- | Utility functions to help create SVG path attributes, and transforms.
module Graphics.Svg.Path

-- | Convert a number to Text.
toText :: RealFloat a => a -> Text

-- | moveto (absolute)
mA :: RealFloat a => a -> a -> Text

-- | moveto (relative)
mR :: RealFloat a => a -> a -> Text

-- | lineto (absolute)
lA :: RealFloat a => a -> a -> Text

-- | lineto (relative)
lR :: RealFloat a => a -> a -> Text

-- | horizontal lineto (absolute)
hA :: RealFloat a => a -> Text

-- | horizontal lineto (relative)
hR :: RealFloat a => a -> Text

-- | vertical lineto (absolute)
vA :: RealFloat a => a -> Text

-- | vertical lineto (relative)
vR :: RealFloat a => a -> Text

-- | Cubic Bezier curve (absolute)
cA :: RealFloat a => a -> a -> a -> a -> a -> a -> Text

-- | Cubic Bezier curve (relative)
cR :: RealFloat a => a -> a -> a -> a -> a -> a -> Text

-- | Smooth Cubic Bezier curve (absolute)
sA :: RealFloat a => a -> a -> a -> a -> Text

-- | Smooth Cubic Bezier curve (relative)
sR :: RealFloat a => a -> a -> a -> a -> Text

-- | Quadratic Bezier curve (absolute)
qA :: RealFloat a => a -> a -> a -> a -> Text

-- | Quadratic Bezier curve (relative)
qR :: RealFloat a => a -> a -> a -> a -> Text

-- | Smooth Quadratic Bezier curve (absolute)
tA :: RealFloat a => a -> a -> Text

-- | Smooth Quadratic Bezier curve (relative)
tR :: RealFloat a => a -> a -> Text

-- | Arc (absolute)
aA :: RealFloat a => a -> a -> a -> a -> a -> a -> a -> Text

-- | Arc (relative)
aR :: RealFloat a => a -> a -> a -> a -> a -> a -> a -> Text

-- | closepath
z :: Text

-- | SVG Transform components | Specifies a translation by <tt>x</tt> and
--   <tt>y</tt>
translate :: RealFloat a => a -> a -> Text

-- | Specifies a scale operation by <tt>x</tt> and <tt>y</tt>
scale :: RealFloat a => a -> a -> Text

-- | Specifies a rotation by <tt>rotate-angle</tt> degrees
rotate :: RealFloat a => a -> Text

-- | Specifies a rotation by <tt>rotate-angle</tt> degrees about the given
--   time <tt>rx,ry</tt>
rotateAround :: RealFloat a => a -> a -> a -> Text

-- | Skew tansformation along x-axis
skewX :: RealFloat a => a -> Text

-- | Skew tansformation along y-axis
skewY :: RealFloat a => a -> Text

-- | Specifies a transform in the form of a transformation matrix
matrix :: RealFloat a => a -> a -> a -> a -> a -> a -> Text


-- | DSL for creating SVG.
module Graphics.Svg

-- | An associative operation.
--   
--   <pre>
--   &gt;&gt;&gt; [1,2,3] &lt;&gt; [4,5,6]
--   [1,2,3,4,5,6]
--   </pre>
(<>) :: Semigroup a => a -> a -> a
infixr 6 <>
prettyText :: Element -> Text
