struct ImDrawList

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
        );
};