{-# 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 Foreign.C.Types (CFloat) import Foreign.Ptr (nullPtr) import Foreign.Storable {-# LINE 19 "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 _ = size_sfRenderStates alignment _ = alignment (undefined :: CFloat) peek ptr = do bm <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr {-# LINE 36 "src/SFML/Graphics/RenderStates.hsc" #-} tr <- (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr {-# LINE 37 "src/SFML/Graphics/RenderStates.hsc" #-} tx <- (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr {-# LINE 38 "src/SFML/Graphics/RenderStates.hsc" #-} sh <- (\hsc_ptr -> peekByteOff hsc_ptr 72) ptr {-# LINE 39 "src/SFML/Graphics/RenderStates.hsc" #-} return $ RenderStates bm tr tx sh poke ptr (RenderStates bm tr tx sh) = do (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr bm {-# LINE 43 "src/SFML/Graphics/RenderStates.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr tr {-# LINE 44 "src/SFML/Graphics/RenderStates.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 64) ptr tx {-# LINE 45 "src/SFML/Graphics/RenderStates.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 72) ptr sh {-# LINE 46 "src/SFML/Graphics/RenderStates.hsc" #-} size_sfRenderStates = (80) {-# 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;-}