![]() |
VR-Forces 4.0.4 Class Documentation
|
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