Difference between revisions of "Dear ImGui Getting Started"
From GiderosMobile
 (Created page with "__NOTOC__ '''Dear ImGui for Gideros Mobile'''  == Gideros Dear ImGui embedded Demo == <syntaxhighlight lang="lua"> require "ImGui"  local imgui = ImGui.new() stage:addChild(im...")  | 
				|||
| Line 68: | Line 68: | ||
	imgui:render()  | 	imgui:render()  | ||
end  | end  | ||
| + | </syntaxhighlight>  | ||
| + | |||
| + | == Start a Window at a given position ==  | ||
| + | <syntaxhighlight lang="lua">  | ||
| + | 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)  | ||
</syntaxhighlight>  | </syntaxhighlight>  | ||
Revision as of 13:53, 5 October 2024
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)