Horus Doc || Java GUI Reference || Doxygen's quick Index  

CanvasOval Class Reference

Inheritance diagram for CanvasOval::

ScribbleFigure ScribbleObject CanvasObject List of all members.

Public Methods

 CanvasOval (double x, double y, double w, double h)
 CanvasOval (double x, double y, double w, double h, Color color)
 CanvasOval (double x, double y, double w, double h, Color color, boolean circle)
 CanvasOval (double x, double y, double w, double h, int mode, Color color, boolean stroke, float linew, float trans, boolean circle, double ccs_scale)
void draw (Graphics g)
 Draw CanvasObject on 'g', using internal CCS values. More...

Object clone ()
 Return an identical copy of this CanvasObject. More...

boolean isInside (double x, double y)
boolean isNear (double x, double y)
void setDimension (double w, double h)
 Resize CanvasObject to width 'w' and height 'h'. More...

void doPixelFit (double zoomFactor)
 Round internal ICS values to nearest natural number. More...

boolean isCircle ()
void setCircle (boolean circle)
 CanvasOval (int x, int y, int w, int h, int mode, Color color, boolean circle, double ccs_scale)
boolean isInsideCcs (int x, int y)
 To be removed. More...

boolean isNearCcs (int x, int y)
 To be removed. More...

void setDimension (int w, int h)
int changePoint (int index, int x, int y)

Protected Attributes

boolean circle = false

Constructor & Destructor Documentation

CanvasOval::CanvasOval double    x,
double    y,
double    w,
double    h
[inline]
 

00030     {
00031         super(x, y, w, h);
00032     }

CanvasOval::CanvasOval double    x,
double    y,
double    w,
double    h,
Color    color
[inline]
 

00037     {
00038         super(x, y, w, h, color);
00039     }

CanvasOval::CanvasOval double    x,
double    y,
double    w,
double    h,
Color    color,
boolean    circle
[inline]
 

00044     {
00045         super(x, y, w, h, color);
00046         setCircle(circle);
00047     }

CanvasOval::CanvasOval double    x,
double    y,
double    w,
double    h,
int    mode,
Color    color,
boolean    stroke,
float    linew,
float    trans,
boolean    circle,
double    ccs_scale
[inline]
 

00053     {
00054         super(x, y, w, h, mode, color, stroke, linew, trans, ccs_scale);
00055         setCircle(circle);
00056     }

CanvasOval::CanvasOval int    x,
int    y,
int    w,
int    h,
int    mode,
Color    color,
boolean    circle,
double    ccs_scale
[inline]
 

00195     {
00196         super(x, y, w, h, mode, color, ccs_scale);
00197         setCircle(circle);
00198     }


Member Function Documentation

void CanvasOval::draw Graphics    g [inline, virtual]
 

Draw CanvasObject on 'g', using internal CCS values.

Reimplemented from CanvasObject.

00063     {
00064         setupDrawMode(g);
00065         if (!getTransformOK()) {
00066             transformICStoCCS();
00067         }
00068         g.drawOval(getX1Ccs(), getY1Ccs(), getWidthCcs(), getHeightCcs());
00069     }

Object CanvasOval::clone   [inline, virtual]
 

Return an identical copy of this CanvasObject.

Reimplemented from CanvasObject.

00073     {
00074         Color color = drawColor;
00075         if (hasNoColor) {
00076             color = NO_COLOR;
00077         }
00078         return (new CanvasOval(getX1(), getY1(), getWidth(), getHeight(), getDrawMode(),
00079                                color, strokeSet, lineWidth,
00080                                transparency, circle, getZoomFactor()));
00081     }

boolean CanvasOval::isInside double    x,
double    y
[inline]
 

00085     {
00086         if (inBoundingBox(x, y)) {
00087 
00088             x -= getX1();
00089             y -= getY1();
00090 
00091             double trueX = x - getWidth() / 2;
00092             double trueY = y - getHeight() / 2;
00093 
00094             double val = (trueX * trueX) / ((getWidth()/2) * (getWidth()/2)) +
00095                          (trueY * trueY) / ((getHeight()/2) * (getHeight()/2));
00096             return (val <= 1.0);
00097         }
00098         return false;
00099     }

boolean CanvasOval::isNear double    x,
double    y
[inline]
 

00103     {
00104         if (!((x >= getX1() - SPHERE) && (x < getX1() + getWidth() + SPHERE) &&
00105             (y >= getY1() - SPHERE) && (y < getY1() + getHeight() + SPHERE))) {
00106             return false;
00107         }
00108 
00109         CanvasOval oval1 = new CanvasOval(getX1()-SPHERE, getY1()-SPHERE,
00110                                           getWidth()+2*SPHERE, getHeight()+2*SPHERE);
00111         CanvasOval oval2 = new CanvasOval(getX1()+SPHERE, getY1()+SPHERE,
00112                                           getWidth()-2*SPHERE, getHeight()-2*SPHERE);
00113         if (oval1.isInside(x, y) && !oval2.isInside(x, y)) {
00114             return true;
00115         }
00116         return false;
00117     }

void CanvasOval::setDimension double    w,
double    h
[inline]
 

Resize CanvasObject to width 'w' and height 'h'.

Parameters are assumed Image Coordinate System values.

Reimplemented from ScribbleObject.

00121     {
00122         if (circle) {
00123 
00124             double ics_max = Math.max(Math.abs(w), Math.abs(h));
00125 
00126             setWidth(ics_max);
00127             setHeight(ics_max);
00128 
00129             if (w <= 0.) {
00130                 w = -getWidth();
00131             } else {
00132                 w = getWidth();
00133             }
00134 
00135             if (h <= 0) {
00136                 h = -getHeight();
00137             } else {
00138                 h = getHeight();
00139             }
00140         }
00141         super.setDimension(w, h);
00142     }

void CanvasOval::doPixelFit double    zoomFactor [inline]
 

Round internal ICS values to nearest natural number.

Although the ICS values are changed, they are not converted to 'integer' internally.

Reimplemented from ScribbleObject.

00146     {
00147         super.doPixelFit(zoomFactor);
00148 
00149         if (circle) {
00150             double w = getWidth();
00151             double h = getHeight();
00152 
00153             if (getX1() != getStartX()) {
00154                 w = -w;
00155             }
00156             if (getY1() != getStartY()) {
00157                 h = -h;
00158             }
00159             setDimension(w, h);
00160         }
00161     }

boolean CanvasOval::isCircle   [inline]
 

00165     {
00166         return circle;
00167     }

void CanvasOval::setCircle boolean    circle [inline]
 

00171     {
00172         this.circle = circle;
00173         if (circle) {
00174             this.setDimension(getWidth(), getHeight());
00175         }
00176     }

boolean CanvasOval::isInsideCcs int    x,
int    y
[inline]
 

To be removed.

Reimplemented from CanvasObject.

00202     {
00203         if (!getTransformOK()) {
00204             transformICStoCCS();
00205         }
00206 
00207         if (inBoundingBoxCcs(x, y)) {
00208 
00209             x -= getX1Ccs();
00210             y -= getY1Ccs();
00211 
00212             double trueX = (double)x - getWidthCcs() / 2;
00213             double trueY = (double)y - getHeightCcs() / 2;
00214 
00215             double val = (trueX * trueX) / ((getWidthCcs()/2) * (getWidthCcs()/2)) +
00216                          (trueY * trueY) / ((getHeightCcs()/2) * (getHeightCcs()/2));
00217             return (val <= 1.0);
00218         }
00219         return false;
00220     }

boolean CanvasOval::isNearCcs int    x,
int    y
[inline]
 

To be removed.

Reimplemented from CanvasObject.

00224     {
00225         if (!getTransformOK()) {
00226             transformICStoCCS();
00227         }
00228 
00229         if (!((x >= getX1Ccs() - SPHERE) && (x < getX1Ccs() + getWidthCcs() + SPHERE) &&
00230             (y >= getY1Ccs() - SPHERE) && (y < getY1Ccs() + getHeightCcs() + SPHERE))) {
00231             return false;
00232         }
00233 
00234         CanvasOval oval1 = new CanvasOval(getX1Ccs()-SPHERE, getY1Ccs()-SPHERE,
00235                                           getWidthCcs()+2*SPHERE, getHeightCcs()+2*SPHERE);
00236         CanvasOval oval2 = new CanvasOval(getX1Ccs()+SPHERE, getY1Ccs()+SPHERE,
00237                                           getWidthCcs()-2*SPHERE, getHeightCcs()-2*SPHERE);
00238         if (oval1.isInsideCcs(x, y) && !oval2.isInsideCcs(x, y)) {
00239             return true;
00240         }
00241         return false;
00242     }

void CanvasOval::setDimension int    w,
int    h
[inline]
 

Reimplemented from ScribbleObject.

00246     {
00247         if (!getTransformOK()) {
00248             transformICStoCCS();
00249         }
00250 
00251         if (circle) {
00252             int ccs_max = Math.max(Math.abs(w), Math.abs(h));
00253 
00254             setWidthCcs(ccs_max);
00255             setHeightCcs(ccs_max);
00256 
00257             if (w <= 0) {
00258                 w = -getWidthCcs();
00259             } else {
00260                 w = getWidthCcs();
00261             }
00262 
00263             if (h <= 0) {
00264                 h = -getHeightCcs();
00265             } else {
00266                 h = getHeightCcs();
00267             }
00268         }
00269         super.setDimension(w, h);
00270     }

int CanvasOval::changePoint int    index,
int    x,
int    y
[inline]
 

Reimplemented from ScribbleFigure.

00274     {
00275         int retval = super.changePoint(index, x, y);
00276         int min = Math.min(Math.abs(getWidthCcs()), Math.abs(getHeightCcs()));
00277         int max = Math.max(Math.abs(getWidthCcs()), Math.abs(getHeightCcs()));
00278 
00279         if (circle && min > 0) {
00280             setWidthCcs(max);
00281             setHeightCcs(max);
00282 
00283             if (getX1Ccs() != getStartXCcs()) {
00284                 setX1Ccs(getStartXCcs() - getWidthCcs());
00285             }
00286             if (getY1Ccs() != getStartYCcs()) {
00287                 setY1Ccs(getStartYCcs() - getHeightCcs());
00288             }
00289 
00290             transformCCStoICS();
00291         }
00292 
00293         return (retval);
00294     }


Member Data Documentation

boolean CanvasOval::circle = false [protected]
 


The documentation for this class was generated from the following file:
Generated on Tue Feb 3 14:19:40 2004 for JavaReference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001