This project is read-only.

Architecture Overview

Important: The documentation is not complete and is still in development. Links may lead to non-existing pages.


Our engine has the following layers and parts:


Layer 0: Interfaces

The lowest layer only contains some interfaces, which defines the structure of our engine. This interfaces can be used in the view model or you can implement your custom parts, either nodes, shapes or any other components with some custom behavior.

Further Reading: Interfaces

Layer 1: Shapes

Default implementation of the interfaces which are implemented as normal silverlight controls. This part of the shape engine has dependency to the interfaces and to the state tracking system.

Further Reading: Shapes

Layer 1: State Tracking

The state tracking system is integrated to the core of the engine. All actions are done in transactions and can be reverted. This system is the entry point for an undo and redo system.

Further Reading: State Tracking

Layer 2: Interactivity

Usually shapes do not have logic to care about interactivity and to handle mouse and keyboard requests. To provide functionality like moving and rotating shapes we use behaviors, that are well known from Expression Blend and adorners, which are controls that are rendered on top of all diagrams.

Further Reading: Interactivity

Layer 2: Catalogs

Shapes can be provided by catalogs. A catalog is a set of available shapes that can be delivered as seperate assembly to extend the applications. A typical example is Microsoft Visio where user can select different types of diagrams.

Further Reading: Catalogs

Layer 2: Clipboard

The clipboard system is the most important entry point, if you want to include copy and paste to your application. We provide different implementations where the clones shapes are either stored in memory or in the isolated storage, where the second option has the advantage to paste the shape to another instance of your application.

Further Reading: Clipboard

Layer 2: Serialization

Storing and saving shapes is a common task. We provide a custom format, based on xml, but any components of the first layer has no dependency to the serialization system and you can implement your own format.

Further Reading: Serialization

Common Classes

The following diagram shows the most important classes of the shapes engine:


A diagram contains a set of shapes. A shape can either be a connection or a node. A composite node is a special node that is build in the engine and has a list of references to other shapes and is using the group or ungroup operation.

Last edited Apr 17, 2011 at 6:29 PM by malignate88, version 17


No comments yet.