-----------------------------------------------------------------------------
-- |
-- Module      :  Graphics.UI.SDL.Primitives
-- Copyright   :  (c) David Himmelstrup 2005
-- License     :  BSD-like
--
-- Maintainer  :  lemmih@gmail.com
-- Stability   :  provisional
-- Portability :  portable
--
-----------------------------------------------------------------------------
module Graphics.UI.SDL.Primitives
   ( pixel
   , hLine
   , vLine
   , rectangle
   , circle
   , box
   , roundedBox
   , line
   , aaLine
   , arc
   , aaCircle
   , filledCircle
   , ellipse
   , aaEllipse
   , filledEllipse
   , pie
   , filledPie
   , trigon
   , filledTrigon
   , aaTrigon
   , polygon
   , texturedPolygon
   , filledPolygon
   , aaPolygon
   , bezier
   ) where

import Foreign as Foreign hiding (new)
import Foreign.C
 
import Graphics.UI.SDL.General
import Graphics.UI.SDL.Types
import Graphics.UI.SDL.Color
import Graphics.UI.SDL.Utilities (Enum(..), intToBool, toBitmask, fromCInt, toCInt)

foreign import ccall unsafe "pixelColor" gfxPixelColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Word32 -> IO CInt

pixel :: Surface -> Int16 -> Int16 -> Pixel -> IO Bool
pixel :: Surface -> Int16 -> Int16 -> Pixel -> IO Bool
pixel Surface
surface Int16
x Int16
y (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                              Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct -> Int16 -> Int16 -> Word32 -> IO CInt
gfxPixelColor Ptr SurfaceStruct
ptr Int16
x Int16
y Word32
w)

foreign import ccall unsafe "hlineColor" gfxHLineColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

hLine :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
hLine :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
hLine Surface
surface Int16
x1 Int16
x2 Int16
y (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr -> 
                                  Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxHLineColor Ptr SurfaceStruct
ptr Int16
x1 Int16
x2 Int16
y Word32
w)

foreign import ccall unsafe "vlineColor" gfxVLineColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

vLine :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
vLine :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
vLine Surface
surface Int16
x Int16
y1 Int16
y2 (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr -> 
                                  Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxVLineColor Ptr SurfaceStruct
ptr Int16
x Int16
y1 Int16
y2 Word32
w)
 
foreign import ccall unsafe "rectangleColor" gfxRectangleColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

rectangle :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
rectangle :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
rectangle Surface
surface Int16
x1 Int16
y1 Int16
x2 Int16
y2 (Pixel Word32
c) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                             Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxRectangleColor Ptr SurfaceStruct
ptr (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
x1) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
y1) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
x2) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
y2) Word32
c)

foreign import ccall unsafe "boxColor" gfxBoxColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

box :: Surface -> Int16 -> Int16 -> Int16 -> Int16  -> Pixel -> IO Bool
box :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
box Surface
surface Int16
x1 Int16
y1 Int16
x2 Int16
y2 (Pixel Word32
c) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                       Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxBoxColor Ptr SurfaceStruct
ptr (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
x1) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
y1) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
x2) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
y2) Word32
c)

foreign import ccall unsafe "roundedBoxColor" gfxRoundedBoxColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

roundedBox :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
roundedBox :: Surface
-> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
roundedBox Surface
surface Int16
x1 Int16
y1 Int16
x2 Int16
y2 Int16
rad (Pixel Word32
c) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                                  Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxRoundedBoxColor Ptr SurfaceStruct
ptr (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
x1) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
y1) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
x2) (Int16 -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
x2) Int16
rad Word32
c)

foreign import ccall unsafe "lineColor" gfxLineColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

line :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
line :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
line Surface
surface Int16
x Int16
y Int16
x' Int16
y' (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                   Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxLineColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
x' Int16
y' Word32
w)

foreign import ccall unsafe "aalineColor" gfxAALineColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

aaLine :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
aaLine :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
aaLine Surface
surface Int16
x Int16
y Int16
x' Int16
y' (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                     Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxAALineColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
x' Int16
y' Word32
w)

foreign import ccall unsafe "circleColor" gfxCircleColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

circle :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
circle :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
circle Surface
surface Int16
x Int16
y Int16
r (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                 Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxCircleColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
r Word32
w)

foreign import ccall unsafe "arcColor" gfxArcColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

arc :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
arc :: Surface
-> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
arc Surface
surface Int16
x Int16
y Int16
r Int16
s Int16
e (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                  Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxArcColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
r Int16
s Int16
e Word32
w)

foreign import ccall unsafe "aacircleColor" gfxAACircleColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

aaCircle :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
aaCircle :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
aaCircle Surface
surface Int16
x Int16
y Int16
r (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                   Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxAACircleColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
r Word32
w)

foreign import ccall unsafe "filledCircleColor" gfxFilledCircleColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

filledCircle :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
filledCircle :: Surface -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
filledCircle Surface
surface Int16
x Int16
y Int16
r (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                       Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxFilledCircleColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
r Word32
w)

foreign import ccall unsafe "ellipseColor" gfxEllipseColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

ellipse :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
ellipse :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
ellipse Surface
surface Int16
x Int16
y Int16
rx Int16
ry (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                      Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxEllipseColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
rx Int16
ry Word32
w)

foreign import ccall unsafe "aaellipseColor" gfxAAEllipseColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

aaEllipse :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
aaEllipse :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
aaEllipse Surface
surface Int16
x Int16
y Int16
rx Int16
ry (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                        Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxAAEllipseColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
rx Int16
ry Word32
w)

foreign import ccall unsafe "filledEllipseColor" gfxFilledEllipseColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

filledEllipse :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
filledEllipse :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
filledEllipse Surface
surface Int16
x Int16
y Int16
rx Int16
ry (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                            Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxFilledEllipseColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
rx Int16
ry Word32
w)

foreign import ccall unsafe "pieColor" gfxPieColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

pie :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
pie :: Surface
-> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
pie Surface
surface Int16
x Int16
y Int16
r Int16
s Int16
e (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                  Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxPieColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
r Int16
s Int16
e Word32
w)

foreign import ccall unsafe "filledPieColor" gfxFilledPieColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

filledPie :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
filledPie :: Surface
-> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
filledPie Surface
surface Int16
x Int16
y Int16
r Int16
s Int16
e (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                        Int -> IO Int -> IO Bool
intToBool (-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt
gfxFilledPieColor Ptr SurfaceStruct
ptr Int16
x Int16
y Int16
r Int16
s Int16
e Word32
w)

foreign import ccall unsafe "trigonColor" gfxTrigonColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

trigon :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
trigon :: Surface
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Pixel
-> IO Bool
trigon Surface
surface Int16
x1 Int16
y1 Int16
x2 Int16
y2 Int16
x3 Int16
y3 (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                             Int -> IO Int -> IO Bool
intToBool(-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Word32
-> IO CInt
gfxTrigonColor Ptr SurfaceStruct
ptr Int16
x1 Int16
y1 Int16
x2 Int16
y2 Int16
x3 Int16
y3 Word32
w)

foreign import ccall unsafe "aatrigonColor" gfxAATrigonColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

aaTrigon :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
aaTrigon :: Surface
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Pixel
-> IO Bool
aaTrigon Surface
surface Int16
x1 Int16
y1 Int16
x2 Int16
y2 Int16
x3 Int16
y3 (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                               Int -> IO Int -> IO Bool
intToBool(-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Word32
-> IO CInt
gfxAATrigonColor Ptr SurfaceStruct
ptr Int16
x1 Int16
y1 Int16
x2 Int16
y2 Int16
x3 Int16
y3 Word32
w) 

foreign import ccall unsafe "filledTrigonColor" gfxFilledTrigonColor :: Ptr SurfaceStruct -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Word32 -> IO CInt

filledTrigon :: Surface -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Int16 -> Pixel -> IO Bool
filledTrigon :: Surface
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Pixel
-> IO Bool
filledTrigon Surface
surface Int16
x1 Int16
y1 Int16
x2 Int16
y2 Int16
x3 Int16
y3 (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                                   Int -> IO Int -> IO Bool
intToBool(-Int
1) ((CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Int16
-> Word32
-> IO CInt
gfxFilledTrigonColor Ptr SurfaceStruct
ptr Int16
x1 Int16
y1 Int16
x2 Int16
y2 Int16
x3 Int16
y3 Word32
w) 

foreign import ccall unsafe "polygonColor" gfxPolygonColor :: Ptr SurfaceStruct -> Ptr Int16 -> Ptr Int16 -> Int -> Word32 -> IO CInt

polygon :: Surface -> [(Int16, Int16)] -> Pixel ->  IO Bool
polygon :: Surface -> [(Int16, Int16)] -> Pixel -> IO Bool
polygon Surface
surface [(Int16, Int16)]
list (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                 [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> a
fst [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
xs ->
                                 [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> b
snd [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
ys ->
                                 Int -> IO Int -> IO Bool
intToBool (-Int
1) (IO Int -> IO Bool) -> IO Int -> IO Bool
forall a b. (a -> b) -> a -> b
$ (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Ptr Int16 -> Ptr Int16 -> Int -> Word32 -> IO CInt
gfxPolygonColor Ptr SurfaceStruct
ptr Ptr Int16
xs Ptr Int16
ys ([(Int16, Int16)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int16, Int16)]
list) Word32
w

foreign import ccall unsafe "aapolygonColor" gfxAAPolygonColor :: Ptr SurfaceStruct -> Ptr Int16 -> Ptr Int16 -> Int -> Word32 -> IO CInt

aaPolygon :: Surface -> [(Int16, Int16)] -> Pixel ->  IO Bool
aaPolygon :: Surface -> [(Int16, Int16)] -> Pixel -> IO Bool
aaPolygon Surface
surface [(Int16, Int16)]
list (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                   [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> a
fst [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
xs ->
                                   [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> b
snd [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
ys ->
                                   Int -> IO Int -> IO Bool
intToBool (-Int
1) (IO Int -> IO Bool) -> IO Int -> IO Bool
forall a b. (a -> b) -> a -> b
$ (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Ptr Int16 -> Ptr Int16 -> Int -> Word32 -> IO CInt
gfxAAPolygonColor Ptr SurfaceStruct
ptr Ptr Int16
xs Ptr Int16
ys ([(Int16, Int16)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int16, Int16)]
list) Word32
w 

foreign import ccall unsafe "filledPolygonColor" gfxFilledPolygonColor :: Ptr SurfaceStruct -> Ptr Int16 -> Ptr Int16 -> Int -> Word32 -> IO CInt

filledPolygon :: Surface -> [(Int16, Int16)] -> Pixel ->  IO Bool
filledPolygon :: Surface -> [(Int16, Int16)] -> Pixel -> IO Bool
filledPolygon Surface
surface [(Int16, Int16)]
list (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                       [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> a
fst [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
xs ->
                                       [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> b
snd [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
ys ->
                                       Int -> IO Int -> IO Bool
intToBool (-Int
1) (IO Int -> IO Bool) -> IO Int -> IO Bool
forall a b. (a -> b) -> a -> b
$ (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Ptr Int16 -> Ptr Int16 -> Int -> Word32 -> IO CInt
gfxFilledPolygonColor Ptr SurfaceStruct
ptr Ptr Int16
xs Ptr Int16
ys ([(Int16, Int16)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int16, Int16)]
list) Word32
w 

foreign import ccall unsafe "texturedPolygon" gfxTexturedPolygon :: Ptr SurfaceStruct -> Ptr Int16 -> Ptr Int16 -> Int -> Ptr SurfaceStruct -> Int -> Int -> IO CInt

texturedPolygon :: Surface -> [(Int16, Int16)] -> Surface -> Int -> Int ->  IO Bool
texturedPolygon :: Surface -> [(Int16, Int16)] -> Surface -> Int -> Int -> IO Bool
texturedPolygon Surface
surface [(Int16, Int16)]
list Surface
texture Int
dx Int
dy = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                             Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
texture ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
txt ->
                                             [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> a
fst [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
xs ->
                                             [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> b
snd [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
ys ->
                                             Int -> IO Int -> IO Bool
intToBool (-Int
1) (IO Int -> IO Bool) -> IO Int -> IO Bool
forall a b. (a -> b) -> a -> b
$ (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Ptr Int16
-> Ptr Int16
-> Int
-> Ptr SurfaceStruct
-> Int
-> Int
-> IO CInt
gfxTexturedPolygon Ptr SurfaceStruct
ptr Ptr Int16
xs Ptr Int16
ys ([(Int16, Int16)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int16, Int16)]
list) Ptr SurfaceStruct
txt Int
dx Int
dy 

foreign import ccall unsafe "bezierColor" gfxBezierColor :: Ptr SurfaceStruct -> Ptr Int16 -> Ptr Int16 -> Int -> Int -> Word32 -> IO CInt

bezier :: Surface -> [(Int16, Int16)] -> Int -> Pixel ->  IO Bool
bezier :: Surface -> [(Int16, Int16)] -> Int -> Pixel -> IO Bool
bezier Surface
surface [(Int16, Int16)]
list Int
steps (Pixel Word32
w) = Surface -> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Bool) -> IO Bool)
-> (Ptr SurfaceStruct -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
                                      [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> a
fst [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
xs ->
                                      [Int16] -> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. Storable a => [a] -> (Ptr a -> IO b) -> IO b
withArray (((Int16, Int16) -> Int16) -> [(Int16, Int16)] -> [Int16]
forall a b. (a -> b) -> [a] -> [b]
map (Int16, Int16) -> Int16
forall a b. (a, b) -> b
snd [(Int16, Int16)]
list) ((Ptr Int16 -> IO Bool) -> IO Bool)
-> (Ptr Int16 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Int16
ys ->
                                      Int -> IO Int -> IO Bool
intToBool (-Int
1) (IO Int -> IO Bool) -> IO Int -> IO Bool
forall a b. (a -> b) -> a -> b
$ (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CInt -> Int
forall a. Num a => CInt -> a
fromCInt (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceStruct
-> Ptr Int16 -> Ptr Int16 -> Int -> Int -> Word32 -> IO CInt
gfxBezierColor Ptr SurfaceStruct
ptr Ptr Int16
xs Ptr Int16
ys ([(Int16, Int16)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int16, Int16)]
list) Int
steps Word32
w
 
 
-- * Characters/Strings */
--
--     Int16 characterColor(SDL_Surface * dst, Sint16 x, Sint16 y, char c, Uint32 color);
--     Int16 characterRGBA(SDL_Surface * dst, Sint16 x, Sint16 y, char c, Uint8 r, Uint8 g, Uint8 b, Uint8 a);
--     Int16 stringColor(SDL_Surface * dst, Sint16 x, Sint16 y, const char *c, Uint32 color);
--     Int16 stringRGBA(SDL_Surface * dst, Sint16 x, Sint16 y, const char *c, Uint8 r, Uint8 g, Uint8 b, Uint8 a);
--
--     void gfxPrimitivesSetFont(const void *fontdata, Int16 cw, Int16 ch);
--