packages feed

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

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

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

module DearImGui.Raw.ImTextureData
  ( ImTextureData (..)
  , c_getTexRef
  , create
  , destroy
  , destroyPixels
  , getPitch
  , getPixels
  , getPixelsAt
  , getSizeInBytes
  , getTexID
  , getTexRef
  , init
  , setStatus
  , setTexID
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImTextureID)
import DearImGui.Raw.Enums.ImTextureFormat (ImTextureFormat)
import DearImGui.Raw.Enums.ImTextureStatus (ImTextureStatus)
import DearImGui.Raw.ImTextureRect (ImTextureRect)
import DearImGui.Raw.ImTextureRef (ImTextureRef)
import DearImGui.Raw.ImVector (ImVector)
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" "ImTextureData" #-} ImTextureData = ImTextureData
  { uniqueID :: CInt
  , status :: ImTextureStatus
  , backendUserData :: Ptr ()
  , queueUserData :: Ptr ()
  , texID :: ImTextureID
  , format :: ImTextureFormat
  , width :: CInt
  , height :: CInt
  , bytesPerPixel :: CInt
  , pixels :: Ptr CUChar
  , usedRect :: ImTextureRect
  , updateRect :: ImTextureRect
  , updates :: ImVector ImTextureRect
  , unusedFrames :: CInt
  , refCount :: CUShort
  , useColors :: CBool
  , wantDestroyNextFrame :: CBool
  }
  deriving (Eq, Show)
instance Storable ImTextureData where
  sizeOf _    = #{size ImTextureData}
  alignment _ = #{alignment ImTextureData}
  peek p = ImTextureData <$> #{peek ImTextureData, UniqueID} p <*> #{peek ImTextureData, Status} p <*> #{peek ImTextureData, BackendUserData} p <*> #{peek ImTextureData, QueueUserData} p <*> #{peek ImTextureData, TexID} p <*> #{peek ImTextureData, Format} p <*> #{peek ImTextureData, Width} p <*> #{peek ImTextureData, Height} p <*> #{peek ImTextureData, BytesPerPixel} p <*> #{peek ImTextureData, Pixels} p <*> #{peek ImTextureData, UsedRect} p <*> #{peek ImTextureData, UpdateRect} p <*> #{peek ImTextureData, Updates} p <*> #{peek ImTextureData, UnusedFrames} p <*> #{peek ImTextureData, RefCount} p <*> #{peek ImTextureData, UseColors} p <*> #{peek ImTextureData, WantDestroyNextFrame} p
  poke p v = do
    #{poke ImTextureData, UniqueID} p v.uniqueID
    #{poke ImTextureData, Status} p v.status
    #{poke ImTextureData, BackendUserData} p v.backendUserData
    #{poke ImTextureData, QueueUserData} p v.queueUserData
    #{poke ImTextureData, TexID} p v.texID
    #{poke ImTextureData, Format} p v.format
    #{poke ImTextureData, Width} p v.width
    #{poke ImTextureData, Height} p v.height
    #{poke ImTextureData, BytesPerPixel} p v.bytesPerPixel
    #{poke ImTextureData, Pixels} p v.pixels
    #{poke ImTextureData, UsedRect} p v.usedRect
    #{poke ImTextureData, UpdateRect} p v.updateRect
    #{poke ImTextureData, Updates} p v.updates
    #{poke ImTextureData, UnusedFrames} p v.unusedFrames
    #{poke ImTextureData, RefCount} p v.refCount
    #{poke ImTextureData, UseColors} p v.useColors
    #{poke ImTextureData, WantDestroyNextFrame} p v.wantDestroyNextFrame

instance HasField "uniqueID" (Ptr ImTextureData) (Ptr CInt) where
  getField = #{ptr ImTextureData, UniqueID}

instance HasField "status" (Ptr ImTextureData) (Ptr ImTextureStatus) where
  getField = #{ptr ImTextureData, Status}

instance HasField "backendUserData" (Ptr ImTextureData) (Ptr (Ptr ())) where
  getField = #{ptr ImTextureData, BackendUserData}

instance HasField "queueUserData" (Ptr ImTextureData) (Ptr (Ptr ())) where
  getField = #{ptr ImTextureData, QueueUserData}

instance HasField "texID" (Ptr ImTextureData) (Ptr ImTextureID) where
  getField = #{ptr ImTextureData, TexID}

instance HasField "format" (Ptr ImTextureData) (Ptr ImTextureFormat) where
  getField = #{ptr ImTextureData, Format}

instance HasField "width" (Ptr ImTextureData) (Ptr CInt) where
  getField = #{ptr ImTextureData, Width}

instance HasField "height" (Ptr ImTextureData) (Ptr CInt) where
  getField = #{ptr ImTextureData, Height}

instance HasField "bytesPerPixel" (Ptr ImTextureData) (Ptr CInt) where
  getField = #{ptr ImTextureData, BytesPerPixel}

instance HasField "pixels" (Ptr ImTextureData) (Ptr (Ptr CUChar)) where
  getField = #{ptr ImTextureData, Pixels}

instance HasField "usedRect" (Ptr ImTextureData) (Ptr ImTextureRect) where
  getField = #{ptr ImTextureData, UsedRect}

instance HasField "updateRect" (Ptr ImTextureData) (Ptr ImTextureRect) where
  getField = #{ptr ImTextureData, UpdateRect}

instance HasField "updates" (Ptr ImTextureData) (Ptr (ImVector ImTextureRect)) where
  getField = #{ptr ImTextureData, Updates}

instance HasField "unusedFrames" (Ptr ImTextureData) (Ptr CInt) where
  getField = #{ptr ImTextureData, UnusedFrames}

instance HasField "refCount" (Ptr ImTextureData) (Ptr CUShort) where
  getField = #{ptr ImTextureData, RefCount}

instance HasField "useColors" (Ptr ImTextureData) (Ptr CBool) where
  getField = #{ptr ImTextureData, UseColors}

instance HasField "wantDestroyNextFrame" (Ptr ImTextureData) (Ptr CBool) where
  getField = #{ptr ImTextureData, WantDestroyNextFrame}

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

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

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

-- functions

-- C: void Create(ImTextureData* self, ImTextureFormat format, int w, int h)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_Create"
  create
    :: (Ptr ImTextureData) -- ^ self
    -> ImTextureFormat -- ^ format
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> IO ()

-- C: void DestroyPixels(ImTextureData* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_DestroyPixels"
  destroyPixels
    :: (Ptr ImTextureData) -- ^ self
    -> IO ()

-- C: int GetPitch(const ImTextureData* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_GetPitch"
  getPitch
    :: (Ptr ImTextureData) -- ^ self
    -> IO CInt

-- C: void* GetPixels(ImTextureData* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_GetPixels"
  getPixels
    :: (Ptr ImTextureData) -- ^ self
    -> IO (Ptr ())

-- C: void* GetPixelsAt(ImTextureData* self, int x, int y)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_GetPixelsAt"
  getPixelsAt
    :: (Ptr ImTextureData) -- ^ self
    -> CInt -- ^ x
    -> CInt -- ^ y
    -> IO (Ptr ())

-- C: int GetSizeInBytes(const ImTextureData* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_GetSizeInBytes"
  getSizeInBytes
    :: (Ptr ImTextureData) -- ^ self
    -> IO CInt

-- C: ImTextureID GetTexID(const ImTextureData* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_GetTexID"
  getTexID
    :: (Ptr ImTextureData) -- ^ self
    -> IO ImTextureID

foreign import capi unsafe "DearImGuiWrappers.h ImTextureData_GetTexRef_wrap"
  c_getTexRef
    :: (Ptr ImTextureData) -- ^ self
    -> (Ptr ImTextureRef) -- ^ out
    -> IO ()

getTexRef
  :: (Ptr ImTextureData) -- ^ self
  -> IO ImTextureRef
getTexRef self =
  alloca $ \outPtr -> c_getTexRef self outPtr >> peek outPtr

-- C: void SetStatus(ImTextureData* self, ImTextureStatus status)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_SetStatus"
  setStatus
    :: (Ptr ImTextureData) -- ^ self
    -> ImTextureStatus -- ^ status
    -> IO ()

-- C: void SetTexID(ImTextureData* self, ImTextureID tex_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureData_SetTexID"
  setTexID
    :: (Ptr ImTextureData) -- ^ self
    -> ImTextureID -- ^ tex_id
    -> IO ()