![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2001 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: overlaySymbolMapper.h,v $ $Revision: 1.20 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DTOVERLAYSYMBOLMAPPER_H_ 00013 #define DTOVERLAYSYMBOLMAPPER_H_ 00014 00015 #include <QtCore/QHash> 00016 #include <QtGui/QColor> 00017 #include <QtCore/QList> 00018 00019 #include "symbolMapper/symbolMapper.h" 00020 #include "symbology/pointObjSymbol.h" 00021 #include "symbology/lineObjSymbol.h" 00022 #include "symbology/areaObjSymbol.h" 00023 #include "symbology/circleObjSymbol.h" 00024 #include "symbolDrawer/multiLineDrawer.h" 00025 #include "symbolDrawer/polygonDrawer.h" 00026 #include "symbolMapper/overlaySymbolDesc.h" 00027 00028 class DtSymbol; 00029 class DtObjectType; 00030 class DtSymbolDrawer; 00031 class DtDrawerColl; 00032 class DtPoint; 00033 class DtTTSSymbol; 00034 class DtNameLabelSymbol; 00035 class DtEntityMapperKey; 00036 class DtEnvironmentalModelData; 00037 class DtColorizedSymbol; 00038 00039 class DtOverlaySymbolMapper; 00040 00041 typedef DtSymbol* (*DtControlObjectCreatorFcn)(DtOverlaySymbolMapper*, const DtEntityMapperKey&, int); 00042 #include "symbolMapper/symbolMapperDefines.h" 00043 class DT_DLL_symbolMapper DtControlObjectCreatorInfo 00044 { 00045 public: 00046 DtControlObjectCreatorInfo(DtControlObjectCreatorFcn fcn); 00047 DtControlObjectCreatorInfo(const DtControlObjectCreatorInfo& orig) : 00048 myCreator(orig.myCreator) 00049 { 00050 } 00051 00052 virtual ~DtControlObjectCreatorInfo(); 00053 00054 virtual void setCreator(DtControlObjectCreatorFcn fcn); 00055 virtual DtControlObjectCreatorFcn creator(); 00056 00057 protected: 00058 DtControlObjectCreatorFcn myCreator; 00059 }; 00060 00061 class DT_DLL_symbolMapper DtOverlaySymbolMapper : public DtSymbolMapper 00062 { 00063 Q_OBJECT 00064 00065 public: 00066 00067 DtOverlaySymbolMapper(); 00068 DtOverlaySymbolMapper(DtBaseSymbolMapper*); 00069 00070 virtual ~DtOverlaySymbolMapper(); 00071 00072 00078 virtual DtSymbol* createSymbol(const DtModelData& d); 00079 00080 virtual void setColor(int currColor); 00081 virtual void setWidth(int currWidth); 00082 virtual int width(); 00083 00084 virtual bool init(); 00085 00087 virtual void addControlObjectCreator(int kind, DtControlObjectCreatorFcn fcn); 00088 00089 virtual QPixmap getIcon(const DtModelData* d); 00090 00091 public: 00092 virtual DtCompositeSymbol* createPointSymbol(const DtEntityMapperKey& type, int force, 00093 DtSymbolCreatorFcn fcn = DtPointObjectSymbol::create); 00094 virtual DtCompositeSymbol* createLineObjectSymbol(const DtEntityMapperKey& type, int force, 00095 DtSymbolCreatorFcn fcn = DtLineObjectSymbol::create); 00096 virtual DtCompositeSymbol* createAreaObjectSymbol(const DtEntityMapperKey& type, int force, 00097 DtSymbolCreatorFcn fcn = DtAreaObjectSymbol::create); 00098 virtual DtCompositeSymbol* createCircleSymbol(const DtEntityMapperKey& type, int force, 00099 DtSymbolCreatorFcn fcn = DtCircleObjectSymbol::create); 00100 00101 static DtSymbol* processCreateCircleSymbol(DtOverlaySymbolMapper* mapper, 00102 const DtEntityMapperKey& type, int force); 00103 static DtSymbol* processCreatePointSymbol(DtOverlaySymbolMapper* mapper, 00104 const DtEntityMapperKey& type, int force); 00105 static DtSymbol* processCreateLineSymbol(DtOverlaySymbolMapper* mapper, 00106 const DtEntityMapperKey& type, int force); 00107 static DtSymbol* processCreateAreaSymbol(DtOverlaySymbolMapper* mapper, 00108 const DtEntityMapperKey& type, int force); 00109 00110 public: 00111 static DtSymbol* createNewSymbol(const DtBaseSymbolMapper* mapper, const DtModelData& data, void *usr); 00112 static DtBaseSymbolMapper* create(); 00113 00114 public: 00117 virtual DtEnvironmentalModelData* createObject(const QString& object, QVector<DtPoint>& points, 00118 const QString& name = QString::null); 00119 00146 virtual DtOverlaySymbolDescriptor* addOverlayObject(const DtEntityMapperKey&, 00147 const QString& tab, const QString& symbolName, const QString& iconFileName, const QString& minimumDataPoints, 00148 DtSymbolDescriptor* symbolType, bool addToMenu = true); 00149 00150 const QList<DtOverlaySymbolDescriptor*>& additionalMenuItems() const; 00151 00154 virtual bool creationKeyFor(const QString& name, DtEntityMapperKey& retKey) const; 00155 00156 protected: 00157 virtual DtSymbol* processCreateSymbol(const DtEnvironmentalModelData& data, void *usr); 00158 virtual DtSymbol* processCreateSymbol(const DtCompassModelData& data, void *usr); 00159 virtual DtSymbol* getControlObjectSymbol(const DtEntityMapperKey& type, int force, 00160 const DtEnvironmentalModelData& data); 00161 virtual void modifySymbol(DtSymbol* symbol, DtSymbolDescriptor* symDesc, int force, const DtEntityMapperKey& emk); 00162 00163 protected: 00164 virtual void addLayerLabel(DtNameLabelSymbol* symbol); 00165 virtual void formatLabels(DtNameLabelSymbol* symbol, const DtEntityMapperKey& type); 00166 virtual void formatColor(DtNameLabelSymbol* color, const DtEnvironmentalModelData& type); 00167 virtual DtCompositeSymbol* createOverlaySymbol(const DtEntityMapperKey& type, int force, 00168 DtSymbolCreatorFcn fcn); 00169 00170 signals: 00172 void overlayDescriptorAdded(DtOverlaySymbolDescriptor*); 00173 00174 private: 00175 DtOverlaySymbolMapper(const DtOverlaySymbolMapper& orig); 00176 DtOverlaySymbolMapper& operator=(const DtOverlaySymbolMapper orig); 00177 00178 protected: 00179 unsigned char myCurrentColor; 00180 int myCurrentWidth; 00181 00182 DtMultiLineDrawer myMultiLineDrawer; 00183 DtPolygonDrawer myPolygonDrawer; 00184 00185 QHash<int, DtControlObjectCreatorInfo> myControlObjectCreators; 00186 QList<DtOverlaySymbolDescriptor*> myAdditionalMenuItems; 00187 }; 00188 00189 inline const QList<DtOverlaySymbolDescriptor*>& DtOverlaySymbolMapper::additionalMenuItems() const 00190 { 00191 return myAdditionalMenuItems; 00192 } 00193 00194 #endif