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

CanvasArrowGrid Class Reference

Inheritance diagram for CanvasArrowGrid::

ScribbleFigure ScribbleObject CanvasObject List of all members.

Public Methods

 CanvasArrowGrid (double x, double y, double[][] lengths, int[][] angles)
 CanvasArrowGrid (double x, double y, double[][] lengths, int[][] angles, double distance)
 CanvasArrowGrid (double x, double y, double[][] lengths, int[][] angles, double distance, Color color)
 CanvasArrowGrid (double x, double y, double[][] lengths, int[][] angles, double distance, Color color, boolean stroke, float linew, float trans, double ccsScale)
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 setZoomFactor (double zoomFactor)
 Scale CanvasObject according to 'zoomFactor'. More...

void doMove (double w, double h)
 Move CanvasObject 'w' positions in x-direction, and 'h' posi- tions in y-direction. More...

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)
void doMove (int w, int h)

Static Public Attributes

final double DEF_DIST = 1.0

Protected Methods

void initGrid (double[][] lengths, int[][] angles, double distance)
void allocGridSpace ()
void placeArrows ()
void transformICStoCCS ()
 Perform a full ICS to CCS coordinate transformation. More...

void transformCCStoICS ()
 Perform a full CCS to ICS coordinate transformation. More...


Protected Attributes

int nr_x = 0
int nr_y = 0
double distance = DEF_DIST
double[] ics_xs = null
double[] ics_ys = null
double[][] ics_xHeads = null
double[][] ics_yHeads = null
double[][] ics_Bx = null
double[][] ics_By = null
double[][] ics_Gx = null
double[][] ics_Gy = null
int[] ccs_xs = null
int[] ccs_ys = null
int[][] ccs_xHeads = null
int[][] ccs_yHeads = null
int[][] ccs_Bx = null
int[][] ccs_By = null
int[][] ccs_Gx = null
int[][] ccs_Gy = null
double[][] lengths = null
int[][] angles = null

Static Protected Attributes

final int HEAD_LENGTH = 6
final int HEAD_ANGLE = 20

Constructor & Destructor Documentation

CanvasArrowGrid::CanvasArrowGrid double    x,
double    y,
double    lengths[][],
int    angles[][]
[inline]
 

00038     {
00039         this(x, y, lengths, angles, DEF_DIST,
00040              NO_COLOR, false, DEF_LINEW, DEF_TRANS, DEF_SCALE);
00041     }

CanvasArrowGrid::CanvasArrowGrid double    x,
double    y,
double    lengths[][],
int    angles[][],
double    distance
[inline]
 

00046     {
00047         this(x, y, lengths, angles, distance,
00048              NO_COLOR, false, DEF_LINEW, DEF_TRANS, DEF_SCALE);
00049     }

CanvasArrowGrid::CanvasArrowGrid double    x,
double    y,
double    lengths[][],
int    angles[][],
double    distance,
Color    color
[inline]
 

00054     {
00055         this(x, y, lengths, angles, distance,
00056              color, false, DEF_LINEW, DEF_TRANS, DEF_SCALE);
00057     }

CanvasArrowGrid::CanvasArrowGrid double    x,
double    y,
double    lengths[][],
int    angles[][],
double    distance,
Color    color,
boolean    stroke,
float    linew,
float    trans,
double    ccsScale
[inline]
 

00064     {
00065         super(x, y, 0., 0., COPY_MODE,
00066               color, stroke, linew, trans, ccsScale);
00067         initGrid(lengths, angles, distance);
00068     }


Member Function Documentation

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

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

Reimplemented from CanvasObject.

00075     {
00076         setupDrawMode(g);
00077         if (!getTransformOK()) {
00078             transformICStoCCS();
00079         }
00080         for (int i=0; i<nr_y; i++) {
00081             for (int j=0; j<nr_x; j++) {
00082                 g.drawLine(ccs_xs[j], ccs_ys[i],
00083                            ccs_xHeads[i][j], ccs_yHeads[i][j]);
00084                 g.drawLine(ccs_xHeads[i][j], ccs_yHeads[i][j],
00085                            ccs_Bx[i][j], ccs_By[i][j]);
00086                 g.drawLine(ccs_xHeads[i][j], ccs_yHeads[i][j],
00087                            ccs_Gx[i][j], ccs_Gy[i][j]);
00088             }
00089         }
00090     }

Object CanvasArrowGrid::clone   [inline, virtual]
 

Return an identical copy of this CanvasObject.

Reimplemented from CanvasObject.

00094     {
00095         Color color = drawColor;
00096         if (hasNoColor) {
00097             color = NO_COLOR;
00098         }
00099         return (new CanvasArrowGrid(getX1(), getY1(), lengths, angles,
00100                                     distance, color, strokeSet,
00101                                     lineWidth, transparency, getZoomFactor()));
00102     }

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

00106     {
00107         return inBoundingBox(x, y);
00108     }

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

00112     {
00113         return inBoundingBox(x, y);
00114     }

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

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

Parameters are assumed Image Coordinate System values.

Reimplemented from ScribbleObject.

00118     {
00119         // overrule super.setDimension(w, h), and do nothing
00120 
00121         return;
00122     }

void CanvasArrowGrid::setZoomFactor double    zoomFactor [inline]
 

Scale CanvasObject according to 'zoomFactor'.

The internal ICS values are taken as base values to calculate the associated CCS values.

Reimplemented from CanvasObject.

00126     {
00127         super.setZoomFactor(zoomFactor);
00128         placeArrows();
00129     }

void CanvasArrowGrid::doMove double    w,
double    h
[inline]
 

Move CanvasObject 'w' positions in x-direction, and 'h' posi- tions in y-direction.

Parameters are assumed Image Coordinate System values.

Reimplemented from ScribbleObject.

00133     {
00134         super.doMove(w, h);
00135         placeArrows();
00136     }

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

To be removed.

Reimplemented from CanvasObject.

00154     {
00155         return inBoundingBoxCcs(x, y);
00156     }

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

To be removed.

Reimplemented from CanvasObject.

00160     {
00161         return inBoundingBoxCcs(x, y);
00162     }

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

Reimplemented from ScribbleObject.

00166     {
00167         // overrule super.setDimension(w, h), and do nothing
00168 
00169         return;
00170     }

void CanvasArrowGrid::doMove int    w,
int    h
[inline]
 

Reimplemented from ScribbleObject.

00174     {
00175         super.doMove(w, h);
00176         placeArrows();
00177     }

void CanvasArrowGrid::initGrid double    lengths[][],
int    angles[][],
double    distance
[inline, protected]
 

00192     {
00193         resizeable    = false;
00194         setInputSource(INP_SASYSTEM);
00195         nr_x          = lengths[0].length;
00196         nr_y          = lengths.length;
00197         this.distance = distance;
00198 
00199         setWidth((nr_x - 1) * distance);
00200         setHeight((nr_y - 1) * distance);
00201 
00202         allocGridSpace();
00203 
00204         for (int i=0; i<nr_y; i++) {
00205             for (int j=0; j<nr_x; j++) {
00206                 this.lengths[i][j] = lengths[i][j];
00207                 this.angles[i][j] = angles[i][j];
00208             }
00209         }
00210 
00211         placeArrows();
00212         transformICStoCCS();
00213     }

void CanvasArrowGrid::allocGridSpace   [inline, protected]
 

00217     {
00218         ics_xs     = new double[nr_x];
00219         ics_ys     = new double[nr_y];
00220         ics_xHeads = new double[nr_y][nr_x];
00221         ics_yHeads = new double[nr_y][nr_x];
00222         ics_Bx     = new double[nr_y][nr_x];
00223         ics_By     = new double[nr_y][nr_x];
00224         ics_Gx     = new double[nr_y][nr_x];
00225         ics_Gy     = new double[nr_y][nr_x];
00226 
00227         ccs_xs     = new int[nr_x];
00228         ccs_ys     = new int[nr_y];
00229         ccs_xHeads = new int[nr_y][nr_x];
00230         ccs_yHeads = new int[nr_y][nr_x];
00231         ccs_Bx     = new int[nr_y][nr_x];
00232         ccs_By     = new int[nr_y][nr_x];
00233         ccs_Gx     = new int[nr_y][nr_x];
00234         ccs_Gy     = new int[nr_y][nr_x];
00235 
00236         this.lengths = new double[nr_y][nr_x];
00237         this.angles  = new int[nr_y][nr_x];
00238     }

void CanvasArrowGrid::placeArrows   [inline, protected]
 

00242     {
00243         double cosa, sina;
00244         double cosb, sinb;
00245         double cosg, sing;
00246         double tmp_l;
00247 
00248         int beta, gamma;
00249 
00250         for (int i=0; i<nr_x; i++) {
00251             ics_xs[i] = getX1() + i * distance;
00252         }
00253         for (int i=0; i<nr_y; i++) {
00254             ics_ys[i] = getY1() + i * distance;
00255         }
00256 
00257         for (int i=0; i<nr_y; i++) {
00258             for (int j=0; j<nr_x; j++) {
00259                 this.lengths[i][j] = lengths[i][j];
00260                 this.angles[i][j] = angles[i][j];
00261 
00262                 beta  = 90 - angles[i][j] - HEAD_ANGLE;
00263                 gamma = angles[i][j] - HEAD_ANGLE;
00264 
00265                 cosa = Math.cos((angles[i][j] * Math.PI) / 180);
00266                 sina = Math.sin((angles[i][j] * Math.PI) / 180);
00267                 cosb = Math.cos((beta * Math.PI) / 180);
00268                 sinb = Math.sin((beta * Math.PI) / 180);
00269                 cosg = Math.cos((gamma* Math.PI) / 180);
00270                 sing = Math.sin((gamma* Math.PI) / 180);
00271 
00272                 ics_xHeads[i][j] = ics_xs[j] + lengths[i][j] * cosa;
00273                 ics_yHeads[i][j] = ics_ys[i] - lengths[i][j] * sina;
00274 
00275                 tmp_l = Math.min(lengths[i][j]/2 + 1, HEAD_LENGTH/getZoomFactor());
00276 
00277                 ics_Bx[i][j] = ics_xHeads[i][j] - tmp_l * sinb;
00278                 ics_By[i][j] = ics_yHeads[i][j] + tmp_l * cosb;
00279                 ics_Gx[i][j] = ics_xHeads[i][j] - tmp_l * cosg;
00280                 ics_Gy[i][j] = ics_yHeads[i][j] + tmp_l * sing;
00281             }
00282         }
00283         setTransformOK(false);
00284     }

void CanvasArrowGrid::transformICStoCCS   [inline, protected]
 

Perform a full ICS to CCS coordinate transformation.

Reimplemented from CanvasObject.

00288     {
00289         super.transformICStoCCS();
00290 
00291         if (nr_x > 0 && nr_y > 0) {
00292             ccs_xs = Converter.ICStoCCS(ics_xs, getZoomFactor());
00293             ccs_ys = Converter.ICStoCCS(ics_ys, getZoomFactor());
00294 
00295             for (int i=0; i<nr_y; i++) {
00296                 ccs_xHeads[i] = Converter.ICStoCCS(ics_xHeads[i], getZoomFactor());
00297                 ccs_yHeads[i] = Converter.ICStoCCS(ics_yHeads[i], getZoomFactor());
00298                 ccs_Bx[i] = Converter.ICStoCCS(ics_Bx[i], getZoomFactor());
00299                 ccs_By[i] = Converter.ICStoCCS(ics_By[i], getZoomFactor());
00300                 ccs_Gx[i] = Converter.ICStoCCS(ics_Gx[i], getZoomFactor());
00301                 ccs_Gy[i] = Converter.ICStoCCS(ics_Gy[i], getZoomFactor());
00302             }
00303         }
00304         setTransformOK(true);
00305     }

void CanvasArrowGrid::transformCCStoICS   [inline, protected]
 

Perform a full CCS to ICS coordinate transformation.

This function is used only for scribbled objects.

Reimplemented from CanvasObject.

00309     {
00310         super.transformCCStoICS();
00311 
00312         if (nr_x > 0 && nr_y > 0) {
00313             ics_xs = Converter.CCStoICS(ccs_xs, getZoomFactor());
00314             ics_ys = Converter.CCStoICS(ccs_ys, getZoomFactor());
00315 
00316             for (int i=0; i<nr_y; i++) {
00317                 ics_xHeads[i] = Converter.CCStoICS(ccs_xHeads[i], getZoomFactor());
00318                 ics_yHeads[i] = Converter.CCStoICS(ccs_yHeads[i], getZoomFactor());
00319                 ics_Bx[i] = Converter.CCStoICS(ccs_Bx[i], getZoomFactor());
00320                 ics_By[i] = Converter.CCStoICS(ccs_By[i], getZoomFactor());
00321                 ics_Gx[i] = Converter.CCStoICS(ccs_Gx[i], getZoomFactor());
00322                 ics_Gy[i] = Converter.CCStoICS(ccs_Gy[i], getZoomFactor());
00323             }
00324         }
00325     }


Member Data Documentation

final double CanvasArrowGrid::DEF_DIST = 1.0 [static]
 

final int CanvasArrowGrid::HEAD_LENGTH = 6 [static, protected]
 

final int CanvasArrowGrid::HEAD_ANGLE = 20 [static, protected]
 

int CanvasArrowGrid::nr_x = 0 [protected]
 

int CanvasArrowGrid::nr_y = 0 [protected]
 

double CanvasArrowGrid::distance = DEF_DIST [protected]
 

double [] CanvasArrowGrid::ics_xs = null [protected]
 

double [] CanvasArrowGrid::ics_ys = null [protected]
 

double [][] CanvasArrowGrid::ics_xHeads = null [protected]
 

double [][] CanvasArrowGrid::ics_yHeads = null [protected]
 

double [][] CanvasArrowGrid::ics_Bx = null [protected]
 

double [][] CanvasArrowGrid::ics_By = null [protected]
 

double [][] CanvasArrowGrid::ics_Gx = null [protected]
 

double [][] CanvasArrowGrid::ics_Gy = null [protected]
 

int [] CanvasArrowGrid::ccs_xs = null [protected]
 

int [] CanvasArrowGrid::ccs_ys = null [protected]
 

int [][] CanvasArrowGrid::ccs_xHeads = null [protected]
 

int [][] CanvasArrowGrid::ccs_yHeads = null [protected]
 

int [][] CanvasArrowGrid::ccs_Bx = null [protected]
 

int [][] CanvasArrowGrid::ccs_By = null [protected]
 

int [][] CanvasArrowGrid::ccs_Gx = null [protected]
 

int [][] CanvasArrowGrid::ccs_Gy = null [protected]
 

double [][] CanvasArrowGrid::lengths = null [protected]
 

int [][] CanvasArrowGrid::angles = null [protected]
 


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