pFigure.cxx

Go to the documentation of this file.
00001 
00002 //----------------------------------------------------------------------------------------------------------------
00003 // Class definition include
00004 //----------------------------------------------------------------------------------------------------------------
00005 #include "pFigure.h"
00006 
00007 // ---------------------------------------------------------------------------------------------------------------
00008 // WX headers inclusion.
00009 // For compilers that support precompilation, includes <wx/wx.h>.
00010 // ---------------------------------------------------------------------------------------------------------------
00011 
00012 #ifndef WX_PRECOMP
00013 #include <wx/wx.h>
00014 #endif
00015 
00016 //----------------------------------------------------------------------------------------------------------------
00017 // Class implementation
00018 //----------------------------------------------------------------------------------------------------------------
00020 IMPLEMENT_CLASS(pFigure, wxObject)
00021 
00022         //------------------------------------------------------------------------------------------------------------
00023         // Constructors & Destructors
00024         //------------------------------------------------------------------------------------------------------------
00032         pFigure :: pFigure(int edges_n, int _w, int _h, int _orientation, bool bar_orientation)
00033         {
00034                 edges = edges_n;
00035                 orientation = _orientation;
00036                 width = _w;
00037                 heigth = _h;
00038                 setBarOrientation( bar_orientation );
00039         }
00040 
00041         pFigure :: ~pFigure()
00042         {
00043 
00044         }
00045 
00046         //------------------------------------------------------------------------------------------------------------
00047         // Methods
00048         //------------------------------------------------------------------------------------------------------------
00049 
00054         int pFigure :: getNumberEdges()
00055         {
00056                 return edges;
00057         }
00058 
00063         void pFigure :: setNumberEdges(int n_edges)
00064         {
00065                 edges = n_edges;
00066         }
00067 
00073         void pFigure :: getVertexPoints(wxPoint thePoints[])
00074         {
00075                 if (edges == TRIANGLE)
00076                 {
00077                         int halfWidth = 0;
00078                         int halfHeigth = 0;
00079                         if ( barOrientation ) // HORIZONTAL
00080                         {
00081                                 halfWidth = (int)(width/2);
00082                                 halfHeigth = (int)(heigth/2);
00083                                 switch ( orientation ) 
00084                                 {
00085                                   case UP : 
00086                                         thePoints[0].x = halfWidth;
00087                                         thePoints[0].y = 0;
00088                                         thePoints[1].x = width;
00089                                         thePoints[1].y = heigth;
00090                                         thePoints[2].x = -halfWidth;
00091                                         thePoints[2].y = heigth;
00092                                         break;
00093                                         
00094                                   case DOWN : 
00095                                         thePoints[0].x = halfWidth;
00096                                         thePoints[0].y = heigth;
00097                                         thePoints[1].x = width;
00098                                         thePoints[1].y = 0;
00099                                         thePoints[2].x = -halfWidth;
00100                                         thePoints[2].y = 0;
00101                                         break;
00102 
00103                                   case LEFT : 
00104                                         thePoints[0].x = 0;
00105                                         thePoints[0].y = halfHeigth;
00106                                         thePoints[1].x = width;
00107                                         thePoints[1].y = 0;
00108                                         thePoints[2].x = width;
00109                                         thePoints[2].y = heigth;
00110                                         break;
00111 
00112                                   case RIGHT :          
00113                                         thePoints[0].x = width;
00114                                         thePoints[0].y = halfHeigth;            
00115                                         thePoints[1].x = 0;
00116                                         thePoints[1].y = 0;
00117                                         thePoints[2].x = 0;
00118                                         thePoints[2].y = heigth;
00119                                         break;
00120                                 }                       
00121                         }
00122                         else // VERTICAL
00123                         {
00124                                 halfWidth = (int)(heigth/2);
00125                                 halfHeigth = (int)(width/2);
00126                                 switch ( orientation ) 
00127                                 {
00128                                   case UP : 
00129                                         thePoints[0].x = halfWidth;
00130                                         thePoints[0].y = 0;
00131                                         thePoints[1].x = heigth;
00132                                         thePoints[1].y = width;
00133                                         thePoints[2].x = -halfWidth;
00134                                         thePoints[2].y = width;
00135                                         break;
00136                                         
00137                                   case DOWN : 
00138                                         thePoints[0].x = halfWidth;
00139                                         thePoints[0].y = width;
00140                                         thePoints[1].x = heigth;
00141                                         thePoints[1].y = 0;
00142                                         thePoints[2].x = -halfWidth;
00143                                         thePoints[2].y = 0;
00144                                         break;
00145 
00146                                   case LEFT : 
00147                                         thePoints[0].x = 0;
00148                                         thePoints[0].y = halfHeigth;
00149                                         thePoints[1].x = heigth;
00150                                         thePoints[1].y = -halfHeigth;
00151                                         thePoints[2].x = heigth;
00152                                         thePoints[2].y = width;
00153                                         break;
00154 
00155                                   case RIGHT :          
00156                                         thePoints[0].x = heigth;
00157                                         thePoints[0].y = halfHeigth;            
00158                                         thePoints[1].x = 0;
00159                                         thePoints[1].y = -halfHeigth;
00160                                         thePoints[2].x = 0;
00161                                         thePoints[2].y = width;
00162                                         break;
00163                                 }       
00164                         }                               
00165                 }
00166                 else if (edges == RECTANGLE)
00167                 {
00168                         if ( barOrientation ) // HORIZONTAL
00169                         {
00170                                 thePoints[0].x = 0;
00171                                 thePoints[0].y = 0;             
00172                                 thePoints[1].x = width;
00173                                 thePoints[1].y = 0;
00174                                 thePoints[2].x = width;
00175                                 thePoints[2].y = heigth;
00176                                 thePoints[3].x = 0;
00177                                 thePoints[3].y = heigth;
00178                         }
00179                         else // VERTICAL
00180                         {
00181                                 thePoints[0].x = 0;
00182                                 thePoints[0].y = 0;             
00183                                 thePoints[1].x = heigth;
00184                                 thePoints[1].y = 0;
00185                                 thePoints[2].x = heigth;
00186                                 thePoints[2].y = width;
00187                                 thePoints[3].x = 0;
00188                                 thePoints[3].y = width;
00189                         }
00190                 }
00191         }
00192 
00197         void pFigure :: setVertexPoints(wxPoint * n_points)
00198         {
00199                 v_points = n_points;
00200         }
00201 
00202         /*
00203         * Sets the heigth of the figure
00204         * @param _h The heigth to set
00205         */
00206         void pFigure :: setHeigth(int _h)
00207         {
00208                 heigth = _h;
00209         }
00210 
00211         /*
00212         * Gets the heigth of the figure
00213         * @retval heigth The heigth of the figure
00214         */
00215         int pFigure :: getHeigth()
00216         {
00217                 return heigth;
00218         }
00219 
00220         /*
00221         * Sets the width of the figure
00222         * @param _w The width to set
00223         */
00224         void pFigure :: setWidth(int _w)
00225         {
00226                 width = _w;
00227         }
00228 
00229         /*
00230         * Gets the width of the figure
00231         * @retval width The width of the figure
00232         */
00233         int pFigure :: getWidth()
00234         {
00235                 return width;
00236         }
00237 
00238         /*
00239         * Indicates if a pixel point is inside the figure
00240         * @param xFig_PixelPoint The known reference point inside the figure
00241         * @param xPixel The x-pixel coord asking for
00242         * @retval Returns true if the point is inside
00243         */
00244         bool pFigure :: isPointInside(int xFig_PixelPoint, int xPixel)
00245         {
00246                 bool isInside = false;
00247 
00248                 if (edges == TRIANGLE)
00249                 {
00250                         int halfWidth = (int)(width/2)+1;
00251                         int halfHeigth = (int)(heigth/2)+1;
00252                         if ( orientation == UP || orientation == DOWN )
00253                         {
00254                                 isInside = (xPixel>=xFig_PixelPoint-halfWidth) && (xPixel<=xFig_PixelPoint+halfWidth);
00255                         }
00256                         else if( orientation == LEFT || orientation == RIGHT )
00257                         {
00258                                 isInside = (xPixel>=xFig_PixelPoint-halfHeigth) && (xPixel<=xFig_PixelPoint+halfHeigth);
00259                         }                                               
00260                 }
00261                 else if (edges == RECTANGLE)
00262                 {
00263                         isInside = (xPixel >= xFig_PixelPoint) && (xPixel<=xFig_PixelPoint+width);
00264                 }
00265                 return isInside;
00266         }
00267 
00268         /*
00269         * Sets the bar orientation 
00270         * @ bar_orientation The orientation to set (true for horizontal, false for vertical)
00271         */
00272         void pFigure :: setBarOrientation(bool bar_orientation)
00273         {
00274                 barOrientation = bar_orientation;
00275         }
00276 
00277         /*
00278         * Sets the bar orientation used for triangles
00279         * @ bar_orientation The orientation to set (LEFT = -4, RIGHT = -6, UP = -8, DOWN = -2)
00280         */
00281         void pFigure :: setFigureOrientation(int fig_orientation)
00282         {
00283                 orientation = fig_orientation;
00284         }
00285 
00286 
00287 
00288 

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1