![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2006 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: compositeSymbol.h,v $ $Revision: 1.52 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef DtCompositeSymbol_H_ 00013 #define DtCompositeSymbol_H_ 00014 00015 #include "symbology/symbol.h" 00016 #include "symbology/symbologyDefines.h" 00017 00018 class DtLineSymbol; 00019 00025 const int DtShowSymbolIndicatorsAlways = 0; 00026 const int DtShowSymbolIndicatorsNever = 1; 00027 const int DtShowSymbolIndicatorsWhenSelected = 2; 00028 00033 00034 class DT_DLL_symbology DtCompositeSymbol : public DtSymbol 00035 { 00036 Q_OBJECT 00037 00038 public: 00040 DtCompositeSymbol(const DtCompositeSymbol& orig); 00041 DtCompositeSymbol& operator=(const DtCompositeSymbol& orig); 00042 virtual ~DtCompositeSymbol(); 00043 00045 DtCompositeSymbol( DtSymbolDrawer & drawer ); 00046 DtCompositeSymbol( DtSymbolDrawer & drawer, 00047 const DtDisplayPoint & center); 00048 00051 virtual DtSymbol* clone() const; 00052 00053 virtual bool setLocationData(const QPolygon*); 00054 00055 void shift(QPoint p); 00056 00057 //Draw -> draws the children not itself... 00058 virtual void draw(QPainter& paint) const; 00059 virtual void drawHidden(QPainter& paint) const; 00060 00063 virtual const DtDisplayPoint centerPoint() const; 00064 00066 virtual bool select(const QPoint& point); 00067 00070 virtual void addSymbol(DtSymbol* symbol, bool isALabel = false); 00071 00074 virtual void removeSymbol(const DtSymbol* symbol, bool deleteSymbol = true, bool resetMainSymbol = false); 00075 virtual void removeSymbol(int iIndex, bool deleteSymbol = true, bool resetMainSymbol = false); 00076 00079 virtual void removeAllSymbols(const QVector<DtSymbol*>& except = QVector<DtSymbol*>()); 00080 00084 virtual DtSymbol* setMainSymbol(DtSymbol* symbol); 00085 virtual DtSymbol* mainSymbol() const; 00086 00089 virtual DtSymbol* getSymbolByName(const QString& name); 00090 00093 virtual bool isComposite() {return true;} 00094 00096 virtual QSize bbox() const; 00097 00100 virtual QRect selBbox() const; 00101 00102 virtual bool overlapsSymbol(const DtSymbol & aSymbol, 00103 const DtSymbol_OverlapTest aTest = DtSymbol_BoxPieces, 00104 const float aTolerance = 0) const; 00105 00106 //This function JUST compares the labels of the object for 00107 //overlap as opposed to the object itself 00108 virtual bool labelsOverlapsSymbol(const DtSymbol & aSymbol, 00109 const DtSymbol_OverlapTest aTest = DtSymbol_BoundingBox, 00110 const float aTolerance = 0) const; 00111 00112 virtual DtSymbolList* childrenList() const; 00113 virtual DtSymbolList* labelList() const; 00114 00116 virtual bool show(DtShowHideContext module); 00117 00119 virtual bool hide(DtShowHideContext module); 00120 00122 virtual void setDrawOrder(); 00123 00125 virtual DtSymbol* editableSymbol(); 00126 00130 virtual int labelOffset(const DtSymbol* s) const; 00131 virtual void setLabelOffset(int i); 00132 00134 virtual const QPoint& lowestLabelOffset() const; 00135 00136 virtual void setTransparencyLevel(int i); 00137 00139 virtual void hideAllChildren(DtShowHideContext iModule = DtDefaultShowHideContext); 00140 00142 virtual void showAllChildren(DtShowHideContext iModule = DtDefaultShowHideContext); 00143 00151 virtual void setShadowText(bool b); 00152 00153 virtual void blockSignals(bool); 00154 00156 virtual bool originIsCenterOfMass() const; 00157 00158 static DtSymbol* create(DtSymbolDrawer& drawer); 00159 virtual void setCacheSymbolAsBitmap(bool); 00160 00161 virtual void setShowIndicatorOption(int); 00162 int showIndicatorOption() const; 00163 00164 virtual DtShowHideContext mapIndicatorOptionToContext(int) const; 00165 virtual void setHighlight(const bool highlight); 00166 00168 virtual bool editMode(); 00169 virtual void setEditMode(bool onOff); 00170 00171 virtual void reset(); 00172 00173 protected: 00174 virtual bool transparentCacheChanged() const; 00175 virtual void cacheTransparentVariables(); 00176 00177 protected slots: 00179 virtual void symbolDestroyed(const DtSymbol *s); 00180 00182 virtual void symbolRemoved(const DtSymbol* s); 00183 00184 protected: 00186 virtual void setChildrenList(DtSymbolList* list); 00187 00189 virtual bool forceUpdate() const; 00190 00193 virtual void draw(DtSymbol* symbol, QPainter& paint) const; 00194 virtual void drawHidden(DtSymbol* symbol, QPainter& paint) const; 00195 00196 virtual void setScaleBy(double factor); 00197 virtual bool isScalable() const; 00198 00200 virtual void setupSelect(); 00201 virtual void selectSymbols(); 00202 00203 virtual void wasHidden(DtSymbol* sym); 00204 virtual void wasShown(DtSymbol* sym); 00205 00206 private: 00208 DtCompositeSymbol(); 00209 00210 protected: 00211 DtSymbolList* myChildrenList; 00212 DtSymbolList* myLabelList; 00213 DtSymbol* myMainSymbol; 00214 DtSymbolList* myDrawOrder; 00215 DtSymbolList* mySelectedChildren; 00216 int myLabelOffset; 00217 QPoint myLastParentOffset; 00218 bool myShadowText; 00219 int myShowIndicatorOption; 00220 }; 00221 00222 inline int DtCompositeSymbol::showIndicatorOption() const 00223 { 00224 return myShowIndicatorOption; 00225 } 00226 00227 #endif