Aspect for drawing zoomable shapes. A shape is graphic that occupies a bound region, has multiple frame
and body parts, and has optional connection pins. A zoomable shape is a shape that can display different
degrees of detail at different zoom levels.<q ref="core.svg:ZGraphic">ZGraphic</q>(c) SAP AG 2003-2006. All rights reserved.
Defines the shape's body padding.Use this property to specify the body padding sizes (the distances to keep between
the body and the body contents), according to:
<table class="BOTH"><tr><td class="H V">Name </td><td class=H>Description </td></tr><tr><td class=V>top </td><td>Top padding </td></tr><tr><td class=V>right </td><td>Right padding </td></tr><tr><td class=V>bottom </td><td>Bottom padding </td></tr><tr><td class=V>left </td><td>Left padding </td></tr></table>
Defines the shape's body parts.<ul><li>Use this property to define the graphical parts that draw the shape's contents. </li><li>The bounding box of the body parts defines the shape's size during auto-size calculations. Therefore, body parts cannot be defined using dynamic formulas that depend on the shape's size (since this would result in cyclic dependencies). </li></ul>
Defines the shape's bounding box constraints.Use this property to constrain the shape's bounding box, according to:
<table class="BOTH"><tr><td class="H V">Name </td><td class=H>Description </td></tr><tr><td class=V>defAuto </td><td>Auto-size the shape when created (if defAuto is <code>true)</code> </td></tr><tr><td class=V>defWidth </td><td>Default shape width </td></tr><tr><td class=V>defHeight </td><td>Default shape height </td></tr><tr><td class=V> </td><td> </td></tr><tr><td class=V>minWidth </td><td>Minimum shape width </td></tr><tr><td class=V>minHeight </td><td>Minimum shape height </td></tr><tr><td class=V> </td><td> </td></tr><tr><td class=V>maxWidth </td><td>Maximum shape width </td></tr><tr><td class=V>maxHeight </td><td>Maximum shape height </td></tr></table>
When <code>defAuto</code> is set to <code>true,</code> the initial shape size will be MAX('default size', 'content size').
Defines the shape's frame padding.Use this property to specify the frame padding sizes (the distances to keep between
the shape's frame and the shape's body), according to:
<table class="BOTH"><tr><td class="H V">Name </td><td class=H>Description </td></tr><tr><td class=V>top </td><td>Top padding </td></tr><tr><td class=V>right </td><td>Right padding </td></tr><tr><td class=V>bottom </td><td>Bottom padding </td></tr><tr><td class=V>left </td><td>Left padding </td></tr></table>
Defines the shape's frame parts.<ul><li>Use this property to define the graphical parts that draw the shape's frame. </li><li>The frame parts do not contribute to the shape's size during auto-size calculations. Therefore, frame parts can be defined using dynamic formulas that depend on the shape's size (frame parts defined in this way will be adjusted whenever the shape's size changes). </li></ul>
Defines the shape's pins collection key.The <code>pinsKey</code> is the name of the collection on the base object in which the shape pins are stored.
Defines a collection of custom symbols to use for custom shape pins.
Defines the shape's resizing constraints.The resizing constraints are a bitwise combination of the following groups of flags:
<table class="BOTH"><tr><td class="H V">Name </td><td class=H>Description </td></tr><tr><td class=V>SVG_FREE_SIZE </td><td>Shape's size can be freely changed (while still honoring the other constraints) </td></tr><tr><td class=V>SVG_FIXED_SIZE </td><td>Both the width and the height are fixed </td></tr><tr><td class=V>SVG_AUTO_SIZE </td><td>Both the width and the height are set automatically </td></tr><tr><td class=V>SVG_KEEP_SIZE </td><td>Both the width and the height are kept greater or equal to the body size </td></tr><tr><td class=V> </td><td> </td></tr><tr><td class=V>SVG_FIXED_WIDTH </td><td>Width is fixed to <code>defWidth</code> </td></tr><tr><td class=V>SVG_AUTO_WIDTH </td><td>Width is automatically set equal to the body width </td></tr><tr><td class=V>SVG_KEEP_WIDTH </td><td>Width is kept greater or equal to the body width </td></tr><tr><td class=V> </td><td> </td></tr><tr><td class=V>SVG_FIXED_HEIGHT </td><td>Height is fixed to <code>defHeight</code> </td></tr><tr><td class=V>SVG_AUTO_HEIGHT </td><td>Height is automatically set equal to the body height </td></tr><tr><td class=V>SVG_KEEP_HEIGHT </td><td>Height is kept greater or equal to the body height </td></tr></table>
Defines the shape's rotation constraints.The rotation constraints are a bitwise combination of the following groups of flags:
<table class="BOTH"><tr><td class="H V">Name </td><td class=H>Description </td></tr><tr><td class=V>SVG_ROTATE_FULL </td><td>The shape can be freely rotated and flipped in all directions </td></tr><tr><td class=V> </td><td> </td></tr><tr><td class=V>SVG_ROTATE_0 </td><td>The shape can be rotated to 0 degrees (left-to-right) </td></tr><tr><td class=V>SVG_ROTATE_90 </td><td>The shape can be rotated to 90 degrees (top-to-bottom) </td></tr><tr><td class=V>SVG_ROTATE_180 </td><td>The shape can be rotated to 180 degrees (right-to-left) </td></tr><tr><td class=V>SVG_ROTATE_270 </td><td>The shape can be rotated to 270 degrees (bottom-to-top) </td></tr><tr><td class=V> </td><td> </td></tr><tr><td class=V>SVG_FLIPX </td><td>The shape can be flipped horizontally </td></tr><tr><td class=V>SVG_FLIPY </td><td>The shape can be flipped vertically </td></tr><tr><td class=V> </td><td> </td></tr><tr><td class=V>SVG_FLIP_BODY </td><td>Flips the body contents together with the shape </td></tr><tr><td class=V>SVG_FLIP_VBODY </td><td>Flips the body contents together with the shape, but only if the shape is oriented vertically (angle equals 90 or 270) </td></tr><tr><td class=V>SVG_FLIP_UPSIDE </td><td>Flips or rotates the body contents to ensure they are always oriented upside, regardless of the shape's orientation </td></tr></table>
Indicates whether a text sensor should be automatically added to the shape.Set this property to enable pointer events on text parts that are positioned outside the shape's frame.
By default, text parts do not receive pointer events. This property does not need to be set if
the text parts are inside the shape frame's, since the frame itself receives all pointer events.
Gets or sets the shape's rotation angle.The <code>angle</code> should be normalized to an even multiple of 90 degrees, according to:
<table class="SIMPLE"><tr><td class="H V">Angle </td><td class=H>Description </td></tr><tr><td class=V>0 </td><td>Left-to-right orientation (default) </td></tr><tr><td class=V>90 </td><td>Top-to-bottom orientation </td></tr><tr><td class=V>180 </td><td>Right-to-left orientation </td></tr><tr><td class=V>270 </td><td>Bottom-to-top orientation </td></tr></table>
Gets or sets the shape's fill color.
Gets or sets the shape's flip state.The <code>flip</code> state is a bitwise combination of the following flags:
<table class="SIMPLE"><tr><td class="H V">Flag </td><td class=H>Description </td></tr><tr><td class=V>SVG_FLIPX </td><td>The shape is flipped horizontally </td></tr><tr><td class=V>SVG_FLIPY </td><td>The shape is flipped vertically </td></tr></table>
Gets or sets the shape's position (x y).<ul><li>The <code>pos</code> property defines the shape's center point (around which the shape is rotated). </li><li>The <code>pos</code> property is relative to the containing block (the coordinates system of the innermost block that contains the shape, or the diagram's coordinate system if the shape is not contained in any block). </li><li>The property value is a string containing the center position's x and y coordinates concatenated with a space. </li><li>The x and y coordinate values should be rounded to the nearest half of a grid unit so that the shape itself is maintained aligned to whole grid units. </li></ul>
Gets or sets the shape's protection mode.The shape protection mode is a bitwise combination of the following flags:
<table class="BOTH"><tr><td class="H V">Name </td><td class=H>Description </td></tr><tr><td class=V>SVG_NONE </td><td>Do not protect the shape from any user interaction (default) </td></tr><tr><td class=V>SVG_PROTECT_MOVE </td><td>Protect the shape from moving </td></tr><tr><td class=V>SVG_PROTECT_RESIZE </td><td>Protect the shape from resizing </td></tr><tr><td class=V>SVG_PROTECT_ROTATE </td><td>Protect the shape from rotating </td></tr><tr><td class=V>SVG_PROTECT_FLIP </td><td>Protect the shape from flipping </td></tr><tr><td class=V>SVG_PROTECT_TRANSFORM </td><td>Protect the shape from all transformations (move, resize, rotate, or flip) </td></tr><tr><td class=V>SVG_PROTECT_SELECT </td><td>Protect the shape from selection </td></tr><tr><td class=V>SVG_PROTECT_LAYOUT </td><td>Protect the shape from layout </td></tr></table>
Gets or sets the shape's size (w h).<ul><li>The <code>size</code> property defines the shape's width and height (prior to any rotation that may be applied on the shape). </li><li>The <code>size</code> property is relative to the containing block (the coordinates system of the innermost block that contains the shape, or the diagram's coordinate system if the shape is not contained in any block). </li><li>The property value is a string containing the width and height values concatenated with a space. </li><li>The width and height values should be rounded to the nearest grid unit. </li></ul>
A structure containing an array of pin symbol definitions.The PIN_SYMBOLS structure is an array of symbol definitions, each representing a single
custom pin. A symbol definitions should be written as standard SVG symbol element, using
the following guidelines:
<ol><li>The symbol's id must be a number between 1-255. This number is used by the pin that references the symbol definition (see <q ref="core.svg:ZPin!symbol">symbol</q> property). </li><li>The symbol <code>viewBox</code> attribute is mandatory and must be centered exactly on the pin's origin. </li><li>A <code>radius</code> property can be defined to indicate the distance of the pin's connection point from the pin's origin. If omitted, then the radius is taken to be equal to half the width of the pin's viewbox. </li></ol>
A structure containing an array of shape part definitions.<p>The SHAPE_PARTS structure is an array of objects, each representing a single shape part.
The shape part's <code>type</code> attribute defines the type of SVG element that will be created.
All the basic SVG element types can be used, including <code>rect,</code> <code>circle,</code> <code>ellipse,</code> <code>line,</code>
<code>polyline,</code> <code>polygon,</code> <code>path,</code> <code>text,</code> and <code>image.</code> The remaining attributes are visual attributes specific
to the shape part's type. See the SVG 1.1 Specification (www.w3.org/TR/2003/REC-SVG11-20030114)
for more details.</p>
<p>All shape part attributes (except for type) can be expressed using dynamic formulas.
A dynamic formula is string containing a valid JavaScript expression that involves one or more GML property references.
A GML aspect property reference is written by adding the @ prefix (e.g., @fontSize).
A GML object property reference is written by adding both the @ prefix and ! suffix (e.g., @name!).
The ! suffix can be omitted from an object property reference, provided there is no aspect property with
the same name.</p>
<p>NOTES:</p>
<p>Dynamic formulas that depend on shape size cannot be used for the body parts of auto-sized shapes.
Otherwise, cyclic dependencies will be created, resulting in inconsistent shape resize behavior.</p>
<p>If the part is part of object's wireframe you can only use the following properties: <code>x1,</code> <code>x2,</code> <code>y1,</code> <code>y2,</code> <code>w,</code> <code>h.</p></code>