packages feed

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

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

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

module DearImGui.Raw.ImFontAtlas
  ( ImFontAtlas (..)
  , addCustomRect
  , addFont
  , addFontDefault
  , addFontDefaultBitmap
  , addFontDefaultVector
  , addFontFromFileTTF
  , addFontFromMemoryCompressedBase85TTF
  , addFontFromMemoryCompressedTTF
  , addFontFromMemoryTTF
  , clear
  , clearFonts
  , clearInputData
  , clearTexData
  , compactCache
  , destroy
  , getCustomRect
  , getGlyphRangesDefault
  , init
  , removeCustomRect
  , removeFont
  , setFontLoader
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImWchar)
import DearImGui.Raw.Enums.ImFontAtlasFlags (ImFontAtlasFlags)
import DearImGui.Raw.Enums.ImTextureFormat (ImTextureFormat)
import DearImGui.Raw.ImDrawListSharedData (ImDrawListSharedData)
import {-# SOURCE #-} DearImGui.Raw.ImFont (ImFont)
import DearImGui.Raw.ImFontAtlasBuilder (ImFontAtlasBuilder)
import DearImGui.Raw.ImFontAtlasRect (Id, ImFontAtlasRect)
import {-# SOURCE #-} DearImGui.Raw.ImFontConfig (ImFontConfig)
import DearImGui.Raw.ImFontLoader (ImFontLoader)
import DearImGui.Raw.ImGuiContext (ImGuiContext)
import DearImGui.Raw.ImTextureData (ImTextureData)
import DearImGui.Raw.ImTextureRef (ImTextureRef)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVector (ImVector)
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" "ImFontAtlas" #-} ImFontAtlas = ImFontAtlas
  { flags :: ImFontAtlasFlags
  , texDesiredFormat :: ImTextureFormat
  , texGlyphPadding :: CInt
  , texMinWidth :: CInt
  , texMinHeight :: CInt
  , texMaxWidth :: CInt
  , texMaxHeight :: CInt
  , userData :: Ptr ()
  , texRef :: ImTextureRef
  , texData :: Ptr ImTextureData
  , texList :: ImVector (Ptr ImTextureData)
  , locked :: CBool
  , rendererHasTextures :: CBool
  , texIsBuilt :: CBool
  , texPixelsUseColors :: CBool
  , texUvScale :: ImVec2
  , texUvWhitePixel :: ImVec2
  , fonts :: ImVector (Ptr ImFont)
  , sources :: ImVector ImFontConfig
  , texNextUniqueID :: CInt
  , fontNextUniqueID :: CInt
  , drawListSharedDatas :: ImVector (Ptr ImDrawListSharedData)
  , builder :: Ptr ImFontAtlasBuilder
  , fontLoader :: Ptr ImFontLoader
  , fontLoaderName :: CString
  , fontLoaderData :: Ptr ()
  , fontLoaderFlags :: CUInt
  , refCount :: CInt
  , ownerContext :: Ptr ImGuiContext
  }
  deriving (Eq, Show)
instance Storable ImFontAtlas where
  sizeOf _    = #{size ImFontAtlas}
  alignment _ = #{alignment ImFontAtlas}
  peek p = ImFontAtlas <$> #{peek ImFontAtlas, Flags} p <*> #{peek ImFontAtlas, TexDesiredFormat} p <*> #{peek ImFontAtlas, TexGlyphPadding} p <*> #{peek ImFontAtlas, TexMinWidth} p <*> #{peek ImFontAtlas, TexMinHeight} p <*> #{peek ImFontAtlas, TexMaxWidth} p <*> #{peek ImFontAtlas, TexMaxHeight} p <*> #{peek ImFontAtlas, UserData} p <*> #{peek ImFontAtlas, TexRef} p <*> #{peek ImFontAtlas, TexData} p <*> #{peek ImFontAtlas, TexList} p <*> #{peek ImFontAtlas, Locked} p <*> #{peek ImFontAtlas, RendererHasTextures} p <*> #{peek ImFontAtlas, TexIsBuilt} p <*> #{peek ImFontAtlas, TexPixelsUseColors} p <*> #{peek ImFontAtlas, TexUvScale} p <*> #{peek ImFontAtlas, TexUvWhitePixel} p <*> #{peek ImFontAtlas, Fonts} p <*> #{peek ImFontAtlas, Sources} p <*> #{peek ImFontAtlas, TexNextUniqueID} p <*> #{peek ImFontAtlas, FontNextUniqueID} p <*> #{peek ImFontAtlas, DrawListSharedDatas} p <*> #{peek ImFontAtlas, Builder} p <*> #{peek ImFontAtlas, FontLoader} p <*> #{peek ImFontAtlas, FontLoaderName} p <*> #{peek ImFontAtlas, FontLoaderData} p <*> #{peek ImFontAtlas, FontLoaderFlags} p <*> #{peek ImFontAtlas, RefCount} p <*> #{peek ImFontAtlas, OwnerContext} p
  poke p v = do
    #{poke ImFontAtlas, Flags} p v.flags
    #{poke ImFontAtlas, TexDesiredFormat} p v.texDesiredFormat
    #{poke ImFontAtlas, TexGlyphPadding} p v.texGlyphPadding
    #{poke ImFontAtlas, TexMinWidth} p v.texMinWidth
    #{poke ImFontAtlas, TexMinHeight} p v.texMinHeight
    #{poke ImFontAtlas, TexMaxWidth} p v.texMaxWidth
    #{poke ImFontAtlas, TexMaxHeight} p v.texMaxHeight
    #{poke ImFontAtlas, UserData} p v.userData
    #{poke ImFontAtlas, TexRef} p v.texRef
    #{poke ImFontAtlas, TexData} p v.texData
    #{poke ImFontAtlas, TexList} p v.texList
    #{poke ImFontAtlas, Locked} p v.locked
    #{poke ImFontAtlas, RendererHasTextures} p v.rendererHasTextures
    #{poke ImFontAtlas, TexIsBuilt} p v.texIsBuilt
    #{poke ImFontAtlas, TexPixelsUseColors} p v.texPixelsUseColors
    #{poke ImFontAtlas, TexUvScale} p v.texUvScale
    #{poke ImFontAtlas, TexUvWhitePixel} p v.texUvWhitePixel
    #{poke ImFontAtlas, Fonts} p v.fonts
    #{poke ImFontAtlas, Sources} p v.sources
    #{poke ImFontAtlas, TexNextUniqueID} p v.texNextUniqueID
    #{poke ImFontAtlas, FontNextUniqueID} p v.fontNextUniqueID
    #{poke ImFontAtlas, DrawListSharedDatas} p v.drawListSharedDatas
    #{poke ImFontAtlas, Builder} p v.builder
    #{poke ImFontAtlas, FontLoader} p v.fontLoader
    #{poke ImFontAtlas, FontLoaderName} p v.fontLoaderName
    #{poke ImFontAtlas, FontLoaderData} p v.fontLoaderData
    #{poke ImFontAtlas, FontLoaderFlags} p v.fontLoaderFlags
    #{poke ImFontAtlas, RefCount} p v.refCount
    #{poke ImFontAtlas, OwnerContext} p v.ownerContext

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

instance HasField "texDesiredFormat" (Ptr ImFontAtlas) (Ptr ImTextureFormat) where
  getField = #{ptr ImFontAtlas, TexDesiredFormat}

instance HasField "texGlyphPadding" (Ptr ImFontAtlas) (Ptr CInt) where
  getField = #{ptr ImFontAtlas, TexGlyphPadding}

instance HasField "texMinWidth" (Ptr ImFontAtlas) (Ptr CInt) where
  getField = #{ptr ImFontAtlas, TexMinWidth}

instance HasField "texMinHeight" (Ptr ImFontAtlas) (Ptr CInt) where
  getField = #{ptr ImFontAtlas, TexMinHeight}

instance HasField "texMaxWidth" (Ptr ImFontAtlas) (Ptr CInt) where
  getField = #{ptr ImFontAtlas, TexMaxWidth}

instance HasField "texMaxHeight" (Ptr ImFontAtlas) (Ptr CInt) where
  getField = #{ptr ImFontAtlas, TexMaxHeight}

instance HasField "userData" (Ptr ImFontAtlas) (Ptr (Ptr ())) where
  getField = #{ptr ImFontAtlas, UserData}

instance HasField "texRef" (Ptr ImFontAtlas) (Ptr ImTextureRef) where
  getField = #{ptr ImFontAtlas, TexRef}

instance HasField "texData" (Ptr ImFontAtlas) (Ptr (Ptr ImTextureData)) where
  getField = #{ptr ImFontAtlas, TexData}

instance HasField "texList" (Ptr ImFontAtlas) (Ptr (ImVector (Ptr ImTextureData))) where
  getField = #{ptr ImFontAtlas, TexList}

instance HasField "locked" (Ptr ImFontAtlas) (Ptr CBool) where
  getField = #{ptr ImFontAtlas, Locked}

instance HasField "rendererHasTextures" (Ptr ImFontAtlas) (Ptr CBool) where
  getField = #{ptr ImFontAtlas, RendererHasTextures}

instance HasField "texIsBuilt" (Ptr ImFontAtlas) (Ptr CBool) where
  getField = #{ptr ImFontAtlas, TexIsBuilt}

instance HasField "texPixelsUseColors" (Ptr ImFontAtlas) (Ptr CBool) where
  getField = #{ptr ImFontAtlas, TexPixelsUseColors}

instance HasField "texUvScale" (Ptr ImFontAtlas) (Ptr ImVec2) where
  getField = #{ptr ImFontAtlas, TexUvScale}

instance HasField "texUvWhitePixel" (Ptr ImFontAtlas) (Ptr ImVec2) where
  getField = #{ptr ImFontAtlas, TexUvWhitePixel}

instance HasField "fonts" (Ptr ImFontAtlas) (Ptr (ImVector (Ptr ImFont))) where
  getField = #{ptr ImFontAtlas, Fonts}

instance HasField "sources" (Ptr ImFontAtlas) (Ptr (ImVector ImFontConfig)) where
  getField = #{ptr ImFontAtlas, Sources}

instance HasField "texNextUniqueID" (Ptr ImFontAtlas) (Ptr CInt) where
  getField = #{ptr ImFontAtlas, TexNextUniqueID}

instance HasField "fontNextUniqueID" (Ptr ImFontAtlas) (Ptr CInt) where
  getField = #{ptr ImFontAtlas, FontNextUniqueID}

instance HasField "drawListSharedDatas" (Ptr ImFontAtlas) (Ptr (ImVector (Ptr ImDrawListSharedData))) where
  getField = #{ptr ImFontAtlas, DrawListSharedDatas}

instance HasField "builder" (Ptr ImFontAtlas) (Ptr (Ptr ImFontAtlasBuilder)) where
  getField = #{ptr ImFontAtlas, Builder}

instance HasField "fontLoader" (Ptr ImFontAtlas) (Ptr (Ptr ImFontLoader)) where
  getField = #{ptr ImFontAtlas, FontLoader}

instance HasField "fontLoaderName" (Ptr ImFontAtlas) (Ptr CString) where
  getField = #{ptr ImFontAtlas, FontLoaderName}

instance HasField "fontLoaderData" (Ptr ImFontAtlas) (Ptr (Ptr ())) where
  getField = #{ptr ImFontAtlas, FontLoaderData}

instance HasField "fontLoaderFlags" (Ptr ImFontAtlas) (Ptr CUInt) where
  getField = #{ptr ImFontAtlas, FontLoaderFlags}

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

instance HasField "ownerContext" (Ptr ImFontAtlas) (Ptr (Ptr ImGuiContext)) where
  getField = #{ptr ImFontAtlas, OwnerContext}

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

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

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

-- functions

-- C: ImFontAtlasRectId AddCustomRect(ImFontAtlas* self, int width, int height, ImFontAtlasRect* out_r)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddCustomRect"
  addCustomRect
    :: (Ptr ImFontAtlas) -- ^ self
    -> CInt -- ^ width
    -> CInt -- ^ height
    -> (Ptr ImFontAtlasRect) -- ^ out_r
    -> IO Id

-- C: ImFont* AddFont(ImFontAtlas* self, const ImFontConfig* font_cfg)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddFont"
  addFont
    :: (Ptr ImFontAtlas) -- ^ self
    -> (Ptr ImFontConfig) -- ^ font_cfg
    -> IO (Ptr ImFont)

-- C: ImFont* AddFontDefault(ImFontAtlas* self, const ImFontConfig* font_cfg)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddFontDefault"
  addFontDefault
    :: (Ptr ImFontAtlas) -- ^ self
    -> (Ptr ImFontConfig) -- ^ font_cfg
    -> IO (Ptr ImFont)

-- C: ImFont* AddFontDefaultBitmap(ImFontAtlas* self, const ImFontConfig* font_cfg)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddFontDefaultBitmap"
  addFontDefaultBitmap
    :: (Ptr ImFontAtlas) -- ^ self
    -> (Ptr ImFontConfig) -- ^ font_cfg
    -> IO (Ptr ImFont)

-- C: ImFont* AddFontDefaultVector(ImFontAtlas* self, const ImFontConfig* font_cfg)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddFontDefaultVector"
  addFontDefaultVector
    :: (Ptr ImFontAtlas) -- ^ self
    -> (Ptr ImFontConfig) -- ^ font_cfg
    -> IO (Ptr ImFont)

-- C: ImFont* AddFontFromFileTTF(ImFontAtlas* self, const char* filename, float size_pixels, const ImFontConfig* font_cfg, const ImWchar* glyph_ranges)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddFontFromFileTTF"
  addFontFromFileTTF
    :: (Ptr ImFontAtlas) -- ^ self
    -> CString -- ^ filename
    -> Float -- ^ size_pixels
    -> (Ptr ImFontConfig) -- ^ font_cfg
    -> (Ptr ImWchar) -- ^ glyph_ranges
    -> IO (Ptr ImFont)

-- C: ImFont* AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self, const char* compressed_font_data_base85, float size_pixels, const ImFontConfig* font_cfg, const ImWchar* glyph_ranges)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddFontFromMemoryCompressedBase85TTF"
  addFontFromMemoryCompressedBase85TTF
    :: (Ptr ImFontAtlas) -- ^ self
    -> CString -- ^ compressed_font_data_base85
    -> Float -- ^ size_pixels
    -> (Ptr ImFontConfig) -- ^ font_cfg
    -> (Ptr ImWchar) -- ^ glyph_ranges
    -> IO (Ptr ImFont)

-- C: ImFont* AddFontFromMemoryCompressedTTF(ImFontAtlas* self, const void* compressed_font_data, int compressed_font_data_size, float size_pixels, const ImFontConfig* font_cfg, const ImWchar* glyph_ranges)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddFontFromMemoryCompressedTTF"
  addFontFromMemoryCompressedTTF
    :: (Ptr ImFontAtlas) -- ^ self
    -> (Ptr ()) -- ^ compressed_font_data
    -> CInt -- ^ compressed_font_data_size
    -> Float -- ^ size_pixels
    -> (Ptr ImFontConfig) -- ^ font_cfg
    -> (Ptr ImWchar) -- ^ glyph_ranges
    -> IO (Ptr ImFont)

-- C: ImFont* AddFontFromMemoryTTF(ImFontAtlas* self, void* font_data, int font_data_size, float size_pixels, const ImFontConfig* font_cfg, const ImWchar* glyph_ranges)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_AddFontFromMemoryTTF"
  addFontFromMemoryTTF
    :: (Ptr ImFontAtlas) -- ^ self
    -> (Ptr ()) -- ^ font_data
    -> CInt -- ^ font_data_size
    -> Float -- ^ size_pixels
    -> (Ptr ImFontConfig) -- ^ font_cfg
    -> (Ptr ImWchar) -- ^ glyph_ranges
    -> IO (Ptr ImFont)

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

-- C: void ClearFonts(ImFontAtlas* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_ClearFonts"
  clearFonts
    :: (Ptr ImFontAtlas) -- ^ self
    -> IO ()

-- C: void ClearInputData(ImFontAtlas* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_ClearInputData"
  clearInputData
    :: (Ptr ImFontAtlas) -- ^ self
    -> IO ()

-- C: void ClearTexData(ImFontAtlas* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_ClearTexData"
  clearTexData
    :: (Ptr ImFontAtlas) -- ^ self
    -> IO ()

-- C: void CompactCache(ImFontAtlas* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_CompactCache"
  compactCache
    :: (Ptr ImFontAtlas) -- ^ self
    -> IO ()

-- C: bool GetCustomRect(const ImFontAtlas* self, ImFontAtlasRectId id, ImFontAtlasRect* out_r)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_GetCustomRect"
  getCustomRect
    :: (Ptr ImFontAtlas) -- ^ self
    -> Id -- ^ id
    -> (Ptr ImFontAtlasRect) -- ^ out_r
    -> IO CBool

-- C: const ImWchar* GetGlyphRangesDefault(ImFontAtlas* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_GetGlyphRangesDefault"
  getGlyphRangesDefault
    :: (Ptr ImFontAtlas) -- ^ self
    -> IO (Ptr ImWchar)

-- C: void RemoveCustomRect(ImFontAtlas* self, ImFontAtlasRectId id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_RemoveCustomRect"
  removeCustomRect
    :: (Ptr ImFontAtlas) -- ^ self
    -> Id -- ^ id
    -> IO ()

-- C: void RemoveFont(ImFontAtlas* self, ImFont* font)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_RemoveFont"
  removeFont
    :: (Ptr ImFontAtlas) -- ^ self
    -> (Ptr ImFont) -- ^ font
    -> IO ()

-- C: void SetFontLoader(ImFontAtlas* self, const ImFontLoader* font_loader)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontAtlas_SetFontLoader"
  setFontLoader
    :: (Ptr ImFontAtlas) -- ^ self
    -> (Ptr ImFontLoader) -- ^ font_loader
    -> IO ()