00001
00122 #ifndef INC_GRE_LRTIN_H
00123 #define INC_GRE_LRTIN_H
00124
00125 #ifndef INC_GRE_LAYER_H
00126 #include <gre/layer.h>
00127 #endif
00128
00129 #ifndef INC_GRE_ELEMPARMS_H
00130 #include <gre/elemparms.h>
00131 #endif
00132
00133 #ifndef INC_GRE_LEGEND_H
00134 #include <gre/legend.h>
00135 #endif
00136
00137 namespace RVC {
00138 class TIN;
00139 }
00140
00141 namespace GRE {
00142
00144 class LAYER_TIN : public LAYER {
00145 public:
00146
00147
00148 class DISPPARM : public LAYER::DISPPARM {
00149 public:
00150
00151 class DLG;
00152
00153 RVC::OBJITEM m_ObjItem;
00154 RVC::OBJECTNAME m_GeorefName;
00155 RVC::OBJITEM m_ObjItemStyle;
00156 POINTPARMS Node;
00157 LINEPARMS Edge;
00158 POLYPARMS Triangle;
00159 struct CONTOUR {
00160 UINT8 Selected;
00161 LINESTYLE Style;
00162 double Interval;
00163 } Contour[2];
00164 UINT8 ContourUnitCode;
00165 bool m_IsEditable;
00166 bool m_HasSaveInfo;
00167 mutable RVC::OBJITEM m_SaveObjItem;
00168 mutable RVC::OBJITEM m_SaveObjItemStyle;
00169
00170 DISPPARM ();
00171 DISPPARM (
00172 const DISPPARM& rhs
00173 ): LAYER::DISPPARM(rhs) { Copy(rhs); }
00174 virtual ~DISPPARM (
00175 ) { Free(); }
00176
00177 DISPPARM& operator= (
00178 const DISPPARM& rhs
00179 ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00180
00182 ERRVALUE SetObject (
00183 const RVC::OBJITEM& objitem,
00184 bool keepsettings = false
00185 );
00186
00187 private:
00188 #ifndef GENERATING_DOXYGEN_OUTPUT
00189 void Copy (const DISPPARM&);
00190 void Free ();
00191 static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZERITEM *, void *, SERIALIZERITEM::ACTION);
00192 void UpdateSaveInfo () const;
00193
00195 virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00196 virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00197
00199 virtual const SERIALIZERITEM* SerialGetItemDef (SERIALIZER& serializer) const;
00200 virtual ERRVALUE vSetObjItem (const RVC::OBJITEM& objitem, bool replace);
00201 virtual ERRVALUE Validate ();
00202
00203 friend class LAYER_TIN;
00204 #endif
00205 };
00206
00208 static void RegisterType (
00209 );
00210
00212 static void SMLClassInstall (
00213 SMLCONTEXT *context
00214 );
00215
00217 explicit LAYER_TIN (
00218 GRE::GROUP *group,
00219 CREATEFLAGS createflags = CREATEFLAG_None,
00220 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00221 LAYER *reflayer = 0
00222 );
00223
00225 virtual ~LAYER_TIN ();
00226
00228 const DISPPARM& GetDispParm (
00229 ) const { return (m_dispparm); }
00230
00238 ERRVALUE SetDispParm (
00239 const DISPPARM& dispparm
00240 );
00241
00242 protected:
00243
00244 DISPPARM m_dispparm;
00245
00246 public:
00247 #ifndef GENERATING_DOXYGEN_OUTPUT
00248 class PRIVDRAWDATA;
00249 #endif
00250
00251 private:
00252 #ifndef GENERATING_DOXYGEN_OUTPUT
00253
00254 RVC::TIN *m_pObjTIN;
00255 GRE::LEGEND_POINT m_NodeLegend;
00256 GRE::LEGEND_LINE m_EdgeLegend;
00257 GRE::LEGEND_POLYGON m_TriangleLegend;
00258 GRE::LEGEND_LINE m_ContourLegend;
00259 COMPINFO m_NodeCompInfo;
00260 COMPINFO m_EdgeCompInfo;
00261 COMPINFO m_TriangleCompInfo;
00262
00263 static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00264
00265 ERRVALUE OpenPrivateObject ();
00266 void SetupLegend ();
00267 int SetupRegion ();
00268
00270 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00271 virtual bool v_CanShowDetails () const;
00272 virtual GRE::LAYERSECTION* v_ConstructLayerSection (GRE::VIEW* view);
00273 #ifdef USE_MGUI
00274 virtual int v_ControlPanel (MDLGPARENT dlgparent, UINT32 flags = 0);
00275 #endif
00276 virtual LAYER* v_Copy (GRE::GROUP *group) const;
00277 virtual const DATATIPPARMS* v_DataTipGetParms (int component) const;
00278 virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00279 virtual ERRVALUE v_Draw (LAYERDC& layerdc);
00280 virtual ERRVALUE v_DrawElementLow (LAYERDC& layerdc, ELEMTYPE ElemType, ELEMNUM ElemNum, const void *style);
00281 virtual ERRVALUE v_DrawElementsLow (LAYERDC& layerdc, ELEMTYPE ElemType, const UNSIGNEDSET *pElemSet, const void *style);
00282 virtual ELEMNUM v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UNSIGNEDSET *pSearchSet, GRE::FINDFLAGS findflags);
00283 virtual int v_GetComponent (ELEMTYPE ElemType) const;
00284 virtual MICONSTRUCT* v_GetComponentIcon (int component) const;
00285 virtual COMPINFO* v_GetComponentInfo (int component);
00286 virtual MISTRING v_GetComponentName (int component) const;
00287 virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00288 virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00289 virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
00290 virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, ELEMNUM ElemNum, DRECT3D& Extents);
00291 virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, UNSIGNEDSET& ElemSet);
00292 virtual ELEMTYPE v_GetElemType (int component) const;
00293 virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00294 virtual const GRE::LEGEND* v_GetLegend (ELEMTYPE ElemType);
00295 virtual INT64 v_GetNumElements (ELEMTYPE ElemType);
00296 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00297 virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00298 virtual bool v_HasLegend () const;
00299 virtual bool v_IsTableUsableForComponent (int component, const RVC::DBTABLE& table) const;
00300 #ifdef USE_MGUI
00301 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00302 #endif
00303 virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, ELEMNUM ElemNum);
00304 virtual const char* v_SerialGetTagName () const;
00305 virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00306 virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
00307 virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
00308 virtual void v_SetObjectDescriptor (int component, const RVC::DESCRIPTOR& descriptor);
00309 virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& objitem);
00310 virtual int v_TestElementByRegion (ELEMTYPE ElemType, ELEMNUM ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00311 #ifdef USE_MGUI
00312 virtual MGUI::CTRL_TREE::ITEMHND v_TreeViewAddUpdateLegend (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
00313 virtual void v_TreeViewAddUpdateDetails (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
00314 #endif
00315 virtual int v_UpdateExtents (bool forceupdate);
00316
00317 friend class PRIVDRAWDATA;
00318
00319 LAYER_TIN (const LAYER_TIN&);
00320 LAYER_TIN& operator= (const LAYER_TIN&);
00321
00322 #endif // GENERATING_DOXYGEN_OUTPUT
00323 };
00324
00325
00326
00327 }
00328
00329
00330 #endif