packages feed

dear-imgui-raw-1.0.0: src/DearImGui/Raw/ImDrawData.hsc

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

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

module DearImGui.Raw.ImDrawData
  ( ImDrawData (..)
  , addDrawList
  , c_scaleClipRects
  , clear
  , deIndexAllBuffers
  , destroy
  , init
  , scaleClipRects
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw.ImDrawList (ImDrawList)
import {-# SOURCE #-} DearImGui.Raw.ImGuiViewport (ImGuiViewport)
import DearImGui.Raw.ImTextureData (ImTextureData)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVector (ImVector)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Utils (with)
import Foreign.Ptr (Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))
import Prelude hiding (init)

#include "dcimgui_nodefaultargfunctions.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions.h" "ImDrawData" #-} ImDrawData = ImDrawData
  { valid :: CBool
  , frameCount :: CInt
  , totalIdxCount :: CInt
  , totalVtxCount :: CInt
  , cmdLists :: ImVector (Ptr ImDrawList)
  , displayPos :: ImVec2
  , displaySize :: ImVec2
  , framebufferScale :: ImVec2
  , ownerViewport :: Ptr ImGuiViewport
  , textures :: Ptr (ImVector (Ptr ImTextureData))
  }
  deriving (Eq, Show)
instance Storable ImDrawData where
  sizeOf _    = #{size ImDrawData}
  alignment _ = #{alignment ImDrawData}
  peek p = ImDrawData <$> #{peek ImDrawData, Valid} p <*> #{peek ImDrawData, FrameCount} p <*> #{peek ImDrawData, TotalIdxCount} p <*> #{peek ImDrawData, TotalVtxCount} p <*> #{peek ImDrawData, CmdLists} p <*> #{peek ImDrawData, DisplayPos} p <*> #{peek ImDrawData, DisplaySize} p <*> #{peek ImDrawData, FramebufferScale} p <*> #{peek ImDrawData, OwnerViewport} p <*> #{peek ImDrawData, Textures} p
  poke p v = do
    #{poke ImDrawData, Valid} p v.valid
    #{poke ImDrawData, FrameCount} p v.frameCount
    #{poke ImDrawData, TotalIdxCount} p v.totalIdxCount
    #{poke ImDrawData, TotalVtxCount} p v.totalVtxCount
    #{poke ImDrawData, CmdLists} p v.cmdLists
    #{poke ImDrawData, DisplayPos} p v.displayPos
    #{poke ImDrawData, DisplaySize} p v.displaySize
    #{poke ImDrawData, FramebufferScale} p v.framebufferScale
    #{poke ImDrawData, OwnerViewport} p v.ownerViewport
    #{poke ImDrawData, Textures} p v.textures

instance HasField "valid" (Ptr ImDrawData) (Ptr CBool) where
  getField = #{ptr ImDrawData, Valid}

instance HasField "frameCount" (Ptr ImDrawData) (Ptr CInt) where
  getField = #{ptr ImDrawData, FrameCount}

instance HasField "totalIdxCount" (Ptr ImDrawData) (Ptr CInt) where
  getField = #{ptr ImDrawData, TotalIdxCount}

instance HasField "totalVtxCount" (Ptr ImDrawData) (Ptr CInt) where
  getField = #{ptr ImDrawData, TotalVtxCount}

instance HasField "cmdLists" (Ptr ImDrawData) (Ptr (ImVector (Ptr ImDrawList))) where
  getField = #{ptr ImDrawData, CmdLists}

instance HasField "displayPos" (Ptr ImDrawData) (Ptr ImVec2) where
  getField = #{ptr ImDrawData, DisplayPos}

instance HasField "displaySize" (Ptr ImDrawData) (Ptr ImVec2) where
  getField = #{ptr ImDrawData, DisplaySize}

instance HasField "framebufferScale" (Ptr ImDrawData) (Ptr ImVec2) where
  getField = #{ptr ImDrawData, FramebufferScale}

instance HasField "ownerViewport" (Ptr ImDrawData) (Ptr (Ptr ImGuiViewport)) where
  getField = #{ptr ImDrawData, OwnerViewport}

instance HasField "textures" (Ptr ImDrawData) (Ptr (Ptr (ImVector (Ptr ImTextureData)))) where
  getField = #{ptr ImDrawData, Textures}

foreign import capi unsafe "DearImGuiWrappers.h ImDrawData_Init_wrap"
  init
    :: Ptr ImDrawData
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawData_Destroy_wrap"
  destroy
    :: Ptr ImDrawData
    -> IO ()

withDefault :: (Ptr ImDrawData -> IO a) -> IO a
withDefault k = alloca $ \p -> bracket_ (init p) (destroy p) (k p)

-- functions

-- C: void AddDrawList(ImDrawData* self, ImDrawList* draw_list)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawData_AddDrawList"
  addDrawList
    :: (Ptr ImDrawData) -- ^ self
    -> (Ptr ImDrawList) -- ^ draw_list
    -> IO ()

-- C: void Clear(ImDrawData* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawData_Clear"
  clear
    :: (Ptr ImDrawData) -- ^ self
    -> IO ()

-- C: void DeIndexAllBuffers(ImDrawData* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawData_DeIndexAllBuffers"
  deIndexAllBuffers
    :: (Ptr ImDrawData) -- ^ self
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawData_ScaleClipRects_wrap"
  c_scaleClipRects
    :: (Ptr ImDrawData) -- ^ self
    -> (Ptr ImVec2) -- ^ fb_scale
    -> IO ()

scaleClipRects
  :: (Ptr ImDrawData) -- ^ self
  -> ImVec2 -- ^ fb_scale
  -> IO ()
scaleClipRects self fb_scale =
  with fb_scale $ \fb_scalePtr -> c_scaleClipRects self fb_scalePtr