#### 9.10.4 Default and Refinement Styles for Signalling Charts ¶

For signalling charts styles can contain any of the attributes listed in Signalling Chart Attributes and Styles. Styles are explained more in Defining Styles.

There is a built-in default style for each signalling chart element: `arrow`, `box`, `emptybox`, `divider`, `blockarrow`, `pipe` `entity`, `entitygroup`, `symbol`, `indicator` 55, `title`, `subtitle`, `note`, `comment`, `endnote`, `vertical` 56, `vertical_brace`, `vertical_bracket`, `vertical_range`, `vertical_pointer`, `symbol` 57 and `text` 58.

There are also predefined styles for grouped entities and boxes for when they are collapsed: `entitygroup_collapsed`, `box_collapsed` and `box_collapsed_arrow`, the latter is used when a box is collapsed to a bidirectional arrow. Attributes of large entitygroups default to the `entitygroup_large` style.

The following refinement styles are defined further governing the appearance of elements

- for arrows: ‘`arrow_self`’, ‘`->`’, ‘`=>`’, ‘`>`’, ‘`>>`’, ‘`==>`’ and ‘`=>>`’. 59.
- for block arrows: ‘`block->`’, ‘`block=>`’, ‘`block>`’ and ‘`block>>`’.
- for boxes: ‘`--`’, ‘`==`’, ‘`++`’ and ‘`..`’
- for pipes: ‘`pipe--`’, ‘`pipe==`’, ‘`pipe++`’ and ‘`pipe..`’
- for dividers: ‘`---`’ and ‘`...`’
- for verticals: `vertical->`, `vertical>`, `vertical>>`, `vertical=>`, `vertical--`, `vertical++`, `vertical..` and `vertical==`.

Redefining refinement styles enables you to quickly define, e.g., various arrow styles and use the various symbols as shorthand for these. Usually style names containing non-letter characters have to be quoted, but for the above styles the parser is expected to recognize them without quotation. So both below are valid.

Finally there are two more pre-defined styles for signalling charts: `strong` and `weak`. By adding these to any element you will get a more and less emphasized look, respectively. The benefit of these compared to making elements stronger or weaker by yourself is that they are defined in all chart designs in a visually appropriate manner. Thus you do not need to change anything when changing chart design just keep using them unaltered.

As a related comment we note that chart designs modify all the above styles and the default value for the `hscale`, `compress`, `vspacing`, `numbering`, `indicator`, `angle` and `text` chart options, too.

Thus, in summary the actual attributes of an element are set using the following logic.

1. If you specify an attribute directly at the element (perhaps via applying a style), the specified value is used60.
2. Otherwise, if the attribute is set in the refinement style (at the point and in the scope of where the element is defined), the value there is used. For arrows starting and ending at the same entity, two refinement styles are applied, first ‘`arrow_self`’, then the one based on the arrow symbol. (In the latter only line styles are set, so this is why you can use e.g., `=>` to make an arrow double-lined.)
3. Otherwise, if the attribute is set in the default style of the element, the value there is used.
4. Otherwise, the value of the applicable chart option is used, such as `text.*`, `compress`, `vspace`, `indicator`, `numbering`, `auto_heading` and `angle`. In order for these chart options to be effective default styles usually have no value specified for these attributes. You can set these attributes in styles, e.g., to set font type for empty boxes, which will take precedence over chart options.

#### Footnotes

##### (55)

The style `indicator` determines the appearance of the small symbols that indicate elements hidden due to a collapsed box or entity group.

##### (56)

referring to vertical boxes and block arrows

##### (57)

referring to all symbols

##### (58)

referring to `text at` commands

##### (59)

‘`arrow_self`’ is applied to arrows starting and ending at the same entity after and in addition to style ‘`arrow`’. The others are applied (potentially after ‘`arrow_style`’ to line segments, also for bi-directional arrows. Thus there is no separate ‘`<->`’ style, for example.

##### (60)

If you specify the attribute several times, the last one is used.