module DearImGui.Impl.SDLRenderer3
( rendererPtr
, init
, withInit
, renderDrawData
, Raw.ImGui_ImplSDLRenderer3_RenderState (..)
, Raw.getRenderState
, Raw.createDeviceObjects
, Raw.destroyDeviceObjects
, Raw.newFrame
, Raw.shutdown
, Raw.updateTexture
) where
import Prelude hiding (init)
import Control.Monad.IO.Unlift (MonadUnliftIO)
import Foreign.Marshal.Utils (toBool)
import Foreign.Ptr (Ptr, castPtr)
import SDL3.Sys qualified as SDL3
import DearImGui.Impl.Init (withInitOrFail)
import DearImGui.Raw.ImDrawData (ImDrawData)
import DearImGui.Raw.Impl.SDLRenderer3 (SDL_Renderer)
import DearImGui.Raw.Impl.SDLRenderer3 qualified as Raw
rendererPtr :: Ptr SDL3.SDL_Renderer -> Ptr SDL_Renderer
rendererPtr = castPtr
init :: Ptr SDL3.SDL_Renderer -> IO Bool
init renderer =
toBool <$> Raw.init (rendererPtr renderer)
withInit :: (MonadUnliftIO m) => Ptr SDL3.SDL_Renderer -> m a -> m a
withInit renderer = withInitOrFail "ImGui_ImplSDLRenderer3_Init" (init renderer) Raw.shutdown
renderDrawData :: Ptr ImDrawData -> Ptr SDL3.SDL_Renderer -> IO ()
renderDrawData drawData renderer =
Raw.renderDrawData drawData (rendererPtr renderer)