gloss-rendering-1.13.1.1: Gloss picture data types and rendering functions.
Safe HaskellNone
LanguageHaskell2010

Graphics.Gloss.Rendering

Synopsis

Picture data type

data Picture Source #

A 2D picture

Constructors

Blank

A blank picture, with nothing in it.

Polygon Path

A convex polygon filled with a solid color.

Line Path

A line along an arbitrary path.

Circle Float

A circle with the given radius.

ThickCircle Float Float

A circle with the given radius and thickness. If the thickness is 0 then this is equivalent to Circle.

Arc Float Float Float

A circular arc drawn counter-clockwise between two angles (in degrees) at the given radius.

ThickArc Float Float Float Float

A circular arc drawn counter-clockwise between two angles (in degrees), with the given radius and thickness. If the thickness is 0 then this is equivalent to Arc.

Text String

Some text to draw with a vector font.

Bitmap BitmapData

A bitmap image.

BitmapSection Rectangle BitmapData

A subsection of a bitmap image where the first argument selects a sub section in the bitmap, and second argument determines the bitmap data.

Color Color Picture

A picture drawn with this color.

Translate Float Float Picture

A picture translated by the given x and y coordinates.

Rotate Float Picture

A picture rotated clockwise by the given angle (in degrees).

Scale Float Float Picture

A picture scaled by the given x and y factors.

Pictures [Picture]

A picture consisting of several others.

Instances

Instances details
Eq Picture Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Picture

Methods

(==) :: Picture -> Picture -> Bool

(/=) :: Picture -> Picture -> Bool

Data Picture Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Picture

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Picture -> c Picture

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Picture

toConstr :: Picture -> Constr

dataTypeOf :: Picture -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Picture)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Picture)

gmapT :: (forall b. Data b => b -> b) -> Picture -> Picture

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Picture -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Picture -> r

gmapQ :: (forall d. Data d => d -> u) -> Picture -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Picture -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Picture -> m Picture

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Picture -> m Picture

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Picture -> m Picture

Show Picture Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Picture

Methods

showsPrec :: Int -> Picture -> ShowS

show :: Picture -> String

showList :: [Picture] -> ShowS

Semigroup Picture Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Picture

Methods

(<>) :: Picture -> Picture -> Picture

sconcat :: NonEmpty Picture -> Picture

stimes :: Integral b => b -> Picture -> Picture

Monoid Picture Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Picture

type Point = (Float, Float) Source #

A point on the x-y plane.

type Vector = Point Source #

A vector can be treated as a point, and vis-versa.

type Path = [Point] Source #

A path through the x-y plane.

Colors

data Color Source #

An abstract color value. We keep the type abstract so we can be sure that the components are in the required range. To make a custom color use makeColor.

Instances

Instances details
Eq Color Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Color

Methods

(==) :: Color -> Color -> Bool

(/=) :: Color -> Color -> Bool

Data Color Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Color

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Color -> c Color

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Color

toConstr :: Color -> Constr

dataTypeOf :: Color -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Color)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Color)

gmapT :: (forall b. Data b => b -> b) -> Color -> Color

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Color -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Color -> r

gmapQ :: (forall d. Data d => d -> u) -> Color -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Color -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Color -> m Color

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Color -> m Color

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Color -> m Color

Num Color Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Color

Methods

(+) :: Color -> Color -> Color

(-) :: Color -> Color -> Color

(*) :: Color -> Color -> Color

negate :: Color -> Color

abs :: Color -> Color

signum :: Color -> Color

fromInteger :: Integer -> Color

Show Color Source # 
Instance details

Defined in Graphics.Gloss.Internals.Data.Color

Methods

showsPrec :: Int -> Color -> ShowS

show :: Color -> String

showList :: [Color] -> ShowS

makeColor Source #

Arguments

:: Float

Red component.

-> Float

Green component.

-> Float

Blue component.

-> Float

Alpha component.

-> Color 

Make a custom color. All components are clamped to the range [0..1].

makeColorI :: Int -> Int -> Int -> Int -> Color Source #

Make a custom color. All components are clamped to the range [0..255].

makeRawColor :: Float -> Float -> Float -> Float -> Color Source #

Make a custom color.

Using this function over makeColor avoids clamping the components, which saves time. However, if the components are out of range then this will result in integer overflow at rendering time, and the actual picture you get will be implementation dependent.

You'll only need to use this function when using the gloss-raster package that builds a new color for every pixel. If you're just working with the Picture data type then it there is no need for raw colors.

makeRawColorI :: Int -> Int -> Int -> Int -> Color Source #

Make a custom color, taking pre-clamped components.

rgbaOfColor :: Color -> (Float, Float, Float, Float) Source #

Take the RGBA components of a color.

clampColor :: Color -> Color Source #

Clamp components of a raw color into the required range.

Bitmaps

data Rectangle Source #

Represents a rectangular section in a bitmap

Constructors

Rectangle 

Fields

  • rectPos :: (Int, Int)

    x- and y-pos in the bitmap in pixels

  • rectSize :: (Int, Int)

    width/height of the area in pixelsi

Instances

Instances details
Eq Rectangle Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

(==) :: Rectangle -> Rectangle -> Bool

(/=) :: Rectangle -> Rectangle -> Bool

Data Rectangle Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Rectangle -> c Rectangle

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Rectangle

toConstr :: Rectangle -> Constr

dataTypeOf :: Rectangle -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Rectangle)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Rectangle)

gmapT :: (forall b. Data b => b -> b) -> Rectangle -> Rectangle

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Rectangle -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Rectangle -> r

gmapQ :: (forall d. Data d => d -> u) -> Rectangle -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Rectangle -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Rectangle -> m Rectangle

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Rectangle -> m Rectangle

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Rectangle -> m Rectangle

Ord Rectangle Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

compare :: Rectangle -> Rectangle -> Ordering

(<) :: Rectangle -> Rectangle -> Bool

(<=) :: Rectangle -> Rectangle -> Bool

(>) :: Rectangle -> Rectangle -> Bool

(>=) :: Rectangle -> Rectangle -> Bool

max :: Rectangle -> Rectangle -> Rectangle

min :: Rectangle -> Rectangle -> Rectangle

Read Rectangle Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

readsPrec :: Int -> ReadS Rectangle

readList :: ReadS [Rectangle]

readPrec :: ReadPrec Rectangle

readListPrec :: ReadPrec [Rectangle]

Show Rectangle Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

showsPrec :: Int -> Rectangle -> ShowS

show :: Rectangle -> String

showList :: [Rectangle] -> ShowS

data BitmapData Source #

Abstract 32-bit RGBA bitmap data.

Instances

Instances details
Eq BitmapData Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

(==) :: BitmapData -> BitmapData -> Bool

(/=) :: BitmapData -> BitmapData -> Bool

Data BitmapData Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BitmapData -> c BitmapData

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BitmapData

toConstr :: BitmapData -> Constr

dataTypeOf :: BitmapData -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BitmapData)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BitmapData)

gmapT :: (forall b. Data b => b -> b) -> BitmapData -> BitmapData

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BitmapData -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BitmapData -> r

gmapQ :: (forall d. Data d => d -> u) -> BitmapData -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> BitmapData -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> BitmapData -> m BitmapData

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BitmapData -> m BitmapData

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BitmapData -> m BitmapData

Show BitmapData Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

showsPrec :: Int -> BitmapData -> ShowS

show :: BitmapData -> String

showList :: [BitmapData] -> ShowS

bitmapSize :: BitmapData -> (Int, Int) Source #

width, height in pixels

data BitmapFormat Source #

Description of how the bitmap is layed out in memory.

  • Prior version of Gloss assumed `BitmapFormat BottomToTop PxAGBR`

Instances

Instances details
Eq BitmapFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

(==) :: BitmapFormat -> BitmapFormat -> Bool

(/=) :: BitmapFormat -> BitmapFormat -> Bool

Data BitmapFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BitmapFormat -> c BitmapFormat

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BitmapFormat

toConstr :: BitmapFormat -> Constr

dataTypeOf :: BitmapFormat -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BitmapFormat)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BitmapFormat)

gmapT :: (forall b. Data b => b -> b) -> BitmapFormat -> BitmapFormat

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BitmapFormat -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BitmapFormat -> r

gmapQ :: (forall d. Data d => d -> u) -> BitmapFormat -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> BitmapFormat -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> BitmapFormat -> m BitmapFormat

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BitmapFormat -> m BitmapFormat

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BitmapFormat -> m BitmapFormat

Ord BitmapFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Show BitmapFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

showsPrec :: Int -> BitmapFormat -> ShowS

show :: BitmapFormat -> String

showList :: [BitmapFormat] -> ShowS

data PixelFormat Source #

Pixel formats describe the order of the color channels in memory.

Constructors

PxRGBA 
PxABGR 

Instances

Instances details
Bounded PixelFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Enum PixelFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Eq PixelFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

(==) :: PixelFormat -> PixelFormat -> Bool

(/=) :: PixelFormat -> PixelFormat -> Bool

Data PixelFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PixelFormat -> c PixelFormat

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PixelFormat

toConstr :: PixelFormat -> Constr

dataTypeOf :: PixelFormat -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PixelFormat)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PixelFormat)

gmapT :: (forall b. Data b => b -> b) -> PixelFormat -> PixelFormat

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PixelFormat -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PixelFormat -> r

gmapQ :: (forall d. Data d => d -> u) -> PixelFormat -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> PixelFormat -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PixelFormat -> m PixelFormat

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PixelFormat -> m PixelFormat

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PixelFormat -> m PixelFormat

Ord PixelFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Show PixelFormat Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

showsPrec :: Int -> PixelFormat -> ShowS

show :: PixelFormat -> String

showList :: [PixelFormat] -> ShowS

data RowOrder Source #

Order of rows in an image are either:

  • TopToBottom - the top row, followed by the next-lower row and so on.
  • BottomToTop - the bottom row followed by the next-higher row and so on.

Constructors

TopToBottom 
BottomToTop 

Instances

Instances details
Bounded RowOrder Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Enum RowOrder Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Eq RowOrder Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

(==) :: RowOrder -> RowOrder -> Bool

(/=) :: RowOrder -> RowOrder -> Bool

Data RowOrder Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RowOrder -> c RowOrder

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RowOrder

toConstr :: RowOrder -> Constr

dataTypeOf :: RowOrder -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RowOrder)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RowOrder)

gmapT :: (forall b. Data b => b -> b) -> RowOrder -> RowOrder

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RowOrder -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RowOrder -> r

gmapQ :: (forall d. Data d => d -> u) -> RowOrder -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> RowOrder -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> RowOrder -> m RowOrder

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RowOrder -> m RowOrder

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RowOrder -> m RowOrder

Ord RowOrder Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

compare :: RowOrder -> RowOrder -> Ordering

(<) :: RowOrder -> RowOrder -> Bool

(<=) :: RowOrder -> RowOrder -> Bool

(>) :: RowOrder -> RowOrder -> Bool

(>=) :: RowOrder -> RowOrder -> Bool

max :: RowOrder -> RowOrder -> RowOrder

min :: RowOrder -> RowOrder -> RowOrder

Show RowOrder Source # 
Instance details

Defined in Graphics.Gloss.Internals.Rendering.Bitmap

Methods

showsPrec :: Int -> RowOrder -> ShowS

show :: RowOrder -> String

showList :: [RowOrder] -> ShowS

bitmapOfForeignPtr :: Int -> Int -> BitmapFormat -> ForeignPtr Word8 -> Bool -> Picture Source #

O(1). Use a ForeignPtr of RGBA data as a bitmap with the given width and height.

The boolean flag controls whether Gloss should cache the data between frames for speed. If you are programatically generating the image for each frame then use False. If you have loaded it from a file then use True.

bitmapDataOfForeignPtr :: Int -> Int -> BitmapFormat -> ForeignPtr Word8 -> Bool -> BitmapData Source #

bitmapOfByteString :: Int -> Int -> BitmapFormat -> ByteString -> Bool -> Picture Source #

O(size). Copy a ByteString of RGBA data into a bitmap with the given width and height.

The boolean flag controls whether Gloss should cache the data between frames for speed. If you are programatically generating the image for each frame then use False. If you have loaded it from a file then use True.

bitmapDataOfByteString :: Int -> Int -> BitmapFormat -> ByteString -> Bool -> BitmapData Source #

bitmapOfBMP :: BMP -> Picture Source #

O(size). Copy a BMP file into a bitmap.

bitmapDataOfBMP :: BMP -> BitmapData Source #

O(size). Copy a BMP file into a bitmap.

loadBMP :: FilePath -> IO Picture Source #

Load an uncompressed 24 or 32bit RGBA BMP file as a bitmap.

Rendering

displayPicture Source #

Arguments

:: (Int, Int)

Window width and height.

-> Color

Color to clear the window with.

-> State

Current rendering state.

-> Float

View port scale, which controls the level of detail. Use 1.0 to start with.

-> Picture

Picture to draw.

-> IO () 

Set up the OpenGL context, clear the buffer, and render the given picture into it.

This is the same as renderPicture composed with withModelview and withClearBuffer. If you want to manage your own OpenGL context then you can just call renderPicture.

Using this function assumes that you've already opened a window and set that to the active context. If you don't want to do your own window management then use the gloss package instead.

renderPicture Source #

Arguments

:: State

Current rendering state.

-> Float

View port scale, which controls the level of detail. Use 1.0 to start with.

-> Picture

Picture to render.

-> IO () 

Render a picture into the current OpenGL context.

Assumes that the OpenGL matrix mode is set to Modelview

withModelview Source #

Arguments

:: (Int, Int)

Width and height of window.

-> IO ()

Action to perform.

-> IO () 

Set up the OpenGL rendering context for orthographic projection and run an action to draw the model.

withClearBuffer Source #

Arguments

:: Color

Background color

-> IO ()

Action to perform

-> IO () 

Clear the OpenGL buffer with the given background color and run an action to draw the model.

initState :: IO State Source #

A mutable render state holds references to the textures currently loaded into the OpenGL context. To ensure that textures are cached in GPU memory, pass the same State each time you call displayPicture or renderPicture.

data State Source #

Abstract Gloss render state which holds references to textures loaded into the GPU context.