![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2001 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: circleSymbol.h,v $ $Revision: 1.21 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtCircleSymbol_H_ 00013 #define DtCircleSymbol_H_ 00014 00015 #include "symbology/colorizedSymbol.h" 00016 00017 class DtNullDrawer; 00018 class DtCircleDrawer; 00019 00020 const int DtCircleSelected_None = 0; 00021 const int DtCircleSelected_Origin = 0x00000001; 00022 const int DtCircleSelected_Circle = 0x00000002; 00023 00024 class DtArcInfo; 00025 00027 #include "symbology/symbologyDefines.h" 00028 class DT_DLL_symbology DtCircleSymbol : public DtColorizedSymbol 00029 { 00030 public: 00031 00032 enum DtCircleStyle{ 00033 DtStyle_NoCircle = 0, 00034 DtStyle_Outline, 00035 DtStyle_Fill, 00036 DtStyle_Pattern, 00037 DtStyle_NoEntry, 00038 DtStyle_CrossHair, 00039 DtStyle_Pie, 00040 DtStyle_CircleStyle_MAX 00041 }; 00042 00044 DtCircleSymbol( DtSymbolDrawer & drawer); 00045 00047 DtCircleSymbol( DtNullDrawer & drawer); 00048 00050 DtCircleSymbol(const DtCircleSymbol& orig); 00051 00053 DtCircleSymbol& operator=(const DtCircleSymbol& orig); 00054 00056 virtual ~DtCircleSymbol(); 00057 00059 virtual DtSymbol * clone()const; 00060 00064 virtual void setRadius(const double r); 00065 00067 virtual double radius() const; 00068 00069 //If you want an ellipse, the following two functions 00070 //should be called 00071 00074 virtual void setYRadius(const double r); 00075 00077 virtual double yRadius() const; 00078 00081 virtual void setRotationDegrees(const double rot); 00082 00084 virtual double rotationDegrees() const; 00085 00087 virtual void setCircleStyle(DtCircleStyle style); 00088 virtual DtCircleStyle circleStyle() const; 00089 00090 virtual void setBrushStyle(Qt::BrushStyle style); 00091 virtual Qt::BrushStyle brushStyle() const; 00092 00093 virtual void setPenStyle(Qt::PenStyle style); 00094 virtual Qt::PenStyle penStyle() const; 00095 00097 virtual bool select(const QPoint &aPoint); 00098 virtual bool select(const QPoint &aPoint, const QSize &aSize); 00099 00101 virtual bool pointInCircle(const QPoint &aPoint, QPoint ¢erPoint, 00102 float xRadius, float yRadius, int penThickness); 00103 00105 virtual bool rectInCircle(const QRect &aPoint, QPoint ¢erPoint, 00106 float xRadius, float yRadius, int penThickness); 00107 virtual bool rectInSmallerCircle(const QRect &aRect, QPoint ¢erPoint, 00108 float xRadius, float yRadius, int penThickness); 00109 00110 bool operator==(const DtCircleSymbol& orig) const; 00111 bool operator!=(const DtCircleSymbol& orig) const; 00112 00113 virtual bool transparentCacheChanged() const; 00114 00120 virtual void setArcInfo(double radius, int sweep, double arcStartAngle); 00121 virtual const DtArcInfo* arcInfo() const; 00122 virtual void clearArcInfo(); 00123 00124 virtual Qt::PenStyle crossHairStyle() const; 00125 virtual void setCrossHairStyle(Qt::PenStyle style); 00126 00127 virtual bool patternCacheChanged() const; 00128 virtual void cachePatternVariables(); 00129 virtual bool needsPatternRedraw() const; 00130 virtual QPixmap* patternImage() const; 00131 virtual QPixmap* cachePatternImage(const QPixmap& pixmap); 00132 00134 void setScaleRadiusByScaleFactor(bool); 00135 bool scaleRadiusByScaleFactor() const; 00136 virtual bool isScalable() const; 00137 00138 private: 00140 DtCircleSymbol(); 00141 00142 protected: 00143 double myRadius; 00144 00145 double myYRadius; 00146 double myRotationDegrees; 00147 00148 DtCircleStyle myCircleStyle; 00149 Qt::BrushStyle myBrushStyle; 00150 Qt::PenStyle myPenStyle; 00151 Qt::PenStyle myCrossHairStyle; 00152 00153 DtArcInfo* myArcInfo; 00154 DtSymbol* myPatternCachedSymbol; 00155 QPixmap* myPatternImage; 00156 00157 bool myScaleRadiusByScaleFactor; 00158 }; 00159 00160 class DtArcInfo 00161 { 00162 public: 00163 DtArcInfo(int i, double o) : mySweep(i), myArcStart(o) {}; 00164 DtArcInfo(const DtArcInfo& a) : mySweep(a.mySweep), myArcStart(a.myArcStart) {}; 00165 00166 int mySweep; 00167 double myArcStart; 00168 }; 00169 00170 inline void DtCircleSymbol::setScaleRadiusByScaleFactor(bool b) 00171 { 00172 myScaleRadiusByScaleFactor = b; 00173 } 00174 00175 inline bool DtCircleSymbol::scaleRadiusByScaleFactor() const 00176 { 00177 return myScaleRadiusByScaleFactor; 00178 } 00179 00180 #endif