adjust for 3d/multiple

This commit is contained in:
Gavin Nishizawa 2023-05-23 19:25:27 -07:00
parent 73b60b1289
commit d6b8149073
No known key found for this signature in database
GPG key ID: AE3B177777CE55CD
2 changed files with 39 additions and 2 deletions

View file

@ -159,7 +159,7 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
id := obj.AbsID() id := obj.AbsID()
idToObj[id] = obj idToObj[id] = obj
height := obj.Height width, height := obj.Width, obj.Height
if obj.HasLabel() { if obj.HasLabel() {
if obj.HasOutsideBottomLabel() || obj.Icon != nil { if obj.HasOutsideBottomLabel() || obj.Icon != nil {
height += float64(obj.LabelDimensions.Height) + label.PADDING height += float64(obj.LabelDimensions.Height) + label.PADDING
@ -168,7 +168,14 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
height += float64(obj.LabelDimensions.Height) + label.PADDING height += float64(obj.LabelDimensions.Height) + label.PADDING
} }
} }
loadScript += generateAddNodeLine(id, int(obj.Width), int(height)) if obj.Style.ThreeDee != nil && obj.Style.ThreeDee.Value == "true" {
height += d2target.THREE_DEE_OFFSET
width += d2target.THREE_DEE_OFFSET
} else if obj.Style.Multiple != nil && obj.Style.Multiple.Value == "true" {
height += d2target.MULTIPLE_OFFSET
width += d2target.MULTIPLE_OFFSET
}
loadScript += generateAddNodeLine(id, int(width), int(height))
if obj.Parent != g.Root { if obj.Parent != g.Root {
loadScript += generateAddParentLine(id, obj.Parent.AbsID()) loadScript += generateAddParentLine(id, obj.Parent.AbsID())
} }
@ -258,6 +265,29 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
} }
} }
// separate loop so all descendants are placed
for _, obj := range g.Objects {
if obj.Style.ThreeDee != nil && obj.Style.ThreeDee.Value == "true" {
// obj.TopLeft.Y += d2target.THREE_DEE_OFFSET
obj.IterDescendants(func(_, child *d2graph.Object) {
child.TopLeft.Y += d2target.THREE_DEE_OFFSET
})
if !obj.IsContainer() {
obj.Height -= d2target.THREE_DEE_OFFSET
obj.Width -= d2target.THREE_DEE_OFFSET
}
} else if obj.Style.Multiple != nil && obj.Style.Multiple.Value == "true" {
// obj.TopLeft.Y += d2target.MULTIPLE_OFFSET
obj.IterDescendants(func(_, child *d2graph.Object) {
child.TopLeft.Y += d2target.MULTIPLE_OFFSET
})
if !obj.IsContainer() {
obj.Height -= d2target.MULTIPLE_OFFSET
obj.Width -= d2target.MULTIPLE_OFFSET
}
}
}
for i, edge := range g.Edges { for i, edge := range g.Edges {
val, err := vm.RunString(fmt.Sprintf("JSON.stringify(g.edge(g.edges()[%d]))", i)) val, err := vm.RunString(fmt.Sprintf("JSON.stringify(g.edge(g.edges()[%d]))", i))
if err != nil { if err != nil {

View file

@ -1187,6 +1187,13 @@ func drawShape(writer io.Writer, diagramHash string, targetShape d2target.Shape,
var box *geo.Box var box *geo.Box
if labelPosition.IsOutside() { if labelPosition.IsOutside() {
box = s.GetBox() box = s.GetBox()
if targetShape.ThreeDee {
box.TopLeft.Y -= d2target.THREE_DEE_OFFSET
box.Width += d2target.THREE_DEE_OFFSET
} else if targetShape.Multiple {
box.TopLeft.Y -= d2target.MULTIPLE_OFFSET
box.Width += d2target.MULTIPLE_OFFSET
}
} else { } else {
box = s.GetInnerBox() box = s.GetInnerBox()
} }