Copyright | (c) 2015 Siniša Biđin |
---|---|
License | MIT |
Maintainer | sinisa@bidin.eu |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Bindings to SDL2_gfx
's primitives drawing functionality. These functions
should allow you to render various simple shapes such as lines, ellipses or
polygons.
All of the monadic functions within this module are capable of throwing an
SDLException
if they encounter an error.
- type Pos = V2 CInt
- type Color = V4 Word8
- pixel :: MonadIO m => Renderer -> Pos -> Color -> m ()
- line :: MonadIO m => Renderer -> Pos -> Pos -> Color -> m ()
- type Length = CInt
- horizontalLine :: MonadIO m => Renderer -> Pos -> Length -> Color -> m ()
- verticalLine :: MonadIO m => Renderer -> Pos -> Length -> Color -> m ()
- smoothLine :: MonadIO m => Renderer -> Pos -> Pos -> Color -> m ()
- type Width = CInt
- thickLine :: MonadIO m => Renderer -> Pos -> Pos -> Width -> Color -> m ()
- triangle :: MonadIO m => Renderer -> Pos -> Pos -> Pos -> Color -> m ()
- smoothTriangle :: MonadIO m => Renderer -> Pos -> Pos -> Pos -> Color -> m ()
- fillTriangle :: MonadIO m => Renderer -> Pos -> Pos -> Pos -> Color -> m ()
- rectangle :: MonadIO m => Renderer -> Pos -> Pos -> Color -> m ()
- type Radius = CInt
- roundRectangle :: MonadIO m => Renderer -> Pos -> Pos -> Radius -> Color -> m ()
- fillRectangle :: MonadIO m => Renderer -> Pos -> Pos -> Color -> m ()
- fillRoundRectangle :: MonadIO m => Renderer -> Pos -> Pos -> Radius -> Color -> m ()
- type Start = CInt
- type End = CInt
- arc :: MonadIO m => Renderer -> Pos -> Radius -> Start -> End -> Color -> m ()
- circle :: MonadIO m => Renderer -> Pos -> Radius -> Color -> m ()
- smoothCircle :: MonadIO m => Renderer -> Pos -> Radius -> Color -> m ()
- fillCircle :: MonadIO m => Renderer -> Pos -> Radius -> Color -> m ()
- ellipse :: MonadIO m => Renderer -> Pos -> Radius -> Radius -> Color -> m ()
- smoothEllipse :: MonadIO m => Renderer -> Pos -> Radius -> Radius -> Color -> m ()
- fillEllipse :: MonadIO m => Renderer -> Pos -> Radius -> Radius -> Color -> m ()
- pie :: MonadIO m => Renderer -> Pos -> Radius -> Start -> End -> Color -> m ()
- fillPie :: MonadIO m => Renderer -> Pos -> Radius -> Start -> End -> Color -> m ()
- type Steps = CInt
- bezier :: MonadIO m => Renderer -> Vector Int16 -> Vector Int16 -> Steps -> Color -> m ()
- polygon :: MonadIO m => Renderer -> Vector Int16 -> Vector Int16 -> Color -> m ()
- smoothPolygon :: MonadIO m => Renderer -> Vector Int16 -> Vector Int16 -> Color -> m ()
- fillPolygon :: MonadIO m => Renderer -> Vector Int16 -> Vector Int16 -> Color -> m ()
Pixels
pixel :: MonadIO m => Renderer -> Pos -> Color -> m () Source #
Renders a single pixel at a given position.
Lines
line :: MonadIO m => Renderer -> Pos -> Pos -> Color -> m () Source #
Renders a line between two points.
smoothLine :: MonadIO m => Renderer -> Pos -> Pos -> Color -> m () Source #
Renders an anti-aliased line between two points.
Triangles
triangle :: MonadIO m => Renderer -> Pos -> Pos -> Pos -> Color -> m () Source #
Render a transparent triangle, its edges being of a given Color
.
smoothTriangle :: MonadIO m => Renderer -> Pos -> Pos -> Pos -> Color -> m () Source #
Same as triangle
, but the edges are anti-aliased.
Rectangles
rectangle :: MonadIO m => Renderer -> Pos -> Pos -> Color -> m () Source #
Renders a transparent rectangle spanning two points, bordered by a line of
a given Color
.
fillRoundRectangle :: MonadIO m => Renderer -> Pos -> Pos -> Radius -> Color -> m () Source #
Same as roundRectangle
, but the rectangle is filled by the given Color
.
Curves
circle :: MonadIO m => Renderer -> Pos -> Radius -> Color -> m () Source #
Renders a transparent circle, bordered by a line of a given Color
.
smoothCircle :: MonadIO m => Renderer -> Pos -> Radius -> Color -> m () Source #
Same as circle
, but the border is anti-aliased.
smoothEllipse :: MonadIO m => Renderer -> Pos -> Radius -> Radius -> Color -> m () Source #
Same as ellipse
, but makes the border anti-aliased.
How many interpolation steps when rendering a bezier curve?
The higher this is, the smoother the curve and more resource-intensive the render.
bezier :: MonadIO m => Renderer -> Vector Int16 -> Vector Int16 -> Steps -> Color -> m () Source #
Renders a bezier curve of a given Color
.
The input vectors contain the bezier curve's point locations on the x and
y-axis, respectively. The input vectors need to be the same length, and
those lengths must be at least 3, otherwise bezier
might raise an
SDLException
. The same applies for the number of
interpolation Steps
: it must be at least 2.
Polygons
polygon :: MonadIO m => Renderer -> Vector Int16 -> Vector Int16 -> Color -> m () Source #
Render a transparent polygon, its edges of a given Color
.
The input vectors contain the points' locations on the x and y-axis,
respectively. The input vectors need to be the of the same length, and the
lengths must be at least 3, otherwise polygon
might raise an
SDLException
.