Summary:A shape element has a geometric data of a shape and provides the various
methods for shape operations such as moving, resizing, transforming, modifying
and so on.
In addition, the special purpose shape elements are prepared. The one is
a image element which is used for exchange an image data with
other applications. The other is a group element which is used for representing
a group of shapes.
|
Relevant major classes of Java SE: java.awt.geom.*
|
Classes on this page:
ShapeElement, RectangleElement,
RoundRectangleElement, EllipseElement,
ImageElement, LineElement,
PolylineElement, CubicCurveElement,
GeneralCurveElement, GroupElement |
Remarks:
Drawing a shape Element => Figure1 in the Drawing Panel |
1. The types of the shape elements
The types of the shape elements are a rectangle, round rectangle,
ellipse, line, polyline, cubic curve and general curve. The general curve
is used for representing a trimmed curve (Cutting shape) and a connected curve (Connecting curves) of lines, curves (arcs, polylines and piecewise cubic curves).
An image element is a special purpose element whose element is an image.
It is used for exchanging an image data with other application such as
MS Word, MS PowerPoint and so on by cut, copy and paste operation.
Another special purpose element is a group element which is used for representing
a group of shapes. The group element has no shape data but has a list of
its child objects.
2. Abstract class ShapeElement
return=>page top
public abstract class ShapeElement
The ShapeElement abstract class is the base of various
shape element classes and they are described as
extended classes of the ShapeElement.
Field |
Description |
shapeContainer
|
ShapeContainer shapeContainer
The shapeContainer object which maintains this ShapeElement.
|
curve2D
|
Curve2D curve2D
The parametric curve object (Curve2D)
which represents the boundary curve of a closed shape, or the curve itself of an open shape.
|
curve2DSave
|
Curve2D curve2DSave
The parametric curve object (Curve2D).
This field is set by the mouseStart method
and used for moving, resizing and modifying the shape Element. |
textAreaSave |
Rectangle2D textAreaSave
Stores the textArea of the
TextBox which the
shapeContainer has.
|
startPoint
|
Point2D startPoint
The starting point of the mouse drag.
This field is set by the mouseStart method
and used for moving, resizing and modifying the shape Element.
|
startBox
|
Rectangle2D startBox
The bounding box of the shape elemnt at the star of the mouse drag. This
field is set by the mouseStart method
and used for moving, resizing and modifying the shape Element.
|
discreteAngledLine |
DiscreteAngledLine discreteAngledLine
Set the DiscreteAngledLine object.
This field is set by the mouseStart method.
|
workVector
|
Vector workVector
The Vector object for work.
|
Method |
Description |
getTypeE
(abstract)
|
public abstract int getTypeE()
Returns:
The code representing the shape element type which is defined in the
Command class.
Command.RECTANGLE/
ROUNDRECTAGLE/
ELLIPSE/
IMAGE/
LINE/
POLYLINE etc.
|
getShapeIdString
(abstract)
|
public abstract String getShapeIdString
Returns:
The string representing the shape element type. They are "Rectangle,
"Round_Rectangle""Line", "Polyline" and so on.
|
getShapeContainer
|
public ShapeContainer getShapeContainer()
Returns the shapeContainer field.
|
setShapeContainer
|
public void setShapeContainer(ShapeContainer container)
Sets the container parameter to the shapeContainer field.
|
isClosed
|
public boolean isClosed()
Returns true if the shape element is a closed shape.
|
getShape
|
public Shape getShape()
Returns:
The object which is defined by the java.awt.Shape interface.
:
The returned object of this method is used for displaying the shape element
and checking that a given point is contained in the shape element if it's a close shape.
=>
The extension of java.awt.geom
|
getCurve2D
|
public Curve2D getCurve2D()
Returns the curve2D field.
|
setCurve2D
|
public void setCurve2D(Curve2D curve2D)
Sets the curve2D parameter to the curve2D field.
|
getGeneralCurveElement |
public GeneralCurveElement getGeneralCurveElement()
Converts a shape element to a GeneralCurveElement and return it.
When a curve becomes a multipath (or subpath) by the processing like cutting
and division for a curve, this method is used to change into a GeneralCurveElement
which can handle multipath.
The inverse method of this is
GeneralCurveElement.getSimpleShapeElements method.
|
getSerializableCurve2D
|
public SerializableCurve2D getSerializableCurve2D()
Returns:
The SerializableCurve2D object
which is used for writing a shape data to a file or storing it to the clipboard for pasting.
Processing:
Calls the getSerializableCurve2D of the
Curve2D.
|
setSerializableCurve2D
|
public void setSerializableCurve2D(SerializableCurve2D sdata)
parameters:
sdata - The SerializableCurve2D object.
Processing:
Creates a Curve2D object from the sdata and sets it to the
curve2D field.
∙ Gets the array of the SerializableSegment2D
objects from the sdata and creates new Segment2D objects.
∙ Creates a new object of the Curve2D
by the constructor of the Curve2D subclass
and sets it to the curve2D field.
=>
Creating the Curve2D from the SerializableCurve2D
|
getBoundingBox
|
public Rectangle2D getBoundingBox()
Returns the bounding box which enclose this shape element.
|
getEndPTs
|
public abstract Point2D[] getEndPTs()
Returns the both endpoints of this shape element if this shape element is
a open shape (the boundary isn't closed). If this shape element is a closed
shape, then returns the 0-length array.
|
createTextArea
(abstract)
|
public abstract Rectangle2D createTextArea()
Returns:
The Rectangle2D object which determines the text area(textArea) of a TextBox object.
=>
ShapeContainer.addTextBox method.
Processing:
When the addTextBox method adds the TextBox
to the ShapeContainer object which posesses this object,
the addTextBox method call this method to get a text area(textArea).
The textArea for the basic shape like RectangleElement,
RoundRectangleElement,
EllipseElement and so on
can be easily calculated. However in the case of PolylineElement
or CubicCurveElement,
it is a little difficult, especially in the case that it has a concave part.
In this case, gets the textArea using the
ShapeElementUtil.getInscribedBox method.
|
getSegmentModifiers
(abstract)
|
public abstract SegmentModifier[] getSegmentModifiers()
|
getModifierPTs
(abstract)
|
public abstract Point2D[] getModifierPTs()
|
getSegmentModifiers
(abstract)
|
public abstract SegmentModifier[] getSegmentModifiers()
Returns:
The array of the SegmentModifier objects
which is used for modifying a shape by the ModifyShape class.
If the shape element is not allowed to be modified, return the length-0 array.
:
This method is called when the mouse drag starts by the
mouseStart method
and this method sets the the control points, control lines
and so on to the SegmentModifier objects..
=>
ModifyShape,
SegmentModifier
|
getModifierPTs
(abstract)
|
public abstract Point2D[] getModifierPTs()
Returns:
The array of the control points.
Processing:
The control points are extracted from the SegmentModifier
objects stored in the workVector field.
|
mouseStart
|
public abstract void mouseStart(int ctrl, Point2D starPoint)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key), 3 (with the mouse right button pressed)
startPoint - The starting point of the mouse drag
Processing:
This method is called by the init method of the
MoveResizeShapeLS
and the mousePressed method of the
ModifyShapeLS
to stores the initial data of this object that will be rewrited during the mouse drag.
• Sets the current curve2D to the Curve2Dsave field.
• Sets the current textArea to the textAreaSave field.
• Sets other data, such as the startPoint and the startBox.
|
mouseEnd
|
public abstract void mouseEnd()
Processing:
Nothing is done currently.
|
create
(abstract)
|
public abstract void create (Point2D startPoint, Point2D currentPoint)
Parameters:
startPoint - The start point of the mouse drag.
currentpoint - The current point of the mouse drag.
Processing:
This method is called by the mouseDragged method of the
CreateShapeLS to create a line.
|
create
(abstract)
|
public abstract void create(Point2D[] points)
Parameters:
points - The array of the clicked points.
Processing:
This method is called by the mouseMoved method of the
CreateShapeLS to create a polyline or a piecewise cubic curve.
|
create
(abstract)
|
public abstract void create(Rectangle2D boundingBox)
Parameters:
boundingBox - The dragged rectangle.
Processing:
This method is called by the mouseDragged method
of the CreateShapeLS
to create a basic shape (rectangle, round rectangle or ellipse) which
fits the dragged rectangle.
|
move
|
public void move(int ctrl, Point2D currentPoint, boolean moveTextBox)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key)
currentPoint - The current point of the mouse drag.
moveTextBox - If true, then resize the text box simultaneously.
Processing:
This method is called by the mouseDragged method
of the MoveResizeShapeLS to move the selected shapes.
: Before this method is called,
the mouseStart method to records the initial state.
|
resize |
public void resize(int ctrl, Point2D currentPoint, int mousePositionCode,
boolean resizeTextBox)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key)
currentPoint - The current point of the mouse drag.
mousePositionCode - The code defined in the MousePositionInfo
such as NW_RESIZE - SW_RESIZE, N_RESIZE- W_RESIZE.
resizeTextBox - If true, then resize the text box simultaneously.
Processing:
This method is called by the mouseDragged method
of the MoveResizeShapeLS
to resize the selected shapes.
This method calls the ShapeElementUtil.resizeRectangle
static method to resize the shape element.
:
(1) Before this method is called, the mouseStart method to records the initial state.
(2) This method works under the properties of UNRESIZABLE
and KEEP_ASPECT_RATIO.
|
moveResize
|
public void resize(Rectangle2D oldBox, Rectangle2D newBox, boolean resizeTextBox)
Parameters:
oldBox - The previous rectangle.
newBox - The current rectangle.
resizeTextBox - If true, then resize the text box simultaneously.
Processing:
Transforms this shape element using the transformation from the oldBox to the newBox.
This method calls the resizeSegment method
of the Segment2D to resize the
Segment2D objects which constitute the
curve2D.
And this method also calls the resizeTextArea method
of the TextBox to move or resize the text box if the parent
ShapeContainer has a text box.
:
This method can be used to move this shape element, nor resize.
|
moveEndPoint
(abstract)
|
public abstract void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key), 3 (with the mouse right
button pressed)
movingPtIndex - If the movingPtIndexequals 0, move the start point, otherwise move the end point.
currentPoint - The current point of the mouse drag.
Processing:
This method is called by the mouseDragged method
of the MoveResizeShapeLS
to move the endpoint of the line, polyline or piecewise cubic curve.
:
Before this method is called, the mouseStart method
to records the initial state.
|
moveEndPoint
(abstract)
|
public abstract void moveEndPoint(int ctrl, int movePtIndex, Point2D oldPoint, Point2D newPoint)
Parameters:
ctrl - If the moving direction is limitted to horizontal or vertical, sets ctrl 1/2.
movingPtIndex - If the movingPtIndexequals 0, move the start point, otherwise move the end point.
oldPoint - The old point of the moving point.
newPoint - The new point of the moving point.
Processing:
This method is used for moving an end point of a line or polyline without
dragging the mouse.
|
modify
(abstract) |
public abstract void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key), 3 (with the mouse right button pressed)
oldPoint - The previous point of the mouse drag.
currentPoint - The current point of the mouse drag.
Processing:
This method is called by the mouseDragged method
of the ModifyShapeLS.
:
Before this method is called, the mouseStart method to records the initial state.
=>
RoundRectangleElement.modify,
PolylineElemet.modify,
CubicCureveElement.modify,
GeneralCurveElement.modify
|
modifyPoint |
public abstract void modifyPoint(Point2D point, String command)
|
transform
|
public void transform(Matrix2D M)
Parameters:
M - the Matrix2D for transforming this shape element.
Processing:
This method calls the transformSegment method
of the Segment2D to transform the
Segment2D objects which constitute the
curve2D.
|
clone
(abstract)
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
(abstract)
|
public abstract String toString()
Return the string representing this object.
|
:
Creating the Curve2D from the SerializableCurve2D
SerializableSegment2D[] segs=sdata.serializableSegments;
int size=segs.length;
Segment2D[] segments=new Segment2D[size];
for(int i=0;i<size;i++){
segments[i]=new Segment2D(segs[i].type,
segs[i].shape, segs[i].affineTransform);
}
int curve2Dtype=sdata.type;
switch(curve2Dtype){
case Curve2D.RECTANGLE :{
this.curve2D=new Rectangle2DE(segments); break;
}
case Curve2D.ROUND_RECTANGLE :{
this.curve2D=new RoundRectangle2DE(segments); break;
}
case Curve2D.ELLIPSE :{
this.curve2D=new Ellipse2DE(segments); break;
}
case Curve2D.LINE:{
this.curve2D=new Line2DE(segments); break;
}
case Curve2D.POLYLINE:{
this.curve2D=new Polyline2DE(segments); break;
}
case Curve2D.CUBIC_CURVE :{
this.curve2D=new CubicCurve2DE(segments); break;
}
case Curve2D.GENERAL_CURVE :{
this.curve2D=new GeneralCurve2DE(segments); break;
}
} //switch
3. Class RectangleElement
return=>page top
public class RectangleElement extends ShapeElement
Method |
Description |
getTypeE
|
public int getTypeE()
Returns the Command.RECTANGLE.
|
getShapeIdString
|
public String getShapeIdString()
Returns the "Rectangle".
|
createTextArea
|
public Rectangle2D createTextArea()
Returns the Rectangle2D object which is inscribed to the boundary of this shape element.
|
getSegmentModifiers |
public SegmentModifier[] getSegmentModifiers()
Returns the 0-length array. |
getModifierPTs |
public Point2D[] getModifierPTs()
Returns the 0-length array. |
create |
public void create(Point2D startPoint, Point2D currentPoint)
Nothing is done. |
create
|
public void create(Rectangle2D boundingBox)
Create a new Rectangle2DE object
with the boundingBox parameter and set the new object to the
curve2D.
=>
The create method of the ShapeElement
|
create |
public void create(Point2D[] points)
Nothing is done. |
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Nothing is done.
=>
ShapeElement.moveEndPoint
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D oldPoint, Point2D newPoint)
newPoint)
Nothing is done.
|
modify |
public void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Nothing is done. |
modifyPoint |
public void modifyPoint(Point2D point, String command){}
Nothing is done. |
clone
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
|
public abstract String toString()
Return the string representing this object.
|
4. Class RoundRectangleElement
return=>page top
public class RoundRectangleElement extends ShapeElement
Method |
Description |
getTypeE
|
public int getTypeE()
Returns the Command.ROUND_RECTANGLE.
|
getShapeIdString
|
public String getShapeIdString()
Returns the "Round_Rectangle".
|
createTextArea
|
public Rectangle2D createTextArea()
Returns the Rectangle2D object which is inscribed to the boundary of this shape element.
|
getSegmentModifiers
|
public SegmentModifier[] getSegmentModifiers()
Returns:
The array of the two SegmentModifier objects. The two SegmentModifier objects corresponds to the two endpoints
of the left lower corner arc.
=>
Modifying shape Figure 1.1
|
getModifierPTs
|
public CurvePT[] getModifierPTs()
Returns:
The array of the two CurvePT objects.
The two CurvePT objects are created
by using the returned value of the
getSegmentModifiers method.
|
mouseStart
(override)
|
public void mouseStart(int ctrl, Point2D startPoint)
The method overriding the ShapeElement.mouseStart.
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
startPoint - The start point of the mouse drag.
Processing:
• Calls the getSegmentModifiers method
and sets its returns to segmentModifiers field.
• Calls the SegmentModifier.getHitSegmentModifier method
and sets its returns to hitSegmentModifier field.
|
create |
public void create(Point2D startPoint, Point2D currentPoint)
Nothing is done. |
create
|
public void create(Rectangle2D boundingBox)
Create a new RoundRectangle2DE object
which fits to the boundingBox and sets the new object to the
curve2D.
=>
The create method of the ShapeElement
|
create |
public void create(Point2D[] points)
Nothing is done. |
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Nothing is done.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D oldPoint, Point2D newPoint)
newPoint)
Nothing is done.
|
modify |
public void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key). Currently this parameter
isn't refereed.
startPoint - The start point of the mouse drag.
currentPoint - The current point of the mouse drag.
Processing:
This method changes the radius of the corner arcs by dragging the control
point. The SegmentModifier that was hit to the mouse when the mouse button
was pressed, is stored in the hitSegmentModifier. The point is moved by the vector of (currentPoint-oldPoint) and the radius of the corner arcs will be recalculated
If the radius reached the maximum, then this method stop moving the control point.
=>
Figure 1.1 in Modifying shape
|
modifyPoint |
public void modifyPoint(Point2D point, String command)
Nothing is done. |
clone
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
|
public abstract String toString()
Return the string representing this object.
|
5. Class EllipseElement
return=>page top
public class EllipseElement extends ShapeElement
Method |
Description |
getTypeE
|
public int getTypeE()
Returns the Command.ELLIPSE.
|
getShapeIdString
|
public String getShapeIdString()
Returns the "Ellipse".
|
createTextArea
|
public Rectangle2D createTextArea()
Returns the Rectangle2D object which is inscribed to the boundary of this shape element.
|
getSegmentModifiers
|
public SegmentModifier[] getSegmentModifiers()
Returns the 0-length array.
|
getModifierPTs
|
public CurvePT[] getModifierPTs()
Returns the 0-length array.
|
create
|
public void create(Rectangle2D boundingBox)
Create a new Ellipse2DE object
which fits to the boundingBox and set the new object to the
curve2D.
=>
The create method of the ShapeElement
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Nothing is done.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D oldPoint, Point2D newPoint)
newPoint)
Nothing is done.
|
modify |
public void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Nothing is done. |
modifyPoint |
public void modifyPoint(Point2D point, String command)
Nothing is done. |
clone
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
|
public abstract String toString()
Return the string representing this object.
|
6. Class ImageElement
return=>page top
public class ImageElement extends ShapeElement
The image element is the special purpose element whose element is a image.
It is used for exchanging a image data with other application such as MS
Word, MS PowerPoint and so on by cut, copy and paste operation.
The following field is added to this class.
Field
|
Description
|
bufferedImage
|
private BufferedImage bufferedImage
Store the image data.
|
This class maintains the image data within the rectangle,
so the methods are the same as those of the RectangleElement
except the proprietary methods which handles a image data.
Method |
Description |
getTypeE
|
public int getTypeE()
Returns the Command.IMAGE.
|
getShapeIdString
|
public String getShapeIdString()
Returns the "Image".
|
createTextArea
|
public Rectangle2D createTextArea()
Retuns null.
|
getBufferedImage
(proprietary)
|
public Image getBufferedImage()
Returns the bufferedImage field.
|
getByteImage
(proprietary)
|
public byte[] getByteImage()
Returns:
The byte array which stores the image data by byte format.
Processing:
This method converts the bufferedImage
to byte format by using the java.io.ByteArrayOutputStream class.
: The Image and BufferedImage objects can't be written to a file because
they are aren't serializable. To write to the file, this method is employed.
|
setByteImage
(proprietary)
|
public void setByteImage(byte[] byteData)
Parameter:
byteData - The byte array of a image data.
Processing:
This method provides the reverse operation of the getByteImage method.
This method writes the byteData to the the bufferedImage
by using the java.io.ByteArrayInputStream class.
|
getSegmentModifiers
|
public SegmentModifier[] getSegmentModifiers()
Returns the 0-length array.
|
getModifierPTs
|
public CurvePT[] getModifierPTs()
Returns the 0-length array.
|
create
|
public void create(Rectangle2D boundingBox)
Create a new Rectangle2DE object
which fits to the boundingBox and set the new object to the
curve2D.
=>
The create method of the ShapeElement
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Nothing is done.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D oldPoint, Point2D newPoint)
Nothing is done.
|
modify |
public void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Nothing is done. |
modifyPoint |
public void modifyPoint(Point2D point, String command)
Nothing is done. |
clone
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
|
public abstract String toString()
Return the string representing this object.
|
7. Class LineElement
return=>page top
public class LineElement extends ShapeElement
Method |
Description |
getTypeE
|
public int getTypeE()
Returns the Command.LINE.
|
getShapeIdString
|
public String getShapeIdString()
Return the "Line".
|
createTextArea
|
public Rectangle2D createTextArea()
Returns null.
|
getSegmentModifiers
|
public SegmentModifier[] getSegmentModifiers()
Returns the 0-length array.
|
getModifierPTs
|
public CurvePT[] getModifierPTs()
Returns the 0-length array.
|
mouseStart
(override)
|
public void mouseStart(int ctrl, Point2D startPoint)
The method overriding the ShapeElement.mouseStart.
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
startPoint - The start point of the mouse drag.
Processing:
Calls the ShapeElement.mouseStart method
|
create
|
public void create(Point2D startPoint, Point2D currentPoint)
Parameters:
startPoint - The start point of the mouse drag.
currentPoint - The current point of the mouse drag.
Processing:
Create a new Line2DE object
whose endpoints correspond to startPoint and currentPoint and set the new object
to the curve2D.
=>
The create method of the ShapeElement
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
movingPtIndex - If the
movingPtIndexequals 0, move the start point, otherwise move the end
point.
currentPoint - The current point of the mouse drag.
Processing:
This method is called from the
MoveResizeShapeLS.mouseDragged method. |
moveEndPoint
|
public void moveEndPoint(int ctrl, int movingPoint, Point2D oldPoint, Point2D currentPoint)
Parameters:
ctrl - If the moving direction is limitted to horizontal or vertical, sets ctrl 1/2.
movingPtIndex - If the movingPtIndexequals 0, move the start point, otherwise move the end point.
oldPoint - The old point of the moving point.
newPoint - The new point of the moving point.
Processing:
This method moves the specified endpoint by the vector of (currentPoint-oldPoint).
If the ctrl greater than 0, then the specified endpoint is moved in x-direction or y-direction.
|
modify |
public void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Nothing is done. |
modifyPoint |
public void modifyPoint(Point2D point, String command)
Nothing is done. |
clone
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
|
public abstract String toString()
Return the string representing this object.
|
8. Class PolylineElement
return=>page top
public class PolylineElement extends ShapeElement
Method |
Description |
getTypeE
|
public int getTypeE()
Return the Command.POLYLINE.
|
getShapeIdString
|
public String getShapeIdString()
Returns the "Polyline".
|
createTextArea
|
public Rectangle2D createTextArea()
Gets the inscribed rectangle by the
ShapeElementUtil.getInscribedBox
method and returns it.
|
getModifierPTs
|
public CurvePT[] getModifierPTs()
Not used. Returns the 0-length array.
|
getSegmentModifiers
|
public SegmentModifier[] getSegmentModifiers()
Not used. Returns the 0-length array.
|
mouseStart
(override)
|
public void mouseStart(int ctrl, Point2D startPoint)
The method overriding the ShapeElement.mouseStart.
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
startPoint - The start point of the mouse drag.
Processing:
Calls the ShapeElement.mouseStart method
|
create
|
public void create(Point2D[] points)
Parameters:
points - The segment junction points of the polyline.
Processing:
Create a new Polyline2DE object
whose segment junction points correspond to the points and set the new object to the
curve2D.
=>
The create method of the ShapeElement
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
movingPtIndex - If the
movingPtIndexequals 0, move the start point, otherwise move the end
point.
currentPoint - The current point of the mouse drag.
Processing:
This method is called by the mouseDragged method
of the MoveResizeShapeLS.
:
Before this method is called, the mouseStart method
to records the initial state.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movingPoint, Point2D oldPoint, Point2D currentPoint)
Parameters:
ctrl - If the moving direction is limitted to horizontal or vertical, sets ctrl 1/2.
movingPtIndex - If the movingPtIndexequals 0, move the start point, otherwise move the end point.
oldPoint - The old point of the moving point.
newPoint - The new point of the moving point.
Processing:
This method moves the specified endpoint by the vector of
(currentPoint-oldPoint). If the ctrl greater than 0, then the specified endpoint is moved in x-direction or y-direction by using the DiscreteAngledLine.getControlledPT method. This method is convenient method when the polyline is used as a connector.
To move the line segment whose endpoint equals the specified endpoint,
the moveLineSegment method is employed.
=>
The operation of the moveEndPoint,
Moving/resizing shape Polyline
|
moveLineSegment
|
private Line2D moveLineSegment(Line2D line, double moveX, double moveY)
Parameters:
line - The line to be moved
moveX - The x-movement.
moveY - The y-movement.
Returns:
The moved line which is denoted as newLine in the Figure below.
Processing:
This method is called by the moveEndPoint.
The start endpoint of the line is moved by the vector of
moveVec (moveX, moveY) as the Figure below. The other endpoint of the line is moved by the vector
of moveN which is the projected vector of the moveVec to the normal direction of the line.
=>
The operation of the moveEndPoint
|
modify
|
public void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Nothing is done.
|
modifyPoint |
public void modifyPoint(Point2D point, String command)
Nothing is done. |
clone
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
|
public abstract String toString()
Return the string representing this object.
|
:
The operation of moveEndPoint
return=>page top
Drags the endpoint (square mark) of the polyline, then the line
segment connecting to the endpoint will be translated in parallel with
changing its length as the figure below. This feature is convenient for
a connector.
9. Class CubicCurveElement
return=>page top
public class CubicCurveElement extends ShapeElement
Method |
Description |
getTypeE
|
public int getTypeE()
Returns the Command.CUBIC_CURVE.
|
getShapeIdString
|
public String getShapeIdString()
returns the "CubicCurve.
|
createTextArea
|
public Rectangle2D createTextArea()
Gets the inscribed rectangle by the
ShapeElementUtil.getInscribedBox method
and returns it.
|
getSegmentModifiers
|
public SegmentModifier[] getSegmentModifiers()
Not used. Returns the 0-length array.
|
getModifierPTs
|
public Point2D[] getModifierPTs()
Not used. Returns the 0-length array.
|
mouseStart
(override)
|
public void mouseStart(int ctrl, Point2D startPoint)
The method overriding the ShapeElement.mouseStart.
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
startPoint - The start point of the mouse drag.
Processing:
Calls the ShapeElement.mouseStart method
|
create
|
public void create(Point2D[] points)
Parameters:
points - The segment junction points of the polyline.
Processing:
Create a new CubicCurve2DE object
whose segment junction points correspond to the points and set the new object to the
curve2D.
=>
The create method of the ShapeElement
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movingPoint, Point2D currentPoint)
Nothing is done in the current version.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movingPoint, Point2D oldPoint, Point2D currentPoint)
Parameters:
ctrl - If the moving direction is limitted to horizontal or vertical, sets ctrl 1/2.
movingPtIndex - If the movingPtIndexequals 0, move the start point, otherwise move the end point.
oldPoint - The old point of the moving point.
newPoint - The new point of the moving point.
Processing:
This method moves the specified endpoint by the vector of (currentPoint-oldPoint). If the ctrl greater than 0, then the specified endpoint is moved in x-direction or
y-direction. The cubic curve is transformed by the scaling and rotation
matrix to match the specified endpoint to the moved endpoint.
Here the scaling and rotation matrix is created by the
getRotationMatrix method
of the Matrix2D.
|
modify
|
public void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Nothing is done.
|
modifyPoint |
public void modifyPoint(Point2D point, String command)
Nothing is done. |
clone
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
|
public abstract String toString()
Return the string representing this object.
|
10. Class GeneralCurveElement
return=>page top
public class GeneralCurveElement extends ShapeElement
The GeneralCurveElement is created as the result of
cutting a shape or
connecting curves.
It can't be created by the mouse drag or mouse click, so the create method of this class is dummy.
Field
|
Description
|
segmentModifiers
|
SegmentModifier[] segmentModifiers
This RoundRectangleElement object can be changed its radius of
the corner arcs by dragging the control point. This field is used to store
the SegmentModifier objects
that are necessary for the operation.
|
hitSegmentModifier
|
SegmentModifier hitSegmentModifier
Stores the hit SegmentModifier object
when the mouse button is pressed to start the mouse drag.
The hit test is performend by the
SegmentModifier.getHitSegmentModifier method.
|
topologyChanged
|
boolean topologyChanged
The topology of the curve2D may be changed by the "modify shape" command. For examples,
an unclosed curve2D turns into a closed curve, or a single curve2D
is divided into two curve2D sub paths. This field is set true if the curve2D
topology is changed. Once true is set to this field, the mouse drag operaion
is ignored in the modify method.
|
Method |
Description |
getTypeE
|
public int getTypeE()
Returns the Command.GENERAL_CURVE.
|
getShapeIdString
|
public String getShapeIdString()
Returns the "GeneralCurve".
|
createTextArea
|
public Rectangle2D createTextArea()
Gets the inscribed rectangle by the
ShapeElementUtil.getInscribedBox method and returns it.
|
getSimpleShapeElements |
public ShapeElement[] getSimpleShapeElements()
If this element has a multi-path curve, thenthis method devides a multi-path curve into plural single paths and creates shape elemens for each single path and returns them.
The returned each element is converted to a simple element as possible.
For example, it consists of a polyline, then returns a PolylineElement. |
getSegmentModifiers
|
public SegmentModifier[] getSegmentModifiers()
• This method is called from the mouseStart method.
The mouseStart method is called when the mouse button is pressed to perform
"modifu shape" command (ModifyShapeLS.mousePressed).
• Creates SegmentModifier objects for all segment junction points.
• The created SegmentModifier object are displayed by the
DrawShapeUtil.drawSegmentModifiers method.
• The processing for each junction point is performed by the
SegmentModifier.getSegmentModifiers method.
|
getModifierPTs
|
public CurvePT[] getModifierPTs()
Returns:
The array of the control points of the general curve. The control points
are the segment junction points, middle points of the line segments
and the endpoints of the tangent lines.
=>
Figure 1.4 in Modifying shape
|
mouseStart
(override)
|
public void mouseStart(int ctrl, Point2D startPoint)
The method overriding the ShapeElement.mouseStart.
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
startPoint - The start point of the mouse drag.
Processing:
|
create
|
public void create(Point2D[] points)
Nothing is done.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Nothing is done in the current version.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movingPoint, Point2D startPoint,
Point2D oldPoint, Point2D currentPoint)
Parameters:
ctrl - If the moving direction is limitted to horizontal or vertical, sets ctrl 1/2.
movingPtIndex - If the movingPtIndexequals 0, move the start point, otherwise move the end point.
oldPoint - The old point of the moving point.
newPoint - The new point of the moving point.
Processing:
This method moves the specified endpoint by the vector of (currentPoint-oldPoint). If the ctrl greater than 0, then the specified endpoint is moved in x-direction or
y-direction. The general curve is transformed by the scaling and rotation
matrix to match the specified endpoint to the moved endpoint.
Here the scaling and rotation matrix is created by the
getRotationMatrix method
of the Matrix2D
and the each curve segment is transformed by the
transformSegment method
of the Segment2D.
|
modify
|
public void modify(int ctrl, Point2D oldPoint, Point2D currentPoint)
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
oldPoint - The previous point of the mouse drag.
currentPoint - The current point of the mouse drag.
Processing:
• This method is called from the ModifyShapeLS.mouseDragged.
• The actual processing is performed by the SegmentModifier.modify method.
=>
Figure 1.4 in Modifying shape
|
modifyPoint
|
public void modifyPoint(Point2D point, String command)
Parameters:
point - The point to be added.
command - "add_point"/ "delete_point"/ "smooth"/"cusp"/ "disconnect"
Processing:
• This method is called from the ModifyShapeLS.mouseClicked method.
• The actual processing is performed by the static methods of the SegmentModifier.
Calls the following static method according to the command.
SegmentModifier.addPoint
SegmentModifier.deletePoint
SegmentModifier.smoothPoint
SegmentModifier.cuspPoint
SegmentModifier.disconnectPoint
|
clone
|
public abstract Object clone()
Returns the cloned object of this object.
|
toString
|
public abstract String toString()
Return the string representing this object.
|
11. Class GroupElement
return=>page top
public class GroupElement extends ShapeElement
The ShapeContainer representing a group has a GroupElement whose list has links to to child
ShapeContainer objects.
The child ShapeContainer can be also a group, so the hierarchy of ShapeContainer
objects is as the figure below.
In the figure, the ContainerList is the ArrayList which stores the ShapeContainer objects on one page and the ContainerList is managed by the ContainerManager object. The symbol of "Element" means an ShapeContainer which
is not a group and has a real shape data, and the symbol of "Group"
means an ShapeContainer which is group and has a GroupElement.
Figure 11.1 The hierarchy of a group object
Group: ShapeContainer+GroupElement,
Single shape: ShapeContainer+RectangleElement/RoundRectangleElement/etc.
Field |
Description |
childrenList
|
private ArrayList childrenList
The ArraiList which stores the links to the child ShapeContainer objects.
|
Method |
Description |
getTypeE
|
public int getTypeE()
Returns the Command.GROUP.
|
getShapeIdString
|
public String getShapeIdString()
Returns the string of "Group".
|
isClosed
|
public boolean isClosed()
Returns false.
|
getShape
|
public Shape getShape()
Returns null.
|
getCurve2D
|
public Curve2D getCurve2D()
Returns null.
|
setCurve2D
|
public void setCurve2D(Curve2D curve2D)
Nothis is done.
|
getSerializableCurve2D
|
public SerializableCurve2D getSerializableCurve2D()
Returns null.
|
setSerializableCurve2D
|
public void setSerializableCurve2D(SerializableCurve2D curve2D)
Nothing is done.
|
getBoundingBox
|
public Rectangle2D getBoundingBox()
Returns:
The bounding box enclosing the group.
Processing:
Gets the all shapes in the group by the
getGroupedSingleShapeContainers method,
then calculates the bounding box which enclose all the shapes in the group.
|
getEndPTs
|
public Point2D[] getEndPTs()
Returns the array of 0-length.
|
createTextArea
|
public Rectangle2D createTextArea()
Returns null.
|
getSegmentModifiers
|
public SegmentModifier[] getSegmentModifiers()
Returns null.
|
getModifierPTs
|
public Point2D[] getModifierPTs()
Returns the array of 0-length.
|
mouseStart
(override)
|
public void mouseStart(int ctrl, Point2D startPoint)
The method overriding the ShapeElement.mouseStart.
Parameters:
ctrl - 1 or 2 (with holding down the Shift or Ctrl key).
startPoint - The start point of the mouse drag.
Processing:
Calls the mouseStart method of each child shape element.
|
create
|
public void create (Point2D startPoint, Point2D currentPoint)
Nothing is done.
|
create
|
public void create(Point2D[] points)
Nothing is done.
|
create
|
public void create(Rectangle2D boundingBox)
Nothing is done.
|
move
(override)
|
public void resize(Rectangle2D oldBox, Rectangle2D newBox)
This method is overriding the ShapeElement.move method.
Gets the all shapes in the group by the
getGroupedSingleShapeContainers method,
then move all the shapes in the group by the
moveResize method of the ShapeElement.
|
resize (override)
|
public void resize(Rectangle2D oldBox, Rectangle2D newBox)
This method is overriding the ShapeElement.resize method.
Gets the all shapes in the group by the
getGroupedSingleShapeContainers method,
then resizes all the shapes in the group by the
moveResize method of the
ShapeElement.
|
moveResize (override)
|
public void resize(Rectangle2D oldBox, Rectangle2D newBox, boolean resizeTextBox)
This method is overriding the ShapeElement.move method.
Gets the all shapes in the group by the getGroupedSingleShapeContainers method,
then resizes all the shapes in the group by the moveResize method
of the ShapeElement.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D currentPoint)
Nothing is done.
|
moveEndPoint
|
public void moveEndPoint(int ctrl, int movePtIndex, Point2D oldPoint, Point2D newPoint)
Nothing is done.
|
getChildrenList
(proprietary)
|
public ArrayList getChildrenList()
Returns the ArrayList which stores the links to the child ShapeContainer objects
|
setChildrenList
(proprietary)
|
public void setChildrenList(ArrayList childrenList)
Sets the parameter to the childrenList.
|
getChildren
(proprietary)
|
public ShapeContainer[] getChildren()
Returns the child ShapeContainer objects
from the childrenList.
|
addChildren
(proprietary)
|
public void addChildren(ShapeContainer container)
Adds the parameter to the childrenList.
|
getGroupedContainers
(proprietary)
|
public ShapeContainer[] getGroupedContainers()
Returns the array of all the descendant ShapeContainer objects which
are linked from this object via the childrenList.
All the descendant ShapeContainer objects are searched by the next
getGroupedContainers method.
Example: If this GroupElement is the element of the Group 0 in Figure 11.1, then
returns the array of the Group1, Single shape 0, Single shape 1 and Single shape 2.
|
getGroupedContainers
(proprietary)
|
protected void getGroupedContainers(Vector vector)
Gets all the descendant ShapeContainer objects which are linked
from this object via the childrenList.
The search are performed by the recursive call of this method.
|
geGroupedSingleShape
Containers
(proprietary)
|
public ShapeContainer[] getGroupedSingleShapeContainers()
Returns all the descendant ShapeContainer objects which are single shape objects
and are linked from this object via the childrenList. All the descendant single shape ShapeContainer objects are searched
by the next getGroupedSingleShapeContainers method.
Example: If this GroupElement is the element of the Group 0 in Figure 11.1, then
returns the array of the Single shape 0, Single shape 1 and Single shape 2,.
|
getGroupedSingleShape
Containers
(proprietary)
|
protected void getGroupedSingleShapeContainers(Vector vector)
Returns all the ShapeContainer objects which single shape objects
and are linked from this object via the childrenList.
The search are performed by the recursive call of this method.
|
clone
|
public Object clone()
Nothing is done.
|
toString
|
public String toString()
Returns the string representing this object.
|
toShortString
|
public String toShortString()
Returns the short string representing this object.
|
|