00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef INC_GRE_LRSURFACE_H
00027 #define INC_GRE_LRSURFACE_H
00028
00029 #ifndef INC_GRE_LAYER_H
00030 #include <gre/layer.h>
00031 #endif
00032
00033 #ifndef INC_GRE_3DTERRA_H
00034 #include <gre/3dterra.h>
00035 #endif
00036
00037
00038
00039 class GRE_LAYER_SURFACE : public GRE_LAYER {
00040 public:
00041
00042 enum RENDERING_MODE {
00043 RENDERING_MODE_None = -1,
00044 RENDERING_MODE_VariableTriangulation = 0,
00045 RENDERING_MODE_PiecewiseTIN = 1,
00046 RENDERING_MODE_FlatTriangulation = 2
00047 };
00048
00049
00050 class DISPPARM : public GRE_LAYER::DISPPARM {
00051 public:
00052
00053 class DLG;
00054
00055 MIUNICODE filename[FILENAME_MAX];
00056 RVC::OBJECTNAME m_GeorefName;
00057 int fhandle;
00058 int ohandle;
00059 RVCRASTINFO objinfo;
00060 INT32 WireSample;
00061 double RastNullValue;
00062 DRANGE *TileRange;
00063 RENDERING_MODE m_RenderingMode;
00064 bool m_SaveOptimizationStructure;
00065 double m_ErrorTolerance;
00066
00067 DISPPARM ();
00068 DISPPARM (
00069 const DISPPARM& rhs
00070 ): GRE_LAYER::DISPPARM(rhs) { Copy(rhs); }
00071 virtual ~DISPPARM (
00072 ) { Free(); }
00073
00074 DISPPARM& operator= (const DISPPARM& rhs) {
00075 if (this != &rhs) {
00076 Free();
00077 Copy(rhs);
00078 }
00079 return (*this);
00080 }
00081
00082 int OpenObject (UINT32 filemode = RVCFILE_ReadLock, MDLGPARENT parent = NULL);
00083
00084 protected:
00085 virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00086
00087 private:
00088 #ifndef GENERATING_DOXYGEN_OUTPUT
00089 void CloseObject ();
00090 void Copy (const DISPPARM&);
00091 void Free ();
00092
00093 virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00094 virtual ERRVALUE v_Validate ();
00095
00096 friend class GRE_LAYER_SURFACE;
00097 #endif // GENERATING_DOXYGEN_OUTPUT
00098 };
00099
00100
00101 static void RegisterType (
00102 );
00103
00104
00105 explicit GRE_LAYER_SURFACE (
00106 GRE_GROUP *group,
00107 CREATEFLAGS createflags = CREATEFLAG_None,
00108 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00109 GRE_LAYER *reflayer = 0
00110 );
00111
00112 virtual ~GRE_LAYER_SURFACE ();
00113
00114
00115
00116 virtual int OpenObject (
00117 UINT32 filemode = RVCFILE_ReadLock,
00118 MDLGPARENT dlgparent = 0
00119 );
00120
00121
00122 const DISPPARM& GetDispParm (
00123 ) const { return (m_dispparm); }
00124
00125
00126
00127
00128 int GetPointsZ (
00129 const TRANSPARM& PtoS,
00130 DPOINT3D *points,
00131 INT32 NumPoints,
00132 double dftz
00133 );
00134
00135 int GetPointsZ (
00136 const TRANS2D_MAPGEN& PtoS,
00137 DPOINT3D *points,
00138 INT32 NumPoints,
00139 double dftz
00140 ) { return (GetPointsZ(PtoS.GetTransParm(),points,NumPoints,dftz)); }
00141
00142
00143
00144
00145 ERRVALUE GetPointsZ (
00146 const TRANS2D_MAPGEN& PtoS,
00147 POLYLINE& PolyLine,
00148 double dftz
00149 );
00150
00151
00152
00153
00154
00155
00156
00157
00158 ERRVALUE SetDispParm (
00159 const DISPPARM& dispparm
00160 );
00161
00162 GRE::TERRAIN* GetTerrain (
00163 ) { return m_Terrain; };
00164
00165 protected:
00166
00167 DISPPARM m_dispparm;
00168
00169 private:
00170 #ifndef GENERATING_DOXYGEN_OUTPUT
00171
00172 GRE::TERRAIN *m_Terrain;
00173
00174 int WireReadRaster ();
00175 void CheckTerrain ();
00176
00177
00178 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00179 #if defined(X_NATIVE) || defined(WIN32_MFC)
00180 virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00181 #endif
00182 virtual GRE_LAYER* v_Copy (GRE_GROUP *group) const;
00183 virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00184 virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00185 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00186 #if defined(X_NATIVE) || defined(WIN32_MFC)
00187 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00188 #endif
00189 virtual const char* v_SerialGetTagName () const;
00190 virtual void v_SetDftName (bool ReplaceExisting);
00191 virtual int v_UpdateExtents (bool forceupdate);
00192
00193 GRE_LAYER_SURFACE (const GRE_LAYER_SURFACE&);
00194 GRE_LAYER_SURFACE& operator= (const GRE_LAYER_SURFACE&);
00195
00196 #endif
00197 };
00198
00199
00200
00201
00202 #endif