packages feed

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

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

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

module DearImGui.Raw.ImDrawList
  ( ImDrawList
  , _AddLine
  , _AddPolyline
  , _AddRectBaked
  , _AddRectFilledBaked
  , _AddRectTinyRounding
  , _CalcCircleAutoSegmentCount
  , _CalculateCenterBiasedOffset
  , _ClearFreeMemory
  , _OnChangedClipRect
  , _OnChangedTexture
  , _OnChangedVtxOffset
  , _PathArcToFastEx
  , _PathArcToN
  , _PopUnusedDrawCmd
  , _ResetForNewFrame
  , _SelectLineTexture
  , _SetDrawListSharedData
  , _SetPixelDensity
  , _SetTexture
  , _TryMergeDrawCmds
  , addBezierCubic
  , addBezierQuadratic
  , addCallback
  , addCircle
  , addCircleFilled
  , addConcavePolyFilled
  , addConvexPolyFilled
  , addDrawCmd
  , addEllipse
  , addEllipseFilled
  , addImage
  , addImageQuad
  , addImageRounded
  , addLine
  , addLineH
  , addLineV
  , addNgon
  , addNgonFilled
  , addPolyline
  , addQuad
  , addQuadFilled
  , addRect
  , addRectFilled
  , addRectFilledMultiColor
  , addText
  , addTextImFontPtr
  , addTriangle
  , addTriangleFilled
  , c__AddLine
  , c__AddRectBaked
  , c__AddRectFilledBaked
  , c__AddRectTinyRounding
  , c__PathArcToFastEx
  , c__PathArcToN
  , c__SetTexture
  , c_addBezierCubic
  , c_addBezierQuadratic
  , c_addCircle
  , c_addCircleFilled
  , c_addEllipse
  , c_addEllipseFilled
  , c_addImage
  , c_addImageQuad
  , c_addImageRounded
  , c_addLine
  , c_addNgon
  , c_addNgonFilled
  , c_addQuad
  , c_addQuadFilled
  , c_addRect
  , c_addRectFilled
  , c_addRectFilledMultiColor
  , c_addText
  , c_addTextImFontPtr
  , c_addTriangle
  , c_addTriangleFilled
  , c_getClipRectMax
  , c_getClipRectMin
  , c_pathArcTo
  , c_pathArcToFast
  , c_pathBezierCubicCurveTo
  , c_pathBezierQuadraticCurveTo
  , c_pathEllipticalArcTo
  , c_pathLineTo
  , c_pathLineToMergeDuplicate
  , c_pathRect
  , c_primQuadUV
  , c_primRect
  , c_primRectUV
  , c_primVtx
  , c_primWriteVtx
  , c_pushClipRect
  , c_pushTexture
  , channelsMerge
  , channelsSetCurrent
  , channelsSplit
  , cloneOutput
  , getClipRectMax
  , getClipRectMin
  , pathArcTo
  , pathArcToFast
  , pathBezierCubicCurveTo
  , pathBezierQuadraticCurveTo
  , pathClear
  , pathEllipticalArcTo
  , pathFillConcave
  , pathFillConvex
  , pathLineTo
  , pathLineToMergeDuplicate
  , pathRect
  , pathStroke
  , popClipRect
  , popDrawFlag
  , popTexture
  , primQuadUV
  , primRect
  , primRectUV
  , primReserve
  , primUnreserve
  , primVtx
  , primWriteIdx
  , primWriteVtx
  , pushClipRect
  , pushClipRectFullScreen
  , pushDrawFlag
  , pushTexture
  ) where

import DearImGui.Raw (ImDrawCallback, ImDrawIdx, ImSmallStack__ImDrawFlags_3_ImU16, ImU32, ImU8)
import DearImGui.Raw.Enums.ImDrawFlags (ImDrawFlags)
import DearImGui.Raw.ImDrawCmd (ImDrawCmd)
import DearImGui.Raw.ImDrawCmdHeader (ImDrawCmdHeader)
import DearImGui.Raw.ImDrawListSharedData (ImDrawListSharedData)
import DearImGui.Raw.ImDrawListSplitter (ImDrawListSplitter)
import DearImGui.Raw.ImDrawVert (ImDrawVert)
import DearImGui.Raw.ImFont (ImFont)
import DearImGui.Raw.ImTextureRef (ImTextureRef)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVec4 (ImVec4)
import DearImGui.Raw.ImVector (ImVector)
import Foreign.C.String (CString)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Utils (with)
import Foreign.Ptr (Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))

#include "dcimgui_nodefaultargfunctions.h"

-- structs (opaque)

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

instance HasField "cmdBuffer" (Ptr ImDrawList) (Ptr (ImVector ImDrawCmd)) where
  getField = #{ptr ImDrawList, CmdBuffer}

instance HasField "idxBuffer" (Ptr ImDrawList) (Ptr (ImVector ImDrawIdx)) where
  getField = #{ptr ImDrawList, IdxBuffer}

instance HasField "vtxBuffer" (Ptr ImDrawList) (Ptr (ImVector ImDrawVert)) where
  getField = #{ptr ImDrawList, VtxBuffer}

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

instance HasField "_VtxCurrentIdx" (Ptr ImDrawList) (Ptr CUInt) where
  getField = #{ptr ImDrawList, _VtxCurrentIdx}

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

instance HasField "_VtxWritePtr" (Ptr ImDrawList) (Ptr (Ptr ImDrawVert)) where
  getField = #{ptr ImDrawList, _VtxWritePtr}

instance HasField "_IdxWritePtr" (Ptr ImDrawList) (Ptr (Ptr ImDrawIdx)) where
  getField = #{ptr ImDrawList, _IdxWritePtr}

instance HasField "_Path" (Ptr ImDrawList) (Ptr (ImVector ImVec2)) where
  getField = #{ptr ImDrawList, _Path}

instance HasField "_CmdHeader" (Ptr ImDrawList) (Ptr ImDrawCmdHeader) where
  getField = #{ptr ImDrawList, _CmdHeader}

instance HasField "_Splitter" (Ptr ImDrawList) (Ptr ImDrawListSplitter) where
  getField = #{ptr ImDrawList, _Splitter}

instance HasField "_ClipRectStack" (Ptr ImDrawList) (Ptr (ImVector ImVec4)) where
  getField = #{ptr ImDrawList, _ClipRectStack}

instance HasField "_TextureStack" (Ptr ImDrawList) (Ptr (ImVector ImTextureRef)) where
  getField = #{ptr ImDrawList, _TextureStack}

instance HasField "_CallbacksDataBuf" (Ptr ImDrawList) (Ptr (ImVector ImU8)) where
  getField = #{ptr ImDrawList, _CallbacksDataBuf}

instance HasField "_DrawFlagsStack" (Ptr ImDrawList) (Ptr ImSmallStack__ImDrawFlags_3_ImU16) where
  getField = #{ptr ImDrawList, _DrawFlagsStack}

instance HasField "_FringeScale" (Ptr ImDrawList) (Ptr Float) where
  getField = #{ptr ImDrawList, _FringeScale}

instance HasField "_InvFringeScale" (Ptr ImDrawList) (Ptr Float) where
  getField = #{ptr ImDrawList, _InvFringeScale}

instance HasField "_FringeScaleIsInteger" (Ptr ImDrawList) (Ptr CBool) where
  getField = #{ptr ImDrawList, _FringeScaleIsInteger}

instance HasField "_OwnerName" (Ptr ImDrawList) (Ptr CString) where
  getField = #{ptr ImDrawList, _OwnerName}

-- functions

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddBezierCubic_wrap"
  c_addBezierCubic
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> (Ptr ImVec2) -- ^ p4
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> CInt -- ^ num_segments
    -> ImDrawFlags -- ^ flags
    -> IO ()

addBezierCubic
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImVec2 -- ^ p4
  -> ImU32 -- ^ col
  -> Float -- ^ thickness
  -> CInt -- ^ num_segments
  -> ImDrawFlags -- ^ flags
  -> IO ()
addBezierCubic self p1 p2 p3 p4 col thickness num_segments flags =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> with p4 $ \p4Ptr -> c_addBezierCubic self p1Ptr p2Ptr p3Ptr p4Ptr col thickness num_segments flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddBezierQuadratic_wrap"
  c_addBezierQuadratic
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> CInt -- ^ num_segments
    -> ImDrawFlags -- ^ flags
    -> IO ()

addBezierQuadratic
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImU32 -- ^ col
  -> Float -- ^ thickness
  -> CInt -- ^ num_segments
  -> ImDrawFlags -- ^ flags
  -> IO ()
addBezierQuadratic self p1 p2 p3 col thickness num_segments flags =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> c_addBezierQuadratic self p1Ptr p2Ptr p3Ptr col thickness num_segments flags

-- C: void AddCallback(ImDrawList* self, ImDrawCallback callback, void* userdata, size_t userdata_size)
foreign import capi safe "dcimgui_nodefaultargfunctions.h ImDrawList_AddCallback"
  addCallback
    :: (Ptr ImDrawList) -- ^ self
    -> ImDrawCallback -- ^ callback
    -> (Ptr ()) -- ^ userdata
    -> CSize -- ^ userdata_size
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddCircle_wrap"
  c_addCircle
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> Float -- ^ radius
    -> ImU32 -- ^ col
    -> CInt -- ^ num_segments
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

addCircle
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> Float -- ^ radius
  -> ImU32 -- ^ col
  -> CInt -- ^ num_segments
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
addCircle self center radius col num_segments thickness flags =
  with center $ \centerPtr -> c_addCircle self centerPtr radius col num_segments thickness flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddCircleFilled_wrap"
  c_addCircleFilled
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> Float -- ^ radius
    -> ImU32 -- ^ col
    -> CInt -- ^ num_segments
    -> IO ()

addCircleFilled
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> Float -- ^ radius
  -> ImU32 -- ^ col
  -> CInt -- ^ num_segments
  -> IO ()
addCircleFilled self center radius col num_segments =
  with center $ \centerPtr -> c_addCircleFilled self centerPtr radius col num_segments

-- C: void AddConcavePolyFilled(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_AddConcavePolyFilled"
  addConcavePolyFilled
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ points
    -> CInt -- ^ num_points
    -> ImU32 -- ^ col
    -> IO ()

-- C: void AddConvexPolyFilled(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_AddConvexPolyFilled"
  addConvexPolyFilled
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ points
    -> CInt -- ^ num_points
    -> ImU32 -- ^ col
    -> ImDrawFlags -- ^ flags
    -> IO ()

-- C: void AddDrawCmd(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_AddDrawCmd"
  addDrawCmd
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddEllipse_wrap"
  c_addEllipse
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> (Ptr ImVec2) -- ^ radius
    -> ImU32 -- ^ col
    -> Float -- ^ rot
    -> CInt -- ^ num_segments
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

addEllipse
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> ImVec2 -- ^ radius
  -> ImU32 -- ^ col
  -> Float -- ^ rot
  -> CInt -- ^ num_segments
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
addEllipse self center radius col rot num_segments thickness flags =
  with center $ \centerPtr -> with radius $ \radiusPtr -> c_addEllipse self centerPtr radiusPtr col rot num_segments thickness flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddEllipseFilled_wrap"
  c_addEllipseFilled
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> (Ptr ImVec2) -- ^ radius
    -> ImU32 -- ^ col
    -> Float -- ^ rot
    -> CInt -- ^ num_segments
    -> IO ()

addEllipseFilled
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> ImVec2 -- ^ radius
  -> ImU32 -- ^ col
  -> Float -- ^ rot
  -> CInt -- ^ num_segments
  -> IO ()
addEllipseFilled self center radius col rot num_segments =
  with center $ \centerPtr -> with radius $ \radiusPtr -> c_addEllipseFilled self centerPtr radiusPtr col rot num_segments

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddImage_wrap"
  c_addImage
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImTextureRef) -- ^ tex_ref
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> (Ptr ImVec2) -- ^ uv_min
    -> (Ptr ImVec2) -- ^ uv_max
    -> ImU32 -- ^ col
    -> IO ()

addImage
  :: (Ptr ImDrawList) -- ^ self
  -> ImTextureRef -- ^ tex_ref
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImVec2 -- ^ uv_min
  -> ImVec2 -- ^ uv_max
  -> ImU32 -- ^ col
  -> IO ()
addImage self tex_ref p_min p_max uv_min uv_max col =
  with tex_ref $ \tex_refPtr -> with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> with uv_min $ \uv_minPtr -> with uv_max $ \uv_maxPtr -> c_addImage self tex_refPtr p_minPtr p_maxPtr uv_minPtr uv_maxPtr col

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddImageQuad_wrap"
  c_addImageQuad
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImTextureRef) -- ^ tex_ref
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> (Ptr ImVec2) -- ^ p4
    -> (Ptr ImVec2) -- ^ uv1
    -> (Ptr ImVec2) -- ^ uv2
    -> (Ptr ImVec2) -- ^ uv3
    -> (Ptr ImVec2) -- ^ uv4
    -> ImU32 -- ^ col
    -> IO ()

addImageQuad
  :: (Ptr ImDrawList) -- ^ self
  -> ImTextureRef -- ^ tex_ref
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImVec2 -- ^ p4
  -> ImVec2 -- ^ uv1
  -> ImVec2 -- ^ uv2
  -> ImVec2 -- ^ uv3
  -> ImVec2 -- ^ uv4
  -> ImU32 -- ^ col
  -> IO ()
addImageQuad self tex_ref p1 p2 p3 p4 uv1 uv2 uv3 uv4 col =
  with tex_ref $ \tex_refPtr -> with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> with p4 $ \p4Ptr -> with uv1 $ \uv1Ptr -> with uv2 $ \uv2Ptr -> with uv3 $ \uv3Ptr -> with uv4 $ \uv4Ptr -> c_addImageQuad self tex_refPtr p1Ptr p2Ptr p3Ptr p4Ptr uv1Ptr uv2Ptr uv3Ptr uv4Ptr col

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddImageRounded_wrap"
  c_addImageRounded
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImTextureRef) -- ^ tex_ref
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> (Ptr ImVec2) -- ^ uv_min
    -> (Ptr ImVec2) -- ^ uv_max
    -> ImU32 -- ^ col
    -> Float -- ^ rounding
    -> ImDrawFlags -- ^ flags
    -> IO ()

addImageRounded
  :: (Ptr ImDrawList) -- ^ self
  -> ImTextureRef -- ^ tex_ref
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImVec2 -- ^ uv_min
  -> ImVec2 -- ^ uv_max
  -> ImU32 -- ^ col
  -> Float -- ^ rounding
  -> ImDrawFlags -- ^ flags
  -> IO ()
addImageRounded self tex_ref p_min p_max uv_min uv_max col rounding flags =
  with tex_ref $ \tex_refPtr -> with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> with uv_min $ \uv_minPtr -> with uv_max $ \uv_maxPtr -> c_addImageRounded self tex_refPtr p_minPtr p_maxPtr uv_minPtr uv_maxPtr col rounding flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddLine_wrap"
  c_addLine
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

addLine
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImU32 -- ^ col
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
addLine self p1 p2 col thickness flags =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> c_addLine self p1Ptr p2Ptr col thickness flags

-- C: void AddLineH(ImDrawList* self, float min_x, float max_x, float y, ImU32 col, float thickness, ImDrawFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_AddLineH"
  addLineH
    :: (Ptr ImDrawList) -- ^ self
    -> Float -- ^ min_x
    -> Float -- ^ max_x
    -> Float -- ^ y
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

-- C: void AddLineV(ImDrawList* self, float x, float min_y, float max_y, ImU32 col, float thickness, ImDrawFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_AddLineV"
  addLineV
    :: (Ptr ImDrawList) -- ^ self
    -> Float -- ^ x
    -> Float -- ^ min_y
    -> Float -- ^ max_y
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddNgon_wrap"
  c_addNgon
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> Float -- ^ radius
    -> ImU32 -- ^ col
    -> CInt -- ^ num_segments
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

addNgon
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> Float -- ^ radius
  -> ImU32 -- ^ col
  -> CInt -- ^ num_segments
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
addNgon self center radius col num_segments thickness flags =
  with center $ \centerPtr -> c_addNgon self centerPtr radius col num_segments thickness flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddNgonFilled_wrap"
  c_addNgonFilled
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> Float -- ^ radius
    -> ImU32 -- ^ col
    -> CInt -- ^ num_segments
    -> IO ()

addNgonFilled
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> Float -- ^ radius
  -> ImU32 -- ^ col
  -> CInt -- ^ num_segments
  -> IO ()
addNgonFilled self center radius col num_segments =
  with center $ \centerPtr -> c_addNgonFilled self centerPtr radius col num_segments

-- C: void AddPolyline(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col, float thickness, ImDrawFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_AddPolyline"
  addPolyline
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ points
    -> CInt -- ^ num_points
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddQuad_wrap"
  c_addQuad
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> (Ptr ImVec2) -- ^ p4
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

addQuad
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImVec2 -- ^ p4
  -> ImU32 -- ^ col
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
addQuad self p1 p2 p3 p4 col thickness flags =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> with p4 $ \p4Ptr -> c_addQuad self p1Ptr p2Ptr p3Ptr p4Ptr col thickness flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddQuadFilled_wrap"
  c_addQuadFilled
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> (Ptr ImVec2) -- ^ p4
    -> ImU32 -- ^ col
    -> IO ()

addQuadFilled
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImVec2 -- ^ p4
  -> ImU32 -- ^ col
  -> IO ()
addQuadFilled self p1 p2 p3 p4 col =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> with p4 $ \p4Ptr -> c_addQuadFilled self p1Ptr p2Ptr p3Ptr p4Ptr col

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddRect_wrap"
  c_addRect
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> ImU32 -- ^ col
    -> Float -- ^ rounding
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

addRect
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImU32 -- ^ col
  -> Float -- ^ rounding
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
addRect self p_min p_max col rounding thickness flags =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> c_addRect self p_minPtr p_maxPtr col rounding thickness flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddRectFilled_wrap"
  c_addRectFilled
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> ImU32 -- ^ col
    -> Float -- ^ rounding
    -> ImDrawFlags -- ^ flags
    -> IO ()

addRectFilled
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImU32 -- ^ col
  -> Float -- ^ rounding
  -> ImDrawFlags -- ^ flags
  -> IO ()
addRectFilled self p_min p_max col rounding flags =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> c_addRectFilled self p_minPtr p_maxPtr col rounding flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddRectFilledMultiColor_wrap"
  c_addRectFilledMultiColor
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> ImU32 -- ^ col_upr_left
    -> ImU32 -- ^ col_upr_right
    -> ImU32 -- ^ col_bot_right
    -> ImU32 -- ^ col_bot_left
    -> IO ()

addRectFilledMultiColor
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImU32 -- ^ col_upr_left
  -> ImU32 -- ^ col_upr_right
  -> ImU32 -- ^ col_bot_right
  -> ImU32 -- ^ col_bot_left
  -> IO ()
addRectFilledMultiColor self p_min p_max col_upr_left col_upr_right col_bot_right col_bot_left =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> c_addRectFilledMultiColor self p_minPtr p_maxPtr col_upr_left col_upr_right col_bot_right col_bot_left

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddText_wrap"
  c_addText
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ pos
    -> ImU32 -- ^ col
    -> CString -- ^ text_begin
    -> CString -- ^ text_end
    -> IO ()

addText
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ pos
  -> ImU32 -- ^ col
  -> CString -- ^ text_begin
  -> CString -- ^ text_end
  -> IO ()
addText self pos col text_begin text_end =
  with pos $ \posPtr -> c_addText self posPtr col text_begin text_end

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddTextImFontPtr_wrap"
  c_addTextImFontPtr
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImFont) -- ^ font
    -> Float -- ^ font_size
    -> (Ptr ImVec2) -- ^ pos
    -> ImU32 -- ^ col
    -> CString -- ^ text_begin
    -> CString -- ^ text_end
    -> Float -- ^ wrap_width
    -> (Ptr ImVec4) -- ^ cpu_fine_clip_rect
    -> IO ()

addTextImFontPtr
  :: (Ptr ImDrawList) -- ^ self
  -> (Ptr ImFont) -- ^ font
  -> Float -- ^ font_size
  -> ImVec2 -- ^ pos
  -> ImU32 -- ^ col
  -> CString -- ^ text_begin
  -> CString -- ^ text_end
  -> Float -- ^ wrap_width
  -> (Ptr ImVec4) -- ^ cpu_fine_clip_rect
  -> IO ()
addTextImFontPtr self font font_size pos col text_begin text_end wrap_width cpu_fine_clip_rect =
  with pos $ \posPtr -> c_addTextImFontPtr self font font_size posPtr col text_begin text_end wrap_width cpu_fine_clip_rect

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddTriangle_wrap"
  c_addTriangle
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

addTriangle
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImU32 -- ^ col
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
addTriangle self p1 p2 p3 col thickness flags =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> c_addTriangle self p1Ptr p2Ptr p3Ptr col thickness flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_AddTriangleFilled_wrap"
  c_addTriangleFilled
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> ImU32 -- ^ col
    -> IO ()

addTriangleFilled
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImU32 -- ^ col
  -> IO ()
addTriangleFilled self p1 p2 p3 col =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> c_addTriangleFilled self p1Ptr p2Ptr p3Ptr col

-- C: void ChannelsMerge(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_ChannelsMerge"
  channelsMerge
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void ChannelsSetCurrent(ImDrawList* self, int n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_ChannelsSetCurrent"
  channelsSetCurrent
    :: (Ptr ImDrawList) -- ^ self
    -> CInt -- ^ n
    -> IO ()

-- C: void ChannelsSplit(ImDrawList* self, int count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_ChannelsSplit"
  channelsSplit
    :: (Ptr ImDrawList) -- ^ self
    -> CInt -- ^ count
    -> IO ()

-- C: ImDrawList* CloneOutput(const ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_CloneOutput"
  cloneOutput
    :: (Ptr ImDrawList) -- ^ self
    -> IO (Ptr ImDrawList)

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_GetClipRectMax_wrap"
  c_getClipRectMax
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

getClipRectMax
  :: (Ptr ImDrawList) -- ^ self
  -> IO ImVec2
getClipRectMax self =
  alloca $ \outPtr -> c_getClipRectMax self outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_GetClipRectMin_wrap"
  c_getClipRectMin
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

getClipRectMin
  :: (Ptr ImDrawList) -- ^ self
  -> IO ImVec2
getClipRectMin self =
  alloca $ \outPtr -> c_getClipRectMin self outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PathArcTo_wrap"
  c_pathArcTo
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> Float -- ^ radius
    -> Float -- ^ a_min
    -> Float -- ^ a_max
    -> CInt -- ^ num_segments
    -> IO ()

pathArcTo
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> Float -- ^ radius
  -> Float -- ^ a_min
  -> Float -- ^ a_max
  -> CInt -- ^ num_segments
  -> IO ()
pathArcTo self center radius a_min a_max num_segments =
  with center $ \centerPtr -> c_pathArcTo self centerPtr radius a_min a_max num_segments

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PathArcToFast_wrap"
  c_pathArcToFast
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> Float -- ^ radius
    -> CInt -- ^ a_min_of_12
    -> CInt -- ^ a_max_of_12
    -> IO ()

pathArcToFast
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> Float -- ^ radius
  -> CInt -- ^ a_min_of_12
  -> CInt -- ^ a_max_of_12
  -> IO ()
pathArcToFast self center radius a_min_of_12 a_max_of_12 =
  with center $ \centerPtr -> c_pathArcToFast self centerPtr radius a_min_of_12 a_max_of_12

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PathBezierCubicCurveTo_wrap"
  c_pathBezierCubicCurveTo
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> (Ptr ImVec2) -- ^ p4
    -> CInt -- ^ num_segments
    -> IO ()

pathBezierCubicCurveTo
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImVec2 -- ^ p4
  -> CInt -- ^ num_segments
  -> IO ()
pathBezierCubicCurveTo self p2 p3 p4 num_segments =
  with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> with p4 $ \p4Ptr -> c_pathBezierCubicCurveTo self p2Ptr p3Ptr p4Ptr num_segments

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PathBezierQuadraticCurveTo_wrap"
  c_pathBezierQuadraticCurveTo
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> CInt -- ^ num_segments
    -> IO ()

pathBezierQuadraticCurveTo
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> CInt -- ^ num_segments
  -> IO ()
pathBezierQuadraticCurveTo self p2 p3 num_segments =
  with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> c_pathBezierQuadraticCurveTo self p2Ptr p3Ptr num_segments

-- C: void PathClear(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PathClear"
  pathClear
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PathEllipticalArcTo_wrap"
  c_pathEllipticalArcTo
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> (Ptr ImVec2) -- ^ radius
    -> Float -- ^ rot
    -> Float -- ^ a_min
    -> Float -- ^ a_max
    -> CInt -- ^ num_segments
    -> IO ()

pathEllipticalArcTo
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> ImVec2 -- ^ radius
  -> Float -- ^ rot
  -> Float -- ^ a_min
  -> Float -- ^ a_max
  -> CInt -- ^ num_segments
  -> IO ()
pathEllipticalArcTo self center radius rot a_min a_max num_segments =
  with center $ \centerPtr -> with radius $ \radiusPtr -> c_pathEllipticalArcTo self centerPtr radiusPtr rot a_min a_max num_segments

-- C: void PathFillConcave(ImDrawList* self, ImU32 col)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PathFillConcave"
  pathFillConcave
    :: (Ptr ImDrawList) -- ^ self
    -> ImU32 -- ^ col
    -> IO ()

-- C: void PathFillConvex(ImDrawList* self, ImU32 col, ImDrawFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PathFillConvex"
  pathFillConvex
    :: (Ptr ImDrawList) -- ^ self
    -> ImU32 -- ^ col
    -> ImDrawFlags -- ^ flags
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PathLineTo_wrap"
  c_pathLineTo
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ pos
    -> IO ()

pathLineTo
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ pos
  -> IO ()
pathLineTo self pos =
  with pos $ \posPtr -> c_pathLineTo self posPtr

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PathLineToMergeDuplicate_wrap"
  c_pathLineToMergeDuplicate
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ pos
    -> IO ()

pathLineToMergeDuplicate
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ pos
  -> IO ()
pathLineToMergeDuplicate self pos =
  with pos $ \posPtr -> c_pathLineToMergeDuplicate self posPtr

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PathRect_wrap"
  c_pathRect
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ rect_min
    -> (Ptr ImVec2) -- ^ rect_max
    -> Float -- ^ rounding
    -> ImDrawFlags -- ^ flags
    -> IO ()

pathRect
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ rect_min
  -> ImVec2 -- ^ rect_max
  -> Float -- ^ rounding
  -> ImDrawFlags -- ^ flags
  -> IO ()
pathRect self rect_min rect_max rounding flags =
  with rect_min $ \rect_minPtr -> with rect_max $ \rect_maxPtr -> c_pathRect self rect_minPtr rect_maxPtr rounding flags

-- C: void PathStroke(ImDrawList* self, ImU32 col, float thickness, ImDrawFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PathStroke"
  pathStroke
    :: (Ptr ImDrawList) -- ^ self
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

-- C: void PopClipRect(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PopClipRect"
  popClipRect
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void PopDrawFlag(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PopDrawFlag"
  popDrawFlag
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void PopTexture(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PopTexture"
  popTexture
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PrimQuadUV_wrap"
  c_primQuadUV
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ c
    -> (Ptr ImVec2) -- ^ d
    -> (Ptr ImVec2) -- ^ uv_a
    -> (Ptr ImVec2) -- ^ uv_b
    -> (Ptr ImVec2) -- ^ uv_c
    -> (Ptr ImVec2) -- ^ uv_d
    -> ImU32 -- ^ col
    -> IO ()

primQuadUV
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ c
  -> ImVec2 -- ^ d
  -> ImVec2 -- ^ uv_a
  -> ImVec2 -- ^ uv_b
  -> ImVec2 -- ^ uv_c
  -> ImVec2 -- ^ uv_d
  -> ImU32 -- ^ col
  -> IO ()
primQuadUV self a b c d uv_a uv_b uv_c uv_d col =
  with a $ \aPtr -> with b $ \bPtr -> with c $ \cPtr -> with d $ \dPtr -> with uv_a $ \uv_aPtr -> with uv_b $ \uv_bPtr -> with uv_c $ \uv_cPtr -> with uv_d $ \uv_dPtr -> c_primQuadUV self aPtr bPtr cPtr dPtr uv_aPtr uv_bPtr uv_cPtr uv_dPtr col

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PrimRect_wrap"
  c_primRect
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> ImU32 -- ^ col
    -> IO ()

primRect
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImU32 -- ^ col
  -> IO ()
primRect self a b col =
  with a $ \aPtr -> with b $ \bPtr -> c_primRect self aPtr bPtr col

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PrimRectUV_wrap"
  c_primRectUV
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ uv_a
    -> (Ptr ImVec2) -- ^ uv_b
    -> ImU32 -- ^ col
    -> IO ()

primRectUV
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ uv_a
  -> ImVec2 -- ^ uv_b
  -> ImU32 -- ^ col
  -> IO ()
primRectUV self a b uv_a uv_b col =
  with a $ \aPtr -> with b $ \bPtr -> with uv_a $ \uv_aPtr -> with uv_b $ \uv_bPtr -> c_primRectUV self aPtr bPtr uv_aPtr uv_bPtr col

-- C: void PrimReserve(ImDrawList* self, int idx_count, int vtx_count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PrimReserve"
  primReserve
    :: (Ptr ImDrawList) -- ^ self
    -> CInt -- ^ idx_count
    -> CInt -- ^ vtx_count
    -> IO ()

-- C: void PrimUnreserve(ImDrawList* self, int idx_count, int vtx_count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PrimUnreserve"
  primUnreserve
    :: (Ptr ImDrawList) -- ^ self
    -> CInt -- ^ idx_count
    -> CInt -- ^ vtx_count
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PrimVtx_wrap"
  c_primVtx
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ pos
    -> (Ptr ImVec2) -- ^ uv
    -> ImU32 -- ^ col
    -> IO ()

primVtx
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ pos
  -> ImVec2 -- ^ uv
  -> ImU32 -- ^ col
  -> IO ()
primVtx self pos uv col =
  with pos $ \posPtr -> with uv $ \uvPtr -> c_primVtx self posPtr uvPtr col

-- C: void PrimWriteIdx(ImDrawList* self, ImDrawIdx idx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PrimWriteIdx"
  primWriteIdx
    :: (Ptr ImDrawList) -- ^ self
    -> ImDrawIdx -- ^ idx
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PrimWriteVtx_wrap"
  c_primWriteVtx
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ pos
    -> (Ptr ImVec2) -- ^ uv
    -> ImU32 -- ^ col
    -> IO ()

primWriteVtx
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ pos
  -> ImVec2 -- ^ uv
  -> ImU32 -- ^ col
  -> IO ()
primWriteVtx self pos uv col =
  with pos $ \posPtr -> with uv $ \uvPtr -> c_primWriteVtx self posPtr uvPtr col

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PushClipRect_wrap"
  c_pushClipRect
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ clip_rect_min
    -> (Ptr ImVec2) -- ^ clip_rect_max
    -> CBool -- ^ intersect_with_current_clip_rect
    -> IO ()

pushClipRect
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ clip_rect_min
  -> ImVec2 -- ^ clip_rect_max
  -> CBool -- ^ intersect_with_current_clip_rect
  -> IO ()
pushClipRect self clip_rect_min clip_rect_max intersect_with_current_clip_rect =
  with clip_rect_min $ \clip_rect_minPtr -> with clip_rect_max $ \clip_rect_maxPtr -> c_pushClipRect self clip_rect_minPtr clip_rect_maxPtr intersect_with_current_clip_rect

-- C: void PushClipRectFullScreen(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PushClipRectFullScreen"
  pushClipRectFullScreen
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void PushDrawFlag(ImDrawList* self, ImDrawFlags flags, bool enabled)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList_PushDrawFlag"
  pushDrawFlag
    :: (Ptr ImDrawList) -- ^ self
    -> ImDrawFlags -- ^ flags
    -> CBool -- ^ enabled
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList_PushTexture_wrap"
  c_pushTexture
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImTextureRef) -- ^ tex_ref
    -> IO ()

pushTexture
  :: (Ptr ImDrawList) -- ^ self
  -> ImTextureRef -- ^ tex_ref
  -> IO ()
pushTexture self tex_ref =
  with tex_ref $ \tex_refPtr -> c_pushTexture self tex_refPtr

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList__AddLine_wrap"
  c__AddLine
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

_AddLine
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImU32 -- ^ col
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
_AddLine self p1 p2 col thickness flags =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> c__AddLine self p1Ptr p2Ptr col thickness flags

-- C: void _AddPolyline(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col, float thickness, ImDrawFlags flags, float max_inner_offset)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__AddPolyline"
  _AddPolyline
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ points
    -> CInt -- ^ num_points
    -> ImU32 -- ^ col
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> Float -- ^ max_inner_offset
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList__AddRectBaked_wrap"
  c__AddRectBaked
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> ImU32 -- ^ col
    -> Float -- ^ r
    -> Float -- ^ t
    -> (Ptr ImVec4) -- ^ tex_uvs
    -> ImDrawFlags -- ^ flags
    -> IO ()

_AddRectBaked
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImU32 -- ^ col
  -> Float -- ^ r
  -> Float -- ^ t
  -> ImVec4 -- ^ tex_uvs
  -> ImDrawFlags -- ^ flags
  -> IO ()
_AddRectBaked self p_min p_max col r t tex_uvs flags =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> with tex_uvs $ \tex_uvsPtr -> c__AddRectBaked self p_minPtr p_maxPtr col r t tex_uvsPtr flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList__AddRectFilledBaked_wrap"
  c__AddRectFilledBaked
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> ImU32 -- ^ col
    -> Float -- ^ r
    -> (Ptr ImVec4) -- ^ tex_uvs
    -> ImDrawFlags -- ^ flags
    -> IO ()

_AddRectFilledBaked
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImU32 -- ^ col
  -> Float -- ^ r
  -> ImVec4 -- ^ tex_uvs
  -> ImDrawFlags -- ^ flags
  -> IO ()
_AddRectFilledBaked self p_min p_max col r tex_uvs flags =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> with tex_uvs $ \tex_uvsPtr -> c__AddRectFilledBaked self p_minPtr p_maxPtr col r tex_uvsPtr flags

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList__AddRectTinyRounding_wrap"
  c__AddRectTinyRounding
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> ImU32 -- ^ col
    -> Float -- ^ rounding
    -> Float -- ^ thickness
    -> ImDrawFlags -- ^ flags
    -> IO ()

_AddRectTinyRounding
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImU32 -- ^ col
  -> Float -- ^ rounding
  -> Float -- ^ thickness
  -> ImDrawFlags -- ^ flags
  -> IO ()
_AddRectTinyRounding self p_min p_max col rounding thickness flags =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> c__AddRectTinyRounding self p_minPtr p_maxPtr col rounding thickness flags

-- C: int _CalcCircleAutoSegmentCount(const ImDrawList* self, float radius)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__CalcCircleAutoSegmentCount"
  _CalcCircleAutoSegmentCount
    :: (Ptr ImDrawList) -- ^ self
    -> Float -- ^ radius
    -> IO CInt

-- C: float _CalculateCenterBiasedOffset(ImDrawList* self, float thickness)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__CalculateCenterBiasedOffset"
  _CalculateCenterBiasedOffset
    :: (Ptr ImDrawList) -- ^ self
    -> Float -- ^ thickness
    -> IO Float

-- C: void _ClearFreeMemory(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__ClearFreeMemory"
  _ClearFreeMemory
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void _OnChangedClipRect(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__OnChangedClipRect"
  _OnChangedClipRect
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void _OnChangedTexture(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__OnChangedTexture"
  _OnChangedTexture
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void _OnChangedVtxOffset(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__OnChangedVtxOffset"
  _OnChangedVtxOffset
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList__PathArcToFastEx_wrap"
  c__PathArcToFastEx
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> Float -- ^ radius
    -> CInt -- ^ a_min_sample
    -> CInt -- ^ a_max_sample
    -> CInt -- ^ a_step
    -> IO ()

_PathArcToFastEx
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> Float -- ^ radius
  -> CInt -- ^ a_min_sample
  -> CInt -- ^ a_max_sample
  -> CInt -- ^ a_step
  -> IO ()
_PathArcToFastEx self center radius a_min_sample a_max_sample a_step =
  with center $ \centerPtr -> c__PathArcToFastEx self centerPtr radius a_min_sample a_max_sample a_step

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList__PathArcToN_wrap"
  c__PathArcToN
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImVec2) -- ^ center
    -> Float -- ^ radius
    -> Float -- ^ a_min
    -> Float -- ^ a_max
    -> CInt -- ^ num_segments
    -> IO ()

_PathArcToN
  :: (Ptr ImDrawList) -- ^ self
  -> ImVec2 -- ^ center
  -> Float -- ^ radius
  -> Float -- ^ a_min
  -> Float -- ^ a_max
  -> CInt -- ^ num_segments
  -> IO ()
_PathArcToN self center radius a_min a_max num_segments =
  with center $ \centerPtr -> c__PathArcToN self centerPtr radius a_min a_max num_segments

-- C: void _PopUnusedDrawCmd(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__PopUnusedDrawCmd"
  _PopUnusedDrawCmd
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void _ResetForNewFrame(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__ResetForNewFrame"
  _ResetForNewFrame
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()

-- C: void _SelectLineTexture(ImDrawList* self, float screen_thickness, ImVec2* out_uv0, ImVec2* out_uv1, float* out_fringe, ImDrawFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__SelectLineTexture"
  _SelectLineTexture
    :: (Ptr ImDrawList) -- ^ self
    -> Float -- ^ screen_thickness
    -> (Ptr ImVec2) -- ^ out_uv0
    -> (Ptr ImVec2) -- ^ out_uv1
    -> (Ptr Float) -- ^ out_fringe
    -> ImDrawFlags -- ^ flags
    -> IO ()

-- C: void _SetDrawListSharedData(ImDrawList* self, ImDrawListSharedData* data)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__SetDrawListSharedData"
  _SetDrawListSharedData
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImDrawListSharedData) -- ^ data
    -> IO ()

-- C: void _SetPixelDensity(ImDrawList* self, float pixel_density)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__SetPixelDensity"
  _SetPixelDensity
    :: (Ptr ImDrawList) -- ^ self
    -> Float -- ^ pixel_density
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImDrawList__SetTexture_wrap"
  c__SetTexture
    :: (Ptr ImDrawList) -- ^ self
    -> (Ptr ImTextureRef) -- ^ tex_ref
    -> IO ()

_SetTexture
  :: (Ptr ImDrawList) -- ^ self
  -> ImTextureRef -- ^ tex_ref
  -> IO ()
_SetTexture self tex_ref =
  with tex_ref $ \tex_refPtr -> c__SetTexture self tex_refPtr

-- C: void _TryMergeDrawCmds(ImDrawList* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawList__TryMergeDrawCmds"
  _TryMergeDrawCmds
    :: (Ptr ImDrawList) -- ^ self
    -> IO ()