GoJS API
/ to search
    Preparing search index...

    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.SegmentType.Arc, -sweep/2, sweep, 0, 0, radius+layerThickness, radius+layerThickness))
    .add(new go.PathSegment(go.SegmentType.Line, q.x, q.y))
    .add(new go.PathSegment(go.SegmentType.Arc, sweep/2, -sweep, 0, 0, radius, radius).close()));

    See samples that make use of Geometries in the samples index.

    Index

    Constructors

    Accessors

    • get bounds(): Rect

      This read-only property returns a rectangle that contains all points within the Geometry. The result will always contain the origin (0, 0).

      Returns Rect

    • get endX(): number

      Gets or sets the ending X coordinate of the Geometry if it is of type Line, Rectangle, or Ellipse. The initial value is zero.

      Returns number

    • get endY(): number

      Gets or sets the ending Y coordinate of the Geometry if it is of type Line, Rectangle, or Ellipse. The initial value is zero.

      Returns number

    • get spot1(): Spot

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

      Returns Spot

    • get spot2(): Spot

      Gets or sets the spot an "Auto" Panel will use for the bottom-right corner of any panel content when the Shape.spot2 value is Spot.Default. The default value is Spot.BottomRight, at the bottom-right point of the bounds of the Shape.

      Returns Spot

    • get startX(): number

      Gets or sets the starting X coordinate of the Geometry if it is of type Line, Rectangle, or Ellipse. The initial value is zero.

      Returns number

    • get startY(): number

      Gets or sets the starting Y coordinate of the Geometry if it is of type Line, Rectangle, or Ellipse. The initial value is zero.

      Returns number

    Methods

    • Add a PathFigure to the figures list.

      Parameters

      • figure: PathFigure

        a newly allocated unshared PathFigure that will become owned by this Geometry

      Returns this

      this

    • Computes the Geometry's bounds without adding an origin point, and returns those bounds as a rect. This method does not modify the Geometry or its bounds.

      Parameters

      • Optionalresult: Rect

        an optional Rect that is modified and returned

      Returns Rect

    • Returns true if the Geometry contains the point.

      Parameters

      • p: Point

        in local geometry coordinates

      • Optionalsw: number

        half the stroke width that a Shape has or that you want to pretend it has

      Returns boolean

      since

      2.2

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

      Returns Geometry

    • Returns the slope expressed as an angle at the fractional distance (0-1) along this Geometry's path, in local coordinates.

      Parameters

      • fraction: number

        A fractional amount between 0 and 1, inclusive.

      Returns number

      since

      2.1

    • Returns the fractional distance (0-1) along this Geometry's path for a nearby point.

      Parameters

      • pt: Point

        A Point, in local coordinates, near this Geometry.

      Returns number

      A fractional amount between 0 and 1, inclusive.

      since

      2.1

    • Returns the point at the fractional distance (0-1) along this Geometry's path.

      Parameters

      • fraction: number

        A fractional amount between 0 and 1, inclusive.

      • Optionalresult: Point

        an optional Point that is modified and returned; otherwise it allocates and returns a new Point.

      Returns Point

      the Point, in local coordinates, of the fractional distance along the path.

      since

      2.1

    • Normalizes the Geometry points in place by ensuring the top-left bounds of the geometry lines up with (0, 0), returning the Point (x, y) amount it was shifted. 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 top-left of the Geometry.

      Returns Point

    • Offsets the Geometry in place by a given (x, y) amount

      Parameters

      • x: number

        The x-axis offset factor.

      • y: number

        The y-axis offset factor.

      Returns this

      this

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

      Parameters

      • angle: number

        The angle to rotate by.

      • Optionalx: number

        The optional X point to rotate the geometry about. If no point is given, this value is 0.

      • Optionaly: number

        The optional Y point to rotate the geometry about. If no point is given, this value is 0.

      Returns this

      this

    • Scales the Geometry in place by a given (x, y) scale factor.

      If you want to flip a Geometry horizontally, call geo.scale(-1, 1). If you want to flip a Geometry vertically, call geo.scale(1, -1).

      Parameters

      • x: number

        The x-axis scale factor.

      • y: number

        The y-axis scale factor.

      Returns this

      this

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

      Parameters

      • str: string

      Returns string

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

      • M (x,y)+ - Move commands
      • L (x,y)+, H (x)+, V (y)+ Lines commands, including horizontal and vertical lines
      • C (x1 y1 x2 y2 x y)+, S (x2 y2 x y)+ Cubic bezier curves
      • Q (x1 y1 x y)+, T (x y)+ Quadratic bezier curves
      • A (rx ry x-axis-rotation large-arc-flag clockwise-flag x y)+ Arcs (following SVG arc conventions)
      • Z Denotes that the previous subpath is closed

      Additionally there are some tokens specific to GoJS:

      • B (startAngle, sweepAngle, centerX, centerY, radius)+ Arcs following GoJS canvas arc conventions
      • X Used before M-commands to denote separate PathFigures instead of a subpath
      • F Denotes whether the current PathFigure is filled (true if F is present)
      • F0 (instead of F) Denotes that the PathFigure should use the even-odd fill rule instead of the nonzero winding number rule (setting PathFigure.isEvenOdd)
      • U Denotes that the PathFigure is not shadowed

      See the Learn page on Geometry Parsing for more details.

      Parameters

      • str: string
      • Optionalfilled: boolean

        whether figures should be filled. If true, all PathFigures in the string will be filled regardless of the presence of an "F" command or not. If false, all PathFigures will determine their own filled state by the presence of an "F" command or not. Default is false.

      Returns Geometry

    • This static function can be used to write out a Geometry as a string that can be read by Geometry.parse.

      The string produced by this method is a superset of the SVG path string rules that contains some additional GoJS-specific tokens. See the Learn page on Geometry Parsing for more details.

      Parameters

      • val: Geometry

        a Geometry to be rendered as a string

      Returns string

    • This static function returns a function that can be used as a back converter for a Binding to write out a Geometry as a string with its numbers at a fixed number of digits after the decimal point.

      This is useful for limiting the size of JSON output and making it more legible. It might also be useful for regression testing.

      Parameters

      • digits: number

        must be a non-negative integer

      Returns (val: Geometry) => string

      a function that converts a Geometry to a string without so many decimals

      since

      3.0

    Properties

    Ellipse: Ellipse = GeometryType.Ellipse
    deprecated

    See GeometryType.Ellipse.

    Line: Line = GeometryType.Line
    deprecated

    See GeometryType.Line.

    Path: Path = GeometryType.Path
    deprecated

    See GeometryType.Path.

    Rectangle: Rectangle = GeometryType.Rectangle
    deprecated

    See GeometryType.Rectangle.