packages feed

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

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

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

module DearImGui.Raw.Internal.ImFontAtlasBuilder
  ( ImFontAtlasBuilder
  , destroy
  , init
  , texUvCornersLength
  , texUvLinesLength
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw.ImFontAtlasRect (Id)
import DearImGui.Raw.ImGuiStorage (ImGuiStorage)
import DearImGui.Raw.ImTextureRect (ImTextureRect)
import DearImGui.Raw.ImVec4 (ImVec4)
import DearImGui.Raw.ImVector (ImVector)
import DearImGui.Raw.Internal (ImStableVector_ImFontBaked_32, Stbrp_context_opaque, Stbrp_node_im)
import DearImGui.Raw.Internal.ImFontAtlasRectEntry (ImFontAtlasRectEntry)
import DearImGui.Raw.Internal.ImVec2i (ImVec2i)
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_internal.h"

-- structs (opaque)

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

instance HasField "packContext" (Ptr ImFontAtlasBuilder) (Ptr Stbrp_context_opaque) where
  getField = #{ptr ImFontAtlasBuilder, PackContext}

instance HasField "packNodes" (Ptr ImFontAtlasBuilder) (Ptr (ImVector Stbrp_node_im)) where
  getField = #{ptr ImFontAtlasBuilder, PackNodes}

instance HasField "rects" (Ptr ImFontAtlasBuilder) (Ptr (ImVector ImTextureRect)) where
  getField = #{ptr ImFontAtlasBuilder, Rects}

instance HasField "rectsIndex" (Ptr ImFontAtlasBuilder) (Ptr (ImVector ImFontAtlasRectEntry)) where
  getField = #{ptr ImFontAtlasBuilder, RectsIndex}

instance HasField "tempBuffer" (Ptr ImFontAtlasBuilder) (Ptr (ImVector CUChar)) where
  getField = #{ptr ImFontAtlasBuilder, TempBuffer}

instance HasField "rectsIndexFreeListStart" (Ptr ImFontAtlasBuilder) (Ptr CInt) where
  getField = #{ptr ImFontAtlasBuilder, RectsIndexFreeListStart}

instance HasField "rectsPackedCount" (Ptr ImFontAtlasBuilder) (Ptr CInt) where
  getField = #{ptr ImFontAtlasBuilder, RectsPackedCount}

instance HasField "rectsPackedSurface" (Ptr ImFontAtlasBuilder) (Ptr CInt) where
  getField = #{ptr ImFontAtlasBuilder, RectsPackedSurface}

instance HasField "rectsDiscardedCount" (Ptr ImFontAtlasBuilder) (Ptr CInt) where
  getField = #{ptr ImFontAtlasBuilder, RectsDiscardedCount}

instance HasField "rectsDiscardedSurface" (Ptr ImFontAtlasBuilder) (Ptr CInt) where
  getField = #{ptr ImFontAtlasBuilder, RectsDiscardedSurface}

instance HasField "frameCount" (Ptr ImFontAtlasBuilder) (Ptr CInt) where
  getField = #{ptr ImFontAtlasBuilder, FrameCount}

instance HasField "maxRectSize" (Ptr ImFontAtlasBuilder) (Ptr ImVec2i) where
  getField = #{ptr ImFontAtlasBuilder, MaxRectSize}

instance HasField "maxRectBounds" (Ptr ImFontAtlasBuilder) (Ptr ImVec2i) where
  getField = #{ptr ImFontAtlasBuilder, MaxRectBounds}

instance HasField "lockDisableResize" (Ptr ImFontAtlasBuilder) (Ptr CBool) where
  getField = #{ptr ImFontAtlasBuilder, LockDisableResize}

instance HasField "preloadedAllGlyphsRanges" (Ptr ImFontAtlasBuilder) (Ptr CBool) where
  getField = #{ptr ImFontAtlasBuilder, PreloadedAllGlyphsRanges}

instance HasField "bakedPool" (Ptr ImFontAtlasBuilder) (Ptr ImStableVector_ImFontBaked_32) where
  getField = #{ptr ImFontAtlasBuilder, BakedPool}

instance HasField "bakedMap" (Ptr ImFontAtlasBuilder) (Ptr ImGuiStorage) where
  getField = #{ptr ImFontAtlasBuilder, BakedMap}

instance HasField "bakedDiscardedCount" (Ptr ImFontAtlasBuilder) (Ptr CInt) where
  getField = #{ptr ImFontAtlasBuilder, BakedDiscardedCount}

instance HasField "packIdMouseCursors" (Ptr ImFontAtlasBuilder) (Ptr Id) where
  getField = #{ptr ImFontAtlasBuilder, PackIdMouseCursors}

instance HasField "packIdLinesTexData" (Ptr ImFontAtlasBuilder) (Ptr Id) where
  getField = #{ptr ImFontAtlasBuilder, PackIdLinesTexData}

instance HasField "packIdLineFractTexData" (Ptr ImFontAtlasBuilder) (Ptr Id) where
  getField = #{ptr ImFontAtlasBuilder, PackIdLineFractTexData}

instance HasField "packIdCornersTexData" (Ptr ImFontAtlasBuilder) (Ptr Id) where
  getField = #{ptr ImFontAtlasBuilder, PackIdCornersTexData}

instance HasField "texUvLines" (Ptr ImFontAtlasBuilder) (Ptr ImVec4) where
  getField = #{ptr ImFontAtlasBuilder, TexUvLines}

texUvLinesLength :: Int
texUvLinesLength = #{const IM_DRAWLIST_TEX_LINES_WIDTH_MAX+1+IM_DRAWLIST_TEX_LINES_DETAILED_WIDTH_COUNT}

instance HasField "texUvCorners" (Ptr ImFontAtlasBuilder) (Ptr ImVec4) where
  getField = #{ptr ImFontAtlasBuilder, TexUvCorners}

texUvCornersLength :: Int
texUvCornersLength = #{const IM_DRAWLIST_TEX_CORNERS_ROUNDING_MAX*IM_DRAWLIST_TEX_CORNERS_THICKNESS_MAX}

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

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

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