Block diagram example | ||
---|---|---|
An application of the blockdraw extension. This example contains some non-standard solutions, showing how the functions of this extension can be combined with standard Shapes operations.
| ||
Source: show/hide — visit |
Hello world! | ||
---|---|---|
The simplest of all examples. This is simply a label placed in a rectangular block of standard size. Have a look at the source code right away!
| ||
Source: show/hide — visit |
Relative placement | ||
---|---|---|
Several functions are provided to put a block at a predefined distance apart from a given block. They are non-pure functions that both add the positioned object to a destination state and return it so that it can be used for future reference. See Layout for a complete list of layout functions.
The reason why sumpicture is a function rather than a §Drawable is that the result is a function of the dynamic environment; both the radius size of the block, the width of the line, and the size of the summation sign, depend on dynamic bindings.
| ||
Source: show/hide — visit |
Connection points | ||
---|---|---|
A connection point function is used to find an appropriate connection point of a block with two inputs. Exactly how this point is pointed out using a connection arrow from nowhere is not important here.
| ||
Source: show/hide — visit |
Connections and labels | ||
---|---|---|
Depending on the relative layout of blocks, a varying degree of manual effort is needed to get the connecting paths right. In this example, all paths but the feed-back path can be deduced automatically using connect. The constructed path is both painted and returned. Most of the time the return value is ignored (by means of ..Shapes..ignore), but it is useful when we want to place a label along the path. See Connections for the complete set of functions for the purpose of making connections.
Putting a label along the connection is easy. To make the source code readable, it is a good idea to bind the connection path to a variable, and then use this variable when placing the label. Special purpose functions are provided to ensure a consistent layout of labels; the user need only select a point on the path (preferably using ..Shapes..Layout..mspoint) and a side of that point (by using the “putlabel-function” named accordingly), and how the label should be aligned.
Putting a label at a terminal point is similar to labeling a connection, the only difference is how the point to be labeled is selected. Note that for a ..Shapes..Graphics..pointpicture, all connection point functions will return the same point.
This example also shows how to place signs at connection points, and how to indicate a point where a signal splits by a small dot.
This is a comparatively simple figure, containing three different kinds of objects: blocks, connections and annotations along the connections. This example also follows the good habit to let preferences that might be shared by several figures be extracted into a separate file (link).
| ||
Source: show/hide — visit |
More layout | ||
---|---|---|
Laying out the blocks of a slightly more complicated diagram, and constructing a nice path to be dashed.
The art of making nice block diagrams using this extension turns out to be a matter of having an idea for how to select from the predefined distances. Here are a few guidelines from the author:
Note how the dashed line was handled similarly to a label when selecting the distance after the middle summation.
There are many situations when simple guidelines like the ones above cannot be applied successfully, and one will have to improvise. For example, the shorter distances may be preferred if the graphics becomes too wide, although an alternative solution to this is to change the values of the predefined lengths instead, see Settings.
| ||
Source: show/hide — visit |
Binding | Type | Default | Description |
---|---|---|---|
@longblockrx | §Length | 0.7 cm |
Half the width of a long block.
|
@longblockry | §Length | 0.4 cm |
Half the height of a long block.
|
@smallblockr | §Length | 0.3 cm |
Half the side length a small square block, and also the radius of round blocks.
|
@fracblockry | §Length | 0 cm |
Half the height of blocks which are meant to have enough vertical space for a standing fraction in the label.
|
Binding | Type | Default | Description |
---|---|---|---|
@connectionlw | §Length | 0.8 bp |
The line width for connections.
|
@blocklw | §Length | 0.8 bp |
The line width for the border of blocks.
|
Binding | Type | Default | Description |
---|---|---|---|
@abovelabelmargin | §Length | 1.5 mm |
The margin to use when labels are placed above an object.
|
@belowlabelmargin | §Length | 1.5 mm |
The margin to use when labels are placed below an object.
|
@leftrightlabelmargin | §Length | 1 mm |
The margin to use when labels are placed to the left or to the right of an object.
|
@signmarginslide | §Length | 1.5 mm |
The margin for signs, in the direction of the connecting path.
|
@signmarginoffset | §Length | 2 mm |
The margin for signs, in the direction away from the connecting path.
|
Binding | Type | Default | Description |
---|---|---|---|
@blockspaceverynear | §Length | 3 mm |
A very small distance.
|
@blockspacenear | §Length | 6 mm |
A rather small distance.
|
@blockspacelabelspace | §Length | 8 mm |
A distance that may be used when there should be enough space for a small label between the blocks.
|
@blockspacefar | §Length | 10 mm |
A rather big distance.
|
@blockspaceveryfar | §Length | 15 mm |
A very big distance.
|
@textscaling | |
---|---|
Used by: | |
Type: | ( ::§Drawable → §Drawable ) |
Default binding: | [scale 1] |
Transform that is applied to anything which is thought to be a label. Useful to scale down labels to allow smaller diagrams.
An alternative could be to produce big diagrams, and then scale the result at the end, but this is a mess compared to always producing graphics in the true scale.
|
@connectpainter | |
---|---|
Used by: | |
Type: | ( ::§Path → §Drawable ) |
Default binding: | [..Shapes..Graphics..stroke head:..Shapes..Graphics..ShapesArrow ...] |
The function used to paint connections.
When called from within this extension, ..Shapes..Traits..@width will always be set to @connectionlw. Hence, users who call @connectpainter directly should consider using this line width as well.
|
@blockpainter | |
---|---|
Used by: | |
Type: | ( ::§Path → §Drawable ) |
Default binding: | ..Shapes..Graphics..stroke |
The function used to paint the block border paths.
When called from within this extension, ..Shapes..Traits..@width will always be set to @blocklw. Hence, users who call @blockpainter directly should consider using this line width as well.
This function will be used before labels are painted, so it may be used to paint the interior of blocks with a background color.
|
Blocks | ||
---|---|---|
The range of predefined blocks for use in block diagrams.
| ||
Source: show/hide — visit |
sizedblock | |
---|---|
lbl::§Drawable rx::§Length ry::§Length → §Drawable | |
Dynamic references: | none |
This function is considered low-level and should not be used directly in standard applications.
Constructs a rectangular block, with a label positioned nicely inside.
| |
See also: | longblock squareblock fracblock longenoughblock longenoughfracblock |
longblock | |
---|---|
lbl::§Drawable → §Drawable | |
Dynamic references: | none |
Constructs a long rectangular block of standardized size.
Calls sizedblock internally, which uses additional dynamic variables.
| |
See also: | sizedblock |
squareblock | |
---|---|
lbl::§Drawable → §Drawable | |
Dynamic references: | none |
Constructs a small square block of standardized size.
Calls sizedblock internally, which uses additional dynamic variables.
| |
See also: | sizedblock |
fracblock | |
---|---|
lbl::§Drawable → §Drawable | |
Dynamic references: | none |
Constructs a long rectangular block of standardized size, tall enough to accommodate a standing fraction in the label.
Calls sizedblock internally, which uses additional dynamic variables.
| |
See also: | sizedblock |
longenoughblock | |
---|---|
lbl::§Drawable → §Drawable | |
Dynamic references: | none |
Like longblock, but makes the block wider if required to accommodate the label.
|
longenoughfracblock | |
---|---|
lbl::§Drawable → §Drawable | |
Dynamic references: | none |
Like fracblock, but makes the block wider if required to accommodate the label.
|
roundblock | |
---|---|
lbl::§Drawable → §Drawable | |
Dynamic references: | none |
Constructs a small circular block of standardized size.
|
sumpicture | |
---|---|
→ §Drawable | |
Returns a small circular summation block. Note that this must be a function since the result shall depend on dynamic bindings!
Calls roundblock internally, which uses additional dynamic variables.
|
splitdot | |
---|---|
→ §Drawable | |
Dynamic references: | none |
Returns a small circular dot to use where a signal splits. The size is chosen relative to the width of the connection strokes. Note that this must be a function since the result shall depend on dynamic bindings!
|
termcircle | |
---|---|
→ §Drawable | |
Dynamic references: | none |
Returns a small circle that can be used if a signal terminal is to be emphasized. The size is chosen relative to the width of the connection strokes. Note that this must be a function since the result shall depend on dynamic bindings!
|
Layout | ||
---|---|---|
A selection of the layout functions. The name of the functions reflect which dynamic variable is used to determine the distance between the objects, in the direction also given by the name of the function. Note that all these functions are non-pure, as they allow the object being laid out to be added to a destination variable in addition to returning it.
Note that horizontal positioning does not care about the object's vertical extent, and vice versa. This is not only apparent in the example with the block labeled “High”, but also in the examples where the new block is a plain label centered at its leftmost baseline point.
The function putblockOrigin is different from the others in that it puts the block at the origin instead of relative to another block.
The functions using the various label margins should only be used if this non-pure behavior is desired; labels are generally better placed using the pure functions described in Labels.
| ||
Source: show/hide — visit |
putblockOrigin | |
---|---|
•dst::§•Group newBlock::§Drawable → §Drawable | |
Simply tacks newBlock to •dst, and then returns newBlock. This function is typically used to place the first block added to the block diagram, but may also be used in other situations when manual tweaking is required to get a block in the right location. In the latter case, this function is called with an object which has already been shifted to the right location; applying the shift to the result of calling this function would be meaningless, since the un-shifted object would already have been added to •dst then.
Although this is a very simple task, use of this function makes the code more homogeneous.
|
putblockLeft | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable dist::§Length → §Drawable | |
This function is considered low-level; the user should prefer functions which call this function with standardized values for dist instead.
Positions newBlock to the left of oldBlock, such that the horizontal distance between the bounding boxes equals dist. The vertical positioning will make the origin of newBlock level with the vertical midpoint of oldBlock's bounding box.
| |
See also: | putblockVeryNearLeft putblockNearLeft putblockLabelSpaceLeft putblockFarLeft putblockVeryFarLeft putblockLabelMarginLeft |
putblockRight | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable dist::§Length → §Drawable | |
Analogous to putblockLeft
| |
See also: | putblockVeryNearRight putblockNearRight putblockLabelSpaceRight putblockFarRight putblockVeryFarRight putblockLabelMarginRight |
putblockAbove | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable dist::§Length → §Drawable | |
Analogous to putblockLeft
| |
See also: | putblockVeryNearAbove putblockNearAbove putblockLabelSpaceAbove putblockFarAbove putblockVeryFarAbove putblockLabelMarginAbove |
putblockBelow | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable dist::§Length → §Drawable | |
Analogous to putblockLeft
| |
See also: | putblockVeryNearBelow putblockNearBelow putblockLabelSpaceBelow putblockFarBelow putblockVeryFarBelow putblockLabelMarginBelow |
putblockVeryNearLeft | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockLeft with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockNearLeft | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockLeft with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockLabelSpaceLeft | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockLeft with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockFarLeft | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockLeft with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockVeryFarLeft | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockLeft with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockLabelMarginLeft | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockLeft with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockVeryNearRight | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockRight with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockNearRight | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockRight with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockLabelSpaceRight | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockRight with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockFarRight | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockRight with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockVeryFarRight | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockRight with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockLabelMarginRight | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockRight with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockVeryNearBelow | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockBelow with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockNearBelow | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockBelow with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockLabelSpaceBelow | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockBelow with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockFarBelow | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockBelow with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockVeryFarBelow | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockBelow with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockLabelMarginBelow | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockBelow with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockVeryNearAbove | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockAbove with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockNearAbove | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockAbove with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockLabelSpaceAbove | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockAbove with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockFarAbove | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockAbove with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockVeryFarAbove | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockAbove with the distance argument given by the dynamic variable corresponding to the name of this function.
|
putblockLabelMarginAbove | |
---|---|
•dst::§•Group newBlock::§Drawable oldBlock::§Drawable → §Drawable | |
Dynamic references: | none |
Calls putblockAbove with the distance argument given by the dynamic variable corresponding to the name of this function.
|
Connection points | ||
---|---|---|
How to select points on a block where connections attach. Note that it is assumed that the block is rectangular, so that the rectangular bounding box follows the contour of the object; this is why summation blocks can only be used with one connection on each side. Also note that the provided numbers shall be floats, nor is the index required to be in the range from 1 to the total number of points, but use these freedoms with caution!
| ||
Source: show/hide — visit |
leftpoint | |
---|---|
•pic::§•Drawable n:1::§Float i:1::§Float → §Coords | |
Select a point on the left side of the rectangular bounding box of pic, selecting point number i among a total of n on this side.
|
rightpoint | |
---|---|
•pic::§•Drawable n:1::§Float i:1::§Float → §Coords | |
Analogous to leftpoint.
|
bottompoint | |
---|---|
•pic::§•Drawable n:1::§Float i:1::§Float → §Coords | |
Analogous to leftpoint.
|
Connection primitives | ||
---|---|---|
These are the primitive functions that construct connection paths. They operate on points, and are named after the direction at the beginning and end of the constructed path, for instance hvconnect constructs a path that is horizontal at the beginning and vertical at the end. If the path shall begin and end along the same axis, the user must also tell at which coordinate the beginning and end shall connect with each other. This is done using a pair of mediation and slide values; the mediation is a linear interpolation between the start (mediation is 0) and end (mediation is 1) points, and the slide is an absolute length added to the coordinate given by the slide.
| ||
Source: show/hide — visit |
vhconnect | |
---|---|
•dst::§•Drawable pa::§Coords pb::§Coords → §Path | |
Dynamic references: | none |
Constructs a path from pa to pb which consists of two line segments; first a vertical and then a horizontal. Besides returning the path, it is painted using @connectpainter with ..Shapes..Traits..@width being set to @connectionlw, and the resulting §Drawable is added to •dst.
|
hvconnect | |
---|---|
•dst::§•Drawable pa::§Coords pb::§Coords → §Path | |
Dynamic references: | none |
Analogous to vhconnect; just exchange horizontal and vertical in the description.
|
hhconnect | |
---|---|
•dst::§•Drawable pa::§Coords pb::§Coords mediation::§Float slide::§Length → §Path | |
Dynamic references: | none |
Constructs a path from pa to pb which consists of three line segments; initially horizontal and horizontal also at the end. The horizontal coordinate of the vertical line segment in the middle is given by the mediation and slide values. The mediation is relative to the horizontal coordinates of pa and pb, while the slide enters the coordinate as a term. See the example for illustration!
Besides returning the path, it is also painted to •dst, just like vhconnect does.
|
vvconnect | |
---|---|
•dst::§•Drawable pa::§Coords pb::§Coords mediation::§Float slide::§Length → §Path | |
Dynamic references: | none |
Analogous to hhconnect; just exchange horizontal and vertical in the description.
|
Connection intermediate level functions | ||
---|---|---|
These are the intermediate level functions that construct connection paths. They operate on blocks, and are named after the blocks' sides at the beginning and end of the constructed path, for instance rbconnect constructs a path from the right side of the first block to the bottom side of the second block. If the path shall connect to the same side of the two blocks, the user must also tell how far from the closest block the path shall turn.
| ||
Source: show/hide — visit |
trconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Calls the appropriate low-level function to create a path from the top of the first block to the right side of the second block.
|
tlconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Analogous to trconnect.
|
brconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Analogous to trconnect.
|
blconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Analogous to trconnect.
|
ltconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Analogous to trconnect.
|
lbconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Analogous to trconnect.
|
rtconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Analogous to trconnect.
|
rbconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Analogous to trconnect.
|
tbconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable mediation:0.5::§Float slide:0 cm::§Length → §Path | |
Dynamic references: | none |
Calls the appropriate low-level function to construct a path from the top of the first block to the bottom of the second block. The mediation and slide values are simply passed on to the low-level function.
|
tbconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable mediation:0.5::§Float slide:0 cm::§Length → §Path | |
Dynamic references: | none |
Analogous to tbconnect.
|
lrconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable mediation:0.5::§Float slide:0 cm::§Length → §Path | |
Dynamic references: | none |
Analogous to tbconnect.
|
rlconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable mediation:0.5::§Float slide:0 cm::§Length → §Path | |
Dynamic references: | none |
Analogous to tbconnect.
|
ttconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable slide::§Length → §Path | |
Dynamic references: | none |
Calls the appropriate low-level function to construct a path from the top of the first block to the top of the second block. The slide value is simply passed on to the low-level function, and the mediation value is chosen as the reasonable choice of 0 or 1.
|
bbconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable slide::§Length → §Path | |
Dynamic references: | none |
Analogous to ttconnect.
|
llconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable slide::§Length → §Path | |
Dynamic references: | none |
Analogous to ttconnect.
|
rrconnect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable slide::§Length → §Path | |
Dynamic references: | none |
Analogous to ttconnect.
|
Connection by automatic choice | ||
---|---|---|
The function connect makes an automatic selection among the intermediate level functions. Note that the first block's left and right sides are preferred to its bottom and top sides, and that one never obtains a path which connects to the same side of both blocks. Hence, only eight of the intermediate level functions are accessed through connect.
| ||
Source: show/hide — visit |
connect | |
---|---|
•dst::§•Drawable pica::§Drawable picb::§Drawable → §Path | |
Dynamic references: | none |
Makes an automatic selection among the intermediate level connection functions. See Connection by automatic choice.
|
Layout of labels | ||
---|---|---|
Functions used to position labels relative to a given point. That these functions do take the point to be labeled as an argument counteracts separation of concerns, which would require that these function only position labels relative to the origin. However, it is very convenient to incorporate the shift in the functions, and in case one doesn't want the shift, one may always pass the origin.
Or make a new design where the point defaults to the origin…
Note how the vertical positioning is independent of the vertical extent of the label. This ensures that labels with different vertical extent still end up on the same baseline if the points they label are level.
| ||
Source: show/hide — visit |
putlabelLeft | |
---|---|
lbl::§Drawable z::§Coords y::§Length → §Drawable | |
Dynamic references: | none |
Position lbl to the left of z, centering vertically at y. For instance, y=1 gives a label below z, while -1 gives a label above.
| |
See also: | ..Shapes..Layout..Xcenter_y |
putlabelRight | |
---|---|
lbl::§Drawable z::§Coords y::§Length → §Drawable | |
Dynamic references: | none |
Analogous to putlabelLeft.
| |
See also: | ..Shapes..Layout..Xcenter_y |
putlabelBelow | |
---|---|
lbl::§Drawable z::§Coords x::§Length → §Drawable | |
Dynamic references: | none |
Position lbl below z, treating the label as if it had the height of an X, centering horizontally at x. For instance, x=1 gives a label to the left of z, while -1 gives a label to the right.
| |
See also: | ..Shapes..Layout..Xcenter_y |
putlabelAbove | |
---|---|
lbl::§Drawable z::§Coords x::§Length → §Drawable | |
Dynamic references: | none |
Position lbl above z, centering horizontally at x. For instance, x=1 gives a label to the left of z, while -1 gives a label to the right.
|