Files
go-mxl-player/internal/imgui/imgui.go
T
Dmitry Sergeev 3b51bea58a First imgui trys
2026-08-25 13:02:54 +03:00

48 lines
1.0 KiB
Go

package imgui
import (
"time"
cimgui "github.com/AllenDang/cimgui-go/imgui"
)
// ImGui context & IO wrapper
type Context struct {
ctx *cimgui.Context
io *cimgui.IO
lastDrawData *cimgui.DrawData
}
func New() *Context {
ctx := cimgui.CreateContext()
cimgui.SetCurrentContext(ctx)
io := cimgui.CurrentIO()
return &Context{ctx: ctx, io: io}
}
func (c *Context) Destroy() {
cimgui.DestroyContext()
}
// Starts new ImGui frame
// dt - time since last frame
func (c *Context) BeginFrame(dt time.Duration, winW, winH int32) {
c.io.SetDeltaTime(float32(dt.Seconds()))
c.io.SetDisplaySize(cimgui.Vec2{X: float32(winW), Y: float32(winH)})
cimgui.NewFrame()
}
// Ends the frame, renders
// and returns data for Vulkan
func (c *Context) EndFrame() *cimgui.DrawData {
cimgui.EndFrame()
cimgui.Render()
c.lastDrawData = cimgui.CurrentDrawData()
return cimgui.CurrentDrawData()
}
// expose io to input backend
func (c *Context) IO() *cimgui.IO { return c.io }
func (c *Context) LastDrawData() *cimgui.DrawData { return c.lastDrawData }