Understanding the Centerline
There are expressions where the connections between the components of the rendering needs to be placed in a location other than just the top, middle or bottom of the box containing a component. The centerline is used to define another connection point for a component in a rendering that is used for these cases.
An example will illustrate the need for the Centerline. Consider this expression:
The rendering for the Logic.Equal object looks like this:
Note that the endpoints of the offsets connected to both the "a" and "b" parameters are shown in blue. This indicates that these offsets connect to the centerline of "a" and "b" rather than the middle of each parameter. You can also see this in the Properties List where the My offset connection property for the "b" parameter has the Centerline left value.
The Centerline of the Math.Div object is attached to the line between the two parameters as you can see in the rendering of this object. If you click on the Centerline node in the Rendering Tree, the Display Area is redrawn to show the location of the centerline and which component owns the centerline:
The location of the centerline is shown by a red line that goes all the way across the Display Area. The object that owns the centerline is shown with a red box around it.
So if we put a Math.Div object into the "b" parameter of a Logic.Equal object, as is the case in the expression we started with, and offset to the "b" parameter is connected to Centerline left, then as the parameters in numerator and denominator change, it will always be the case that the line between the numerator and denominator will be vertically aligned with the middle of the "=" symbol even if the height of the numerator is different from the height of the denominator, as it is in the example expression we started with. This allows the division line to stay centered with other terms in the equation, regardless of the height of its parameters.
Here's another example where the division line always remains centered in relation to other terms in the expression. This time using the Add object:
The centerline offset differs from the middle in that centerline horizontally aligns terms with other terms at the assigned centerline; whereas middle offset of a term is determined by the vertical midpoint.
By contrast, renderings that contain parentheses are typically constructed so that the offsets connect to the midpoint of the parameter, not the centerline:
Note that both of the offsets connected to the "a" parameter connect to the middle rather than the centerline, as you can see from the yellow endpoints or by looking at the Properties List for the parentheses symbols.
In every rendering there is always an object that owns the centerline. In renderings with groups, every group will also have an object that owns the centerline of the group. This is required so that we can connect components of a rendering to the centerline of a group when that's the appropriate way to construct a rendering.