packages feed

dear-imgui-raw-internal-1.0.0: src/DearImGui/Raw/Internal/ImGuiViewportP.hsc

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

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

module DearImGui.Raw.Internal.ImGuiViewportP
  ( ImGuiViewportP
  , bgFgDrawListsLastFrameActiveLength
  , bgFgDrawListsLastTimeActiveLength
  , bgFgDrawListsLength
  , c_calcWorkRectPos
  , c_calcWorkRectSize
  , c_getBuildWorkRect
  , c_getMainRect
  , c_getWorkRect
  , calcWorkRectPos
  , calcWorkRectSize
  , clearRequestFlags
  , destroy
  , getBuildWorkRect
  , getMainRect
  , getWorkRect
  , init
  , updateWorkRect
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID)
import DearImGui.Raw.Enums.ImGuiViewportFlags (ImGuiViewportFlags)
import DearImGui.Raw.ImDrawData (ImDrawData)
import DearImGui.Raw.ImDrawList (ImDrawList)
import DearImGui.Raw.ImGuiViewport (ImGuiViewport)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.Internal.ImDrawDataBuilder (ImDrawDataBuilder)
import DearImGui.Raw.Internal.ImGuiWindow (ImGuiWindow)
import DearImGui.Raw.Internal.ImRect (ImRect)
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_internal.h"

-- structs (opaque)

data ImGuiViewportP
instance Storable ImGuiViewportP where
  sizeOf _    = #{size ImGuiViewportP}
  alignment _ = #{alignment ImGuiViewportP}
  peek _ = error "ImGuiViewportP: opaque struct, peek not supported in v0"
  poke _ _ = error "ImGuiViewportP: opaque struct, poke not supported in v0"

instance HasField "iD" (Ptr ImGuiViewportP) (Ptr ImGuiID) where
  getField = #{ptr ImGuiViewportP, ID}

instance HasField "flags" (Ptr ImGuiViewportP) (Ptr ImGuiViewportFlags) where
  getField = #{ptr ImGuiViewportP, Flags}

instance HasField "pos" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, Pos}

instance HasField "size" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, Size}

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

instance HasField "workPos" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, WorkPos}

instance HasField "workSize" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, WorkSize}

instance HasField "dpiScale" (Ptr ImGuiViewportP) (Ptr Float) where
  getField = #{ptr ImGuiViewportP, DpiScale}

instance HasField "parentViewportId" (Ptr ImGuiViewportP) (Ptr ImGuiID) where
  getField = #{ptr ImGuiViewportP, ParentViewportId}

instance HasField "parentViewport" (Ptr ImGuiViewportP) (Ptr (Ptr ImGuiViewport)) where
  getField = #{ptr ImGuiViewportP, ParentViewport}

instance HasField "drawData" (Ptr ImGuiViewportP) (Ptr (Ptr ImDrawData)) where
  getField = #{ptr ImGuiViewportP, DrawData}

instance HasField "rendererUserData" (Ptr ImGuiViewportP) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiViewportP, RendererUserData}

instance HasField "platformUserData" (Ptr ImGuiViewportP) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiViewportP, PlatformUserData}

instance HasField "platformIconData" (Ptr ImGuiViewportP) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiViewportP, PlatformIconData}

instance HasField "platformHandle" (Ptr ImGuiViewportP) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiViewportP, PlatformHandle}

instance HasField "platformHandleRaw" (Ptr ImGuiViewportP) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiViewportP, PlatformHandleRaw}

instance HasField "platformWindowCreated" (Ptr ImGuiViewportP) (Ptr CBool) where
  getField = #{ptr ImGuiViewportP, PlatformWindowCreated}

instance HasField "platformRequestMove" (Ptr ImGuiViewportP) (Ptr CBool) where
  getField = #{ptr ImGuiViewportP, PlatformRequestMove}

instance HasField "platformRequestResize" (Ptr ImGuiViewportP) (Ptr CBool) where
  getField = #{ptr ImGuiViewportP, PlatformRequestResize}

instance HasField "platformRequestClose" (Ptr ImGuiViewportP) (Ptr CBool) where
  getField = #{ptr ImGuiViewportP, PlatformRequestClose}

instance HasField "window" (Ptr ImGuiViewportP) (Ptr (Ptr ImGuiWindow)) where
  getField = #{ptr ImGuiViewportP, Window}

instance HasField "idx" (Ptr ImGuiViewportP) (Ptr CInt) where
  getField = #{ptr ImGuiViewportP, Idx}

instance HasField "lastFrameActive" (Ptr ImGuiViewportP) (Ptr CInt) where
  getField = #{ptr ImGuiViewportP, LastFrameActive}

instance HasField "lastFocusedStampCount" (Ptr ImGuiViewportP) (Ptr CInt) where
  getField = #{ptr ImGuiViewportP, LastFocusedStampCount}

instance HasField "lastNameHash" (Ptr ImGuiViewportP) (Ptr ImGuiID) where
  getField = #{ptr ImGuiViewportP, LastNameHash}

instance HasField "lastPos" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, LastPos}

instance HasField "lastSize" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, LastSize}

instance HasField "alpha" (Ptr ImGuiViewportP) (Ptr Float) where
  getField = #{ptr ImGuiViewportP, Alpha}

instance HasField "lastAlpha" (Ptr ImGuiViewportP) (Ptr Float) where
  getField = #{ptr ImGuiViewportP, LastAlpha}

instance HasField "lastFocusedHadNavWindow" (Ptr ImGuiViewportP) (Ptr CBool) where
  getField = #{ptr ImGuiViewportP, LastFocusedHadNavWindow}

instance HasField "platformMonitor" (Ptr ImGuiViewportP) (Ptr CShort) where
  getField = #{ptr ImGuiViewportP, PlatformMonitor}

instance HasField "bgFgDrawLists" (Ptr ImGuiViewportP) (Ptr (Ptr ImDrawList)) where
  getField = #{ptr ImGuiViewportP, BgFgDrawLists}

bgFgDrawListsLength :: Int
bgFgDrawListsLength = #{const 2}

instance HasField "bgFgDrawListsLastFrameActive" (Ptr ImGuiViewportP) (Ptr CInt) where
  getField = #{ptr ImGuiViewportP, BgFgDrawListsLastFrameActive}

bgFgDrawListsLastFrameActiveLength :: Int
bgFgDrawListsLastFrameActiveLength = #{const 2}

instance HasField "bgFgDrawListsLastTimeActive" (Ptr ImGuiViewportP) (Ptr Float) where
  getField = #{ptr ImGuiViewportP, BgFgDrawListsLastTimeActive}

bgFgDrawListsLastTimeActiveLength :: Int
bgFgDrawListsLastTimeActiveLength = #{const 2}

instance HasField "drawDataP" (Ptr ImGuiViewportP) (Ptr ImDrawData) where
  getField = #{ptr ImGuiViewportP, DrawDataP}

instance HasField "drawDataBuilder" (Ptr ImGuiViewportP) (Ptr ImDrawDataBuilder) where
  getField = #{ptr ImGuiViewportP, DrawDataBuilder}

instance HasField "lastPlatformPos" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, LastPlatformPos}

instance HasField "lastPlatformSize" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, LastPlatformSize}

instance HasField "lastRendererSize" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, LastRendererSize}

instance HasField "workInsetMin" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, WorkInsetMin}

instance HasField "workInsetMax" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, WorkInsetMax}

instance HasField "buildWorkInsetMin" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, BuildWorkInsetMin}

instance HasField "buildWorkInsetMax" (Ptr ImGuiViewportP) (Ptr ImVec2) where
  getField = #{ptr ImGuiViewportP, BuildWorkInsetMax}

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

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

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

-- functions

foreign import capi unsafe "DearImGuiWrappers.h ImGuiViewportP_CalcWorkRectPos_wrap"
  c_calcWorkRectPos
    :: (Ptr ImGuiViewportP) -- ^ self
    -> (Ptr ImVec2) -- ^ inset_min
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

calcWorkRectPos
  :: (Ptr ImGuiViewportP) -- ^ self
  -> ImVec2 -- ^ inset_min
  -> IO ImVec2
calcWorkRectPos self inset_min =
  with inset_min $ \inset_minPtr -> alloca $ \outPtr -> c_calcWorkRectPos self inset_minPtr outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGuiViewportP_CalcWorkRectSize_wrap"
  c_calcWorkRectSize
    :: (Ptr ImGuiViewportP) -- ^ self
    -> (Ptr ImVec2) -- ^ inset_min
    -> (Ptr ImVec2) -- ^ inset_max
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

calcWorkRectSize
  :: (Ptr ImGuiViewportP) -- ^ self
  -> ImVec2 -- ^ inset_min
  -> ImVec2 -- ^ inset_max
  -> IO ImVec2
calcWorkRectSize self inset_min inset_max =
  with inset_min $ \inset_minPtr -> with inset_max $ \inset_maxPtr -> alloca $ \outPtr -> c_calcWorkRectSize self inset_minPtr inset_maxPtr outPtr >> peek outPtr

-- C: void ClearRequestFlags(ImGuiViewportP* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGuiViewportP_ClearRequestFlags"
  clearRequestFlags
    :: (Ptr ImGuiViewportP) -- ^ self
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGuiViewportP_GetBuildWorkRect_wrap"
  c_getBuildWorkRect
    :: (Ptr ImGuiViewportP) -- ^ self
    -> (Ptr ImRect) -- ^ out
    -> IO ()

getBuildWorkRect
  :: (Ptr ImGuiViewportP) -- ^ self
  -> IO ImRect
getBuildWorkRect self =
  alloca $ \outPtr -> c_getBuildWorkRect self outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGuiViewportP_GetMainRect_wrap"
  c_getMainRect
    :: (Ptr ImGuiViewportP) -- ^ self
    -> (Ptr ImRect) -- ^ out
    -> IO ()

getMainRect
  :: (Ptr ImGuiViewportP) -- ^ self
  -> IO ImRect
getMainRect self =
  alloca $ \outPtr -> c_getMainRect self outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGuiViewportP_GetWorkRect_wrap"
  c_getWorkRect
    :: (Ptr ImGuiViewportP) -- ^ self
    -> (Ptr ImRect) -- ^ out
    -> IO ()

getWorkRect
  :: (Ptr ImGuiViewportP) -- ^ self
  -> IO ImRect
getWorkRect self =
  alloca $ \outPtr -> c_getWorkRect self outPtr >> peek outPtr

-- C: void UpdateWorkRect(ImGuiViewportP* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGuiViewportP_UpdateWorkRect"
  updateWorkRect
    :: (Ptr ImGuiViewportP) -- ^ self
    -> IO ()