lrtin.h

Go to the documentation of this file.
00001 /**
00002  * gre/lrtin - GRE_LAYER_TIN class definition.
00003  *
00004  * \if NODOC
00005  * $Id: lrtin.h_v 1.14 2004/10/01 17:20:20 mju Exp $
00006  *
00007  * $Log: lrtin.h_v $
00008  * Revision 1.14  2004/10/01 17:20:20  mju
00009  * Add dlgparent to assignObject.
00010  *
00011  * Revision 1.13  2004/07/12 23:14:17  mju
00012  * No georegion.
00013  *
00014  * Revision 1.12  2004/03/05 17:51:30  mju
00015  * Make dtor virtual if have virtual fns.
00016  *
00017  * Revision 1.11  2004/02/13 15:49:15  scowan
00018  * Fixed deprecated mgd items.
00019  *
00020  * Revision 1.10  2004/02/06 16:01:54  mju
00021  * Use GRE_FIND_FLAGS.
00022  *
00023  * Revision 1.9  2003/10/15 17:09:12  scowan
00024  * Removed get object filter forward declaration.
00025  *
00026  * Revision 1.8  2003/09/15 13:48:59  fileserver!dwilliss
00027  * Doxygen
00028  *
00029  * Revision 1.7  2003/07/30 15:30:04  mju
00030  * Ignore private sections.
00031  *
00032  * Revision 1.6  2002/10/23 22:07:21  mju
00033  * Add v_GetElemSetByExtent.
00034  *
00035  * Revision 1.5  2002/09/23 15:23:31  mju
00036  * Add openprivateobject().
00037  *
00038  * Revision 1.4  2002/09/20 17:03:07  mju
00039  * Only declare v_ControlPanel if X or MFC.
00040  *
00041  * Revision 1.3  2002/09/19 17:08:55  mju
00042  * Make tin obj a pointer so no dependency on tin header.
00043  *
00044  * Revision 1.2  2002/09/09 21:13:42  mju
00045  * Fix inclusion guard.
00046  *
00047  * Revision 1.1  2002/09/09 20:37:35  mju
00048  * Initial revision
00049  * \endif
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 //! GRE layer class for viewing TIN (Triangulated Irregular Network) spatial object.
00061 class GRE_LAYER_TIN : public GRE_LAYER {
00062    public:
00063 
00064       // GRE_LAYER_TIN::DISPPARM
00065       class DISPPARM : public GRE_LAYER::DISPPARM {
00066          public:
00067 
00068             class DLG;                             //!< Layer settings dialog, defined in <gre/uitin.h>
00069 
00070             RVC::OBJITEM m_ObjItem;
00071             RVC::OBJECTNAME m_GeorefName;          //!< Name of georeference object
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             //! Set to use specified object.
00099             ERRVALUE SetObject (
00100                const RVCOBJITEM& objitem,    //!< Object to set
00101                bool keepsettings = false     //!< Retain current display settings
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             //! Overrides from SERIALIZABLE.
00112             virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00113             virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00114 
00115             //! Overrides from GRE_LAYER::DISPPARM.
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 //!< GENERATING_DOXYGEN_OUTPUT
00122          }; //! End of GRE_LAYER_TIN::DISPPARM
00123 
00124       //! Construct instance of this layer type
00125       static int Construct (
00126          GRE_GROUP *group,                      //!< Group to contain layer
00127          GRE_LAYER **retlayer,                  //!< Layer returned
00128          GRE_LAYER *reflayer,                   //!< Reference layer for insertion
00129          UINT32 flags                           //!< Creation flags
00130          );
00131 
00132       //! Register this layer type
00133       static void RegisterType (
00134          );
00135 
00136       //! Install SML class, called by internal SML function.
00137       static void SMLClassInstall (
00138          SMLCONTEXT *context
00139          );
00140 
00141       //! Construct layer and insert into list
00142       explicit GRE_LAYER_TIN (
00143          GRE_GROUP *group,                      //!< Group to contain layer
00144          GRE_LAYER *reflayer = 0,               //!< Reference layer for insertion
00145          UINT32 flags = MDISPCREATE_InsertAfter //!< MDISPCREATE flags
00146          );
00147 
00148       //! Destructor.
00149       virtual ~GRE_LAYER_TIN ();
00150 
00151       //! Retrieve layer-specific display parameters.
00152       const DISPPARM& GetDispParm (
00153          ) const { return (m_dispparm); }
00154 
00155       //! Set layer-specific display parameters.
00156       //! This is the recommended method for changing how an existing layer is to be
00157       //! rendered.  Validation will be performed on the specified parameters and
00158       //! adjustments made to the layer's copy if necessary.  Use of this method
00159       //! usually result in a ChangeBegin / ChangeEnd message pair, and will also
00160       //! generate a ChangeObject message if the spatial object used in the layer
00161       //! is changed.
00162       ERRVALUE SetDispParm (
00163          const DISPPARM& dispparm               //!< Parameters to set
00164          );
00165 
00166    protected:
00167 
00168       DISPPARM m_dispparm;                      //!< Layer-specific display parameters
00169 
00170    public:
00171       #ifndef GENERATING_DOXYGEN_OUTPUT
00172       class PRIVDRAWDATA;
00173       #endif //!< GENERATING_DOXYGEN_OUTPUT
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       //! Overrides from GRE_LAYER.
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 //!< GENERATING_DOXYGEN_OUTPUT
00247    };
00248 
00249 
00250 //===================================================================================================================
00251 
00252 
00253 #endif   //!< INC_GRE_LRTIN_H

Generated on Tue Dec 14 13:18:14 2004 for TNTsdk by  doxygen 1.3.8-20040913