packages feed

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

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

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

module DearImGui.Raw
  ( ImDrawCallback
  , ImDrawIdx
  , ImDrawTextFlags
  , ImGuiID
  , ImGuiInputTextCallback
  , ImGuiKeyChord
  , ImGuiMemAllocFunc
  , ImGuiMemFreeFunc
  , ImGuiSelectionUserData
  , ImGuiSizeCallback
  , ImS16
  , ImS32
  , ImS64
  , ImS8
  , ImSmallStack__ImDrawFlags_3_ImU16
  , ImTextureID
  , ImU16
  , ImU32
  , ImU64
  , ImU8
  , ImWchar
  , ImWchar16
  , ImWchar32
  , destroyImSmallStack__ImDrawFlags_3_ImU16
  , initImSmallStack__ImDrawFlags_3_ImU16
  , localDataLength
  , pattern IMGUI_VERSION_NUM
  , pattern IM_COL32_A_MASK
  , pattern IM_COL32_A_SHIFT
  , pattern IM_COL32_B_SHIFT
  , pattern IM_COL32_G_SHIFT
  , pattern IM_COL32_R_SHIFT
  , pattern IM_UNICODE_CODEPOINT_INVALID
  , pattern IM_UNICODE_CODEPOINT_MAX
  , pattern ImFontAtlasRectId_Invalid
  , withDefaultImSmallStack__ImDrawFlags_3_ImU16
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw.Enums.ImDrawFlags (ImDrawFlags)
import {-# SOURCE #-} DearImGui.Raw.ImDrawCmd (ImDrawCmd)
import {-# SOURCE #-} DearImGui.Raw.ImDrawList (ImDrawList)
import {-# SOURCE #-} DearImGui.Raw.ImGuiInputTextCallbackData (ImGuiInputTextCallbackData)
import DearImGui.Raw.ImGuiSizeCallbackData (ImGuiSizeCallbackData)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Ptr (FunPtr, Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))

#include "dcimgui_nodefaultargfunctions.h"

-- typedefs

type ImDrawCallback = FunPtr ((Ptr ImDrawList) -> (Ptr ImDrawCmd) -> IO ())

-- | Default: 16-bit (for maximum compatibility with renderer backends)
type ImDrawIdx = CUInt

-- | -> enum ImDrawTextFlags_      // Internal, do not use!
type ImDrawTextFlags = CInt

-- | Scalar data types
-- A unique ID used by widgets (typically the result of hashing a stack of string)
type ImGuiID = CUInt

-- | Callback and functions types
-- Callback function for ImGui::InputText()
type ImGuiInputTextCallback = FunPtr ((Ptr ImGuiInputTextCallbackData) -> IO CInt)

-- | -> ImGuiKey | ImGuiMod_XXX    // Flags: for IsKeyChordPressed(), Shortcut() etc. an ImGuiKey optionally OR-ed with one or more ImGuiMod_XXX values.
type ImGuiKeyChord = CInt

-- | Function signature for ImGui::SetAllocatorFunctions()
type ImGuiMemAllocFunc = FunPtr (CSize -> (Ptr ()) -> IO (Ptr ()))

-- | Function signature for ImGui::SetAllocatorFunctions()
type ImGuiMemFreeFunc = FunPtr ((Ptr ()) -> (Ptr ()) -> IO ())

-- | Multi-Selection item index or identifier when using BeginMultiSelect()
-- - Used by SetNextItemSelectionUserData() + and inside ImGuiMultiSelectIO structure.
-- - Most users are likely to use this store an item INDEX but this may be used to store a POINTER/ID as well. Read comments near ImGuiMultiSelectIO for details.
type ImGuiSelectionUserData = ImS64

-- | Callback function for ImGui::SetNextWindowSizeConstraints()
type ImGuiSizeCallback = FunPtr ((Ptr ImGuiSizeCallbackData) -> IO ())

-- | 16-bit signed integer
type ImS16 = CShort

-- | 32-bit signed integer == int
type ImS32 = CInt

-- | 64-bit signed integer
type ImS64 = CLLong

-- | 8-bit signed integer
type ImS8 = CChar

-- | Default: store up to 64-bits (any pointer or integer). A majority of backends are ok with that.
type ImTextureID = ImU64

-- | 16-bit unsigned integer
type ImU16 = CUShort

-- | 32-bit unsigned integer (often used to store packed colors)
type ImU32 = CUInt

-- | 64-bit unsigned integer
type ImU64 = CULLong

-- | 8-bit unsigned integer
type ImU8 = CUChar

type ImWchar = ImWchar32

-- | A single decoded U16 character/code point. We encode them as multi bytes UTF-8 when used in strings.
type ImWchar16 = CUShort

-- | Character types
-- (we generally use UTF-8 encoded string in the API. This is storage specifically for a decoded character used for keyboard input and display)
-- A single decoded U32 character/code point. We encode them as multi bytes UTF-8 when used in strings.
type ImWchar32 = CUInt

-- structs (opaque)

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

instance HasField "localData" (Ptr ImSmallStack__ImDrawFlags_3_ImU16) (Ptr ImDrawFlags) where
  getField = #{ptr ImSmallStack__ImDrawFlags_3_ImU16, LocalData}

localDataLength :: Int
localDataLength = #{const 3}

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

foreign import capi unsafe "DearImGuiWrappers.h ImSmallStack__ImDrawFlags_3_ImU16_Init_wrap"
  initImSmallStack__ImDrawFlags_3_ImU16
    :: Ptr ImSmallStack__ImDrawFlags_3_ImU16
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImSmallStack__ImDrawFlags_3_ImU16_Destroy_wrap"
  destroyImSmallStack__ImDrawFlags_3_ImU16
    :: Ptr ImSmallStack__ImDrawFlags_3_ImU16
    -> IO ()

withDefaultImSmallStack__ImDrawFlags_3_ImU16 :: (Ptr ImSmallStack__ImDrawFlags_3_ImU16 -> IO a) -> IO a
withDefaultImSmallStack__ImDrawFlags_3_ImU16 k = alloca $ \p -> bracket_ (initImSmallStack__ImDrawFlags_3_ImU16 p) (destroyImSmallStack__ImDrawFlags_3_ImU16 p) (k p)

-- defines

pattern IMGUI_VERSION_NUM :: (Eq a, Num a) => a
pattern IMGUI_VERSION_NUM = #{const IMGUI_VERSION_NUM}

pattern IM_COL32_A_MASK :: (Eq a, Num a) => a
pattern IM_COL32_A_MASK = #{const IM_COL32_A_MASK}

pattern IM_COL32_A_SHIFT :: (Eq a, Num a) => a
pattern IM_COL32_A_SHIFT = #{const IM_COL32_A_SHIFT}

pattern IM_COL32_B_SHIFT :: (Eq a, Num a) => a
pattern IM_COL32_B_SHIFT = #{const IM_COL32_B_SHIFT}

pattern IM_COL32_G_SHIFT :: (Eq a, Num a) => a
pattern IM_COL32_G_SHIFT = #{const IM_COL32_G_SHIFT}

pattern IM_COL32_R_SHIFT :: (Eq a, Num a) => a
pattern IM_COL32_R_SHIFT = #{const IM_COL32_R_SHIFT}

pattern IM_UNICODE_CODEPOINT_INVALID :: (Eq a, Num a) => a
pattern IM_UNICODE_CODEPOINT_INVALID = #{const IM_UNICODE_CODEPOINT_INVALID}

pattern IM_UNICODE_CODEPOINT_MAX :: (Eq a, Num a) => a
pattern IM_UNICODE_CODEPOINT_MAX = #{const IM_UNICODE_CODEPOINT_MAX}

pattern ImFontAtlasRectId_Invalid :: (Eq a, Num a) => a
pattern ImFontAtlasRectId_Invalid = #{const ImFontAtlasRectId_Invalid}