private void addRowHeight(int row, int height) {
		rowHeights[row] = Math.max(rowHeights[row], height);
	}
Computes positions in layout space for {@link GridLocationMap}s that have orthogonally routed
edges.
<P>
At this point, the grid has been populated with vertices at specific grid points and edges with
lists of grid articulation points for their routing. Conceptually, vertices live at the 
intersection of the grid lines and edges are routed along grid lines. While in grid space, 
vertices have no size and edges can overlap each other along grid lines. In order to map these 
virtual grid locations to points in layout space, we need to use the size of each vertex and 
offsets assigned to parallel edge segments that share a grid line.
<P>
We first need to compute sizes for the rows and columns in the grid. For purposes of this
algorithm, the size of a row N is defined to be the distance between grid line row N and grid
line row N+1. The same applies to column sizes. The way vertex sizes are applied is slightly
different for rows and column. Vertices are centered on grid column lines, but
completely below grid row lines. So if a vertex is at grid point 1,1, all of its height is 
assigned to grid row 1. But its width is split between grid column 0 and grid column 1. Edges
work similarly, in that parallel horizontal edge segments extend below their grid row, but 
parallel column segments are split so that some have offsets that are before the vertical 
grid line and some are after.
<P>
The row sizing is straight forward. Even rows only contain edges and odd rows only contain
vertices. Since the height of a vertex is assigned completely to one row, that row's height
is simply the maximum height of all the vertices in that row, plus any row padding.
<P>
Column sizing is more complicated. The width of any column is going to be the max of either
1) vertices that half extend from the left + the thickness of edges that extend the right, OR 
2) vertices that half extend from the right + the thickness of edges the extend from the left.
Also, column padding is applied differently. For columns, padding is not just added to the 
column width like in rows. Instead, it acts as a minimum "edge thickness". In other words if the
edge thickness is less than the padding, the edge thickness doesn't make the gaps bigger. Only if
the edge thickness is greater than the column padding, then it determines the gap and the 
column padding contributes nothing.

@param <V> the vertex type
@param <E> the edge type
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/layout/flowchart/OrthogonalGridSizer.java