forked from inkyblackness/imgui-go
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Docking.go
73 lines (56 loc) · 1.88 KB
/
Docking.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package imgui
// #include "wrapper/Docking.h"
import "C"
import "unsafe"
type ID uint
type DockNodeFlags int
type DockNode uintptr
func DockSpace(id ID, size Vec2, flags DockNodeFlags) ID {
sizeArg, _ := size.wrapped()
return ID(C.iggDockSpace(C.IggID(id), sizeArg, C.int(flags)))
}
func DockSpaceOverViewport(viewport Viewport, flags DockNodeFlags) ID {
return ID(C.iggDockSpaceOverViewport(viewport.handle(), C.int(flags)))
}
func SetNextWindowDockID(id ID) {
C.iggSetNextWindowDockID(C.IggID(id), 0)
}
func SetNextWindowDockIDV(id ID, cond Condition) {
C.iggSetNextWindowDockID(C.IggID(id), C.int(cond))
}
func GetWindowDockID() ID {
return ID(C.iggGetWindowDockID())
}
func IsWindowDocked() bool {
return C.iggIsWindowDocked() != 0
}
func DockBuilderDockWindow(windowName string, nodeID ID) {
wnArg, wnFin := wrapString(windowName)
defer wnFin()
C.iggDockBuilderDockWindow(wnArg, C.IggID(nodeID))
}
func DockBuilderGetNode(nodeID ID) DockNode {
return DockNode(C.iggDockBuilderGetNode(C.IggID(nodeID)))
}
func DockBuilderSetNodePos(nodeID ID, pos Vec2) {
posArg, _ := pos.wrapped()
C.iggDockBuilderSetNodePos(C.IggID(nodeID), posArg)
}
func DockBuilderSetNodeSize(nodeID ID, size Vec2) {
sizeArg, _ := size.wrapped()
C.iggDockBuilderSetNodeSize(C.IggID(nodeID), sizeArg)
}
func DockBuilderAddNode(nodeID ID, flags DockNodeFlags) ID {
return ID(C.iggDockBuilderAddNode(C.IggID(nodeID), C.int(flags)))
}
func DockBuilderSplitNode(nodeID ID, splitDir Dir, sizeRatioForNodeAtDir float32) (nodeIDAtDir ID, nodeIDAtOppositeDir ID) {
var cNodeAtDir, cNodeAtOppositeDir C.uint
C.iggDockBuilderSplitNode(C.IggID(nodeID), C.int(splitDir), C.float(sizeRatioForNodeAtDir),
(*C.uint)(unsafe.Pointer(&cNodeAtDir)),
(*C.uint)(unsafe.Pointer(&cNodeAtOppositeDir)),
)
return ID(cNodeAtDir), ID(cNodeAtOppositeDir)
}
func DockBuilderFinish(rootID ID) {
C.iggDockBuilderFinish(C.IggID(rootID))
}