reanimate-svg-0.12.2.2: src/Graphics/SvgTree/Types/Basic.hs
{-# LANGUAGE DeriveGeneric #-}
{-
Home of basic types without fields.
-}
module Graphics.SvgTree.Types.Basic where
import Codec.Picture (PixelRGBA8 (..))
import GHC.Generics (Generic)
import Graphics.SvgTree.CssTypes (Number)
import Linear (V2)
-- | Basic coordinate type.
type Coord = Double
-- | Real Point, fully determined and
-- independent of the rendering context.
type RPoint = V2 Coord
-- FIXME: Use 'V2 Number' instead of tuple
-- | Possibly context dependant point.
type Point = (Number, Number)
-- | Tell if a path command is absolute (in the current
-- user coordiante) or relative to the previous point.
data Origin
= OriginAbsolute -- ^ Next point in absolute coordinate
| OriginRelative -- ^ Next point relative to the previous
deriving (Eq, Show, Generic)
data MeshGradientType
= GradientBilinear
| GradientBicubic
deriving (Eq, Show, Generic)
-- | Defines the possible values of various *units attributes
-- used in the definition of the gradients and masks.
data CoordinateUnits
= CoordUserSpace -- ^ `userSpaceOnUse` value
| CoordBoundingBox -- ^ `objectBoundingBox` value
deriving (Eq, Show, Generic)
-- | This type represents the align information of the
-- `preserveAspectRatio` SVGattribute
data Alignment
= AlignNone -- ^ `none` value
| AlignxMinYMin -- ^ `xMinYMin` value
| AlignxMidYMin -- ^ `xMidYMin` value
| AlignxMaxYMin -- ^ `xMaxYMin` value
| AlignxMinYMid -- ^ `xMinYMid` value
| AlignxMidYMid -- ^ `xMidYMid` value
| AlignxMaxYMid -- ^ `xMaxYMid` value
| AlignxMinYMax -- ^ `xMinYMax` value
| AlignxMidYMax -- ^ `xMidYMax` value
| AlignxMaxYMax -- ^ `xMaxYMax` value
deriving (Eq, Show, Generic)
-- | This type represents the "meet or slice" information
-- of the `preserveAspectRatio` SVG attribute
data MeetSlice = Meet | Slice
deriving (Eq, Show, Generic)
-- | Describes how the line should be terminated
-- when stroked. Describes the values of the
-- `stroke-linecap` attribute.
-- See `_strokeLineCap`
data Cap
= CapRound -- ^ End with a round (`round` value)
| CapButt -- ^ Define straight just at the end (`butt` value)
| CapSquare -- ^ Straight further of the ends (`square` value)
deriving (Eq, Show, Generic)
-- | Defines the possible values of the `stroke-linejoin`
-- attribute.
-- see `_strokeLineJoin`
data LineJoin
= JoinMiter -- ^ `miter` value
| JoinBevel -- ^ `bevel` value
| JoinRound -- ^ `round` value
deriving (Eq, Show, Generic)
-- | Describes the different values which can be used
-- in the `fill` or `stroke` attributes.
data Texture
= ColorRef PixelRGBA8 -- ^ Direct solid color (#rrggbb, #rgb)
| TextureRef String -- ^ Link to a complex texture (url(#name))
| FillNone -- ^ Equivalent to the `none` value.
deriving (Eq, Show, Generic)
-- | Describe the possible filling algorithms.
-- Map the values of the `fill-rule` attributes.
data FillRule
= FillEvenOdd -- ^ Corresponds to the `evenodd` value.
| FillNonZero -- ^ Corresponds to the `nonzero` value.
deriving (Eq, Show, Generic)