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

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)