VR-Forces 4.0.4 Class Documentation
include/drawertdb/terrainPolygonDrawer.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2006 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: terrainPolygonDrawer.h,v $ $Revision: 1.3 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef TERRAINPOLYGONDRAWER_H
00013 #define TERRAINPOLYGONDRAWER_H
00014 
00015 #include "drawertdb/drawertdbDefines.h"
00016 #include "drawertdb/terrainDrawer.h"
00017 
00018 #include <QtGui/QColor>
00019 
00020 class DtGroup;
00021 class DtGdbNode;
00022 class DtHomogeneousTransfMatrix;
00023 class DtLevelOfDetail;
00024 class DtBaseCoordinateSystem;
00025 class DtFeature;
00026 class DtFileNode;
00027 class DtAllTypesPolygon;
00028 
00034 
00035 typedef QColor (*DtPolygonColorFcn)(const DtAllTypesPolygon*, const DtViewportExtents* v, void* usr);
00036 
00037 class DT_DLL_drawertdb DtTerrainPolygonDrawer : public DtTerrainDrawer
00038 {
00039 public:
00040    DtTerrainPolygonDrawer();
00041    DtTerrainPolygonDrawer(const DtTerrainPolygonDrawer&);
00042 
00043    virtual ~DtTerrainPolygonDrawer();
00044 
00045    const DtTerrainPolygonDrawer& operator=(const DtTerrainPolygonDrawer&);
00046 
00048    void setDrawBoundingVolumes(bool);
00049    bool drawBoundingVolumes() const;
00050 
00051    void setBoundingVolumesColor(const QColor&);
00052    const QColor& boundingVolumesColor() const;
00053 
00054    void setPolygonColorFcn(DtPolygonColorFcn, void*);
00055 
00056    static DtTerrainPolygonDrawer* create();
00057 
00059    virtual void drawPolygons(const DtAllTypesPolygon *polygon,
00060          const DtViewportExtents* v, DtPrimitiveDrawer* painter);
00061 
00063    virtual void colorPolygonByHeight(DtAllTypesPolygon& thePolygon, const DtViewportExtents* v);
00064 
00065 protected:
00066    virtual void internalDraw(const DtTerrainDatabase*, const DtViewportExtents*, DtPrimitiveDrawer* painter);
00067 
00068 protected:
00070    virtual void drawAllNodeTypes(const DtGdbNode* node,
00071       const DtHomogeneousTransfMatrix &matrix, const DtViewportExtents* v, DtPrimitiveDrawer* painter);
00072 
00073    virtual void drawGroup(const DtGroup *group,
00074       const DtHomogeneousTransfMatrix &matrix, const DtViewportExtents* v, DtPrimitiveDrawer* painter);
00075 
00076    virtual void drawLevelOfDetail(const DtLevelOfDetail *level_of_detail,
00077       const DtHomogeneousTransfMatrix &matrix, const DtViewportExtents* v, DtPrimitiveDrawer* painter);
00078 
00079    virtual void drawCoordinateSystem(const DtBaseCoordinateSystem *cs,
00080       const DtHomogeneousTransfMatrix &matrix, const DtViewportExtents* v, DtPrimitiveDrawer* painter);
00081 
00082    virtual void drawFeature(const DtFeature *moddef,
00083       const DtHomogeneousTransfMatrix &matrix, const DtViewportExtents* v, DtPrimitiveDrawer* painter);
00084 
00085    virtual void drawFileNode(const DtFileNode* fileNode,
00086       const DtHomogeneousTransfMatrix& matrix, const DtViewportExtents* v, DtPrimitiveDrawer* painter);
00087 
00088    virtual void drawPolygon(const DtAllTypesPolygon *polygon,
00089          const DtHomogeneousTransfMatrix& matrix, const DtViewportExtents* v, DtPrimitiveDrawer* painter);
00090 
00091 protected:
00093    virtual QColor polygonColor(const DtAllTypesPolygon*, const DtViewportExtents* v);
00094 
00095 public:
00096    static QColor polygonSurfaceColor(const DtAllTypesPolygon*, const DtViewportExtents* v, void* usr);
00097    static QColor polygonSoilTypeColor(const DtAllTypesPolygon*, const DtViewportExtents* v, void* usr);
00098    static QColor polygonTerrainShadingSurfaceColor(const DtAllTypesPolygon*, const DtViewportExtents* v, void* usr);
00099    static QColor polygonTerrainShadingSoilTypeColor(const DtAllTypesPolygon*, const DtViewportExtents* v, void* usr);
00100    static QColor polygonTerrainShadingFromColor(const DtAllTypesPolygon* p, const QColor& baseColor, const DtViewportExtents* v);
00101 
00102 protected:
00103    bool myDrawBoundingVolumes;
00104    QColor myBoundingVolumesColor;
00105    DtPolygonColorFcn myPolygonColorFcn;
00106    void* myPolygonColorData;
00107 };
00108 
00109 inline void DtTerrainPolygonDrawer::setDrawBoundingVolumes(bool b)
00110 {
00111    myDrawBoundingVolumes = b;
00112 }
00113 
00114 inline bool DtTerrainPolygonDrawer::drawBoundingVolumes() const
00115 {
00116    return myDrawBoundingVolumes;
00117 }
00118 
00119 inline void DtTerrainPolygonDrawer::setBoundingVolumesColor(const QColor& c)
00120 {
00121    myBoundingVolumesColor = c;
00122 }
00123 
00124 inline const QColor& DtTerrainPolygonDrawer::boundingVolumesColor() const
00125 {
00126    return myBoundingVolumesColor;
00127 }
00128 
00129 inline void DtTerrainPolygonDrawer::setPolygonColorFcn(DtPolygonColorFcn fcn, void* usr)
00130 {
00131    myPolygonColorFcn = fcn;
00132    myPolygonColorData = usr;
00133 }
00134 
00135 #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)