com.tensegrity.graphics.primitive2D
Class Polyline2D

java.lang.Object
  extended bycom.tensegrity.graphics.AbstractPrimitive
      extended bycom.tensegrity.graphics.primitive2D.Polyline2D
All Implemented Interfaces:
Attributable, AttributableOnSet, BaseInteractable, InteractableLine, Primitive

public class Polyline2D
extends AbstractPrimitive
implements InteractableLine

An object of class Polyline2D represents a two-dimensional line consisting of one or more line segments.

Version:
$Id: Polyline2D.java,v 1.77 2006/04/20 11:42:22 MichaelKegel Exp $
Author:
MichaelKegel

Field Summary
protected  int[] coordsX
          instance variable for the x components of the line coordinates
protected  int[] coordsXRef
          instance variable for the x components of the polygons reference coordinates (necessary when the polygon has segments that are not linear lines)
protected  int[] coordsY
          instance variable for the y components of the line coordinates
protected  int[] coordsYRef
          instance variable for the y components of the polygons reference coordinates (necessary when the polygon has segments that are not linear lines)
protected  MarkerFormat markerBegin
          instance variable for the marker at the start coordinate of the polyline
protected  MarkerFormat markerEnd
          instance variable for the marker at the stop coordinate of the polyline
protected  int[] segmentTypes
          instance variable for the segment types of the polygon
 
Fields inherited from class com.tensegrity.graphics.AbstractPrimitive
attributableOnSetListener, doAttributableEvents, infovalueregistry, interactionDescriptor, selected
 
Fields inherited from interface com.tensegrity.generic.attribute.AttributableOnSet
TREE_SUBSET_POSTFIX
 
Constructor Summary
Polyline2D()
          Constructor for Polyline2D.
Polyline2D(int[] coordsX, int[] coordsY)
          Constructor specifying the visited points of this Polyline2D.
Polyline2D(int[] coordsX, int[] coordsY, int[] coordsXRef, int[] coordsYRef, int[] segmentTypes)
          Constructor specifying the visited points of this Polyline2D.
Polyline2D(Polyline2D polyline)
          Copy constructor for Polyline2D.
 
Method Summary
 void addCoordinate(Coordinate coordinate)
          Adds the given Coordinate to the list of coordinate pairs.
 void applyState(PrimitiveState state)
           
 Coordinate[] calculateCoordinates(InteractionInfo interactionInfo)
           
 Primitive deepCopy()
          An implementation of this method is responsible for returning a deep- copy of the Primitive instance
 int getActionMode(InteractionItem item)
           
 Attribute getAttribute(java.lang.String name)
          Returns the attribute with the given name or null if there is no Attribute with the given name.
 AttributeSet getAttributes()
          Returns an AttributeSet consisting of all attributes of this AttributableOnSet.
 AttributeSet getAttributesTree()
          Returns an AttributeSet containing all Attributes of this AttributableOnSet in a treelike structure.
 Boundary getBoundingBox()
          Returns the bounding box of the BaseInteractable.
 Coordinate getCoordinateAt(int index)
          Returns the coordinate at the index specified by index.
 int getCoordinateCount()
          Returns the current number of coordinates the Polyline2D consists of.
 Coordinate[] getCoordinates()
          Returns an array of Coordinates the Polyline2D consists of.
 Coordinate getEndingCoordinate()
          Returns the current ending Coordinate of the line.
 Illustrator getIllustrator(Transform2D xform_context)
          Returns the Primitives illustrator object.
 MarkerFormat getMarkerBegin()
          Returns the format of the beginning marker.
 MarkerFormat getMarkerEnd()
          Returns the format of the end marker.
 Coordinate[] getReferenceCoordinates()
          Returns an array of Coordinates that represents the reference coordinates the Polygon2D currently provides.
 RenderingData getRenderingData(Transform2D xform_context)
          Returns a RenderingData instance, which are used by a Renderer implementation to render a Primitive.
 int[] getSegmentTypes()
          Returns an int-array that represent the segment types the Polygon2D currently provides.
 Coordinate getStartingCoordinate()
          Returns the current starting Coordinate of the line.
 PrimitiveState getState()
           
 void insertCoordinate(int index, Coordinate coordinate)
          Inserts the Coordinate given by coordinate at the index specified by index.
 void insertCoordinate(int index, Coordinate coordinate, Coordinate[] refCoordinates)
          Inserts the Coordinate given by coordinate at the index specified by index.
protected  InteractionDescriptor internalCreateInteractionDescriptor()
          This method should return an InteractionDescriptor that defines the interaction capabilities of a certain Primitive.
 void internalInvalidateBoundingBox()
          For internal use only!
protected  void internalSetMarkerBegin(MarkerFormat marker, AttributeSet attributeschanged_tablelike, AttributeSet attributeschanged_treelike)
           
protected  void internalSetMarkerEnd(MarkerFormat marker, AttributeSet attributeschanged_tablelike, AttributeSet attributeschanged_treelike)
           
 boolean isEachPointInteractionAllowed()
          Returns true, if interactions for each point are allowed.
 boolean isManipulable()
          Returns a boolean that indicates whether the InteractableLine is manipulable or not.
 void removeCoordinate(int index)
          Removes the coordinate at the index specified by index from the Polyline2D.
 void removeCoordinates(int index1, int index2)
          Removes the coordinates between the index specified by index1 and the index specified by index2 from the Polyline2D.
 void setAttributes(AttributeSet attributes)
          Searches within the AttributeSet given by attributes for attributes that have the same name as the attributes of this AttributableOnSet holds.
 void setAttributesTree(AttributeSet attributes)
          Performs the same operation as the setAttributes(com.tensegrity.generic.attribute.AttributeSet) method with the difference that the AttributeSet given to this method must provide the treelike structure mentioned in the documentation of the getAttributesTree().
 void setAttributeValue(java.lang.String name, java.lang.Object value)
          Sets the value of the attribute with the name to the given value.
 void setCoordinateAt(int index, Coordinate coordinate)
          Sets the given Coordinate at the index specified by index.
 void setCoordinates(Coordinate[] coordinates)
          Sets the given Coordinates as the new vertex edges of this Polyline2D.
 void setEachPointInteractionAllowed(boolean allowEachPointInteraction)
          Enabled or disables the each-point-interaction dependent on the flag given by allowEachPointInteraction.
 void setEndingCoordinate(Coordinate coordinate)
          Sets the ending Coordinate of the line to the value given by coordinate.
 void setManipulable(boolean manipulable)
          Sets the state of the ability to manipulate the InteractableLine to the value given by manipulable.
 void setMarkerBegin(MarkerFormat marker)
          Sets the format of the beginning marker to the given one.
 void setMarkerEnd(MarkerFormat marker)
          Sets the format of the end marker to the given one.
 void setReferenceCoordinates(Coordinate[] coords)
          Sets the Coordinates given by coords as the new reference coordinates the Polygon2D should provide.
 void setSegmentTypes(int[] segmentTypes)
          Sets the segment types for the Polygon2D to the values given by segmentTypesNew.
 void setStartEndCoordinate(Coordinate coordinateStart, Coordinate coordinateEnd)
          Sets the starting and the ending Coordinate of the line to the values given by coordinateStart and coordinateEnd
 void setStartingCoordinate(Coordinate coordinate)
          Sets the starting Coordinate of the line to the value given by coordinate.
 void setStroke(StrokeFormat stroke)
          Sets a StrokeFormat for the Primitive.
 java.lang.String toString()
           
 void translatePoints(int indexStart, int indexEnd, int offsetX, int offsetY)
          Translates the given range of points by the values of offsetX and offsetY.
 
Methods inherited from class com.tensegrity.graphics.AbstractPrimitive
addAttributableOnSetListener, addInfoValue, addOrSetInfoValue, areAttributableEventsEnabled, disableAttributableEvents, enableAttributableEvents, fireAttributableOnSetChangedEvent, fireAttributableOnSetChangedEvent, getAttributeType, getAttributeValue, getFont, getInfoValue, getInteractionDescriptor, getMoveItem, getPaint, getStroke, getTransform, hasInfoValue, hits, internalDeepCopyInfoValues, internalEnableSelection, internalSelect, internalSetFont, internalSetPaint, internalSetSelected, internalSetStroke, internalSetStroke, isMovable, isSelectable, isSelected, mouseClick, mouseDown, mouseEnter, mouseExit, mouseUp, postActing, preActing, raiseAttributableEvents, removeAttributableOnSetListener, removeInfoValue, select, setAttribute, setFontFormat, setInfoValue, setMovable, setPaint, setSelectable, setSelected, setTransform, startAction, stopAction
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.tensegrity.graphics.interaction.BaseInteractable
getInteractionDescriptor, getMoveItem, hits, internalEnableSelection, internalSelect, internalSetSelected, isMovable, isSelectable, isSelected, mouseClick, mouseDown, mouseEnter, mouseExit, mouseUp, postActing, preActing, select, setMovable, setSelectable, setSelected, startAction, stopAction
 

Field Detail

coordsX

protected int[] coordsX
instance variable for the x components of the line coordinates


coordsY

protected int[] coordsY
instance variable for the y components of the line coordinates


coordsXRef

protected int[] coordsXRef
instance variable for the x components of the polygons reference coordinates (necessary when the polygon has segments that are not linear lines)


coordsYRef

protected int[] coordsYRef
instance variable for the y components of the polygons reference coordinates (necessary when the polygon has segments that are not linear lines)


segmentTypes

protected int[] segmentTypes
instance variable for the segment types of the polygon


markerBegin

protected MarkerFormat markerBegin
instance variable for the marker at the start coordinate of the polyline


markerEnd

protected MarkerFormat markerEnd
instance variable for the marker at the stop coordinate of the polyline

Constructor Detail

Polyline2D

public Polyline2D()
Constructor for Polyline2D.


Polyline2D

public Polyline2D(int[] coordsX,
                  int[] coordsY,
                  int[] coordsXRef,
                  int[] coordsYRef,
                  int[] segmentTypes)
Constructor specifying the visited points of this Polyline2D.

Parameters:
coordsX - the x-coordinates of the points.
coordsY - the y-coordinates of the points.
segmentTypes - The types of the segments
coordsXRef - the x-components of the reference coordinates
coordsYRef - the y-components of the reference coordinates

Polyline2D

public Polyline2D(int[] coordsX,
                  int[] coordsY)
Constructor specifying the visited points of this Polyline2D.

Parameters:
coordsX - the x-coordinates of the points.
coordsY - the y-coordinates of the points.

Polyline2D

public Polyline2D(Polyline2D polyline)
Copy constructor for Polyline2D.

Parameters:
polyline - the Polyline2D to copy
Method Detail

isEachPointInteractionAllowed

public boolean isEachPointInteractionAllowed()
Returns true, if interactions for each point are allowed.

Returns:
true, if interactions for each point are allowed.

setEachPointInteractionAllowed

public void setEachPointInteractionAllowed(boolean allowEachPointInteraction)
Enabled or disables the each-point-interaction dependent on the flag given by allowEachPointInteraction.

Parameters:
allowEachPointInteraction - the new value for the each-point-interaction

getStartingCoordinate

public Coordinate getStartingCoordinate()
Returns the current starting Coordinate of the line.

Returns:
Coordinate the current starting coordinate

setStartingCoordinate

public void setStartingCoordinate(Coordinate coordinate)
Sets the starting Coordinate of the line to the value given by coordinate.

Parameters:
coordinate - the new starting Coordinate of the line

getEndingCoordinate

public Coordinate getEndingCoordinate()
Returns the current ending Coordinate of the line.

Returns:
Coordinate the current ending coordinate

setEndingCoordinate

public void setEndingCoordinate(Coordinate coordinate)
Sets the ending Coordinate of the line to the value given by coordinate.

Parameters:
coordinate - the new ending Coordinate of the line

setStartEndCoordinate

public void setStartEndCoordinate(Coordinate coordinateStart,
                                  Coordinate coordinateEnd)
Sets the starting and the ending Coordinate of the line to the values given by coordinateStart and coordinateEnd

Parameters:
coordinateStart - the new starting Coordinate of the line
coordinateEnd - the new ending Coordinate of the line

getCoordinates

public Coordinate[] getCoordinates()
Returns an array of Coordinates the Polyline2D consists of.
NOTICE:Changes to the returned array do not change the Polyline2D

Returns:
Coordinate[] array of the coordinates the Polyline2D consists of

setCoordinates

public void setCoordinates(Coordinate[] coordinates)
Sets the given Coordinates as the new vertex edges of this Polyline2D. The old vertices of this line are deleted.

Parameters:
coordinates - the new Coordinates for the Polyline2D

Find more information in the class documentation


getCoordinateCount

public int getCoordinateCount()
Returns the current number of coordinates the Polyline2D consists of.

Returns:
int the current number of coordinates

getCoordinateAt

public Coordinate getCoordinateAt(int index)
Returns the coordinate at the index specified by index.

Parameters:
index - the index to return the coordinate for
Returns:
Coordinate the coordinate at the specified index

setCoordinateAt

public void setCoordinateAt(int index,
                            Coordinate coordinate)
Sets the given Coordinate at the index specified by index.

Parameters:
index - the index to set the coordinate at
coordinate - the new Coordinate

addCoordinate

public void addCoordinate(Coordinate coordinate)
Adds the given Coordinate to the list of coordinate pairs. Each two coordinates defines a segment of this Polyline2D.

Parameters:
coordinate - the Coordinate to add.

Find more information in the class documentation


insertCoordinate

public void insertCoordinate(int index,
                             Coordinate coordinate)
Inserts the Coordinate given by coordinate at the index specified by index.

Parameters:
index - the index where to insert the new Coordinate
coordinate - the Coordinate to insert

insertCoordinate

public void insertCoordinate(int index,
                             Coordinate coordinate,
                             Coordinate[] refCoordinates)
Inserts the Coordinate given by coordinate at the index specified by index.

Parameters:
index - the index where to insert the new Coordinate
coordinate - the Coordinate to insert
refCoordinates - the reference coordinates to use for the new point

removeCoordinate

public void removeCoordinate(int index)
Removes the coordinate at the index specified by index from the Polyline2D.

Parameters:
index - the index where to remove the coordinate

Find more information in the class documentation


removeCoordinates

public void removeCoordinates(int index1,
                              int index2)
Removes the coordinates between the index specified by index1 and the index specified by index2 from the Polyline2D.

Parameters:
index1 - the start index of the coordinates to remove
index2 - the stop index of the coordinates to remove

getReferenceCoordinates

public Coordinate[] getReferenceCoordinates()
Returns an array of Coordinates that represents the reference coordinates the Polygon2D currently provides.
NOTICE:Changes to the returned array do not change the Polygon2D

Returns:
Coordinate[] array of the reference coordinates the Polygon2D currently provides

setReferenceCoordinates

public void setReferenceCoordinates(Coordinate[] coords)
Sets the Coordinates given by coords as the new reference coordinates the Polygon2D should provide.

Parameters:
coords - the new reference Coordinates for the Polygon2D

translatePoints

public void translatePoints(int indexStart,
                            int indexEnd,
                            int offsetX,
                            int offsetY)
Translates the given range of points by the values of offsetX and offsetY. In addition the corresponding reference coordinates are translated as well.

Parameters:
indexStart - The start index of the range to move
indexEnd - The start index of the range to move
offsetX - The horizontal offset
offsetY - The vertical offset

getSegmentTypes

public int[] getSegmentTypes()
Returns an int-array that represent the segment types the Polygon2D currently provides. The different segment types that are supported by the Polygon2D are defined by the constants UtilitiesLine.LINEAR_SEGMENT, UtilitiesLine.CUBIC_BEZIER_SEGMENT or UtilitiesLine.CUBIC_CATMULL_ROM_SEGMENT.

Returns:
int[] the current segment types of the Polygon2D

setSegmentTypes

public void setSegmentTypes(int[] segmentTypes)
Sets the segment types for the Polygon2D to the values given by segmentTypesNew. A value of null will reset the all segments to linear, so reference coordinates are ignored. The supported segment types are

Find more information in the class documentation


getMarkerBegin

public MarkerFormat getMarkerBegin()
Returns the format of the beginning marker.

Returns:
the format of the beginning marker.

setMarkerBegin

public void setMarkerBegin(MarkerFormat marker)
Sets the format of the beginning marker to the given one.

Parameters:
marker - the new format of the beginning marker.

internalSetMarkerBegin

protected final void internalSetMarkerBegin(MarkerFormat marker,
                                            AttributeSet attributeschanged_tablelike,
                                            AttributeSet attributeschanged_treelike)

getMarkerEnd

public MarkerFormat getMarkerEnd()
Returns the format of the end marker.

Returns:
the format of the end marker.

setMarkerEnd

public void setMarkerEnd(MarkerFormat marker)
Sets the format of the end marker to the given one.

Parameters:
marker - the new format of the end marker.

internalSetMarkerEnd

protected final void internalSetMarkerEnd(MarkerFormat marker,
                                          AttributeSet attributeschanged_tablelike,
                                          AttributeSet attributeschanged_treelike)

setStroke

public void setStroke(StrokeFormat stroke)
Description copied from interface: Primitive
Sets a StrokeFormat for the Primitive.

Specified by:
setStroke in interface Primitive
Parameters:
stroke - the StrokeFormat to use

getBoundingBox

public Boundary getBoundingBox()
Description copied from interface: BaseInteractable
Returns the bounding box of the BaseInteractable.

Specified by:
getBoundingBox in interface BaseInteractable
Returns:
Boundary the bounding box of the BaseInteractable

getState

public PrimitiveState getState()
Specified by:
getState in interface Primitive

applyState

public void applyState(PrimitiveState state)
                throws PrimitiveStateNotApplicableException
Specified by:
applyState in interface Primitive
Throws:
PrimitiveStateNotApplicableException

getIllustrator

public Illustrator getIllustrator(Transform2D xform_context)
Description copied from interface: Primitive
Returns the Primitives illustrator object. To get more informations about the illustrator object see the class above or the documentation of the Illustrator class.

Specified by:
getIllustrator in interface Primitive
Parameters:
xform_context - the transformation of the context the Primitive lies within.
Returns:
Illustrator the illustrator for outputting the Primitive.

getRenderingData

public RenderingData getRenderingData(Transform2D xform_context)
Description copied from interface: Primitive
Returns a RenderingData instance, which are used by a Renderer implementation to render a Primitive.
To get more informations about the RenderingData object see the class documentation above or the documentation of the RenderingData class.
To get more information about the Renderer technique see the class documentation above or the documentation of the Renderer class.

Specified by:
getRenderingData in interface Primitive
Overrides:
getRenderingData in class AbstractPrimitive

deepCopy

public Primitive deepCopy()
Description copied from interface: Primitive
An implementation of this method is responsible for returning a deep- copy of the Primitive instance

Specified by:
deepCopy in interface Primitive
Returns:
a deep copy of the Primitive.

isManipulable

public boolean isManipulable()
Description copied from interface: InteractableLine
Returns a boolean that indicates whether the InteractableLine is manipulable or not. Manipulable means in this case that a single point of the line can be manipulated.

Specified by:
isManipulable in interface InteractableLine
Returns:
boolean flag that indicates if the InteractableLine is manipulable or not.

setManipulable

public void setManipulable(boolean manipulable)
Description copied from interface: InteractableLine
Sets the state of the ability to manipulate the InteractableLine to the value given by manipulable.

Specified by:
setManipulable in interface InteractableLine
Parameters:
manipulable - the new state for the ability to manipulate the InteractableLine

calculateCoordinates

public Coordinate[] calculateCoordinates(InteractionInfo interactionInfo)
Specified by:
calculateCoordinates in interface InteractableLine

getActionMode

public int getActionMode(InteractionItem item)
Specified by:
getActionMode in interface InteractableLine

setAttributeValue

public void setAttributeValue(java.lang.String name,
                              java.lang.Object value)
                       throws IllegalValueException,
                              ConstraintViolationException
Description copied from interface: Attributable
Sets the value of the attribute with the name to the given value.
Notice: If the specific implementor of the Attributable interface doesn't support an Attribute with the name given by name, the attribute given through name and value is not handled nor created by Attributable.

Specified by:
setAttributeValue in interface Attributable
Overrides:
setAttributeValue in class AbstractPrimitive
Throws:
IllegalValueException
ConstraintViolationException

getAttribute

public Attribute getAttribute(java.lang.String name)
Description copied from interface: Attributable
Returns the attribute with the given name or null if there is no Attribute with the given name.

Specified by:
getAttribute in interface Attributable
Overrides:
getAttribute in class AbstractPrimitive

getAttributes

public AttributeSet getAttributes()
Description copied from interface: AttributableOnSet
Returns an AttributeSet consisting of all attributes of this AttributableOnSet.

Specified by:
getAttributes in interface AttributableOnSet
Returns:
AttributeSet an AttributeSet with all attributes.

setAttributes

public void setAttributes(AttributeSet attributes)
Description copied from interface: AttributableOnSet
Searches within the AttributeSet given by attributes for attributes that have the same name as the attributes of this AttributableOnSet holds. The value of every attribute that has the same name is used as the new value for the corresponding attribute of this AttributableOnSet. An Attribute within the given AttributeSet that is not an attribute of the object that implements the AttributableOnSet interface is not handled by nor added to the specific implementor of the AttributableOnSet interface.

Specified by:
setAttributes in interface AttributableOnSet
Parameters:
attributes - the AttributeSet consisting of the attributes whose values to set.

getAttributesTree

public AttributeSet getAttributesTree()
Description copied from interface: AttributableOnSet
Returns an AttributeSet containing all Attributes of this AttributableOnSet in a treelike structure.
Treelike means that each attribute can have a subset that contains subsequent Attributes for an Attribute of this AttributableOnSet.
Since an Attribute can only have one value (in this case an object or the Attributes for an object) the subsequent attributes are plugged into the returned AttributeSet as a new Attribute with the same name and the AttributableOnSet.TREE_SUBSET_POSTFIX.

Specified by:
getAttributesTree in interface AttributableOnSet
Returns:
AttributeSet an AttributeSet with the attributes in a treelike structure

setAttributesTree

public void setAttributesTree(AttributeSet attributes)
Description copied from interface: AttributableOnSet
Performs the same operation as the AttributableOnSet.setAttributes(com.tensegrity.generic.attribute.AttributeSet) method with the difference that the AttributeSet given to this method must provide the treelike structure mentioned in the documentation of the AttributableOnSet.getAttributesTree().

Specified by:
setAttributesTree in interface AttributableOnSet
Parameters:
attributes - the AttributeSet containing the attributes whose values to set.

internalCreateInteractionDescriptor

protected InteractionDescriptor internalCreateInteractionDescriptor()
Description copied from class: AbstractPrimitive
This method should return an InteractionDescriptor that defines the interaction capabilities of a certain Primitive. Since the InteractionDescriptor varies for different kinds of primitives this method is declared as abstract and must be implemented for each Primitive that is based on the AbstractPrimitive class.
NOTICE: The return value must not be null.

Specified by:
internalCreateInteractionDescriptor in class AbstractPrimitive
Returns:
InteractionDescriptor the InteractionDescriptor for the certain Primitive instance

toString

public java.lang.String toString()

internalInvalidateBoundingBox

public void internalInvalidateBoundingBox()
For internal use only! Invalidates the BoundingBox of this PolyLine2D, so it will be recalculated the next time the getBoundingBox() method is invoked.



Copyright © 2005 Tensegrity Software GmbH. All Rights Reserved. Date of creation: 09.06.2006.