### 7.2 Design Library ¶

For each of its languages Msc-generator comes with a bunch of Chart Designs (and Shapes, see Chart Designs and Entity Shapes). The designs available can be viewed in the design selector combo box on the ribbon (MFC GUI) or in `Settings` (CLI GUI).

The files describing the chart designs (and shapes) are of the same language that the language of the chart they provide designs for. These files shall have the primary extension of the chart type.

Note that you should define only designs and shapes in design libraries (for languages that support them). Colors, styles and procedures shall be defined as part of a design. If you want to define one color, style or procedure to be available without applying a design, add them to the `plain` design. Any styles, colors or procedures defined in a design library outside a design will probably be unavailable later - however, the behaviour is undefined and Msc-generator may generate errors for this in the future. Similar, avoid commands in the design library that actually generate chart elements.

On Windows the file describing the default designs and shapes are installed besides the executable. On Linux and the Mac these files are incorporated into the executable so that msc-gen can be a standalone file. Specifically on Windows at startup for each supported chart type Msc-generator looks for a file called `designlib.xxx` in the directory where the executable is located (xxx is the primary extension of the chart type). If not found, the file `original_designlib.xxx` is searched (of which a default one is placed there by the installer)12. If any found, the content is parsed as regular chart text before any user chart text.

You are free to create and modify your own design files13. Designs (and shapes) defined in these will be added to the list of available designs in the GUI and can be referred to from files processed via the command line. On Linux and the Mac place your design files to the `.msc-genrc/` folder, that will be searched for under your HOME directory or your folder of preference specified by the `MSC_GEN_RC` environment variable. On Windows place these to the roaming appdata folder, which is under `Users\<user name>\AppData\Roaming\Msc-generator` on Windows 7 and 8. Any file in the above directories with the primary extension of a supported chart type will be read by Msc-generator in no specified order before processing your chart. All other files are silently ignored.

#### Footnotes

##### (12)

This mechanism was provided to enable the user to (re)define chart designs and is retained for backwards compatibility only. (The idea was that `original_designlib.xxx` is overwitten, when a newer version of Msc-generator is installed, whereas `designlib.xxx` is not. The current recommended practice is to add your own designs to new files in the roaming AppData folder, see below.

##### (13)

However, please avoid any construct in design, which result in visual elements. Also try not to create files that result in warnings, errors.