| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package imgui
- // #cgo CXXFLAGS: -std=c++11
- // #include "imnodesWrapper.h"
- import "C"
- func ImNodesCreateContext() {
- C.iggImNodesCreateContext()
- }
- func ImNodesDestroyContext() {
- C.iggImNodesDestroyContext()
- }
- func ImNodesBeginNodeEditor() {
- C.iggImNodesBeginNodeEditor()
- }
- func ImNodesEndNodeEditor() {
- C.iggImNodesEndNodeEditor()
- }
- func ImNodesBeginNode(id int) {
- C.iggImNodesBeginNode(C.int(id))
- }
- func ImNodesEndNode() {
- C.iggImNodesEndNode()
- }
- func ImNodesBeginNodeTitleBar() {
- C.iggImNodesBeginNodeTitleBar()
- }
- func ImNodesEndNodeTitleBar() {
- C.iggImNodesEndNodeTitleBar()
- }
- func ImNodesBeginInputAttribute(id int) {
- C.iggImNodesBeginInputAttribute(C.int(id))
- }
- func ImNodesEndInputAttribute() {
- C.iggImNodesEndInputAttribute()
- }
- func ImNodesBeginOutputAttribute(id int) {
- C.iggImNodesBeginOutputAttribute(C.int(id))
- }
- func ImNodesEndOutputAttribute() {
- C.iggImNodesEndOutputAttribute()
- }
- func ImNodesLink(id, startAttributeId, endAttributeId int) {
- C.iggImNodesLink(C.int(id), C.int(startAttributeId), C.int(endAttributeId))
- }
- func ImNodesIsLinkCreated() (startedNodeId, startedAttributeId, endedNodeId, endedAttributeId int32, createdFromSnap, isLinkCreated bool) {
- sNodeIdArg, sNodeIdDeleter := wrapInt32(&startedNodeId)
- defer sNodeIdDeleter()
- sAttrIdArg, sAttrIdDeleter := wrapInt32(&startedAttributeId)
- defer sAttrIdDeleter()
- eNodeIdArg, eNodeIdDeleter := wrapInt32(&endedNodeId)
- defer eNodeIdDeleter()
- eAttrIdArg, eAttrIdDeleter := wrapInt32(&endedAttributeId)
- defer eAttrIdDeleter()
- bArg, bArgDeleter := wrapBool(&createdFromSnap)
- defer bArgDeleter()
- isLinkCreated = C.iggImNodesIsLinkCreated(sNodeIdArg, sAttrIdArg, eNodeIdArg, eAttrIdArg, bArg) != 0
- return
- }
- func ImNodesIsLinkDestroyed() (linkId int32, isDestroyed bool) {
- linkIdArg, linkIdDeleter := wrapInt32(&linkId)
- defer linkIdDeleter()
- isDestroyed = C.iggImNodesIsLinkDestroyed(linkIdArg) != 0
- return
- }
- type ImNodesAttributeFlags int
- const (
- AttributeFlags_None ImNodesAttributeFlags = 0
- // Allow detaching a link by left-clicking and dragging the link at a pin it is connected to.
- // NOTE: the user has to actually delete the link for this to work. A deleted link can be
- // detected by calling IsLinkDestroyed() after EndNodeEditor().
- AttributeFlags_EnableLinkDetachWithDragClick ImNodesAttributeFlags = 1 << 0
- // Visual snapping of an in progress link will trigger IsLink Created/Destroyed events. Allows
- // for previewing the creation of a link while dragging it across attributes. See here for demo:
- // https://github.com/Nelarius/imnodes/issues/41#issuecomment-647132113 NOTE: the user has to
- // actually delete the link for this to work. A deleted link can be detected by calling
- // IsLinkDestroyed() after EndNodeEditor().
- AttributeFlags_EnableLinkCreationOnSnap ImNodesAttributeFlags = 1 << 1
- )
- func ImNodesPushAttributeFlag(flag ImNodesAttributeFlags) {
- C.iggImNodesPushAttributeFlag(C.int(flag))
- }
- func ImNodesPopAttributeFlag() {
- C.iggImNodesPopAttributeFlag()
- }
- func ImNodesEnableDetachWithCtrlClick() {
- C.iggImNodesEnableDetachWithCtrlClick()
- }
- func ImNodesSetNodeScreenSpacePos(nodeId int, pos Vec2) {
- posArg, _ := pos.wrapped()
- C.iggImNodesSetNodeScreenSpacePos(C.int(nodeId), posArg)
- }
- func ImNodesSetNodeEditorSpacePos(nodeId int, pos Vec2) {
- posArg, _ := pos.wrapped()
- C.iggImNodesSetNodeEditorSpacePos(C.int(nodeId), posArg)
- }
- func ImNodesSetNodeGridSpacePos(nodeId int, pos Vec2) {
- posArg, _ := pos.wrapped()
- C.iggImNodesSetNodeGridSpacePos(C.int(nodeId), posArg)
- }
- func ImNodesGetNodeScreenSpacePos(nodeId int) *Vec2 {
- var pos Vec2
- valueArg, valueDeleter := pos.wrapped()
- defer valueDeleter()
- C.iggImNodesGetNodeScreenSpacePos(C.int(nodeId), valueArg)
- return &pos
- }
- func ImNodesGetNodeEditorSpacePos(nodeId int) *Vec2 {
- var pos Vec2
- valueArg, valueDeleter := pos.wrapped()
- defer valueDeleter()
- C.iggImNodesGetNodeEditorSpacePos(C.int(nodeId), valueArg)
- return &pos
- }
- func ImNodesGetNodeGridSpacePos(nodeId int) *Vec2 {
- var pos Vec2
- valueArg, valueDeleter := pos.wrapped()
- defer valueDeleter()
- C.iggImNodesGetNodeGridSpacePos(C.int(nodeId), valueArg)
- return &pos
- }
|