![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: terrainSelector.h,v $ $Revision: 1.11 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef terrainSelector_H_ 00013 #define terrainSelector_H_ 00014 00015 #include "tmqt/symbolSelector.h" 00016 #include "symbolMapper/terrainModelData.h" 00017 00018 #include <gdb/netwrkElemnt.h> 00019 00020 class DtNetworkEdge; 00021 class DtTerrainDatabase; 00022 class DtNetworkSegment; 00023 class DtSpecification; 00024 00026 00030 00031 #include "terrainqt/terrainqtDefines.h" 00032 class DT_DLL_terrainqt DtTerrainSelector : public DtSymbolSelector 00033 { 00034 Q_OBJECT 00035 00036 public: 00037 00038 enum DtTerrainSelectionMode 00039 { 00040 DtAllFeaturesWithinRange, 00041 DtAllSegmentsWithinRange, 00042 DtAllPolygons 00043 }; 00044 00045 DtTerrainSelector(); 00046 virtual ~DtTerrainSelector(); 00047 00048 static DtTerrainSelector* create(); 00049 00050 private: 00052 DtTerrainSelector(const DtTerrainSelector& orig); 00053 00055 DtTerrainSelector& operator=(const DtTerrainSelector& orig); 00056 00057 public: 00059 virtual void selectSymbols(DtModelDataIter *iter, Qt::KeyboardModifiers keyState, Qt::MouseButtons mouseState); 00060 00062 virtual void setTerrainDatabase(const DtTerrainDatabase* db); 00063 virtual const DtTerrainDatabase* terrainDatabase() const; 00064 00065 virtual void setTerrainSelectionMode(DtTerrainSelectionMode mode); 00066 virtual DtTerrainSelectionMode terrainSelectionMode() const; 00067 00069 virtual void setScreenRange(int iPixels); 00070 00072 virtual void clear(); 00073 00076 virtual void select(const DtSpecification& spec, bool merge); 00077 00079 virtual bool selectNode(const DtSpecification& spec, 00080 QList<DtNetworkElement*>& segments, QList<DtNetworkSpecElement*>& edges); 00081 00082 virtual bool selectEdges(const DtSpecification& spec, 00083 QList<DtNetworkElement*>& segments, QList<DtNetworkSpecElement*>& edges); 00084 virtual bool selectAllEdges(QList<DtNetworkElement*>& segments, 00085 QList<DtNetworkSpecElement*>& edges); 00086 virtual void endSelection(Qt::KeyboardModifiers keyState, Qt::MouseButtons mouseState); 00087 00088 protected: 00089 virtual int calculateInterestRange(); 00090 00091 protected: 00092 00095 virtual void rectangleSelect(int iInterestRange, const QPoint& start, const QPoint& end, 00096 QList<DtNetworkElement*>& list, QList<DtNetworkSpecElement*>& edges); 00097 00099 virtual void pointSelect(int iInterestRange, QList<DtNetworkElement*>& list, 00100 QList<DtNetworkSpecElement*>& edges); 00101 00102 virtual void selectFeaturesByExtent(DtExtent &ext, Qt::KeyboardModifiers keyState, Qt::MouseButtons mouseState); 00103 00106 virtual void extentSelect(int iInteresRange, QList<DtNetworkElement*>& segments, 00107 QList<DtNetworkSpecElement*>& edges); 00108 00110 virtual void selectByMode(int iInterestRange, const DtNetworkEdge* edge, 00111 QList<DtNetworkElement*>& list, QList<DtNetworkSpecElement*>& edges); 00112 00115 virtual void collectSegment(int iInterestRange, const DtNetworkEdge* edge, 00116 QList<DtNetworkElement*>& list, QList<DtNetworkSpecElement*>& edges); 00117 00119 virtual void collectAllSegments(int iInterestRange, const DtNetworkEdge* edge, 00120 QList<DtNetworkElement*>& list, QList<DtNetworkSpecElement*>& edges); 00121 00122 virtual void completeSelection(QList<DtNetworkElement*>& segments, 00123 QList<DtNetworkSpecElement*>& edges, Qt::KeyboardModifiers keyState, Qt::MouseButtons mouseState); 00124 00125 virtual bool keepUnknownKeys() const; 00126 00127 protected: 00128 virtual void highlightSymbols(QVector<DtModelKey>* display = 0); 00129 00133 virtual void updateTerrainModelData(QList<DtNetworkElement*>& segments, bool merge); 00134 virtual void updateNetworkSpecification(DtNetworkSpecElement* parent, DtNetworkSegment* segment, bool merge); 00135 00136 protected: 00137 QHash<DtModelKey, DtTerrainModelData*> myTerrainModelData; 00138 00139 const DtTerrainDatabase* myTerrainDatabase; 00140 DtTerrainSelectionMode myTerrainSelectionMode; 00141 00142 int myScreenRange; 00143 }; 00144 00145 inline bool DtTerrainSelector::keepUnknownKeys() const 00146 { 00147 return true; 00148 } 00149 00150 #endif