@@ -35,7 +35,7 @@ type styleClass struct {
3535
3636func (g * graph ) drawNode (n * node ) {
3737 log .Debug ("Drawing node " , n .name , " at " , * n .drawingCoord )
38- m := mergeDrawings (g .drawing , * n .drawingCoord , n .drawing )
38+ m := g . mergeDrawings (g .drawing , * n .drawingCoord , n .drawing )
3939 g .drawing = m
4040}
4141
@@ -55,12 +55,12 @@ func (d *drawing) drawText(start drawingCoord, text string) {
5555 }
5656}
5757
58- func (d * drawing ) drawLine (from drawingCoord , to drawingCoord , offsetFrom int , offsetTo int ) []drawingCoord {
58+ func (g * graph ) drawLine (d * drawing , from drawingCoord , to drawingCoord , offsetFrom int , offsetTo int ) []drawingCoord {
5959 // Offset determines how far from the actual coord the line should start/stop.
6060 direction := determineDirection (genericCoord (from ), genericCoord (to ))
6161 drawnCoords := make ([]drawingCoord , 0 )
6262 log .Debug ("Drawing line from " , from , " to " , to , " direction: " , direction , " offsetFrom: " , offsetFrom , " offsetTo: " , offsetTo )
63- if ! useAscii {
63+ if ! g . useAscii {
6464 switch direction {
6565 case Up :
6666 for y := from .y - offsetFrom ; y >= to .y - offsetTo ; y -- {
@@ -155,6 +155,7 @@ func drawMap(properties *graphProperties) string {
155155 g .setStyleClasses (properties )
156156 g .paddingX = properties .paddingX
157157 g .paddingY = properties .paddingY
158+ g .useAscii = properties .useAscii
158159 g .setSubgraphs (properties .subgraphs )
159160 g .createMapping ()
160161 d := g .draw ()
@@ -182,7 +183,7 @@ func drawBox(n *node, g graph) *drawing {
182183 to := drawingCoord {w , h }
183184 boxDrawing := * (mkDrawing (Max (from .x , to .x ), Max (from .y , to .y )))
184185 log .Debug ("Drawing box from " , from , " to " , to )
185- if ! useAscii {
186+ if ! g . useAscii {
186187 // Draw top border
187188 for x := from .x + 1 ; x < to .x ; x ++ {
188189 boxDrawing [x ][from.y ] = "─" // Horizontal line
@@ -252,7 +253,7 @@ func drawSubgraph(sg *subgraph, g graph) *drawing {
252253
253254 log .Debugf ("Drawing subgraph %s from (%d,%d) to (%d,%d)" , sg .name , from .x , from .y , to .x , to .y )
254255
255- if ! useAscii {
256+ if ! g . useAscii {
256257 // Draw top border
257258 for x := from .x + 1 ; x < to .x ; x ++ {
258259 subgraphDrawing [x ][from.y ] = "─"
@@ -351,7 +352,15 @@ func wrapTextInColor(text, c, styleType string) string {
351352func (d * drawing ) increaseSize (x int , y int ) {
352353 currSizeX , currSizeY := getDrawingSize (d )
353354 drawingWithNewSize := mkDrawing (Max (x , currSizeX ), Max (y , currSizeY ))
354- * d = * mergeDrawings (drawingWithNewSize , drawingCoord {0 , 0 }, d )
355+ // For increaseSize, we don't need junction merging, so just copy the drawing
356+ for x := 0 ; x < len (* drawingWithNewSize ); x ++ {
357+ for y := 0 ; y < len ((* drawingWithNewSize )[0 ]); y ++ {
358+ if x < len (* d ) && y < len ((* d )[0 ]) {
359+ (* drawingWithNewSize )[x ][y ] = (* d )[x ][y ]
360+ }
361+ }
362+ }
363+ * d = * drawingWithNewSize
355364}
356365
357366func (g * graph ) setDrawingSizeToGridConstraints () {
@@ -393,7 +402,7 @@ func mergeJunctions(c1, c2 string) string {
393402 return c1
394403}
395404
396- func mergeDrawings (baseDrawing * drawing , mergeCoord drawingCoord , drawings ... * drawing ) * drawing {
405+ func ( g * graph ) mergeDrawings (baseDrawing * drawing , mergeCoord drawingCoord , drawings ... * drawing ) * drawing {
397406 // Find the maximum dimensions
398407 maxX , maxY := getDrawingSize (baseDrawing )
399408 for _ , d := range drawings {
@@ -421,7 +430,7 @@ func mergeDrawings(baseDrawing *drawing, mergeCoord drawingCoord, drawings ...*d
421430 c := (* d )[x ][y ]
422431 if c != " " {
423432 currentChar := (* mergedDrawing )[x + mergeCoord .x ][y + mergeCoord .y ]
424- if ! useAscii && isJunctionChar (c ) && isJunctionChar (currentChar ) {
433+ if ! g . useAscii && isJunctionChar (c ) && isJunctionChar (currentChar ) {
425434 (* mergedDrawing )[x + mergeCoord .x ][y + mergeCoord .y ] = mergeJunctions (currentChar , c )
426435 } else {
427436 (* mergedDrawing )[x + mergeCoord .x ][y + mergeCoord .y ] = c
@@ -515,7 +524,15 @@ func (d drawing) debugDrawingWrapper() *drawing {
515524 debugDrawing [0 ][y + 1 ] = fmt .Sprintf ("%2d" , y )
516525 }
517526
518- return mergeDrawings (& debugDrawing , drawingCoord {1 , 1 }, & d )
527+ // For debug wrapper, we don't need junction merging, so just copy
528+ for x := 0 ; x < len (debugDrawing ); x ++ {
529+ for y := 0 ; y < len (debugDrawing [0 ]); y ++ {
530+ if x >= 2 && y >= 1 && x - 2 < len (d ) && y - 1 < len (d [0 ]) {
531+ debugDrawing [x ][y ] = d [x - 2 ][y - 1 ]
532+ }
533+ }
534+ }
535+ return & debugDrawing
519536}
520537
521538func (d drawing ) debugCoordWrapper (g graph ) * drawing {
@@ -538,5 +555,5 @@ func (d drawing) debugCoordWrapper(g graph) *drawing {
538555 currY += h
539556 }
540557
541- return mergeDrawings (& debugDrawing , drawingCoord {1 , 1 }, & d )
558+ return g . mergeDrawings (& debugDrawing , drawingCoord {1 , 1 }, & d )
542559}
0 commit comments