Class Geometry
The Geometry class is used to define the "shape" of a Shape. A Geometry can be simple straight lines, rectangles, or ellipses. A Geometry can also be an arbitrarily complex path, consisting of a list of PathFigures.
A Geometry must not be modified once it has been used by a Shape. However, a Geometry may be shared by multiple Shapes.
It is commonplace to create Geometries using geometry path string syntax: Geometry Path Strings. However it is much more efficient to create Geometries programmatically. One way to do that is illustrated by several of the samples that evaluate JavaScript such as:
new go.Geometry() .add(new go.PathFigure(p.x, p.y) .add(new go.PathSegment(go.PathSegment.Arc, sweep/2, sweep, 0, 0, radius+layerThickness, radius+layerThickness)) .add(new go.PathSegment(go.PathSegment.Line, q.x, q.y)) .add(new go.PathSegment(go.PathSegment.Arc, sweep/2, sweep, 0, 0, radius, radius).close()));See samples that make use of Geometries in the samples index.
Constructor Summary Details
Name  Description 

Geometry(type)

Construct an empty Geometry.More... The geometry type must be one of the following values: Geometry.Line, Geometry.Ellipse, Geometry.Rectangle, Geometry.Path.

Properties Summary Details
Name, Value Type  Description 

bounds
{Rect}

This readonly property returns a rectangle that contains all points within the Geometry.More... The result will always contain the origin (0, 0). 
defaultStretch
{EnumValue}
1.5

Gets or sets the Shape.geometryStretch value the Shape should use by default when the Shape.geometryStretch value is GraphObject.None.More... The default value is GraphObject.Fill. Some figure generators return a Geometry with this property set to GraphObject.Uniform, in order to preserve its aspect ratio when used by a Shape that may have different sizes. 
endX
{number}


endY
{number}


figures
{List.

Gets or sets the List of PathFigures that describes the content of the path for Geometries of type Path. 
spot1
{Spot}

Gets or sets the spot an "Auto" Panel will use for the topleft corner of any panel content when the Shape.spot1 value is Spot.Default.More... The default value is Spot.TopLeft, at the topleft point of the bounds of the Shape. 
spot2
{Spot}

Gets or sets the spot an "Auto" Panel will use for the bottomright corner of any panel content when the Shape.spot2 value is Spot.Default.More... The default value is Spot.BottomRight, at the bottomright point of the bounds of the Shape. 
startX
{number}


startY
{number}


type
{EnumValue}

Gets or sets the type of the Geometry.More... The default type is Geometry.Path. Other permissible values are Geometry.Line, Geometry.Ellipse, or Geometry.Rectangle. 
Method Summary Details
Name, Return Type  Description 

add(figure)
{Geometry}
1.5

Add a PathFigure to the figures list.More...

computeBoundsWithoutOrigin()
{Rect}
1.1


copy()
{Geometry}

Create a copy of this Geometry, with the same values and figures.

<static>
Geometry.fillPath(str)
{string}
1.1

Given a SVG or GoJS path string, returns a congruent path string with each pathfigure filled.More... For instance, "M0 0 L22 22 L33 0" would become "F M0 0 L22 22 L33 0".

normalize()
{Point}
1.1

Normalizes the Geometry points in place by ensuring the topleft bounds of the geometry lines up with (0, 0), returning the Point (x, y) amount it was shifted.More... After this method is called there will be no negative X or Y value for the Geometry's bounds, and no empty space at the topleft of the Geometry.

offset(x, y)
{Geometry}
1.1


<static>
Geometry.parse(str, filled)
{Geometry}

Produce a Geometry from a string that uses an SVGlike compact path geometry syntax.More... The syntax accepts all SVG Path Syntax (SVG Path Syntax (w3.org)), as well as three GoJSspecific tokens. Specifically, the following tokens are allowed:

rotate(angle, x, y)
{Geometry}
1.1

Rotates the Geometry in place by a given angle, with optional x and y values to rotate the geometry about.More... If no x and y value are given, (0, 0) is used as the rotation point.

scale(x, y)
{Geometry}
1.1

Scales the Geometry in place by a given (x, y) scale factor.More...
If you want to flip a Geometry horizontally, call

<static>
Geometry.stringify(val)
{string}
1.1

This static function can be used to write out a Geometry as a string that can be read by Geometry.parse.More... The string produced by this method is a superset of the SVG path string rules that contains some additional GoJSspecific tokens. See the Introduction page on Geometry Parsing for more details.

Constants Summary Details
Name  Description 

Ellipse
{EnumValue}


Line
{EnumValue}


Path
{EnumValue}

For drawing a complex path made of a list of PathFigures; a value for Geometry.type. 
Rectangle
{EnumValue}
