packages feed

dear-imgui-impl-sdlgpu3-1.0.0: src/DearImGui/Raw/Impl/SDLGPU3.hsc

{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE PatternSynonyms #-}

-- This file was generated by dear-bindings-ffi. Do not edit by hand.

module DearImGui.Raw.Impl.SDLGPU3
  ( ImGui_ImplSDLGPU3_InitInfo (..)
  , ImGui_ImplSDLGPU3_RenderState (..)
  , SDL_GPUCommandBuffer
  , SDL_GPUDevice
  , SDL_GPUGraphicsPipeline
  , SDL_GPURenderPass
  , createDeviceObjects
  , destroyDeviceObjects
  , getRenderState
  , init
  , newFrame
  , prepareDrawData
  , renderDrawData
  , shutdown
  , updateTexture
  ) where

import DearImGui.Raw.ImDrawData (ImDrawData)
import DearImGui.Raw.ImTextureData (ImTextureData)
import Foreign.C.Types
import Foreign.Ptr (Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))
import Prelude hiding (init)

#include "dcimgui_impl_sdlgpu3.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_impl_sdlgpu3.h" "ImGui_ImplSDLGPU3_InitInfo" #-} ImGui_ImplSDLGPU3_InitInfo = ImGui_ImplSDLGPU3_InitInfo
  { device :: Ptr SDL_GPUDevice
  , colorTargetFormat :: CUInt
  , mSAASamples :: CUInt
  , swapchainComposition :: CUInt
  , presentMode :: CUInt
  }
  deriving (Eq, Show)
instance Storable ImGui_ImplSDLGPU3_InitInfo where
  sizeOf _    = #{size ImGui_ImplSDLGPU3_InitInfo}
  alignment _ = #{alignment ImGui_ImplSDLGPU3_InitInfo}
  peek p = ImGui_ImplSDLGPU3_InitInfo <$> #{peek ImGui_ImplSDLGPU3_InitInfo, Device} p <*> #{peek ImGui_ImplSDLGPU3_InitInfo, ColorTargetFormat} p <*> #{peek ImGui_ImplSDLGPU3_InitInfo, MSAASamples} p <*> #{peek ImGui_ImplSDLGPU3_InitInfo, SwapchainComposition} p <*> #{peek ImGui_ImplSDLGPU3_InitInfo, PresentMode} p
  poke p v = do
    #{poke ImGui_ImplSDLGPU3_InitInfo, Device} p v.device
    #{poke ImGui_ImplSDLGPU3_InitInfo, ColorTargetFormat} p v.colorTargetFormat
    #{poke ImGui_ImplSDLGPU3_InitInfo, MSAASamples} p v.mSAASamples
    #{poke ImGui_ImplSDLGPU3_InitInfo, SwapchainComposition} p v.swapchainComposition
    #{poke ImGui_ImplSDLGPU3_InitInfo, PresentMode} p v.presentMode

instance HasField "device" (Ptr ImGui_ImplSDLGPU3_InitInfo) (Ptr (Ptr SDL_GPUDevice)) where
  getField = #{ptr ImGui_ImplSDLGPU3_InitInfo, Device}

instance HasField "colorTargetFormat" (Ptr ImGui_ImplSDLGPU3_InitInfo) (Ptr CUInt) where
  getField = #{ptr ImGui_ImplSDLGPU3_InitInfo, ColorTargetFormat}

instance HasField "mSAASamples" (Ptr ImGui_ImplSDLGPU3_InitInfo) (Ptr CUInt) where
  getField = #{ptr ImGui_ImplSDLGPU3_InitInfo, MSAASamples}

instance HasField "swapchainComposition" (Ptr ImGui_ImplSDLGPU3_InitInfo) (Ptr CUInt) where
  getField = #{ptr ImGui_ImplSDLGPU3_InitInfo, SwapchainComposition}

instance HasField "presentMode" (Ptr ImGui_ImplSDLGPU3_InitInfo) (Ptr CUInt) where
  getField = #{ptr ImGui_ImplSDLGPU3_InitInfo, PresentMode}

newtype {-# CTYPE "dcimgui_impl_sdlgpu3.h" "ImGui_ImplSDLGPU3_RenderState" #-} ImGui_ImplSDLGPU3_RenderState = ImGui_ImplSDLGPU3_RenderState
  { device :: Ptr SDL_GPUDevice
  }
  deriving (Eq, Show)
instance Storable ImGui_ImplSDLGPU3_RenderState where
  sizeOf _    = #{size ImGui_ImplSDLGPU3_RenderState}
  alignment _ = #{alignment ImGui_ImplSDLGPU3_RenderState}
  peek p = ImGui_ImplSDLGPU3_RenderState <$> #{peek ImGui_ImplSDLGPU3_RenderState, Device} p
  poke p v = do
    #{poke ImGui_ImplSDLGPU3_RenderState, Device} p v.device

instance HasField "device" (Ptr ImGui_ImplSDLGPU3_RenderState) (Ptr (Ptr SDL_GPUDevice)) where
  getField = #{ptr ImGui_ImplSDLGPU3_RenderState, Device}

data SDL_GPUCommandBuffer

data SDL_GPUDevice

data SDL_GPUGraphicsPipeline

data SDL_GPURenderPass

-- functions

-- C: void ImGui_ImplSDLGPU3_CreateDeviceObjects()
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_CreateDeviceObjects"
  createDeviceObjects :: IO ()

-- C: void ImGui_ImplSDLGPU3_DestroyDeviceObjects()
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_DestroyDeviceObjects"
  destroyDeviceObjects :: IO ()

-- C: ImGui_ImplSDLGPU3_RenderState* ImGui_ImplSDLGPU3_GetRenderState()
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_GetRenderState"
  getRenderState :: IO (Ptr ImGui_ImplSDLGPU3_RenderState)

-- C: bool ImGui_ImplSDLGPU3_Init(ImGui_ImplSDLGPU3_InitInfo* info)
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_Init"
  init
    :: (Ptr ImGui_ImplSDLGPU3_InitInfo) -- ^ info
    -> IO CBool

-- C: void ImGui_ImplSDLGPU3_NewFrame()
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_NewFrame"
  newFrame :: IO ()

-- C: void ImGui_ImplSDLGPU3_PrepareDrawData(ImDrawData* draw_data, SDL_GPUCommandBuffer* command_buffer)
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_PrepareDrawData"
  prepareDrawData
    :: (Ptr ImDrawData) -- ^ draw_data
    -> (Ptr SDL_GPUCommandBuffer) -- ^ command_buffer
    -> IO ()

-- C: void ImGui_ImplSDLGPU3_RenderDrawData(ImDrawData* draw_data, SDL_GPUCommandBuffer* command_buffer, SDL_GPURenderPass* render_pass, SDL_GPUGraphicsPipeline* pipeline)
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_RenderDrawData"
  renderDrawData
    :: (Ptr ImDrawData) -- ^ draw_data
    -> (Ptr SDL_GPUCommandBuffer) -- ^ command_buffer
    -> (Ptr SDL_GPURenderPass) -- ^ render_pass
    -> (Ptr SDL_GPUGraphicsPipeline) -- ^ pipeline
    -> IO ()

-- C: void ImGui_ImplSDLGPU3_Shutdown()
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_Shutdown"
  shutdown :: IO ()

-- C: void ImGui_ImplSDLGPU3_UpdateTexture(ImTextureData* tex)
foreign import capi safe "dcimgui_impl_sdlgpu3.h cImGui_ImplSDLGPU3_UpdateTexture"
  updateTexture
    :: (Ptr ImTextureData) -- ^ tex
    -> IO ()