packages feed

Hate-0.1.4.2: src/Hate/Graphics/Types.hs

module Hate.Graphics.Types where

import qualified Graphics.Rendering.OpenGL as GL
import Data.Vect.Float
import Data.Vect.Float.Instances()

-- |A general type for a graphical mesh, either in indexed or raw form.
data VertexStream = VertexStream {
    vao :: GL.VertexArrayObject,
    vbo :: GL.BufferObject,
    texVbo :: GL.BufferObject,
    vertNum :: Int
} deriving (Eq, Show)

-- userspace data
data PipelineDescription = SolidColorPipeline Vec4 | TexturingPipeline GL.TextureObject deriving (Eq, Show)

data VertexLayout = FanVertexLayout | StripVertexLayout | LinesVertexLayout deriving (Eq, Show)

data OriginReference = TopLeft | Middle deriving (Eq, Show)

data DrawRequest = DrawRequest { 
    vertices :: [Vec2],
    texCoords :: Maybe [Vec2],
    origin :: Mat4,
    vertexLayout :: VertexLayout,
    transformation :: Mat4,
    pipeline :: PipelineDescription
} deriving (Eq, Show)

data Sprite = Sprite {
    size :: (Int, Int),
    texture :: GL.TextureObject
} deriving (Eq, Show)

data SpriteSheet = SpriteSheet {
    spriteRef :: Sprite,
    sheetSize :: (Int, Int)
}

type Color = Vec4