|
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object jpicedt.graphic.model.AbstractElement jpicedt.graphic.model.AbstractCurve jpicedt.graphic.model.PicMultiCurve
public class PicMultiCurve
PicMultiCurve
is basically an AbstractCurve
where each subdivision point has
additionnal features regarding 2nd-order smoothness and symmetry. These features, however, are dynamic in
the sense that they may be enforced by passing geometric constraints to the setCtrlPt()
method instead of having them tightly bound to the class. Besides, setSmooth()
and
setSymmetric()
methods may be used to dynamically enforce these features w/o having
to move control-points.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class jpicedt.graphic.model.AbstractCurve |
---|
AbstractCurve.CtrlPtSubsetAbstractCurve, AbstractCurve.CurveToSegment, AbstractCurve.EndSegment, AbstractCurve.LineToSegment, AbstractCurve.PointType, AbstractCurve.Segment |
Field Summary |
---|
Fields inherited from class jpicedt.graphic.model.AbstractCurve |
---|
bezierPts, isClosed |
Fields inherited from class jpicedt.graphic.model.AbstractElement |
---|
attributeSet, name, parent, view |
Constructor Summary | |
---|---|
PicMultiCurve()
Create a new empty open multi curve, with a default attribute set. |
|
PicMultiCurve(boolean closed)
Create a new empty multi curve, with a default attribute set. |
|
PicMultiCurve(boolean closed,
PicAttributeSet set)
Create a new empty multi curve with the given set of attribute |
|
PicMultiCurve(PicMultiCurve curve)
"cloning" constructor (to be used by clone()) |
|
PicMultiCurve(PicPoint pt1)
Create a new open multi curve reduced to the given point, and a default attribute set. |
|
PicMultiCurve(PicPoint[] bezierPts,
PicAttributeSet set)
Create a new multi-curve filled with the given array of PicPoint's, each segment being a curved Bezier segment. |
|
PicMultiCurve(PicPoint pt1,
PicAttributeSet set)
Create a new open multi curve reduced to the given point, and the given attribute set |
|
PicMultiCurve(PicPoint pt1,
PicPoint pt2)
Create a new line, i.e. a new straight open curve using the two given points, and a default attribute set. |
|
PicMultiCurve(PicPoint pt1,
PicPoint pt2,
PicAttributeSet set)
Create a new straight open multi curve with the two given points, and the given attribute set. |
|
PicMultiCurve(PicPoint pt1,
PicPoint ctrl1,
PicPoint ctrl2,
PicPoint pt2)
Create an open single cubic bezier curve from the four given points, and a default attribute set. |
|
PicMultiCurve(PicPsCurve curve)
Constructor for conversion of PicPsCurve into PicMultiCurve . |
|
PicMultiCurve(PicSmoothPolygon poly)
Constructor for conversion of PicSmoothPolygon into PicMultiCurve . |
Method Summary | |
---|---|
void |
addPoint(PicPoint pt)
Adds a new subdivision point to the end of this curve. |
PicMultiCurve |
clone()
Override Object.clone() method. |
PicMultiCurve |
convertToMultiCurve()
converts this ELement to a PicMultiCurve , i.e., itself (no copy). |
ArrayList<PEAction> |
createActions(ActionDispatcher actionDispatcher,
ActionLocalizer localizer,
HitInfo hi)
Create an array of Action's related to this object |
AbstractCustomizer |
createCustomizer()
Returns a Customizer for geometry editing |
void |
curveTo(PicPoint ptCtrl1,
PicPoint ptCtrl2,
PicPoint ptEnd)
If this curve if OPEN and NON-EMPTY, adds the given points (2 control points and an endpoint) to the end of the curve, then fire a GEOMETRY_CHANGE event. |
double |
distance(PicMultiCurve other)
Returns the shortest distance b/w the end-points of this curve and those of the given one. |
PicMultiCurveConvertable |
fetchClosestCurve(Collection l)
Returns the curve in the given collection that is closest to this one in the sense of the distance() method. |
PicPoint |
getCtrlPt(int numPoint,
PicPoint dest)
Return a copy of the user-controlled point having the given index. |
String |
getDefaultName()
|
int |
getFirstPointIndex()
Returns the index of the first user-controlled point that can be retrieved by getCtrlPt() . |
int |
getLastPointIndex()
Returns the index of the last user-controlled point that can be retrieved by getCtrlPt() . |
void |
join(PicMultiCurveConvertable c)
Join this curve and the given Element after proper conversion of the latter to a
PicMultiCurve , by appending the control points of the given curve to this one. |
static void |
main(String[] args)
Pour faire des tests de debug. |
void |
mirror(PicPoint ptOrg,
PicVector normalVector)
Effectue une réflexion sur this relativement à l'axe
défini par ptOrg et normalVector . |
void |
removePoint(int index)
Removes the point with the given index from this curve. |
void |
removeSubdivisionPoint(int subdivIndex)
Removes a subdivision point from this curve, together with its two neighbouring control points. |
void |
reverseIndexing()
Reverse the order in which points are stored in the protected bezierPts array. |
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. |
void |
setClosed(boolean state)
close or open this curve, that is, remove or add an end-point. |
void |
setCtrlPt(int index,
PicPoint pt,
EditPointConstraint constraint)
Set the coordinates of a Bezier point having the given index to the given location, possibly moving other control-points according to the given constraint. |
void |
setSmooth()
changes the smoothness feature of all the subdivision points at once. |
void |
setSmooth(int subdivIndex)
Forces the smoothness feature of the given subdivision point by moving alternate control-points. |
void |
setStraight()
Straighten ALL segments (ie make this curve a polygon). |
void |
setStraight(int segIndex)
changes the straightness feature for the given segment by making its control- and end-points identical. |
void |
setSymmetric()
force the symmetry feature of all the subdivision points at once. |
void |
setSymmetric(int subdivIndex)
Force the SYMMETRY feature of the given subdivision point. |
void |
shear(PicPoint ptOrg,
double shx,
double shy)
Shear this Element by the given params wrt to the given origin |
int |
splitSegment(int seg_idx,
PicPoint pt)
Adds a new point to a (maybe curved) segment then fires a changed-update. |
String |
toString()
Return a string for debugging purpose. |
void |
translate(double dx,
double dy)
Translate this Element by (dx,dy) ; this implementation translates the specification-points, then fires a changed-update event. |
Methods inherited from class jpicedt.graphic.model.AbstractElement |
---|
anchorPointsIterator, fireChangedUpdate, getAttribute, getAttributeSet, getDrawing, getName, getParent, getView, pullOutOfGroup, removeView, replaceBy, scale, scale, setAttribute, setAttributeSet, setCtrlPt, setName, setParent, setViewFromFactory |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface jpicedt.graphic.model.Element |
---|
anchorPointsIterator, createShape, getAttribute, getAttributeSet, getBoundingBox, getCtrlPtSubset, getDrawing, getName, getParent, getView, removeView, replaceBy, scale, scale, scale, setAttribute, setAttributeSet, setCtrlPt, setParent, setViewFromFactory, shear, syncArrowGeometry |
Constructor Detail |
---|
public PicMultiCurve()
public PicMultiCurve(boolean closed)
closed
- whether this curve is closed or notpublic PicMultiCurve(boolean closed, PicAttributeSet set)
closed
- whether this curve is closed or notset
- attribute set to be bound to this elementpublic PicMultiCurve(PicPoint pt1)
public PicMultiCurve(PicPoint pt1, PicAttributeSet set)
public PicMultiCurve(PicPoint pt1, PicPoint pt2)
public PicMultiCurve(PicPoint pt1, PicPoint pt2, PicAttributeSet set)
public PicMultiCurve(PicPoint pt1, PicPoint ctrl1, PicPoint ctrl2, PicPoint pt2)
public PicMultiCurve(PicPoint[] bezierPts, PicAttributeSet set)
public PicMultiCurve(PicSmoothPolygon poly)
PicSmoothPolygon
into PicMultiCurve
.
poly
- The PicSmoothPolygon
to be convertedpublic PicMultiCurve(PicPsCurve curve)
PicPsCurve
into PicMultiCurve
.
curve
- The PicPsCurve
to be convertedpublic PicMultiCurve(PicMultiCurve curve)
curve
- The curve to be cloned.Method Detail |
---|
public PicMultiCurve clone()
Object.clone()
method.
clone
in interface Element
clone
in class AbstractElement
public String getDefaultName()
getDefaultName
in class AbstractElement
public PicMultiCurve convertToMultiCurve()
ELement
to a PicMultiCurve
, i.e., itself (no copy).
convertToMultiCurve
in interface PicMultiCurveConvertable
public double distance(PicMultiCurve other)
public PicMultiCurveConvertable fetchClosestCurve(Collection l)
distance()
method. In case of two or more curves being equally close to this one, the
first occurence in the collection is returned.
l
- a list of PicMultiCurveConvertable
's ; l
may contain this curve, in
which case it's simply skipped.
null
if l
doesn't contain any PicMultiCurveConvertable
.public int getFirstPointIndex()
getCtrlPt()
.
This default implementation returns 0.
getFirstPointIndex
in interface Element
public int getLastPointIndex()
getCtrlPt()
.
This default implementation returns the number of specification points minus one.
getLastPointIndex
in interface Element
public void reverseIndexing()
public void join(PicMultiCurveConvertable c)
Element
after proper conversion of the latter to a
PicMultiCurve
, by appending the control points of the given curve to this one. The order
in which points are appended, i.e., wheter an index-reverse takes place before appending (see reverseIndexing()
), is such that both curves get joined along their shortest path. If both curves are
not in contact, a segment is added between them (through a call to lineTo()
).
public PicPoint getCtrlPt(int numPoint, PicPoint dest)
src
is null,
allocates a new PicPoint and return it, otherwise directly modifies src
and returns it as
well for convenience.
getCtrlPt
in interface Element
numPoint
- the point index, should be greater or equal to the value returned by
getFirstPointIndex
, and lower or equal to getLastPointIndex
.
index
;
if dest
is null, concrete implementation of this method should
allocate a new PicPoint and return it,
otherwise directly modify dest
and return it as well for convenience.public void setCtrlPt(int index, PicPoint pt, EditPointConstraint constraint)
SMOOTHNESS
SYMMETRY
SMOOTHNESS_SYMMETRY
FREELY
null
(default)
setCtrlPt
in interface Element
setCtrlPt
in class AbstractCurve
constraint
- not used herepublic void addPoint(PicPoint pt)
SMOOTHNESS_SYMMETRY
constraint is imposed (which as a nice side-effect results in the
added segment automagically inheriting its "straightness" property from the last segment of the
original curve). lineTo()
and curveTo()
methods.
addPoint
in class AbstractCurve
public void curveTo(PicPoint ptCtrl1, PicPoint ptCtrl2, PicPoint ptEnd)
splitSegment
instead, since this method does nothing
in this case ;-)
curveTo
in class AbstractCurve
ptCtrl1
- first control point of the new Bezier segmentptCtrl2
- second control point of the new Bezier segmentptEnd
- second end-point of the new Bezier segmentpublic int splitSegment(int seg_idx, PicPoint pt)
splitSegment
in class AbstractCurve
seg_idx
- index of the segment to be splitpt
- point at which segment is to be split
public void removeSubdivisionPoint(int subdivIndex)
This method fires a DrawingEvent of type GEOMETRY_CHANGE..
removeSubdivisionPoint
in class AbstractCurve
subdivIndex
- index of the subdivision point to be removed with respect to the SUBDIVISION point numbering scheme,
e.g. 0 for the first subdivision point (= first curve end-point).public void removePoint(int index)
removeSubdivisionPoint
.
Else, this means removing a control point, and we just "straighten" the corresponding segment end-point
by moving the control-point to the location of the nearest subdivision-point (hence this has no effect on
straight segments).
removePoint
in class AbstractCurve
index
- any valid control- or subdivision- index to be removedpublic void setClosed(boolean state)
setClosed
in class AbstractCurve
state
- The new close valueAbstractCurve.isClosed()
public void setSmooth(int subdivIndex)
subdivIndex
- index of the subdivision point, e.g. 0,1,2... for the 1st,2nd,3rd,... subdivision point.public void setSmooth()
public void setSymmetric(int subdivIndex)
subdivIndex
- index of the subdivision point, e.g. 0,1,2... for the 1st,2nd,3rd,... subdivision point.public void setSymmetric()
public void setStraight(int segIndex)
public void setStraight()
public void translate(double dx, double dy)
translate
in interface Element
translate
in class AbstractCurve
dx
- The X coordinate of translation vectordy
- The Y coordinate of translation vectorpublic void scale(double ptOrgX, double ptOrgY, double sx, double sy)
sx
and sy
may be negative.
This method eventually fires a changed-update event.
scale
in interface Element
scale
in class AbstractElement
public void rotate(PicPoint ptOrg, double angle)
rotate
in interface Element
rotate
in class AbstractCurve
angle
- rotation angle in radianspublic void mirror(PicPoint ptOrg, PicVector normalVector)
this
relativement à l'axe
défini par ptOrg
et normalVector
.
mirror
in interface Element
mirror
in class AbstractCurve
ptOrg
- le PicPoint
par lequel passe l'axe de réflexion.normalVector
- le PicVector
normal à l'axe de réflexion.public void shear(PicPoint ptOrg, double shx, double shy)
shear
in interface Element
shear
in class AbstractElement
public String toString()
toString
in class AbstractCurve
public ArrayList<PEAction> createActions(ActionDispatcher actionDispatcher, ActionLocalizer localizer, HitInfo hi)
createActions
in interface ActionFactory
createActions
in class AbstractCurve
actionDispatcher
- dispatches events to the proper PECanvaslocalizer
- i18n localizer for PEAction'shi
- une HitInfo
contenant les informations relatives à l'évènement-souris qui a
déclencher le menu contextuel.public AbstractCustomizer createCustomizer()
createCustomizer
in interface CustomizerFactory
createCustomizer
in class AbstractCurve
public static void main(String[] args)
|
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |