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
Constructors
Parameters
options{ height?: number; left?: number; top?: number; width?: number }Optional
Properties
height
The height of the rect. This is equivalent to height of a NutrientViewer.Geometry.Size.
Default Value
0left
The left distance of the rect. This is equivalent to x of a
NutrientViewer.Geometry.Point.
Default Value
0top
The top distance of the rect. This is equivalent to y of a
NutrientViewer.Geometry.Point.
Default Value
0width
The width of the rect. This is equivalent to width of a NutrientViewer.Geometry.Size.
Default Value
0Accessors
- get bottom(): number
Computes the bottom point in the rect by adding
topandheight.Returns
number
- get right(): number
Computes the right point in the rect by adding
leftandwidth.Returns
number
Methods
Applies a transformation to the rect. We will translate [top, left] like a 2D vector but only apply the scaling to the dimension [width, height]
Parameters
matrixTransformationMatrixReturns
Expand the rect to include the list of points.
Parameters
...pointsNutrientViewer.Geometry.Point[]Returns
A new
Rect.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}
Returns the NutrientViewer.Geometry.Point that is the center of this rect.
Returns
A point that is on the center of this rect.
Example
const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });
rect.getCenter(); // => Point {left: 15, top: 15}
Returns the NutrientViewer.Geometry.Point that is the upper-left corner of this rect.
Returns
A point that is on the upper-left corner of this rect.
Example
const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });
rect.getLocation(); // => Point {left: 10, top: 10}
Returns the NutrientViewer.Geometry.Size of the rect.
Returns
The size of the rect.
Example
const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10, width: 10, height: 10 });
rect.getSize(); // => Size {width: 10, height: 10}
Grows the rect by
growthon every side but keeps the center of the Rect at the same position.Parameters
growthnumberThe growth factor. It will be applied on every side, so the new
widthandheightwill increase by two times this factor.Returns
A new
Rect.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
pointNutrientViewer.Geometry.PointThe point that should be tested.
Returns
booleantrueif the point is inside,falseotherwise.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
otherRectNutrientViewer.Geometry.RectThe rect that should be tested.
Returns
booleantrueif the rect is inside,falseotherwise.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
otherNutrientViewer.Geometry.RectThe rect that should be tested.
Returns
booleantrueif the rect is overlapping,falseotherwise.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
Normalizes the Rect. In case of either a negative width or a negative height, the position will be updated so that the location is again the top, left point of the rectangle.
Returns
Rounds all coordinates to whole numbers. This implementation uses
Math.roundfor all coordinates. The resultingRectmight no longer overlap the sourceRect.Returns
A new
rect.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
Rectwill always overlap the sourceRect.The location (
leftandtop) will be rounded to a number which is smaller than or equal to the current value.The size (
widthandheight) will be rounded to a number which is greater than or equal to the current value.Returns
A new
rect.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
sxandsyfactor. If onlysxis set andsynot defined, it will scale the values bysx.Parameters
sxnumberScale value for the
leftandwidthvalue. Ifsyis not set, this scale will also be applied totopandheight.synumberOptionalScale value for the
topanheightvalue.Returns
A new
Rect.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
leftandtop.Parameters
locationNutrientViewer.Geometry.PointThe new location for the rect.
Returns
A new
Rectwithleftandtopupdated.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 location of the rect by a point.
Parameters
pointNutrientViewer.Geometry.PointA point that describes the translation distance.
Returns
A new
Rect.Example
const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10 });
rect.translate(new NutrientViewer.Geometry.Point({ x: 5, y: -5})); // => Rect {left: 15, top: 5, width: 0, height: 0}
Translates the horizontal location of the rect by a number.
Parameters
txnumberA number to translate the
leftvalue.Returns
A new
Rect.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
tynumberA number to translate the
topvalue.Returns
A new
Rect.Example
const rect = new NutrientViewer.Geometry.Rect({ left: 10, top: 10 });
point.translateY(5); // => Rect {left: 10, top: 15, width: 0, height: 0}
areRectsCloserThan
- areRectsCloserThan(
a: NutrientViewer.Geometry.Rect,
b: NutrientViewer.Geometry.Rect,
distance: number,
): booleanParameters
Returns
boolean
areVerticallyAligned
- areVerticallyAligned(
a: NutrientViewer.Geometry.Rect,
b: NutrientViewer.Geometry.Rect,
thresholdDistance: number,
): booleanParameters
Returns
boolean
fromClientRect
Creates a new rect from a DOM rect.
Parameters
rectDOMRectA DOM rect, such as the result of
Element.getBoundingClientRect().Returns
A new
Rect.Example
const rect = NutrientViewer.Geometry.Rect.fromClientRect(
element.getBoundingClientRect()
);
fromInset
Parameters
insetNutrientViewer.Geometry.InsetReturns
fromPoints
Creates a new rect from four points.
Parameters
...pointsNutrientViewer.Geometry.Point[]An array of four points.
Returns
A new
Rect.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
getCenteredRect
- getCenteredRect(
inner: NutrientViewer.Geometry.Size,
outer: NutrientViewer.Geometry.Size,
): NutrientViewer.Geometry.RectParameters
innerNutrientViewer.Geometry.SizeouterNutrientViewer.Geometry.SizeReturns
union
- union(
rects: NutrientViewer.Immutable.List<NutrientViewer.Geometry.Rect>,
): NutrientViewer.Geometry.RectCreates a rect that surrounds all rects in the supplied NutrientViewer.Immutable.List.
This can be used to calculate the bounding box of a list of rects.
Parameters
An immutable list of rects.
Returns
A new
Rect.Example
const rects = NutrientViewer.Immutable.List([
new NutrientViewer.Geometry.Rect({ left: 14, top: 50, width: 50, height: 50 }),
new NutrientViewer.Geometry.Rect({ left: 70, top: 20, width: 98, height: 99 }),
new NutrientViewer.Geometry.Rect({ left: 14, top: 13, width: 15, height: 16 })
]);
const unionRect = NutrientViewer.Geometry.Rect.union(rects); // => Rect {left: 14, top: 13, width: 154, height: 106}
Immutable Record API
24
asImmutable
- Deprecated
Returns
thisDeprecated
Not part of the collection API the Nutrient Web SDK supports. Build the value once, or use withMutations().
See Also
Map#asImmutable
asMutable
- Deprecated
Returns
thisDeprecated
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.
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
otherunknownReturns
boolean
- get<K extends "left" | "top" | "width" | "height">(
key: K,
): { height: number; left: number; top: number; width: number }[K]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.
Parameters
keyPathIterable<unknown>notSetValueunknownOptionalReturns
unknown
Parameters
keyunknownReturns
boolean
mergeIn
removeIn
- Deprecated
Parameters
keyPathIterable<unknown>Returns
thisDeprecated
Not part of the collection API the Nutrient Web SDK supports. Use deleteIn(), or update() followed by delete().
Parameters
keyPathIterable<unknown>valueunknownReturns
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 }height: number
The
heightof the rect. This is equivalent toheightof a NutrientViewer.Geometry.Size.Default Value
0left: number
The
leftdistance of the rect. This is equivalent toxof a NutrientViewer.Geometry.Point.Default Value
0top: number
The
topdistance of the rect. This is equivalent toyof a NutrientViewer.Geometry.Point.Default Value
0width: number
The
widthof the rect. This is equivalent towidthof a NutrientViewer.Geometry.Size.Default Value
0
Shallowly converts this Record to equivalent native JavaScript Object.
Returns
{ height: number; left: number; top: number; width: number }height: number
The
heightof the rect. This is equivalent toheightof a NutrientViewer.Geometry.Size.Default Value
0left: number
The
leftdistance of the rect. This is equivalent toxof a NutrientViewer.Geometry.Point.Default Value
0top: number
The
topdistance of the rect. This is equivalent toyof a NutrientViewer.Geometry.Point.Default Value
0width: number
The
widthof the rect. This is equivalent towidthof a NutrientViewer.Geometry.Size.Default Value
0
toSeq
- Deprecated
Returns
Keyed<string, unknown>Deprecated
Not part of the collection API the Nutrient Web SDK supports. Use entries().
Note: Not all methods can be used on a mutable collection or within
withMutations! Onlysetmay be used mutatively.Parameters
mutator(mutable: this) => unknownReturns
thisSee Also
Map#withMutations
A rect describes a rectangle in 2D space. It consists of a location (
leftandtop) and dimensions (widthandheight). Provided values are defined in same units used by the page, point units. Point units are only equal to pixels when zoom value is1.It is an Immutable.Record and thus can be updated using
set(key, value), for example:rect.set("left", 20).