http://www.jpicedt.org

jpicedt.graphic.model
Class PicCircleFrom3Points

java.lang.Object
  extended byjpicedt.graphic.model.AbstractElement
      extended byjpicedt.graphic.model.DefaultLeafElement
          extended byjpicedt.graphic.model.PicParallelogram
              extended byjpicedt.graphic.model.PicEllipse
                  extended byjpicedt.graphic.model.PicCircleFrom3Points
All Implemented Interfaces:
ActionFactory, CustomizerFactory, Element, PicMultiCurveConvertable, PicObjectConstants

public class PicCircleFrom3Points
extends PicEllipse
implements CustomizerFactory

A class implementing either a circle or an arc, whose geometry is specified by a PicEllipse, yet is further controllable by three additional points : this may either be a plain circle going through these three points, or an arc going from P_1 to P_3 through P_2, in which case a pie or a chord may be added as well.
Superclass control-points are still available here, yet geometry is constrained to a circle by invoking e.g. super.setPoint using a PicParallelogram.SQUARE EditPointConstraint.

Since:
jPicEdt 1.4
Version:
$Id: PicCircleFrom3Points.java,v 1.19.2.1 2007/09/02 11:56:26 reynal Exp $
Author:
Vincent Guirardel

Field Summary
protected  ArrayList controlPts
          A list holding the three control-points this circle goes through, and serving as a convenient caching mechanism.
protected static int CTRL_P_1
          index of first control-point, aka P_1, in controlPts list
protected static int CTRL_P_2
          index of second control-point, aka P_2, in controlPts list
protected static int CTRL_P_3
          index of last control-point, aka P_3, in controlPts list
static int LAST_PT
           
static int P_1
          index of first end-point
static int P_2
          index of intermediate point
static int P_3
          index of last end-point
 
Fields inherited from class jpicedt.graphic.model.PicEllipse
CHORD, closure, greatAxis, OPEN, P_ANGLE_END, P_ANGLE_START, PIE, rotatedAngleEnd, rotatedAngleStart, rotationAngle, skewAngleEnd, skewAngleStart, smallAxis
 
Fields inherited from class jpicedt.graphic.model.PicParallelogram
b2tVec, CENTER_FIXED, DEFAULT, FIRST_PT, l2rVec, P_BL, P_BR, P_CENTER, P_SPEC_BL, P_SPEC_BR, P_SPEC_TR, P_TL, P_TR, SIDE_B, SIDE_L, SIDE_R, SIDE_T, SQUARE
 
Fields inherited from class jpicedt.graphic.model.DefaultLeafElement
nodeConnections, nodeName, pts
 
Fields inherited from class jpicedt.graphic.model.AbstractElement
attributeSet, parent, view
 
Fields inherited from interface jpicedt.graphic.model.PicObjectConstants
ARROW_GLOBAL_SCALE_LENGTH, ARROW_GLOBAL_SCALE_WIDTH, ARROW_INSET_SCALE, ARROW_LENGTH_SCALE, ARROW_WIDTH_LINEWIDTH_SCALE, ARROW_WIDTH_MINIMUM_MM, BRACKET_LENGTH_SCALE, CROSSHATCH, CROSSHATCH_FILLED, DASH_OPAQUE, DASH_TRANSPARENT, DASH1, DASH2, DASH3, DASHED, DIMEN, DOT_SEP, DOT_SEP1, DOT_SEP2, DOT_SEP3, DOTTED, DOUBLE_COLOR, DOUBLE_LINE, DOUBLE_SEP, FILL_COLOR, FILL_STYLE, HATCH_ANGLE, HATCH_COLOR, HATCH_SEP, HATCH_WIDTH, HLINES, HLINES_FILLED, INNER, LEFT_ARROW, LINE_COLOR, LINE_STYLE, LINE_WIDTH, MIDDLE, NONE, OUTER, OVER_STRIKE, OVER_STRIKE_COLOR, OVER_STRIKE_WIDTH, POLYDOTS_ANGLE, POLYDOTS_CIRCLE, POLYDOTS_DISK, POLYDOTS_PENTAGON, POLYDOTS_PENTAGON_FILLED, POLYDOTS_PLUS, POLYDOTS_SCALE_H, POLYDOTS_SCALE_V, POLYDOTS_SIZE_LINEWIDTH_SCALE, POLYDOTS_SIZE_MINIMUM_MM, POLYDOTS_SQUARE, POLYDOTS_SQUARE_FILLED, POLYDOTS_STYLE, POLYDOTS_SUPERIMPOSE, POLYDOTS_TRIANGLE, POLYDOTS_TRIANGLE_FILLED, PS_POINT, PST_CUSTOM, RBRACKET_LENGTH_SCALE, RIGHT_ARROW, SHADOW, SHADOW_ANGLE, SHADOW_COLOR, SHADOW_SIZE, SOLID, TBAR_WIDTH_LINEWIDTH_SCALE, TBAR_WIDTH_MINIMUM_MM, TEXT_BOX_CIRCLE, TEXT_BOX_NO_FRAME, TEXT_BOX_OVAL, TEXT_BOX_RECTANGLE, TEXT_FRAME, TEXT_HALIGN_CENTER, TEXT_HALIGN_LEFT, TEXT_HALIGN_RIGHT, TEXT_HOR_ALIGN, TEXT_ROTATION, TEXT_VALIGN_BASELINE, TEXT_VALIGN_BOTTOM, TEXT_VALIGN_CENTER, TEXT_VALIGN_TOP, TEXT_VERT_ALIGN, VLINES, VLINES_FILLED
 
Constructor Summary
PicCircleFrom3Points()
          Creates a new circle reduced to a single point located at (0,0).
PicCircleFrom3Points(boolean plain, int closure)
          Creates a new arc or circle reduced to a single point located at (0,0), with a default attribute set and the given closure type.
PicCircleFrom3Points(boolean plain, int closure, PicAttributeSet set)
          Creates a new arc or circle reduced to a single point located at (0,0), with the given closure and attribute set.
PicCircleFrom3Points(PicAttributeSet set)
          Creates a new (full) circle reduced to a single point located at (0,0), with the given attribute set.
PicCircleFrom3Points(PicCircleFrom3Points circle)
          "cloning" constructor (to be used by clone())
PicCircleFrom3Points(PicPoint pt1, PicPoint pt2, PicPoint pt3, boolean plain, int closure, PicAttributeSet set)
          Create a new arc or circle whose geometry is specified by the 3 given points, and with the given attribute set.
PicCircleFrom3Points(PicPoint pt1, PicPoint pt2, PicPoint pt3, PicAttributeSet set)
          Create a new circle whose geometry is specificed by the the 3 given points, and with the given attribute set.
 
Method Summary
 Object clone()
          Overrides Object.clone() method
 PicEllipse convertToEllipse()
          Convert this circle to a new PicEllipse object.
 PEAction[] createActions(ActionDispatcher actionDispatcher, ActionLocalizer localizer, HitInfo hi)
          Create an array of Action's related to this object
 AbstractCustomizer createCustomizer()
          Return a Customizer for geometry editing
protected  PicPoint getControlPoint(int i)
          Returns a reference to the ith control-point in the controlPts list.
 int getFirstPointIndex()
          Returns the index of the first user-controlled point that can be retrieved by getPoint().
 int getLastPointIndex()
          Returns the index of the last user-controlled point that can be retrieved by getPoint().
 String getName()
          Return a localised string that represents this object's name
 PicPoint getPoint(int numPoint, PicPoint src)
          Get the coordinate of the point indexed by "numPoint" to the given value.
 boolean isPlain()
          Return true if this PicEllipse is a plain ellipse, ie if angle extent equals 360.
 void rotate(PicPoint ptOrg, double angle)
          Rotate this Element by the given angle along the given point
 void scale(double ptOrgX, double ptOrgY, double sx, double sy)
          Scale this object by (sx,sy) using (ptOrgX,ptOrgY) as the origin.
protected  void setControlPoint(int i, PicPoint pt)
          Set the coordinates of ith control-point from the given point.
 void setPlain(boolean b)
           
 void setPoint(int numPoint, PicPoint pt, EditPointConstraint c)
          Set the coordinate of the point indexed by "numPoint" to the given value.
 void shear(PicPoint ptOrg, double shx, double shy)
          Shear this Element by the given params wrt to the given origin
 String toString()
          Implementation of the Object.toString() method, used for debugging purpose
 void translate(double dx, double dy)
          Translate this circle by (dx,dy)
protected  void updateControlPoints(int numPoint)
          Update the values of the three control-points from the geometry of the superclass.
protected  void updateEllipse()
          This method update the geometry of the superclass, i.e.
 
Methods inherited from class jpicedt.graphic.model.PicEllipse
_updateAxis, convertToMultiCurve, getAngleEnd, getAngleExtent, getAngleStart, getArcType, getArcTypeAsString, getGreatAxisLength, getRotatedAngleEnd, getRotatedAngleExtent, getRotatedAngleStart, getRotationAngle, getSmallAxisLength, getTangentAtAngleEnd, getTangentAtAngleStart, isArc, isCircle, isCircular, isClosed, isFlat, isRotated, setAngleEnd, setAngleExtent, setAngleStart, setArcType, setPlain, updateAxis, updateRotatedAngles
 
Methods inherited from class jpicedt.graphic.model.PicParallelogram
getBoundingBox, getCenter, getCenterX, getCenterY, getPointX, getPointY, isRectangle, toParalleloBasisCoordinates, updateParalleloBasis
 
Methods inherited from class jpicedt.graphic.model.DefaultLeafElement
addConnection, fireChangedUpdate, forwardChangedUpdate, getAllowsChildren, getNodeName, getNumberOfSpecificationPoints, getPoint, getSpecificationPoint, getSpecificationPoint, getSpecificationPointX, getSpecificationPointY, isNode, isNodeable, iterator, nodeConnectionOrigin, nodeReferencePoint, nodeReferencePointX, nodeReferencePointY, removeAllConnections, removeConnection, setNodeName, setPoint, setSpecificationPoint
 
Methods inherited from class jpicedt.graphic.model.AbstractElement
anchorPointsIterator, getAttribute, getAttributeSet, getDrawing, getParent, getView, removeView, scale, setAttribute, setAttributeSet, setParent, setViewFromFactory
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

P_1

public static final int P_1
index of first end-point

See Also:
Constant Field Values

P_2

public static final int P_2
index of intermediate point

See Also:
Constant Field Values

P_3

public static final int P_3
index of last end-point

See Also:
Constant Field Values

LAST_PT

public static final int LAST_PT
See Also:
Constant Field Values

controlPts

protected ArrayList controlPts
A list holding the three control-points this circle goes through, and serving as a convenient caching mechanism. These are controlled by the setPoint method, and are used to update superclass geometry when updateEllipse is invoked. Besides, protected getter/setter getControlPoint(int) and setControlPoint(int, jpicedt.graphic.PicPoint) allow to edit them easily without cumbersome class-cast.


CTRL_P_1

protected static final int CTRL_P_1
index of first control-point, aka P_1, in controlPts list

See Also:
Constant Field Values

CTRL_P_2

protected static final int CTRL_P_2
index of second control-point, aka P_2, in controlPts list

See Also:
Constant Field Values

CTRL_P_3

protected static final int CTRL_P_3
index of last control-point, aka P_3, in controlPts list

See Also:
Constant Field Values
Constructor Detail

PicCircleFrom3Points

public PicCircleFrom3Points()
Creates a new circle reduced to a single point located at (0,0).


PicCircleFrom3Points

public PicCircleFrom3Points(boolean plain,
                            int closure)
Creates a new arc or circle reduced to a single point located at (0,0), with a default attribute set and the given closure type.

Parameters:
plain - if true, we draw a plain circle and ignore the closure parameter.
closure - closure type as defined in java.awt.geom.Arc2D

PicCircleFrom3Points

public PicCircleFrom3Points(PicAttributeSet set)
Creates a new (full) circle reduced to a single point located at (0,0), with the given attribute set.


PicCircleFrom3Points

public PicCircleFrom3Points(boolean plain,
                            int closure,
                            PicAttributeSet set)
Creates a new arc or circle reduced to a single point located at (0,0), with the given closure and attribute set.

Parameters:
plain - if true, we draw a plain circle and ignore the closure parameter.
closure - closure type as defined in java.awt.geom.Arc2D

PicCircleFrom3Points

public PicCircleFrom3Points(PicPoint pt1,
                            PicPoint pt2,
                            PicPoint pt3,
                            PicAttributeSet set)
Create a new circle whose geometry is specificed by the the 3 given points, and with the given attribute set.


PicCircleFrom3Points

public PicCircleFrom3Points(PicPoint pt1,
                            PicPoint pt2,
                            PicPoint pt3,
                            boolean plain,
                            int closure,
                            PicAttributeSet set)
Create a new arc or circle whose geometry is specified by the 3 given points, and with the given attribute set.

Parameters:
plain - whether to draw a plain circle or an arc
closure - closure type as defined in java.awt.geom.Arc2D

PicCircleFrom3Points

public PicCircleFrom3Points(PicCircleFrom3Points circle)
"cloning" constructor (to be used by clone())

Method Detail

clone

public Object clone()
Overrides Object.clone() method

Specified by:
clone in interface Element
Overrides:
clone in class PicEllipse

getFirstPointIndex

public int getFirstPointIndex()
Returns the index of the first user-controlled point that can be retrieved by getPoint().

Specified by:
getFirstPointIndex in interface Element
Overrides:
getFirstPointIndex in class PicParallelogram

getLastPointIndex

public int getLastPointIndex()
Returns the index of the last user-controlled point that can be retrieved by getPoint().

Specified by:
getLastPointIndex in interface Element
Overrides:
getLastPointIndex in class PicEllipse

getName

public String getName()
Description copied from class: PicEllipse
Return a localised string that represents this object's name

Specified by:
getName in interface Element
Overrides:
getName in class PicEllipse
Returns:
a string that represents this object's name ; should be a key-entry to i18n files.
Since:
jpicedt 1.3.3

convertToEllipse

public PicEllipse convertToEllipse()
Convert this circle to a new PicEllipse object.


getControlPoint

protected PicPoint getControlPoint(int i)
Returns a reference to the ith control-point in the controlPts list.

Parameters:
i - one of CTRL_P_1, CTRL_P_2 or CTRL_P_3.

setControlPoint

protected void setControlPoint(int i,
                               PicPoint pt)
Set the coordinates of ith control-point from the given point.

Parameters:
i - one of P_1, P_2 or P_3.

updateEllipse

protected void updateEllipse()
This method update the geometry of the superclass, i.e. specification points P_BL, P_BR and P_TL, from the current value of the three control points P_1, P_2, P_3.
Subclasser may want to adapt updating scheme to their own need here.


updateControlPoints

protected void updateControlPoints(int numPoint)
Update the values of the three control-points from the geometry of the superclass. This aka updateEllipse(), yet the other way around.

Parameters:
numPoint - index of the PicParallelogram's control-point that was moved

setPoint

public void setPoint(int numPoint,
                     PicPoint pt,
                     EditPointConstraint c)
Set the coordinate of the point indexed by "numPoint" to the given value.

Specified by:
setPoint in interface Element
Overrides:
setPoint in class PicEllipse

getPoint

public PicPoint getPoint(int numPoint,
                         PicPoint src)
Get the coordinate of the point indexed by "numPoint" to the given value.

Specified by:
getPoint in interface Element
Overrides:
getPoint in class PicEllipse
Parameters:
numPoint - one of P_1, P_2 or P_3.
src - a PicPoint to update and create if necessary
Returns:
the point indexed by numPoint ; if src is null, allocates a new PicPoint and return it, otherwise directly modifies src and returns it as well for convenience.

translate

public void translate(double dx,
                      double dy)
Translate this circle by (dx,dy)

Specified by:
translate in interface Element
Overrides:
translate in class DefaultLeafElement
Parameters:
dx - The X coordinate of translation vector
dy - The Y coordinate of translation vector

scale

public void scale(double ptOrgX,
                  double ptOrgY,
                  double sx,
                  double sy)
Scale this object by (sx,sy) using (ptOrgX,ptOrgY) as the origin. This implementation simply apply a scaling transform to all specification-points. Note that sx and sy may be negative. This method eventually fires a changed-update event.

Specified by:
scale in interface Element
Overrides:
scale in class PicEllipse

rotate

public void rotate(PicPoint ptOrg,
                   double angle)
Rotate this Element by the given angle along the given point

Specified by:
rotate in interface Element
Overrides:
rotate in class PicEllipse
Parameters:
angle - rotation angle in radians

shear

public void shear(PicPoint ptOrg,
                  double shx,
                  double shy)
Shear this Element by the given params wrt to the given origin

Specified by:
shear in interface Element
Overrides:
shear in class PicEllipse

isPlain

public boolean isPlain()
Description copied from class: PicEllipse
Return true if this PicEllipse is a plain ellipse, ie if angle extent equals 360.

Overrides:
isPlain in class PicEllipse

setPlain

public void setPlain(boolean b)

toString

public String toString()
Implementation of the Object.toString() method, used for debugging purpose

Overrides:
toString in class PicEllipse
Since:
PicEdt 1.1.4

createActions

public PEAction[] createActions(ActionDispatcher actionDispatcher,
                                ActionLocalizer localizer,
                                HitInfo hi)
Create an array of Action's related to this object

Specified by:
createActions in interface ActionFactory
Overrides:
createActions in class PicParallelogram
Parameters:
actionDispatcher - dispatches events to the proper PECanvas
localizer - i18n localizer for PEAction's

createCustomizer

public AbstractCustomizer createCustomizer()
Return a Customizer for geometry editing

Specified by:
createCustomizer in interface CustomizerFactory
Overrides:
createCustomizer in class PicEllipse
Returns:
a Customizer for geometry editing
Since:
jpicedt 1.3.3

http://www.jpicedt.org

Submit a bug : syd@jpicedt.org