packages feed

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

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

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

module DearImGui.Raw.ImGuiViewport
  ( ImGuiViewport (..)
  , c_getCenter
  , c_getWorkCenter
  , destroy
  , getCenter
  , getDebugName
  , getWorkCenter
  , init
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID)
import DearImGui.Raw.Enums.ImGuiViewportFlags (ImGuiViewportFlags)
import DearImGui.Raw.ImDrawData (ImDrawData)
import DearImGui.Raw.ImVec2 (ImVec2)
import Foreign.C.String (CString)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
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" "ImGuiViewport" #-} ImGuiViewport = ImGuiViewport
  { iD :: ImGuiID
  , flags :: ImGuiViewportFlags
  , pos :: ImVec2
  , size :: ImVec2
  , framebufferScale :: ImVec2
  , workPos :: ImVec2
  , workSize :: ImVec2
  , dpiScale :: Float
  , parentViewportId :: ImGuiID
  , parentViewport :: Ptr ImGuiViewport
  , drawData :: Ptr ImDrawData
  , rendererUserData :: Ptr ()
  , platformUserData :: Ptr ()
  , platformIconData :: Ptr ()
  , platformHandle :: Ptr ()
  , platformHandleRaw :: Ptr ()
  , platformWindowCreated :: CBool
  , platformRequestMove :: CBool
  , platformRequestResize :: CBool
  , platformRequestClose :: CBool
  }
  deriving (Eq, Show)
instance Storable ImGuiViewport where
  sizeOf _    = #{size ImGuiViewport}
  alignment _ = #{alignment ImGuiViewport}
  peek p = ImGuiViewport <$> #{peek ImGuiViewport, ID} p <*> #{peek ImGuiViewport, Flags} p <*> #{peek ImGuiViewport, Pos} p <*> #{peek ImGuiViewport, Size} p <*> #{peek ImGuiViewport, FramebufferScale} p <*> #{peek ImGuiViewport, WorkPos} p <*> #{peek ImGuiViewport, WorkSize} p <*> #{peek ImGuiViewport, DpiScale} p <*> #{peek ImGuiViewport, ParentViewportId} p <*> #{peek ImGuiViewport, ParentViewport} p <*> #{peek ImGuiViewport, DrawData} p <*> #{peek ImGuiViewport, RendererUserData} p <*> #{peek ImGuiViewport, PlatformUserData} p <*> #{peek ImGuiViewport, PlatformIconData} p <*> #{peek ImGuiViewport, PlatformHandle} p <*> #{peek ImGuiViewport, PlatformHandleRaw} p <*> #{peek ImGuiViewport, PlatformWindowCreated} p <*> #{peek ImGuiViewport, PlatformRequestMove} p <*> #{peek ImGuiViewport, PlatformRequestResize} p <*> #{peek ImGuiViewport, PlatformRequestClose} p
  poke p v = do
    #{poke ImGuiViewport, ID} p v.iD
    #{poke ImGuiViewport, Flags} p v.flags
    #{poke ImGuiViewport, Pos} p v.pos
    #{poke ImGuiViewport, Size} p v.size
    #{poke ImGuiViewport, FramebufferScale} p v.framebufferScale
    #{poke ImGuiViewport, WorkPos} p v.workPos
    #{poke ImGuiViewport, WorkSize} p v.workSize
    #{poke ImGuiViewport, DpiScale} p v.dpiScale
    #{poke ImGuiViewport, ParentViewportId} p v.parentViewportId
    #{poke ImGuiViewport, ParentViewport} p v.parentViewport
    #{poke ImGuiViewport, DrawData} p v.drawData
    #{poke ImGuiViewport, RendererUserData} p v.rendererUserData
    #{poke ImGuiViewport, PlatformUserData} p v.platformUserData
    #{poke ImGuiViewport, PlatformIconData} p v.platformIconData
    #{poke ImGuiViewport, PlatformHandle} p v.platformHandle
    #{poke ImGuiViewport, PlatformHandleRaw} p v.platformHandleRaw
    #{poke ImGuiViewport, PlatformWindowCreated} p v.platformWindowCreated
    #{poke ImGuiViewport, PlatformRequestMove} p v.platformRequestMove
    #{poke ImGuiViewport, PlatformRequestResize} p v.platformRequestResize
    #{poke ImGuiViewport, PlatformRequestClose} p v.platformRequestClose

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-- functions

foreign import capi unsafe "DearImGuiWrappers.h ImGuiViewport_GetCenter_wrap"
  c_getCenter
    :: (Ptr ImGuiViewport) -- ^ self
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

getCenter
  :: (Ptr ImGuiViewport) -- ^ self
  -> IO ImVec2
getCenter self =
  alloca $ \outPtr -> c_getCenter self outPtr >> peek outPtr

-- C: const char* GetDebugName(const ImGuiViewport* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiViewport_GetDebugName"
  getDebugName
    :: (Ptr ImGuiViewport) -- ^ self
    -> IO CString

foreign import capi unsafe "DearImGuiWrappers.h ImGuiViewport_GetWorkCenter_wrap"
  c_getWorkCenter
    :: (Ptr ImGuiViewport) -- ^ self
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

getWorkCenter
  :: (Ptr ImGuiViewport) -- ^ self
  -> IO ImVec2
getWorkCenter self =
  alloca $ \outPtr -> c_getWorkCenter self outPtr >> peek outPtr