# Msc-generator 8.5

## Table of Contents

- 1 Introduction
- 2 What’s new in Msc-generator 8.5
- 3 Getting started
  - 3.1 The MFC GUI on Windows
    - 3.1.1 Working with Charts
    - 3.1.2 Zooming
    - 3.1.3 Quick Access Toolbar
  - 3.2 The CLI GUI
  - 3.3 Tracking Mode
  - 3.4 Auto Split
  - 3.5 Collapsing and Expanding
  - 3.6 The command-line tool
  - 3.7 Office integration
    - 3.7.1 OLE embedding
    - 3.7.2 Alt-text embedding
- 4 Signalling Chart Language Tutorial
  - 4.1 Defining Arrows
  - 4.2 Defining Entities
  - 4.3 Dividers
  - 4.4 Drawing Boxes
  - 4.5 Drawing Things in Parallel
  - 4.6 Annotating the Chart
  - 4.7 Other Features
- 5 Graph Language Tutorial
- 6 Block Diagram Language Tutorial
  - 6.1 Defining and Arranging Blocks
  - 6.2 Arrows and Lines
- 7 Usage Reference
  - 7.1 Multiple Chart Types
  - 7.2 Design Library
  - 7.3 External Editor
  - 7.4 Internal Editor
    - 7.4.1 Smart Indent
    - 7.4.2 Color Syntax Highlighting
    - 7.4.3 Typing Hints and Autocompletion
  - 7.5 Example Library
  - 7.6 Renaming elements
  - 7.7 Options
  - 7.8 Working with Multi-page Charts
  - 7.9 Scaling Options
  - 7.10 Advanced OLE Considerations
    - 7.10.1 Graphics of Embedded Charts
    - 7.10.2 Linking
  - 7.11 Autosave and Recovery
  - 7.12 International Text Support
  - 7.13 Command-Line Referece
    - 7.13.1 Label Maps
    - 7.13.2 Coloring Input Files
    - 7.13.3 Embedding Charts
    - 7.13.4 Text Editor Integration
  - 7.14 Fonts
- 8 Reference for Common Language Elements
  - 8.1 Labels
  - 8.2 Text Formatting
  - 8.3 Links
  - 8.4 Numbering
  - 8.5 Specifying Colors
  - 8.6 Common Attributes
    - 8.6.1 Line and Fill Attributes
    - 8.6.2 Shadow Attributes
    - 8.6.3 Text Formatting Attributes
    - 8.6.4 Styles
  - 8.7 Scoping
  - 8.8 Defining Styles
  - 8.9 Chart Designs
  - 8.10 Defining Shapes
  - 8.11 Procedures
  - 8.12 Variables
  - 8.13 File Inclusion
- 9 Signalling Chart Language Reference
  - 9.1 Titles
  - 9.2 Specifying Entities
    - 9.2.1 Entity Positioning
    - 9.2.2 Group Entities
    - 9.2.3 Entity Attributes
    - 9.2.4 Implicit Entity Definition
    - 9.2.5 Entity Headings
    - 9.2.6 Entity Shapes
  - 9.3 Specifying Arrows
    - 9.3.1 Lost Messages
    - 9.3.2 Arrow Attributes
    - 9.3.3 Arrow Appearance
    - 9.3.4 Block Arrows
  - 9.4 Boxes
    - 9.4.1 Box Series
    - 9.4.2 Box Tags
  - 9.5 Pipes
  - 9.6 Verticals
  - 9.7 Dividers
  - 9.8 Notes and Comments
    - 9.8.1 Notes
    - 9.8.2 Comments and Endnotes
  - 9.9 Parallel Blocks
    - 9.9.1 Parallel Keyword
    - 9.9.2 Overlap Keyword
    - 9.9.3 Joining Arrows and Boxes
  - 9.10 Signalling Chart Attributes and Styles
    - 9.10.1 Appearance
    - 9.10.2 Word Wrapping and Long Labels
      - 9.10.2.1 Word Wrapping for Signalling Charts
      - 9.10.2.2 Word Wrapping for Block Diagrams
    - 9.10.3 Compression and Vertical Spacing
    - 9.10.4 Default and Refinement Styles for Signalling Charts
  - 9.11 Chart Options
  - 9.12 Multiple Pages
  - 9.13 Free Drawing
    - 9.13.1 Spacing
    - 9.13.2 Symbols
    - 9.13.3 Inline text
  - 9.14 Commands
  - 9.15 Mscgen Backwards Compatibility
- 10 Graph Language Reference
  - 10.1 Graph Attributes
  - 10.2 Default and Refinement Styles for Graphviz Graphs
  - 10.3 Clusters
- 11 Block Diagram Language Reference
  - 11.1 Block Name Resolution
  - 11.2 Block Types and Definition
  - 11.3 Block Attributes
  - 11.4 Block Layout
    - 11.4.1 Default alignment
    - 11.4.2 Alignment modifiers
    - 11.4.3 Content placement inside another block
    - 11.4.4 Block Layout Conflicts
  - 11.5 Arrows in Block Diagrams
    - 11.5.1 Defining Arrows and Lines
    - 11.5.2 Ports and Directions
    - 11.5.3 Fine-tuning Arrow Ends
    - 11.5.4 Automatic De-Overlapping at Arrow Ends
    - 11.5.5 Defining Coordinates
    - 11.5.6 Arrow Labels and Markers
    - 11.5.7 Arrow and Line Attributes
  - 11.6 Replicating parts of the Diagram
    - 11.6.1 Copying a Block
    - 11.6.2 Block Templates
    - 11.6.3 Repeating a Block Many Times
  - 11.7 Chart Options and Commands

[Contents]

## 1 Introduction

# Top

This manual is for Msc-generator (version 8.5, 15 January 2024), a tool to draw various charts from a textual description.

Please visit https://gitlab.com/msc-generator/msc-generator/-/packages to download the latest version.

Msc-generator is a program that parses textual chart descriptions and produces graphical output in a variety of file formats, or can embed charts in documents, such as Word or PowerPoint. It currently supports three kinds of charts: Message Sequence Charts (MSCs, this is where the name of the tool comes from); general graphs in the DOT language of graphviz; and experimental Block Diagrams.

Message Sequence Charts are a way of representing entities and message interactions between those entities over some time period. MSCs are often used in combination with SDL. MSCs are popular in telecom and data networks and standards to specify how protocols operate. MSCs need not be complicated to create or use. Msc-generator aims to provide a simple text language that is clear to create, edit and understand, and which can be transformed into images. Msc-generator is a potential alternative to mouse-based editing tools, such as Microsoft Visio.

The signalling chart part of msc-generator is heavily extended and completely rewritten version of the 0.08 version of Michael C McTernan’s mscgen. The original tool was more geared towards describing interprocess communication, this version is more geared towards networking. Msc-generator has a number of enhancements compared to mscgen. The command-line syntax of Msc-generator is compatible to that of mscgen, so any tool integrated with mscgen (such as Doxygen) can also be used with Msc-generator. Since version 4.5 Msc-generator also contains an mscgen compatibility mode, which aims to interpret mscgen chart descriptions in a fully backwards compatible manner. See Mscgen Backwards Compatibility.

The graph part of msc-generator uses the graphviz library to lay out graphs. It uses the DOT language to describe charts, with a few extensions.

Block Diagrams use a language similar in logic to the above two. The language aims to capture the relation among blocks to lay them out in relation to one another.

Msc-generator builds on lex, yacc, graphviz, glpk, cairo and ImGui. A Linux/Mac and Windows port is maintained. The Windows version is written using MFC. There is a GUI for Linux/Mac based on ImGui (called CLI GUI also available on Windows, if you prefer that better than the MFC GUI).

[Contents]