ShapeRegion is a special type of object, that can contain one of the following objects:

ShapeRegion can be used where Region would be used. It provides easier defining and editing of regions. For example, you can define a rectangle inside a ShapeRegion editor and it will be automatically converted to region on output. When you open editor for ShapeRegion you can move and resize that rectangle, which would not be possible with ordinary Region

Type of currently stored object is determined by tag.

Excerpt from ShapeRegion class listing:

	class ShapeRegion
		ShapeRegionType::Type tag;

		avl::Region region;
		avl::Rectangle2D rectangle;
		avl::Circle2D circle;
		avl::Path polygon;