{-# LINE 1 "src/SFML/Graphics/RenderStates.hsc" #-} {-# LANGUAGE CPP, ForeignFunctionInterface #-} {-# LINE 2 "src/SFML/Graphics/RenderStates.hsc" #-} module SFML.Graphics.RenderStates ( RenderStates(..) , renderStates ) where import SFML.Graphics.BlendMode import SFML.Graphics.Transform import SFML.Graphics.Types import Control.Applicative ((<$>), (<*>)) import Foreign.C.Types (CIntPtr) import Foreign.Ptr (nullPtr) import Foreign.Storable {-# LINE 20 "src/SFML/Graphics/RenderStates.hsc" #-} {-# LINE 23 "src/SFML/Graphics/RenderStates.hsc" #-} -- | Define the states used for drawing to a RenderTarget. data RenderStates = RenderStates { blendMode :: BlendMode , transform :: Transform , texture :: Texture , shader :: Shader } instance Storable RenderStates where sizeOf _ = (80) {-# LINE 36 "src/SFML/Graphics/RenderStates.hsc" #-} alignment _ = 8 {-# LINE 37 "src/SFML/Graphics/RenderStates.hsc" #-} peek ptr = RenderStates <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr {-# LINE 40 "src/SFML/Graphics/RenderStates.hsc" #-} <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr {-# LINE 41 "src/SFML/Graphics/RenderStates.hsc" #-} <*> (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr {-# LINE 42 "src/SFML/Graphics/RenderStates.hsc" #-} <*> (\hsc_ptr -> peekByteOff hsc_ptr 72) ptr {-# LINE 43 "src/SFML/Graphics/RenderStates.hsc" #-} poke ptr (RenderStates bm tr tx sh) = do (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr bm {-# LINE 46 "src/SFML/Graphics/RenderStates.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr tr {-# LINE 47 "src/SFML/Graphics/RenderStates.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 64) ptr tx {-# LINE 48 "src/SFML/Graphics/RenderStates.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 72) ptr sh {-# LINE 49 "src/SFML/Graphics/RenderStates.hsc" #-} -- | Default render states, defined as -- -- @ -- renderStates = RenderStates 'blendAlpha' 'idTransform' (Texture 'nullPtr') (Shader 'nullPtr') -- @ -- -- This constant tries to mimic the C++ RenderStates default constructor to ease -- the construction of render states. For example, instead of typing -- -- @ -- states = RenderStates blendAlpha idTransform tex (Shader nullptr) -- @ -- -- Now we can simply type -- -- @ -- states = renderStates { texture = tex } -- @ renderStates = RenderStates blendAlpha idTransform (Texture nullPtr) (Shader nullPtr) {-typedef struct { sfBlendMode blendMode; ///< Blending mode sfTransform transform; ///< Transform const sfTexture* texture; ///< Texture const sfShader* shader; ///< Shader } sfRenderStates;-}