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
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071 #ifndef INC_GRE_LRTIN_H
00072 #define INC_GRE_LRTIN_H
00073
00074 #ifndef INC_GRE_LAYER_H
00075 #include <gre/layer.h>
00076 #endif
00077
00078 #ifndef INC_GRE_LEGEND_H
00079 #include <gre/legend.h>
00080 #endif
00081
00082 namespace RVC {
00083 class TIN;
00084 }
00085
00086
00087
00088 class GRE_LAYER_TIN : public GRE_LAYER {
00089 public:
00090
00091
00092 class DISPPARM : public GRE_LAYER::DISPPARM {
00093 public:
00094
00095 class DLG;
00096
00097 RVC::OBJITEM m_ObjItem;
00098 RVC::OBJECTNAME m_GeorefName;
00099 RVC::OBJITEM m_ObjItemStyle;
00100 POINTPARMS Node;
00101 LINEPARMS Edge;
00102 POLYPARMS Triangle;
00103 struct CONTOUR {
00104 UINT8 Selected;
00105 LINESTYLE Style;
00106 double Interval;
00107 } Contour[2];
00108 UINT8 ContourUnitCode;
00109 bool m_IsEditable;
00110 bool m_HasSaveInfo;
00111 mutable RVC::OBJITEM m_SaveObjItem;
00112 mutable RVC::OBJITEM m_SaveObjItemStyle;
00113
00114 DISPPARM ();
00115 DISPPARM (
00116 const DISPPARM& rhs
00117 ): GRE_LAYER::DISPPARM(rhs) { Copy(rhs); }
00118 virtual ~DISPPARM (
00119 ) { Free(); }
00120
00121 DISPPARM& operator= (
00122 const DISPPARM& rhs
00123 ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00124
00125
00126 ERRVALUE SetObject (
00127 const RVCOBJITEM& objitem,
00128 bool keepsettings = false
00129 );
00130
00131 private:
00132 #ifndef GENERATING_DOXYGEN_OUTPUT
00133 void Copy (const DISPPARM&);
00134 void Free ();
00135 static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZER::ITEMDEF *, void *, SERIALIZER::ITEMDEF::ACTION);
00136 void UpdateSaveInfo () const;
00137
00138
00139 virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00140 virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00141
00142
00143 virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00144 virtual ERRVALUE vSetObjItem (const RVC::OBJITEM& objitem, bool replace);
00145 virtual ERRVALUE Validate ();
00146
00147 friend class GRE_LAYER_TIN;
00148 #endif
00149 };
00150
00151
00152 static void RegisterType (
00153 );
00154
00155
00156 static void SMLClassInstall (
00157 SMLCONTEXT *context
00158 );
00159
00160
00161 explicit GRE_LAYER_TIN (
00162 GRE_GROUP *group,
00163 CREATEFLAGS createflags = CREATEFLAG_None,
00164 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00165 GRE_LAYER *reflayer = 0
00166 );
00167
00168
00169 virtual ~GRE_LAYER_TIN ();
00170
00171
00172 const DISPPARM& GetDispParm (
00173 ) const { return (m_dispparm); }
00174
00175
00176
00177
00178
00179
00180
00181
00182 ERRVALUE SetDispParm (
00183 const DISPPARM& dispparm
00184 );
00185
00186 protected:
00187
00188 DISPPARM m_dispparm;
00189
00190 public:
00191 #ifndef GENERATING_DOXYGEN_OUTPUT
00192 class PRIVDRAWDATA;
00193 #endif
00194
00195 private:
00196 #ifndef GENERATING_DOXYGEN_OUTPUT
00197
00198 RVC::TIN *m_pObjTIN;
00199 GRE_LEGEND_POINT m_NodeLegend;
00200 GRE_LEGEND_LINE m_EdgeLegend;
00201 GRE_LEGEND_POLY m_TriangleLegend;
00202 GRE_LEGEND_LINE m_ContourLegend;
00203 COMPINFO m_NodeCompInfo;
00204 COMPINFO m_EdgeCompInfo;
00205 COMPINFO m_TriangleCompInfo;
00206
00207 static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00208
00209 ERRVALUE OpenPrivateObject ();
00210 void SetupLegend ();
00211 int SetupRegion ();
00212
00213
00214 #ifdef WIN32_MFC
00215 virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00216 virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00217 #endif
00218 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00219 virtual bool v_CanShowDetails () const;
00220 virtual GRE::LAYERVIEW* v_ConstructLayerView (GRE_VIEW *view);
00221 #if defined(X_NATIVE) || defined(WIN32_MFC)
00222 virtual int v_ControlPanel (MDLGPARENT dlgparent, UINT32 flags = 0);
00223 #endif
00224 virtual GRE_LAYER* v_Copy (GRE_GROUP *group) const;
00225 virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00226 virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00227 virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00228 virtual ERRVALUE v_DrawElementLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, INT32 ElemNum, const void *style);
00229 virtual ERRVALUE v_DrawElementsLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, const UINT8 *ElemSet, const void *style);
00230 virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, GRE_FIND_FLAGS findflags);
00231 virtual int v_GetComponent (ELEMTYPE ElemType) const;
00232 virtual MICON v_GetComponentIcon (int component) const;
00233 virtual COMPINFO* v_GetComponentInfo (int component);
00234 virtual MISTRING v_GetComponentName (int component) const;
00235 virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00236 virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00237 virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
00238 virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents);
00239 virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, BITSET& ElemSet);
00240 virtual ELEMTYPE v_GetElemType (int component) const;
00241 virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00242 virtual const GRE_LEGEND* v_GetLegend (ELEMTYPE ElemType);
00243 virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00244 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00245 virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00246 #ifdef WIN32_MFC
00247 virtual bool v_HasTreeViewLegend () const;
00248 #endif
00249 virtual bool v_IsTableUsableForComponent (int component, const RVCTABLEINFO& table) const;
00250 #if defined(X_NATIVE) || defined(WIN32_MFC)
00251 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00252 #endif
00253 virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, INT32 ElemNum);
00254 virtual const char* v_SerialGetTagName () const;
00255 virtual void v_SetDftName (bool ReplaceExisting);
00256 virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00257 virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
00258 virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
00259 virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& objitem);
00260 virtual int v_TestElementByRegion (ELEMTYPE ElemType, INT32 ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00261 virtual int v_UpdateExtents (bool forceupdate);
00262
00263 friend class PRIVDRAWDATA;
00264
00265 GRE_LAYER_TIN (const GRE_LAYER_TIN&);
00266 GRE_LAYER_TIN& operator= (const GRE_LAYER_TIN&);
00267
00268 #endif
00269 };
00270
00271
00272
00273
00274
00275 #endif