Safe Haskell | None |
---|---|
Language | Haskell2010 |
- newtype VerticesT a m b = Vertices {
- unVertices :: StateT (Vector a) m b
- type Vertices a = VerticesT a Identity ()
- snoc3 :: Unbox a => Vector a -> a -> a -> a -> Vector a
- tri :: (Monad m, Unbox a) => a -> a -> a -> VerticesT a m ()
- bez :: (Monad m, Unbox a) => a -> a -> a -> VerticesT a m ()
- to :: (Monad m, Unbox a) => a -> VerticesT a m ()
- segment :: (Monad m, Unbox a) => a -> a -> VerticesT a m ()
- addVertexList :: (Monad m, Unbox a) => [a] -> VerticesT a m ()
- runVerticesT :: (Monad m, Unbox a) => VerticesT a m b -> m (Vector a)
- runVertices :: Unbox a => Vertices a -> Vector a
- mapVertices :: (Monad m, Unbox a, Unbox c) => (a -> c) -> VerticesT a m b -> VerticesT c m ()
- data RawGeometry a
- = RawTriangles (Vector a)
- | RawBeziers (Vector a)
- | RawTriangleStrip (Vector a)
- | RawTriangleFan (Vector a)
- | RawLine (Vector a)
- mapRawGeometry :: (Unbox a, Unbox b) => (a -> b) -> RawGeometry a -> RawGeometry b
- newtype GeometryT a m b = Geometry {
- unGeometry :: StateT (Vector (RawGeometry a)) m b
- type Geometry a = GeometryT a Identity ()
- add :: Monad m => RawGeometry a -> StateT (Vector (RawGeometry a)) m ()
- triangles :: (Unbox a, Monad m) => VerticesT a m () -> GeometryT a m ()
- beziers :: (Monad m, Unbox a) => VerticesT a m () -> GeometryT a m ()
- strip :: (Monad m, Unbox a) => VerticesT a m () -> GeometryT a m ()
- fan :: (Monad m, Unbox a) => VerticesT a m () -> GeometryT a m ()
- line :: (Monad m, Unbox a) => VerticesT a m () -> GeometryT a m ()
- runGeometryT :: Monad m => GeometryT a m b -> m (Vector (RawGeometry a))
- runGeometry :: Geometry a -> Vector (RawGeometry a)
- mapGeometry :: (Monad m, Unbox a, Unbox c) => (a -> c) -> GeometryT a m b -> GeometryT c m ()
- vertexData :: RawGeometry v -> Vector v
- data RenderingOption = StencilMaskOption
- data PictureData texture vertex = PictureData {
- _picDataGeometry :: Vector (RawGeometry vertex)
- _picDataStroke :: [StrokeAttr]
- _picDataTextures :: [texture]
- _picDataOptions :: [RenderingOption]
- picDataTextures :: forall texture vertex texture. Lens (PictureData texture vertex) (PictureData texture vertex) [texture] [texture]
- picDataStroke :: forall texture vertex. Lens' (PictureData texture vertex) [StrokeAttr]
- picDataOptions :: forall texture vertex. Lens' (PictureData texture vertex) [RenderingOption]
- picDataGeometry :: forall texture vertex vertex. Lens (PictureData texture vertex) (PictureData texture vertex) (Vector (RawGeometry vertex)) (Vector (RawGeometry vertex))
- emptyPictureData :: PictureData t v
- bothToFrac :: (Real a, Fractional b) => (V2 a, V2 a) -> (V2 b, V2 b)
- type PictureT tex vert = StateT (PictureData tex vert)
- runPictureT :: PictureT t v m a -> m (a, PictureData t v)
- type Picture t v = PictureT t v Identity
- runPicture :: Picture t v a -> (a, PictureData t v)
- setRawGeometry :: Monad m => Vector (RawGeometry v) -> PictureT t v m ()
- getRawGeometry :: Monad m => PictureT t v m (Vector (RawGeometry v))
- setGeometry :: Monad m => GeometryT v m () -> PictureT t v m ()
- setStroke :: Monad m => [StrokeAttr] -> PictureT t v m ()
- getStroke :: Monad m => PictureT t v m [StrokeAttr]
- setTextures :: Monad m => [t] -> PictureT t v m ()
- getTextures :: Monad m => PictureT t v m [t]
- setRenderingOptions :: Monad m => [RenderingOption] -> PictureT t v m ()
- getRenderingOptions :: Monad m => PictureT t v m [RenderingOption]
- mapPictureVertices :: (Monad m, Unbox v, Unbox s) => (v -> s) -> PictureT t v m (Vector s)
- pictureBounds2 :: (Monad m, Unbox v) => (v -> V2 Float) -> PictureT t v m (V2 Float, V2 Float)
- pictureBounds3 :: (Monad m, Unbox v) => (v -> V3 Float) -> PictureT t v m BCube
- pictureSize2 :: (Monad m, Unbox v) => (v -> V2 Float) -> PictureT t v m (V2 Float)
- pictureSize3 :: (Monad m, Unbox v) => (v -> V3 Float) -> PictureT t v m (V3 Float)
- pictureOrigin2 :: (Monad m, Unbox v) => (v -> V2 Float) -> PictureT t v m (V2 Float)
- pictureOrigin3 :: (Monad m, Unbox v) => (v -> V3 Float) -> PictureT t v m (V3 Float)
- pictureCenter2 :: (Monad m, Unbox v) => (v -> V2 Float) -> PictureT t v m (V2 Float)
- pictureCenter3 :: (Monad m, Unbox v) => (v -> V3 Float) -> PictureT t v m (V3 Float)
Documentation
newtype VerticesT a m b Source #
A monad transformer for defining geometry.
Vertices | |
|
snoc3 :: Unbox a => Vector a -> a -> a -> a -> Vector a Source #
Append three elements to a Vector
.
O(n + 3)
bez :: (Monad m, Unbox a) => a -> a -> a -> VerticesT a m () Source #
Add a bezier of vertices.
This is an alias of tri
but looks better in the context
of drawing beziers.
runVerticesT :: (Monad m, Unbox a) => VerticesT a m b -> m (Vector a) Source #
Extract the raw Vector
of vertices monadically.
mapVertices :: (Monad m, Unbox a, Unbox c) => (a -> c) -> VerticesT a m b -> VerticesT c m () Source #
Map all the vertices in the computation.
data RawGeometry a Source #
Mixed drawing types roughly corresponding to OpenGL's draw modes.
RawTriangles (Vector a) | A collection of points known to be triangles. |
RawBeziers (Vector a) | A collection of points known to be beziers. |
RawTriangleStrip (Vector a) | A collection of points known to be a triangle strip. |
RawTriangleFan (Vector a) | A collection of points known to be a triangle fan. |
RawLine (Vector a) | A collection of points known to be a polyline. *Note* that in the future polylines will be expressed in terms of the other constructors. |
mapRawGeometry :: (Unbox a, Unbox b) => (a -> b) -> RawGeometry a -> RawGeometry b Source #
Map all the vertices within a RawGeometry
.
newtype GeometryT a m b Source #
A monad transformer for defining collections of geometries, specifically mixed collections of triangles, beziers, strips, fans and polylines.
Geometry | |
|
type Geometry a = GeometryT a Identity () Source #
A pure context for defining collections of geometry.
add :: Monad m => RawGeometry a -> StateT (Vector (RawGeometry a)) m () Source #
Add some geometry.
triangles :: (Unbox a, Monad m) => VerticesT a m () -> GeometryT a m () Source #
Define and add some triangles.
beziers :: (Monad m, Unbox a) => VerticesT a m () -> GeometryT a m () Source #
Define and add some beziers.
strip :: (Monad m, Unbox a) => VerticesT a m () -> GeometryT a m () Source #
Define and add a triangle strip.
fan :: (Monad m, Unbox a) => VerticesT a m () -> GeometryT a m () Source #
Define and add a triangle fan.
line :: (Monad m, Unbox a) => VerticesT a m () -> GeometryT a m () Source #
Define and add a polyline.
runGeometryT :: Monad m => GeometryT a m b -> m (Vector (RawGeometry a)) Source #
Extract the raw Vector
of geometries monadically.
runGeometry :: Geometry a -> Vector (RawGeometry a) Source #
Extract the raw Vector
of geometries.
mapGeometry :: (Monad m, Unbox a, Unbox c) => (a -> c) -> GeometryT a m b -> GeometryT c m () Source #
Map all the vertices within all geometries in the computation.
vertexData :: RawGeometry v -> Vector v Source #
Extract only the raw Vector
of vertices within the geometry.
data PictureData texture vertex Source #
Underlying picture data used to accumulate a visible picture.
PictureData | |
|
picDataTextures :: forall texture vertex texture. Lens (PictureData texture vertex) (PictureData texture vertex) [texture] [texture] Source #
picDataStroke :: forall texture vertex. Lens' (PictureData texture vertex) [StrokeAttr] Source #
picDataOptions :: forall texture vertex. Lens' (PictureData texture vertex) [RenderingOption] Source #
picDataGeometry :: forall texture vertex vertex. Lens (PictureData texture vertex) (PictureData texture vertex) (Vector (RawGeometry vertex)) (Vector (RawGeometry vertex)) Source #
emptyPictureData :: PictureData t v Source #
The empty PictureData
.
bothToFrac :: (Real a, Fractional b) => (V2 a, V2 a) -> (V2 b, V2 b) Source #
Map realToFrac
over both.
type PictureT tex vert = StateT (PictureData tex vert) Source #
A monad transformer computation that defines a picture.
runPictureT :: PictureT t v m a -> m (a, PictureData t v) Source #
Extract the result and PictureData
from a PictureT
computation.
runPicture :: Picture t v a -> (a, PictureData t v) Source #
Extract the result and PictureData
of a pure Picture
computation.
setRawGeometry :: Monad m => Vector (RawGeometry v) -> PictureT t v m () Source #
getRawGeometry :: Monad m => PictureT t v m (Vector (RawGeometry v)) Source #
setGeometry :: Monad m => GeometryT v m () -> PictureT t v m () Source #
Define and set the geometries of the PictureT
.
setStroke :: Monad m => [StrokeAttr] -> PictureT t v m () Source #
Set the stroke attributes of the PictureT
.
getStroke :: Monad m => PictureT t v m [StrokeAttr] Source #
Get the current stroke attributes of the PictureT
.
setTextures :: Monad m => [t] -> PictureT t v m () Source #
Set the textures contained within the PictureT
.
These textures [t]
are backend dependent.
setRenderingOptions :: Monad m => [RenderingOption] -> PictureT t v m () Source #
Set any special rendering options. Nothing to see here.
getRenderingOptions :: Monad m => PictureT t v m [RenderingOption] Source #
Get any special rendering options. Nothing to see here.
mapPictureVertices :: (Monad m, Unbox v, Unbox s) => (v -> s) -> PictureT t v m (Vector s) Source #
Evaluates the current geometry in the PictureT
, mapping each vertex.
pictureBounds2 :: (Monad m, Unbox v) => (v -> V2 Float) -> PictureT t v m (V2 Float, V2 Float) Source #
Determines the bounds of a PictureT
defined in 2d space.
pictureBounds3 :: (Monad m, Unbox v) => (v -> V3 Float) -> PictureT t v m BCube Source #
Determines the bounds of a PictureT
defined in 3d space.
pictureSize2 :: (Monad m, Unbox v) => (v -> V2 Float) -> PictureT t v m (V2 Float) Source #
Determines the size of a PictureT
defined in 2d space.
pictureSize3 :: (Monad m, Unbox v) => (v -> V3 Float) -> PictureT t v m (V3 Float) Source #
Determines the size of a PictureT
defined in 3d space.
pictureOrigin2 :: (Monad m, Unbox v) => (v -> V2 Float) -> PictureT t v m (V2 Float) Source #
Determines the origin of a PictureT
defined in 2d space.
pictureOrigin3 :: (Monad m, Unbox v) => (v -> V3 Float) -> PictureT t v m (V3 Float) Source #
Determines the origin of a PictureT
defined in 3d space.