module FRP.Spice.Graphics.Geometry ( renderPoint
, renderRectangle
, renderSquare
) where
import Graphics.Rendering.OpenGL
import FRP.Spice.Graphics.Element
import FRP.Spice.Graphics.Scene
import FRP.Spice.Math.Vector
renderPoint :: Vector Float -> Scene
renderPoint pos =
fromElements [RenderPrimitive Points [pos]]
renderLine :: Vector Float -> Vector Float -> Scene
renderLine p1 p2 =
fromElements [ RenderPrimitive Lines [ p1
, p2
]
]
renderRectangle :: Vector Float -> Vector Float -> Scene
renderRectangle (Vector x y) (Vector w h) = do
fromElements [ RenderPrimitive Quads [ Vector (x ) (y )
, Vector (x + w) (y )
, Vector (x + w) (y + h)
, Vector (x ) (y + h)
]
]
renderSquare :: Vector Float -> Float -> Scene
renderSquare pos size = renderRectangle pos $ Vector size size
renderTriangle :: Vector Float -> Vector Float -> Vector Float -> Scene
renderTriangle p1 p2 p3 =
fromElements [ RenderPrimitive Triangles [ p1
, p2
, p3
]
]
renderPolygon :: [Vector Float] -> Scene
renderPolygon l =
fromElements [RenderPrimitive Polygon l]