-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Extras to interface Gloss and Accelerate
--   
--   Extras to interface Gloss and Accelerate
@package gloss-accelerate
@version 2.0.0.1


module Graphics.Gloss.Accelerate.Data.Picture

-- | Use an Accelerate array of RGBA data as a bitmap image. If the image
--   is generated programatically every frame, then the second parameter
--   should be <a>False</a>. If you have loaded it from static data then
--   use <a>True</a>.
bitmapOfArray :: Array DIM2 Word32 -> Bool -> Picture


module Graphics.Gloss.Accelerate.Data.Point

-- | An abstract point value on the xy-plane.
type Point = XY Float

-- | Make a custom point
makePoint :: Exp Float -> Exp Float -> Exp Point

-- | Take the components of a point
xyOfPoint :: Exp Point -> (Exp Float, Exp Float)

-- | Convert a two-dimensional index into a point centered in a plane of
--   the given width and height.
pointOfIndex :: Int -> Int -> Exp DIM2 -> Exp Point

-- | Test whether a point lies within a rectangular box that is oriented on
--   the x-y plane. The points P1-P2 are opposing points of the box, but
--   need not be in a particular order.
--   
--   <pre>
--   P2 +-------+
--      |       |
--      | + P0  |
--      |       |
--      +-------+ P1
--   </pre>
pointInBox :: Exp Point -> Exp Point -> Exp Point -> Exp Bool
instance GHC.Classes.Eq a => GHC.Classes.Eq (Graphics.Gloss.Accelerate.Data.Point.XY a)
instance GHC.Show.Show a => GHC.Show.Show (Graphics.Gloss.Accelerate.Data.Point.XY a)
instance GHC.Num.Num a => GHC.Num.Num (Graphics.Gloss.Accelerate.Data.Point.XY a)
instance Data.Array.Accelerate.Array.Sugar.Elt a => Data.Array.Accelerate.Array.Sugar.Elt (Graphics.Gloss.Accelerate.Data.Point.XY a)
instance Data.Array.Accelerate.Array.Sugar.Elt a => Data.Array.Accelerate.Product.IsProduct Data.Array.Accelerate.Array.Sugar.Elt (Graphics.Gloss.Accelerate.Data.Point.XY a)
instance (Data.Array.Accelerate.Lift.Lift Data.Array.Accelerate.Smart.Exp a, Data.Array.Accelerate.Array.Sugar.Elt (Data.Array.Accelerate.Lift.Plain a)) => Data.Array.Accelerate.Lift.Lift Data.Array.Accelerate.Smart.Exp (Graphics.Gloss.Accelerate.Data.Point.XY a)
instance Data.Array.Accelerate.Array.Sugar.Elt a => Data.Array.Accelerate.Lift.Unlift Data.Array.Accelerate.Smart.Exp (Graphics.Gloss.Accelerate.Data.Point.XY (Data.Array.Accelerate.Smart.Exp a))
