Nutrient Web SDK

Class Rect

A rect describes a rectangle in 2D space. It consists of a location (left and top) and dimensions (width and height). Provided values are defined in same units used by the page, point units. Point units are only equal to pixels when zoom value is 1.

It is an Immutable.Record and thus can be updated using set(key, value), for example: rect.set("left", 20).

Class

Example

Create and update a rect.

const rect = new NutrientViewer.Geometry.Rect({
left: 10,
top: 20,
width: 30,
height: 40
});
rect = rect.set("left", 20);
rect.left; // => 20

Default Value

{ left: 0, top: 0, width: 0, height: 0 }

Hierarchy

ReadonlyInheritableImmutableRecordRect

Constructors

  • Parameters

    options{ height?: number; left?: number; top?: number; width?: number }
    Optional

Properties

height

Readonly
number

The height of the rect. This is equivalent to height of a NutrientViewer.Geometry.Size.

Default Value

0

left

Readonly
number

The left distance of the rect. This is equivalent to x of a NutrientViewer.Geometry.Point.

Default Value

0

top

Readonly
number

The top distance of the rect. This is equivalent to y of a NutrientViewer.Geometry.Point.

Default Value

0

width

Readonly
number

The width of the rect. This is equivalent to width of a NutrientViewer.Geometry.Size.

Default Value

0

Accessors

  • get bottom(): number

    Computes the bottom point in the rect by adding top and height.

    Returns

    number

Methods

  • Expand the rect to include the list of points.

    Parameters

    Returns

    Example

    const rect = NutrientViewer.Geometry.Rect({
    left: 10,
    top: 10,
    width: 10,
    height: 10
    })

    const newRect = rect.expandToIncludePoints(new NutrientViewer.Geometry.Point({ x: 30, y: 30 }));
    // => Rect {left: 10, top: 10, width: 30, height: 30}
  • Grows the rect by growth on every side but keeps the center of the Rect at the same position.

    Parameters

    growthnumber

    The growth factor. It will be applied on every side, so the new width and height will increase by two times this factor.

    Returns

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });
    rect.grow(5); // => Rect {left: 5, top: 5, width: 20, height: 20}
  • Test if a point is within the rect. This can be used for hit testing.

    Parameters

    The point that should be tested.

    Returns

    boolean

    true if the point is inside, false otherwise.

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });
    rect.isPointInside(new NutrientViewer.Geometry.Point({ x: 15, y: 15 })); // => true
    rect.isPointInside(new NutrientViewer.Geometry.Point({ x: 25, y: 25 })); // => false
  • Test if a rect is completely inside this rect.

    Parameters

    The rect that should be tested.

    Returns

    boolean

    true if the rect is inside, false otherwise.

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });

    const insideRect = new NutrientViewer.Geometry.Rect({ left: 12, top: 12, width: 5, height: 5 });
    const overlappingRect = new NutrientViewer.Geometry.Rect({ left: 5, top: 5, width: 10, height: 10 });
    const outsideRect = new NutrientViewer.Geometry.Rect({ left: 0, top: 0, width: 5, height: 5 });

    rect.isRectInside(insideRect); // => true
    rect.isRectInside(overlappingRect); // => false
    rect.isRectInside(outsideRect); // => false
  • Test if the union area of two rects is greater than zero.

    Parameters

    The rect that should be tested.

    Returns

    boolean

    true if the rect is overlapping, false otherwise.

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });

    const insideRect = new NutrientViewer.Geometry.Rect({ left: 12, top: 12, width: 5, height: 5 });
    const overlappingRect = new NutrientViewer.Geometry.Rect({ left: 5, top: 5, width: 10, height: 10 });
    const outsideRect = new NutrientViewer.Geometry.Rect({ left: 0, top: 0, width: 5, height: 5 });

    rect.isRectOverlapping(insideRect); // => true
    rect.isRectOverlapping(overlappingRect); // => true
    rect.isRectOverlapping(outsideRect); // => false
  • Rounds all coordinates to whole numbers. This implementation uses Math.round for all coordinates. The resulting Rect might no longer overlap the source Rect.

    Returns

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10.5, top: 15.5, width: 20.5, height: 25.5 });
    rect.round(); // => Rect {left: 11, top: 16, width: 21, height: 26}
  • Rounds all coordinates to whole numbers. The resulting Rect will always overlap the source Rect.

    The location (left and top) will be rounded to a number which is smaller than or equal to the current value.

    The size (width and height) will be rounded to a number which is greater than or equal to the current value.

    Returns

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10.5, top: 15.5, width: 20.5, height: 25.5 });
    rect.roundOverlap(); // => Rect {left: 10, top: 15, width: 21, height: 26}
  • Scales all values by the given sx and sy factor. If only sx is set and sy not defined, it will scale the values by sx.

    Parameters

    sxnumber

    Scale value for the left and width value. If sy is not set, this scale will also be applied to top and height.

    synumber
    Optional

    Scale value for the top an height value.

    Returns

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });
    rect.scale(2); // => Rect {left: 20, top: 20, width: 20, height: 20}
  • Updates the location of the rect by modifying left and top.

    Parameters

    The new location for the rect.

    Returns

    A new Rect with left and top updated.

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });
    var nextLocation = new NutrientViewer.Geometry.Point({ x: 20, y: 30 });

    rect.setLocation(nextLocation); // => Rect {left: 20, top: 30, width: 10, height: 10}
  • Translates the horizontal location of the rect by a number.

    Parameters

    txnumber

    A number to translate the left value.

    Returns

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10 });
    rect.translateX(5); // => Rect {left: 15, top: 10, width: 0, height: 0}
  • Translates the vertical location of the rect by a number.

    Parameters

    tynumber

    A number to translate the top value.

    Returns

    Example

    const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10 });
    point.translateY(5); // => Rect {left: 10, top: 15, width: 0, height: 0}
  • Creates a new rect from a DOM rect.

    Parameters

    A DOM rect, such as the result of Element.getBoundingClientRect().

    Returns

    Example

    const rect = NutrientViewer.Geometry.Rect.fromClientRect(
    element.getBoundingClientRect()
    );
  • Creates a new rect from four points.

    Parameters

    An array of four points.

    Returns

    Example

    const rect = NutrientViewer.Geometry.Rect.fromPoints(
    new NutrientViewer.Geometry.Point({ x: 10, y: 10 }),
    new NutrientViewer.Geometry.Point({ x: 20, y: 10 }),
    new NutrientViewer.Geometry.Point({ x: 20, y: 20 }),
    new NutrientViewer.Geometry.Point({ x: 10, y: 20 })
    );

    @public

union

Static

Immutable Record API

24

asImmutable

Deprecated
  • Deprecated

    Returns

    this

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Build the value once, or use withMutations().

    See Also

    • Map#asImmutable

asMutable

Deprecated
  • Deprecated

    Returns

    this

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Use withMutations().

    See Also

    • Map#asMutable

  • Returns a new instance of this Record type with all values set to their default values.

    Returns

    this
  • Returns a new instance of this Record type with the value for the specific key set to its default value.

    Type Parameters

    Kextends "left" | "top" | "width" | "height"

    Parameters

    keyK

    Returns

    this
  • Returns a new instance of this Record type with the value at the given key path removed.

    Also available as removeIn.

    Parameters

    keyPathIterable<unknown>

    Returns

    this
  • Parameters

    otherunknown

    Returns

    boolean
  • Returns the value associated with the provided key, which may be the default value defined when creating the Record factory function.

    If the requested key is not defined by this Record type, then notSetValue will be returned if provided. Note that this scenario would produce an error when using Flow or TypeScript.

    Type Parameters

    Kextends "left" | "top" | "width" | "height"

    Parameters

    keyK

    Returns

    { height: number; left: number; top: number; width: number }[K]
  • Parameters

    keyPathIterable<unknown>
    notSetValueunknown
    Optional

    Returns

    unknown
  • Parameters

    keyunknown

    Returns

    boolean
  • Parameters

    ...collectionsPartial<{ height: number; left: number; top: number; width: number }>[]

    Returns

    this
  • Parameters

    ...collections(
    | Iterable<[string, unknown], any, any>
    | Partial<{ height: number; left: number; top: number; width: number }>
    )[]

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    ...collections(
    | Iterable<[string, unknown], any, any>
    | Partial<{ height: number; left: number; top: number; width: number }>
    )[]

    Returns

    this
  • Parameters

    merger(previous?: unknown, next?: unknown, key?: string) => unknown
    ...collections(
    | Iterable<[string, unknown], any, any>
    | Partial<{ height: number; left: number; top: number; width: number }>
    )[]

    Returns

    this

mergeIn

Deprecated
  • Deprecated

    Parameters

    keyPathIterable<unknown>
    ...collections(
    | Iterable<[string, unknown], any, any>
    | Partial<{ height: number; left: number; top: number; width: number }>
    )[]

    Returns

    this

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Use update() followed by merge().

  • Parameters

    merger(previous?: unknown, next?: unknown, key?: string) => unknown
    ...collections(
    | Iterable<[string, unknown], any, any>
    | Partial<{ height: number; left: number; top: number; width: number }>
    )[]

    Returns

    this

removeIn

Deprecated
  • Deprecated

    Parameters

    keyPathIterable<unknown>

    Returns

    this

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Use deleteIn(), or update() followed by delete().

  • Type Parameters

    Kextends "left" | "top" | "width" | "height"

    Parameters

    keyK
    value{ height: number; left: number; top: number; width: number }[K]

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    valueunknown

    Returns

    this
  • Deeply converts this Record to equivalent native JavaScript Object.

    Note: This method may not be overridden. Objects with custom serialization to plain JS may override toJSON() instead.

    Returns

    { height: number; left: number; top: number; width: number }
  • Shallowly converts this Record to equivalent native JavaScript Object.

    Returns

    { height: number; left: number; top: number; width: number }

toSeq

Deprecated
  • Deprecated

    Returns

    Keyed<string, unknown>

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Use entries().

  • Type Parameters

    Kextends "left" | "top" | "width" | "height"

    Parameters

    keyK
    updater(
    value: { height: number; left: number; top: number; width: number }[K]
    ) => { height: number; left: number; top: number; width: number }[K]

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    notSetValueunknown
    updater(value: unknown) => unknown

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    updater(value: unknown) => unknown

    Returns

    this
  • Note: Not all methods can be used on a mutable collection or within withMutations! Only set may be used mutatively.

    Parameters

    mutator(mutable: this) => unknown

    Returns

    this

    See Also

    • Map#withMutations