Package org.eclipse.draw2d.geometry

# Class PointList

java.lang.Object
org.eclipse.draw2d.geometry.PointList

All Implemented Interfaces:
  `Serializable`, `Translatable`

public class PointList extends Object implements Serializable, Translatable
Represents a List of Points. This class is used for building an `int[]`. The array is internal, and is constructed and queried by the client using `Points`. SWT uses integer arrays when painting polylines and polygons.

See Also:
  - Serialized Form

## Constructor Summary

Constructors
Constructor
Description
`PointList()`
Constructs an empty PointList.
`PointList(int size)`
Constructs a PointList with initial capacity size, but no points.
`PointList(int[] points)`
Constructs a PointList with the given points.

## Method Summary

Modifier and Type
Method
Description
`void`
`addAll(PointList source)`
Appends all of the given points to this PointList.
`void`
`addPoint(int x, int y)`
Adds the input point values to this PointList.
`void`
`addPoint(Point p)`
Adds Point p to this PointList.
`Rectangle`
`getBounds()`
Returns the smallest Rectangle which contains all Points.
`PointList`
`getCopy()`
Creates a copy
`Point`
`getFirstPoint()`
Returns the first Point in the list.
`Point`
`getLastPoint()`
Returns the last point in the list.
`Point`
`getMidpoint()`
Returns the midpoint of the list of Points.
`Point`
`getPoint(int index)`
Returns the Point in the list at the specified index.
`Point`
`getPoint(Point p, int index)`
Copies the x and y values at given index into a specified Point.
`void`
`insertPoint(Point p, int index)`
Inserts a given point at a specified index.
`boolean`
`intersects(Rectangle r)`
Determines whether any of the line segments represented by this PointList intersect the given Rectangle.
`void`
`performScale(double factor)`
Scales this object by the scale factor.
`void`
`performTranslate(int dx, int dy)`
Translates this object horizontally by `dx` and vertically by `dy`.
`boolean`
`polygonContainsPoint(int x, int y)`
`boolean`
`polylineContainsPoint(int x, int y, int tolerance)`
`void`
`removeAllPoints()`
Removes all the points stored by this list.
`Point`
`removePoint(int index)`
Removes the point at the specified index from the PointList, and returns it.
`void`
`reverse()`
Reverses the order of the points in the list.
`void`
`setPoint(Point pt, int index)`
Overwrites a point at a given index in the list with the specified Point.
`void`
`setSize(int newSize)`
Sets the size of this PointList.
`int`
`size()`
Returns the number of points in this PointList.
`int[]`
`toIntArray()`
Returns the contents of this PointList as an integer array.
`void`
`translate(int x, int y)`
Moves the origin (0,0) of the coordinate system of all the points to the Point (x,y).
`final void`
`translate(Point pt)`
Moves the origin (0,0) of the coordinate system of all the points to the Point pt.
`void`
`transpose()`
Transposes all x and y values.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.eclipse.draw2d.geometry.Translatable

`performTranslate, performTranslate, performTranslate`

## Constructor Details

### PointList

public PointList()
Constructs an empty PointList.

Since:
  2.0

### PointList

public PointList(int[] points)
Constructs a PointList with the given points.

Parameters:
  `points` - int array where two consecutive ints form the coordinates of a point
Since:
  3.1

### PointList

public PointList(int size)
Constructs a PointList with initial capacity size, but no points.

Parameters:
  `size` - Number of points to hold.
Since:
  2.0

## Method Details

### addAll

public void addAll(PointList source)
Appends all of the given points to this PointList.

Parameters:
  `source` - the source pointlist

### addPoint

public void addPoint(Point p)
Adds Point p to this PointList.

Parameters:
  `p` - the point to be added
Since:
  2.0
See Also:
  - `removePoint(int)`

### addPoint

public void addPoint(int x, int y)
Adds the input point values to this PointList.

Parameters:
  `x` - X value of a point to add
  `y` - Y value of a point to add
Since:
  2.0

### getBounds

public Rectangle getBounds()
Returns the smallest Rectangle which contains all Points.

Returns:
  The smallest Rectangle which contains all Points.
Since:
  2.0

### getCopy

public PointList getCopy()
Creates a copy

Returns:
  PointList A copy of this PointList

### getFirstPoint

public Point getFirstPoint()
Returns the first Point in the list.

Returns:
  The first point in the list.
Throws:
  `IndexOutOfBoundsException` - if the list is empty
Since:
  2.0

### getLastPoint

public Point getLastPoint()
Returns the last point in the list.

Returns:
  The last Point in the list
Throws:
  `IndexOutOfBoundsException` - if the list is empty
Since:
  2.0

### getMidpoint

public Point getMidpoint()
Returns the midpoint of the list of Points. The midpoint is the median of the List, unless there are 2 medians (size is even), then the middle of the medians is returned.

Returns:
  The midpoint
Throws:
  `IndexOutOfBoundsException` - if the list is empty

### getPoint

public Point getPoint(int index)
Returns the Point in the list at the specified index.

Parameters:
  `index` - Index of the desired Point
Returns:
  The requested Point
Throws:
  `IndexOutOfBoundsException` - If the specified index is out of range
Since:
  2.0

### getPoint

public Point getPoint(Point p, int index)
Copies the x and y values at given index into a specified Point. This method exists to avoid the creation of a new `Point`.

Parameters:
  `p` - The Point which will be set with the <x, y> values
  `index` - The index being requested
Returns:
  The parameter `p` is returned for convenience
Since:
  2.0
See Also:
  - `getPoint(int)`

### insertPoint

public void insertPoint(Point p, int index)
Inserts a given point at a specified index.

Parameters:
  `p` - Point to be inserted.
  `index` - Position where the point is to be inserted.
Throws:
  `IndexOutOfBoundsException` - if the index is invalid
Since:
  2.0
See Also:
  - `setPoint(Point, int)`

### intersects

public boolean intersects(Rectangle r)
Determines whether any of the line segments represented by this PointList intersect the given Rectangle. If a segment touches the given rectangle, that's considered intersection.

Parameters:
  `r` - the rectangle
Returns:
  `true` if the given rectangle intersects any of the line segments represented by this PointList
Since:
  3.1

### performScale

public void performScale(double factor)
Description copied from interface: `Translatable`
Scales this object by the scale factor.

Specified by:
  `performScale` in interface `Translatable`
Parameters:
  `factor` - The scale factor
See Also:
  - `Translatable.performScale(double)`

### performTranslate

public void performTranslate(int dx, int dy)
Description copied from interface: `Translatable`
Translates this object horizontally by `dx` and vertically by `dy`.

Specified by:
  `performTranslate` in interface `Translatable`
Parameters:
  `dx` - The amount to translate horizontally
  `dy` - The amount to translate vertically
See Also:
  - `Translatable.performTranslate(int, int)`

### removeAllPoints

public void removeAllPoints()
Removes all the points stored by this list. Resets all the properties based on the point information.

Since:
  2.0

### removePoint

public Point removePoint(int index)
Removes the point at the specified index from the PointList, and returns it.

Parameters:
  `index` - Index of the point to be removed.
Returns:
  The point which has been removed
Throws:
  `IndexOutOfBoundsException` - if the removal index is beyond the list capacity
Since:
  2.0
See Also:
  - `addPoint(Point)`

### reverse

public void reverse()
Reverses the order of the points in the list.

Since:
  3.2

### setPoint

public void setPoint(Point pt, int index)
Overwrites a point at a given index in the list with the specified Point.

Parameters:
  `pt` - Point which is to be stored at the index.
  `index` - Index where the given point is to be stored.
Since:
  2.0

### setSize

public void setSize(int newSize)
Sets the size of this PointList.

Parameters:
  `newSize` - the new size

### size

public int size()
Returns the number of points in this PointList.

Returns:
  The number of points
Since:
  2.0

### toIntArray

public int[] toIntArray()
Returns the contents of this PointList as an integer array. The returned array is by reference. Any changes made to the array will also be changing the original PointList.

Returns:
  the integer array of points by reference
Since:
  2.0

### translate

public final void translate(Point pt)
Moves the origin (0,0) of the coordinate system of all the points to the Point pt. This updates the position of all the points in this PointList.

Parameters:
  `pt` - Position by which all the points will be shifted.
Since:
  2.0
See Also:
  - `translate(int,int)`

### translate

public void translate(int x, int y)
Moves the origin (0,0) of the coordinate system of all the points to the Point (x,y). This updates the position of all the points in this PointList.

Parameters:
  `x` - Amount by which all the points will be shifted on the X axis.
  `y` - Amount by which all the points will be shifted on the Y axis.
Since:
  2.0
See Also:
  - `translate(Point)`

### transpose

public void transpose()
Transposes all x and y values. Useful for orientation changes.

Since:
  3.2

### polygonContainsPoint

public boolean polygonContainsPoint(int x, int y)

Parameters:
  `x` - - X coordinate of the point
  `y` - - Y coordinate of the point
Returns:
  true if specified point belongs to the polygon drawn using this PointList
Since:
  3.5
See Also:
  - `Geometry.polygonContainsPoint(PointList, int, int)`

### polylineContainsPoint

public boolean polylineContainsPoint(int x, int y, int tolerance)

Parameters:
  `x` - - X coordinate of the point
  `y` - - Y coordinate of the point
  `tolerance` - - allowed distance between point and polyline segment
Returns:
  true if the least distance between specified point and polyline drawn using this PointList is less then specified tolerance
Since:
  3.5
See Also:
  - `Geometry.polylineContainsPoint(PointList, int, int, int)`