VR-Forces 4.0.4 Class Documentation
include/tmqt/tmSymbolUpdater.h
Go to the documentation of this file.
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 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)