packages feed

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

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

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

module DearImGui.Raw.Internal.ImDrawListSharedData
  ( ImDrawListSharedData
  , arcFastVtxLength
  , circleSegmentCountsLength
  , destroy
  , init
  , setCircleTessellationMaxError
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImU8)
import DearImGui.Raw.Enums.ImDrawFlags (ImDrawFlags)
import DearImGui.Raw.ImDrawList (ImDrawList)
import DearImGui.Raw.ImFont (ImFont)
import DearImGui.Raw.ImFontAtlas (ImFontAtlas)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVec4 (ImVec4)
import DearImGui.Raw.ImVector (ImVector)
import {-# SOURCE #-} DearImGui.Raw.Internal.ImGuiContext (ImGuiContext)
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 ImDrawListSharedData
instance Storable ImDrawListSharedData where
  sizeOf _    = #{size ImDrawListSharedData}
  alignment _ = #{alignment ImDrawListSharedData}
  peek _ = error "ImDrawListSharedData: opaque struct, peek not supported in v0"
  poke _ _ = error "ImDrawListSharedData: opaque struct, poke not supported in v0"

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

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

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

instance HasField "fontAtlas" (Ptr ImDrawListSharedData) (Ptr (Ptr ImFontAtlas)) where
  getField = #{ptr ImDrawListSharedData, FontAtlas}

instance HasField "font" (Ptr ImDrawListSharedData) (Ptr (Ptr ImFont)) where
  getField = #{ptr ImDrawListSharedData, Font}

instance HasField "fontSize" (Ptr ImDrawListSharedData) (Ptr Float) where
  getField = #{ptr ImDrawListSharedData, FontSize}

instance HasField "fontScale" (Ptr ImDrawListSharedData) (Ptr Float) where
  getField = #{ptr ImDrawListSharedData, FontScale}

instance HasField "curveTessellationMaxError" (Ptr ImDrawListSharedData) (Ptr Float) where
  getField = #{ptr ImDrawListSharedData, CurveTessellationMaxError}

instance HasField "circleTessellationMaxError" (Ptr ImDrawListSharedData) (Ptr Float) where
  getField = #{ptr ImDrawListSharedData, CircleTessellationMaxError}

instance HasField "initialDrawFlags" (Ptr ImDrawListSharedData) (Ptr ImDrawFlags) where
  getField = #{ptr ImDrawListSharedData, InitialDrawFlags}

instance HasField "clipRectFullscreen" (Ptr ImDrawListSharedData) (Ptr ImVec4) where
  getField = #{ptr ImDrawListSharedData, ClipRectFullscreen}

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

instance HasField "drawLists" (Ptr ImDrawListSharedData) (Ptr (ImVector (Ptr ImDrawList))) where
  getField = #{ptr ImDrawListSharedData, DrawLists}

instance HasField "context" (Ptr ImDrawListSharedData) (Ptr (Ptr ImGuiContext)) where
  getField = #{ptr ImDrawListSharedData, Context}

instance HasField "arcFastVtx" (Ptr ImDrawListSharedData) (Ptr ImVec2) where
  getField = #{ptr ImDrawListSharedData, ArcFastVtx}

arcFastVtxLength :: Int
arcFastVtxLength = #{const IM_DRAWLIST_ARCFAST_TABLE_SIZE}

instance HasField "arcFastRadiusCutoff" (Ptr ImDrawListSharedData) (Ptr Float) where
  getField = #{ptr ImDrawListSharedData, ArcFastRadiusCutoff}

instance HasField "circleSegmentCounts" (Ptr ImDrawListSharedData) (Ptr ImU8) where
  getField = #{ptr ImDrawListSharedData, CircleSegmentCounts}

circleSegmentCountsLength :: Int
circleSegmentCountsLength = #{const 64}

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

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

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

-- functions

-- C: void SetCircleTessellationMaxError(ImDrawListSharedData* self, float max_error)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImDrawListSharedData_SetCircleTessellationMaxError"
  setCircleTessellationMaxError
    :: (Ptr ImDrawListSharedData) -- ^ self
    -> Float -- ^ max_error
    -> IO ()