imgui ドローイングの作成 – FlyWithLua

2023年2月17日
-- imgui はフローティング ウィンドウ内でのみ機能するため、最初に作成する必要があります。
draw_wnd = float_wnd_create(200, 100, 1, true)
float_wnd_set_title(draw_wnd, "imgui Demo")
float_wnd_set_imgui_builder(draw_wnd, "draw_demo")
float_wnd_set_onclose(draw_wnd, "closed_demo")


function draw_demo(wnd, x, y)
    local cx, cy = imgui.GetCursorScreenPos()   --ポジション設定用
        
    -- サイズ 100x100 の一種のキャンバスを作成します。
    -- 前の変数はキャンバスの左上端を記憶しているので、相対座標として使用して、絶対座標を使用してウィジェット内に描画できます。
    imgui.Dummy(100, 100)
    
    -- 斜めのラインを2つばつ印を作成、Parameters: x1、y1、x2、y2、色、厚さ
    imgui.DrawList_AddLine(cx, cy, cx + 20, cy + 20, 0xFF0000FF, 2)
    imgui.DrawList_AddLine(cx, cy + 20, cx + 20, cy, 0xFF0000FF, 2)
    
    -- 四角の線、Prameters: x1、y1、x2、y2、色、丸み(0.5もできる)太さが設定できない
    imgui.DrawList_AddRect(cx, cy, cx + 20, cy + 20, 0xFFFF0000, 0.5)

    -- 四角のベタ、Prameters: x1、y1、x2、y2、色、丸み
    imgui.DrawList_AddRectFilled(cx + 30, cy, cx + 50, cy + 20, 0xFFFF0000, 3)

    -- 三角の線、Parameters: x1、y1、x2、y2、x3、y3、色、太さ
    imgui.DrawList_AddTriangle(cx, cy + 60, cx + 40, cy + 60, cx + 20, cy + 30, 0xFF00FF00, 2.0)

    -- 三角のベタ、Parameters: x1, y1, x2, y2, x3, y3, color
    imgui.DrawList_AddTriangleFilled(cx + 50, cy + 60, cx + 90, cy + 60, cx + 50, cy + 30, 0xFF00FF00)

    -- 外の線の丸、Parameters: x1、y1、r、色、セグメント、厚さ
    imgui.DrawList_AddCircle(cx + 150, cy + 20, 20, 0xFF00FF00, 20, 1.0)

    -- 中のベタの丸、Parameters: x1, y1, r, color
    imgui.DrawList_AddCircleFilled(cx + 150, cy + 20, 10, 0xFF00FF00)
end

function closed_demo(wnd)
    -- Tこの関数は、ユーザーがウィンドウを閉じるときに呼び出されます。 
    -- ウィンドウが既に破棄されているため、この関数では imgui 関数の描画または呼び出しは許可されない。
end