Overview
#include <imgui.h>
struct ImDrawList
{
// fields
ImVector<ImDrawCmd> CmdBuffer;
ImVector<ImDrawIdx> IdxBuffer;
ImVector<ImDrawVert> VtxBuffer;
ImDrawListFlags Flags;
unsigned int _VtxCurrentIdx;
ImDrawListSharedData* _Data;
ImDrawVert* _VtxWritePtr;
ImDrawIdx* _IdxWritePtr;
ImVector<ImVec2> _Path;
ImDrawCmdHeader _CmdHeader;
ImDrawListSplitter _Splitter;
ImVector<ImVec4> _ClipRectStack;
ImVector<ImTextureRef> _TextureStack;
ImVector<ImU8> _CallbacksDataBuf;
float _FringeScale;
const char* _OwnerName;
// construction
ImDrawList(ImDrawListSharedData* shared_data);
// methods
IMGUI_API void PushClipRect(
const ImVec2& clip_rect_min,
const ImVec2& clip_rect_max,
bool intersect_with_current_clip_rect = false
);
IMGUI_API void PushClipRectFullScreen();
IMGUI_API void PopClipRect();
IMGUI_API void PushTexture(ImTextureRef tex_ref);
IMGUI_API void PopTexture();
ImVec2 GetClipRectMin() const;
ImVec2 GetClipRectMax() const;
IMGUI_API void AddLine(
const ImVec2& p1,
const ImVec2& p2,
ImU32 col,
float thickness = 1.0f
);
IMGUI_API void AddRect(
const ImVec2& p_min,
const ImVec2& p_max,
ImU32 col,
float rounding = 0.0f,
ImDrawFlags flags = 0,
float thickness = 1.0f
);
IMGUI_API void AddRectFilled(
const ImVec2& p_min,
const ImVec2& p_max,
ImU32 col,
float rounding = 0.0f,
ImDrawFlags flags = 0
);
IMGUI_API void AddRectFilledMultiColor(
const ImVec2& p_min,
const ImVec2& p_max,
ImU32 col_upr_left,
ImU32 col_upr_right,
ImU32 col_bot_right,
ImU32 col_bot_left
);
IMGUI_API void AddQuad(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4,
ImU32 col,
float thickness = 1.0f
);
IMGUI_API void AddQuadFilled(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4,
ImU32 col
);
IMGUI_API void AddTriangle(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
ImU32 col,
float thickness = 1.0f
);
IMGUI_API void AddTriangleFilled(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
ImU32 col
);
IMGUI_API void AddCircle(
const ImVec2& center,
float radius,
ImU32 col,
int num_segments = 0,
float thickness = 1.0f
);
IMGUI_API void AddCircleFilled(
const ImVec2& center,
float radius,
ImU32 col,
int num_segments = 0
);
IMGUI_API void AddNgon(
const ImVec2& center,
float radius,
ImU32 col,
int num_segments,
float thickness = 1.0f
);
IMGUI_API void AddNgonFilled(
const ImVec2& center,
float radius,
ImU32 col,
int num_segments
);
IMGUI_API void AddEllipse(
const ImVec2& center,
const ImVec2& radius,
ImU32 col,
float rot = 0.0f,
int num_segments = 0,
float thickness = 1.0f
);
IMGUI_API void AddEllipseFilled(
const ImVec2& center,
const ImVec2& radius,
ImU32 col,
float rot = 0.0f,
int num_segments = 0
);
IMGUI_API void AddText(
const ImVec2& pos,
ImU32 col,
const char* text_begin,
const char* text_end = NULL
);
IMGUI_API void AddText(
ImFont* font,
float font_size,
const ImVec2& pos,
ImU32 col,
const char* text_begin,
const char* text_end = NULL,
float wrap_width = 0.0f,
const ImVec4* cpu_fine_clip_rect = NULL
);
IMGUI_API void AddBezierCubic(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4,
ImU32 col,
float thickness,
int num_segments = 0
);
IMGUI_API void AddBezierQuadratic(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
ImU32 col,
float thickness,
int num_segments = 0
);
IMGUI_API void AddPolyline(
const ImVec2* points,
int num_points,
ImU32 col,
ImDrawFlags flags,
float thickness
);
IMGUI_API void AddConvexPolyFilled(
const ImVec2* points,
int num_points,
ImU32 col
);
IMGUI_API void AddConcavePolyFilled(
const ImVec2* points,
int num_points,
ImU32 col
);
IMGUI_API void AddImage(
ImTextureRef tex_ref,
const ImVec2& p_min,
const ImVec2& p_max,
const ImVec2& uv_min = ImVec2(0, 0),
const ImVec2& uv_max = ImVec2(1, 1),
ImU32 col = IM_COL32_WHITE
);
IMGUI_API void AddImageQuad(
ImTextureRef tex_ref,
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4,
const ImVec2& uv1 = ImVec2(0, 0),
const ImVec2& uv2 = ImVec2(1, 0),
const ImVec2& uv3 = ImVec2(1, 1),
const ImVec2& uv4 = ImVec2(0, 1),
ImU32 col = IM_COL32_WHITE
);
IMGUI_API void AddImageRounded(
ImTextureRef tex_ref,
const ImVec2& p_min,
const ImVec2& p_max,
const ImVec2& uv_min,
const ImVec2& uv_max,
ImU32 col,
float rounding,
ImDrawFlags flags = 0
);
void PathClear();
void PathLineTo(const ImVec2& pos);
void PathLineToMergeDuplicate(const ImVec2& pos);
void PathFillConvex(ImU32 col);
void PathFillConcave(ImU32 col);
void PathStroke(
ImU32 col,
ImDrawFlags flags = 0,
float thickness = 1.0f
);
IMGUI_API void PathArcTo(
const ImVec2& center,
float radius,
float a_min,
float a_max,
int num_segments = 0
);
IMGUI_API void PathArcToFast(
const ImVec2& center,
float radius,
int a_min_of_12,
int a_max_of_12
);
IMGUI_API void PathEllipticalArcTo(
const ImVec2& center,
const ImVec2& radius,
float rot,
float a_min,
float a_max,
int num_segments = 0
);
IMGUI_API void PathBezierCubicCurveTo(
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4,
int num_segments = 0
);
IMGUI_API void PathBezierQuadraticCurveTo(
const ImVec2& p2,
const ImVec2& p3,
int num_segments = 0
);
IMGUI_API void PathRect(
const ImVec2& rect_min,
const ImVec2& rect_max,
float rounding = 0.0f,
ImDrawFlags flags = 0
);
IMGUI_API void AddCallback(
ImDrawCallback callback,
void* userdata,
size_t userdata_size = 0
);
IMGUI_API void AddDrawCmd();
IMGUI_API ImDrawList* CloneOutput() const;
void ChannelsSplit(int count);
void ChannelsMerge();
void ChannelsSetCurrent(int n);
IMGUI_API void PrimReserve(
int idx_count,
int vtx_count
);
IMGUI_API void PrimUnreserve(
int idx_count,
int vtx_count
);
IMGUI_API void PrimRect(
const ImVec2& a,
const ImVec2& b,
ImU32 col
);
IMGUI_API void PrimRectUV(
const ImVec2& a,
const ImVec2& b,
const ImVec2& uv_a,
const ImVec2& uv_b,
ImU32 col
);
IMGUI_API void PrimQuadUV(
const ImVec2& a,
const ImVec2& b,
const ImVec2& c,
const ImVec2& d,
const ImVec2& uv_a,
const ImVec2& uv_b,
const ImVec2& uv_c,
const ImVec2& uv_d,
ImU32 col
);
void PrimWriteVtx(
const ImVec2& pos,
const ImVec2& uv,
ImU32 col
);
void PrimWriteIdx(ImDrawIdx idx);
void PrimVtx(
const ImVec2& pos,
const ImVec2& uv,
ImU32 col
);
void PushTextureID(ImTextureRef tex_ref);
void PopTextureID();
IMGUI_API void _SetDrawListSharedData(ImDrawListSharedData* data);
IMGUI_API void _ResetForNewFrame();
IMGUI_API void _ClearFreeMemory();
IMGUI_API void _PopUnusedDrawCmd();
IMGUI_API void _TryMergeDrawCmds();
IMGUI_API void _OnChangedClipRect();
IMGUI_API void _OnChangedTexture();
IMGUI_API void _OnChangedVtxOffset();
IMGUI_API void _SetTexture(ImTextureRef tex_ref);
IMGUI_API int _CalcCircleAutoSegmentCount(float radius) const;
IMGUI_API void _PathArcToFastEx(
const ImVec2& center,
float radius,
int a_min_sample,
int a_max_sample,
int a_step
);
IMGUI_API void _PathArcToN(
const ImVec2& center,
float radius,
float a_min,
float a_max,
int num_segments
);
};