...
1 package d2graph
2
3 func (obj *Object) IsGridDiagram() bool {
4 return obj != nil &&
5 (obj.GridRows != nil || obj.GridColumns != nil)
6 }
7
8 func (obj *Object) ClosestGridDiagram() *Object {
9 if obj == nil {
10 return nil
11 }
12 if obj.IsGridDiagram() {
13 return obj
14 }
15 return obj.Parent.ClosestGridDiagram()
16 }
17
18 func (obj *Object) ClosestGridCell() *Object {
19 if obj == nil {
20 return nil
21 }
22
23 if obj.Parent.IsGridDiagram() {
24 return obj
25 }
26 return obj.Parent.ClosestGridCell()
27 }
28
29
30 func (obj *Object) TopGridDiagram() *Object {
31 if obj == nil {
32 return nil
33 }
34 var gd *Object
35 if obj.IsGridDiagram() {
36 gd = obj
37 }
38 curr := obj.Parent
39 for curr != nil {
40 if curr.IsGridDiagram() {
41 gd = curr
42 }
43 curr = curr.Parent
44 }
45 return gd
46 }
47
View as plain text