Dear ImGui Getting Started
From GiderosMobile
Dear ImGui for Gideros Mobile
Gideros Dear ImGui embedded Demo
require "ImGui"
local imgui = ImGui.new()
stage:addChild(imgui)
imgui:setClassicStyle()
function onEnterFrame(e)
imgui:newFrame(e.deltaTime)
imgui:showDemoWindow()
imgui:render()
imgui:endFrame()
end
stage:addEventListener(Event.ENTER_FRAME, onEnterFrame)
Your first Windows
require "ImGui"
application:setBackgroundColor(0x323232)
local imgui = ImGui.new()
stage:addChild(imgui)
local window01 = true -- this window can be closed
local windowdrawn = false -- boolean to hold our windows status
function onEnterFrame(e)
-- 1. we start an ImGui frame
imgui:newFrame(e.deltaTime)
-- 2. we add some windows
-- a window you can close
if window01 then -- if window exists (not closed)
window01, windowdrawn = imgui:beginWindow("window01", window01) -- title, isexpanded
if windowdrawn then -- the variable is false when the window is collapsed
-- its widgets
imgui:text("Hello Dear ImGui!")
imgui:newLine()
imgui:textColored("This window can be moved, resized and closed!", 0x00ff7f, 1)
end
imgui:endWindow()
end
-- a window to re-open closed windows
imgui:setNextWindowPos(32*8, 32*8) -- x, y
imgui:beginWindow("CONTROL", nil, ImGui.WindowFlags_NoResize) -- title, no close, windows flags
-- and its widgets
imgui:text("click the button to re-open a closed window")
if imgui:button("OPEN", 64, 16) then
window01 = true
end
imgui:newLine()
imgui:textColored("This window cannot be moved, resized or closed!", 0xffff7f, 1)
-- end of our first window
imgui:endWindow()
-- 3. we end the ImGui frame and render to screen
imgui:endFrame()
imgui:render()
end
Start a Window at a given position
require "ImGui"
application:setBackgroundColor(0x323232)
local imgui = ImGui.new()
stage:addChild(imgui)
local window01 = true -- this window can be closed
local windowdrawn = false -- boolean to hold our windows status
local posx, posy = 32*8, 32*4 -- starting window position
local offsetx, offsety = 0, 0 -- new window position
local dragflag = false
function onEnterFrame(e)
-- 1. we start ImGui
imgui:newFrame(e.deltaTime)
-- 2. we add some windows
if window01 then -- if window exists (not closed)
imgui:setNextWindowPos(posx, posy)
window01, windowdrawn = imgui:beginWindow("window01", window01)
-- update window new position
local mouseClicked = imgui:isMouseClicked(KeyCode.MOUSE_LEFT)
if not dragflag and mouseClicked and imgui:isWindowHovered() then
dragflag = true
end
if imgui:isWindowFocused() and dragflag then
local mx,my = imgui:getMousePos()
local wx, wy = imgui:getWindowPos()
if mouseClicked or imgui:isMouseReleased(KeyCode.MOUSE_LEFT) then
offsetx, offsety = mx - wx, my - wy
end
if imgui:isMouseDragging(KeyCode.MOUSE_LEFT, 0) then
posx = (mx - offsetx)
posy = (my - offsety)
else
dragflag = false
end
end
-- window widgets
if windowdrawn then -- the variable is false when main window is collapsed
imgui:text("Hello Dear ImGui!")
imgui:newLine()
imgui:textColored("This window can be moved, resized and closed!", 0x00ff7f, 1)
imgui:text("its position is: "..posx..", "..posy)
end
imgui:endWindow()
end
-- 3. we end ImGui frame and render to screen
imgui:endFrame()
imgui:render()
end
stage:addEventListener(Event.ENTER_FRAME, onEnterFrame)