| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package imgui
- // #include "DrawDataWrapper.h"
- import "C"
- import "unsafe"
- // DrawData contains all draw data to render an ImGui frame.
- type DrawData uintptr
- func (data DrawData) handle() C.IggDrawData {
- return C.IggDrawData(data)
- }
- // Valid indicates whether the structure is usable.
- // It is valid only after Render() is called and before the next NewFrame() is called.
- func (data DrawData) Valid() bool {
- return (data.handle() != nil) && (C.iggDrawDataValid(data.handle()) != 0)
- }
- // CommandLists is an array of DrawList to render.
- // The DrawList are owned by the context and only pointed to from here.
- func (data DrawData) CommandLists() []DrawList {
- var handles unsafe.Pointer
- var count C.int
- C.iggDrawDataGetCommandLists(data.handle(), &handles, &count)
- list := make([]DrawList, int(count))
- for i := 0; i < int(count); i++ {
- list[i] = DrawList(*((*uintptr)(handles)))
- handles = unsafe.Pointer(uintptr(handles) + unsafe.Sizeof(handles)) // nolint: gas
- }
- return list
- }
- // ScaleClipRects is a helper to scale the ClipRect field of each DrawCmd.
- // Use if your final output buffer is at a different scale than ImGui expects,
- // or if there is a difference between your window resolution and framebuffer resolution.
- func (data DrawData) ScaleClipRects(scale Vec2) {
- scaleArg, _ := scale.wrapped()
- C.iggDrawDataScaleClipRects(data.handle(), scaleArg)
- }
|