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