![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2001 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: tmSymbolUpdater.h,v $ $Revision: 1.48 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef TMSYMBOLUPDATER_H_ 00013 #define TMSYMBOLUPDATER_H_ 00014 00015 #include <QtCore/QHash> 00016 #include <vector> 00017 00018 class DtViewDriver; 00019 class DtTMArea; 00020 class DtTMSymbolUpdater; 00021 class DtNameLabelSymbol; 00022 class DtEnvironmentalModelData; 00023 class DtTMMapArea; 00024 class QPolygon; 00025 class QPoint; 00026 class DtSymbol; 00027 class DtTMDisplayOptions; 00028 class DtTMViewportExtents; 00029 class DtModelData; 00030 class DtPoint; 00031 class DtVector; 00032 class DtArchivableObject; 00033 00035 typedef void (*DtSymbolUpdatorCallback)(const DtTMSymbolUpdater* mapper, DtSymbol& s, const DtModelData& data, void* usr); 00036 typedef void (*DtPostSymbolUpdateCallback)(const DtTMSymbolUpdater*, DtSymbol&, const DtModelData&, void* usr); 00037 00038 #include "tmqt/tmqtDefines.h" 00039 class DT_DLL_tmqt DtUpdateCallbackInfo 00040 { 00041 public: 00042 DtUpdateCallbackInfo() : myUserData(NULL), myCallback(NULL) {}; 00043 DtUpdateCallbackInfo(DtSymbolUpdatorCallback fcn, void *usr); 00044 DtUpdateCallbackInfo(const DtUpdateCallbackInfo& orig) : 00045 myCallback(orig.myCallback), myUserData(orig.myUserData) {}; 00046 00047 virtual ~DtUpdateCallbackInfo(); 00048 00049 virtual DtSymbolUpdatorCallback callback(); 00050 virtual void* usertoLatin1(); 00051 00052 protected: 00053 DtSymbolUpdatorCallback myCallback; 00054 void* myUserData; 00055 }; 00056 00057 class DT_DLL_tmqt DtPostUpdateCallbackInfo 00058 { 00059 public: 00060 DtPostUpdateCallbackInfo(int type, DtPostSymbolUpdateCallback fcn, void *usr); 00061 DtPostUpdateCallbackInfo(const DtPostUpdateCallbackInfo& orig) : 00062 myCallback(orig.myCallback), myUserData(orig.myUserData), myType(orig.myType) {}; 00063 00064 virtual ~DtPostUpdateCallbackInfo(); 00065 00066 virtual DtPostSymbolUpdateCallback callback(); 00067 virtual void* usertoLatin1(); 00068 virtual int type(); 00069 00070 protected: 00071 DtPostSymbolUpdateCallback myCallback; 00072 void* myUserData; 00073 int myType; 00074 }; 00075 00076 typedef QVector<DtUpdateCallbackInfo> DtUpdateCallbackInfoList; 00077 00078 class DT_DLL_tmqt DtTMSymbolUpdater : public QObject 00079 { 00080 Q_OBJECT 00081 00082 public: 00083 00084 DtTMSymbolUpdater(); 00085 00086 virtual ~DtTMSymbolUpdater(); 00087 00089 virtual void init(DtTMArea* area); 00090 00093 virtual void setViewportExtents(const DtTMViewportExtents *); 00094 virtual const DtTMViewportExtents* viewportExtents() const; 00095 00098 virtual void setDisplayOptions(const DtTMDisplayOptions* o); 00099 virtual const DtTMDisplayOptions* displayOptions() const; 00100 00106 virtual void updateSymbol(DtSymbol&, const DtModelData&); 00107 00109 virtual void setViewDriver(const DtViewDriver* driver); 00110 00112 virtual void setResetLabelPositions(bool b); 00113 00115 virtual int defaultLineWidth(const DtEnvironmentalModelData& d, 00116 const DtTMDisplayOptions* opt) const; 00117 00119 virtual void addSymbolUpdateCallback(QString type, DtPostSymbolUpdateCallback fcn, void* usr = NULL); 00120 virtual void removeSymbolUpdateCallback(QString type, DtSymbolUpdatorCallback fcn); 00121 00124 virtual void addPostUpdateCallback(int iType, DtPostSymbolUpdateCallback fcn, void* usr); 00125 00127 virtual void removePostUpdateCallback(int iType, DtPostSymbolUpdateCallback fcn, void* usr); 00128 00131 virtual void removeAllPostUpdateCallbacks(); 00132 00134 virtual QPolygon* createScreenPtsFromDB(const QVector<DtPoint>* dbPoints) const; 00135 00137 virtual QPolygon* createScreenPtsFromDB(const QList<DtVector>* dbPoints) const; 00138 00140 virtual QPoint createScreenPtFromDB(const DtPoint& dbPoint) const; 00141 00143 virtual void setLocationDataFromModelData( DtSymbol& s, QVector<DtPoint> dbPoints ) const; 00144 00146 virtual bool processUpdateOptions(DtNameLabelSymbol* nls, const DtModelData& d, void* usr) const; 00147 00149 virtual bool updateVerticies(DtNameLabelSymbol* nls, QVector<DtPoint>* points) const; 00150 00152 virtual void updateLocalControlData(DtSymbol& s, const DtEnvironmentalModelData& d, void* usr) const; 00153 00155 virtual void updateGenericPosition(DtSymbol& s,const DtModelData& d) const; 00156 00157 protected: 00158 00160 virtual bool updateOptions(DtNameLabelSymbol* nls, const DtTMDisplayOptions* opt, 00161 const DtModelData& d, void* usr) const; 00162 00163 virtual bool updateOptionsFromDisplayOptions(DtNameLabelSymbol* nls, const DtModelData& d, void* usr) const; 00164 00165 virtual bool needsOptionUpdate(DtSymbol*) const; 00166 virtual bool needsOptionUpdate(const DtModelData&) const; 00167 00168 virtual void updateOptionCache(DtSymbol*) const; 00169 00171 virtual void invokePostUpdateCallbacks(DtSymbol&, const DtModelData&); 00172 00174 virtual void updateSymbol(DtNameLabelSymbol* es, const DtEnvironmentalModelData& d, void* usr) const; 00175 00177 virtual void updateNameLabel(DtNameLabelSymbol* pes, const DtModelData& d, void* usr) const; 00178 00180 virtual void updateLabelLabel(DtNameLabelSymbol* pes, const DtModelData& d, void* usr) const; 00181 00183 virtual void updateLayerLabel(DtNameLabelSymbol* pes, const DtModelData& d, void* usr) const; 00184 00186 virtual bool updateVerticies(DtNameLabelSymbol* pes, 00187 const DtEnvironmentalModelData& d, 00188 void* usr) const; 00189 00193 virtual bool updateVerticies(DtNameLabelSymbol* nls, DtSymbol* s, 00194 const DtModelData& d, void* usr) const; 00195 00197 virtual bool updateVerticies(DtNameLabelSymbol* nls, DtSymbol* s, 00198 const QVector<DtPoint>& pnts, const DtModelData& d, void* usr) const; 00199 00200 00202 virtual void updateColorOptions(DtNameLabelSymbol* nls, const DtTMDisplayOptions* pdo, 00203 const DtEnvironmentalModelData& d, void* usr) const; 00204 00206 virtual bool isValidUpdatableData(const DtModelData& d) const; 00207 00209 virtual void setLineEditable(const DtModelData& d, DtNameLabelSymbol* nls) const; 00210 00212 virtual bool terrainLoaded() const; 00213 00214 public: 00215 00217 static DtTMSymbolUpdater* create(); 00218 00221 static void updateGenericPositionCb(const DtTMSymbolUpdater* updater, DtSymbol& s, 00222 const DtModelData& d, void* usr=0); 00223 00226 static void updateLocalControlDataCb(const DtTMSymbolUpdater* updater, DtSymbol& s, 00227 const DtModelData& d, void* usr); 00228 00231 static void updateNameLabelCb(const DtTMSymbolUpdater* updater, DtSymbol& s, 00232 const DtModelData& d, void* usr); 00233 00236 static void updateLabelLabelCb(const DtTMSymbolUpdater* updater, DtSymbol& s, 00237 const DtModelData& d, void* usr); 00238 00241 static void updateLayerLabelCb(const DtTMSymbolUpdater* updater, DtSymbol& s, 00242 const DtModelData& d, void* usr); 00243 00244 protected: 00245 00246 const DtTMViewportExtents * myViewportExtents; 00247 const DtTMDisplayOptions* myTMDisplayOptions; 00248 const DtTMArea* myArea; 00250 const DtTMMapArea* myMapArea; 00251 QHash<QString, DtUpdateCallbackInfoList> myUpdators; 00252 const DtViewDriver* myViewDriver; 00253 bool myResetLabelPositions; 00254 QList<DtPostUpdateCallbackInfo> myPostUpdateCallbacks; 00255 }; 00256 00257 #endif //TMSYMBOLUPDATER_H_ 00258