Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members

FXRegionHelper.h

Go to the documentation of this file.
00001 /********************************************************************************
00002 *                                                                               *
00003 *                Region helper routines                                         *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 2003 by Mathew Robertson.   All Rights Reserved.                *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or                 *
00009 * modify it under the terms of the GNU Lesser General Public                    *
00010 * License as published by the Free Software Foundation; either                  *
00011 * version 2.1 of the License, or (at your option) any later version.            *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             *
00016 * Lesser General Public License for more details.                               *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public              *
00019 * License along with this library; if not, write to the Free Software           *
00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.    *
00021 ********************************************************************************/
00022 #ifndef FXREGIONHELPER_H
00023 #define FXREGIONHELPER_H
00024 
00025 namespace FXEX {
00026 
00027 /**
00028  * Creates a region object which you can then build up the shapes within that region.
00029  * This allows you to build up a shape as needed.
00030  */
00031 class FXAPI FXRegionHelper {
00032 
00033 protected:
00034   FXRegion region;          // the region to use
00035 
00036 private:
00037   // make an arc
00038   void makeArc(FXint x,FXint y,FXint w,FXint h,FXuint npoints,FXPoint *points);
00039 
00040 public:
00041   /// create regions
00042   void createPolygon(const FXPoint* points,FXuint npoints,FXbool winding=FALSE);
00043   void createEllipse(FXint x,FXint y,FXint w,FXint h,FXuint npoints=180);
00044   void createCircle(FXint x,FXint y,FXint w,FXuint npoints=180);
00045   void createRectangle(FXint x,FXint y,FXint w,FXint h);
00046   void createSquare(FXint x,FXint y,FXint w);
00047   void createTriangle(FXint x1,FXint y1,FXint x2,FXint y2,FXint x3,FXint y3);
00048 
00049 public:
00050   /// Construct region helper
00051   FXRegionHelper();
00052 
00053   /// Build from existing region helper
00054   FXRegionHelper(const FXRegionHelper&);
00055 
00056   /// Build region from existing region
00057   FXRegionHelper(const FXRegion& r);
00058 
00059   /// get the region
00060   FXRegion& getRegion() { return region; }
00061 
00062   /// reset/clear/empty the region back to a zero region
00063   void clear();
00064 
00065   /// assign to new region, from existing region helper
00066   FXRegionHelper& operator=(const FXRegionHelper& r);
00067 
00068   /// assign to new region, from existing region
00069   FXRegionHelper& operator=(const FXRegion& r);
00070 
00071   /// dtor
00072   virtual ~FXRegionHelper();
00073   };
00074 
00075 } // namespace FXEX
00076 #endif // FXREGIONHELPER_H