-- | A picture in gelatin's context is a collection of vertices, organized into -- geometries of triangles, beziers, triangle strips, triangle fans and polylines. -- The vertices of these pictures can be anything, but the currently available -- backends already support these vertices: -- -- * @(V2 Float, V4 Float)@, ie. colored points in 2d space -- * @(V2 Float, V2 Float)@, ie. textured points in 2d space -- module Gelatin.Picture ( -- * Defining Vertex Data VerticesT(..) , runVerticesT , Vertices , runVertices , tri , bez , to , addVertexList , segment , mapVertices -- * Defining Geometry (Vertex Data + Drawing Operation) , RawGeometry(..) , mapRawGeometry , GeometryT(..) , runGeometryT , Geometry , runGeometry , triangles , beziers , strip , fan , line , mapGeometry -- * The Picture API , PictureT , runPictureT , Picture , runPicture , setRawGeometry , getRawGeometry , setGeometry , setStroke , getStroke , setTextures , getTextures , setRenderingOptions , getRenderingOptions -- * An example of creating a Picture -- $creating -- * Making shapes , module S -- * Measuring Pictures (2d) , mapPictureVertices , pictureBounds2 , pictureSize2 , pictureOrigin2 , pictureCenter2 -- * Measuring Pictures (3d) , pictureBounds3 , pictureSize3 , pictureOrigin3 , pictureCenter3 -- * Underlying PictureData Exported for renderers , RenderingOption(..) , PictureData(..) ) where import Gelatin.Picture.Internal import Gelatin.Picture.Shapes as S -- $creating -- Here is an example of drawing two colored beziers into a 2d picture using -- colors from the 'Gelatin.Core.Color' module: -- -- > bezierPicture :: Picture tex (V2 Float, V4 Float) () -- > bezierPicture = setGeometry $ beziers $ do -- > bez (V2 0 0, white) (V2 200 0, blue) (V2 200 200, green) -- > bez (V2 400 200, white) (V2 400 0, blue) (V2 200 0, green) -- -- Here is the rendering of that picture after being compiled by a backend: -- -- <> -- -- As you can see the two beziers have different fill directions, the first is -- fill inner while the second is fill outer. This is determined by the bezier's -- winding.