lrtin.h

Go to the documentation of this file.
00001 /**
00002  * \file gre/lrtin.h
00003  * \brief GRE_LAYER_TIN class definition.
00004  *
00005  * \if NODOC
00006  * $Id: lrtin.h_v 1.20 2005/03/07 17:24:39 scowan Exp $
00007  *
00008  * $Log: lrtin.h_v $
00009  * Revision 1.20  2005/03/07 17:24:39  scowan
00010  * Fixed g++ warings.
00011  *
00012  * Revision 1.19  2005/03/01 14:22:25  mju
00013  * *** empty log message ***
00014  *
00015  * Revision 1.18  2005/02/25 23:22:48  scowan
00016  * Added copy virtual method implementation.
00017  *
00018  * Revision 1.17  2005/01/28 17:17:15  dwilliss
00019  * Fixed doxygen comment in header
00020  *
00021  * Revision 1.16  2005/01/21 14:53:54  mju
00022  * Forward declare rvc::tin class.
00023  *
00024  * Revision 1.15  2005/01/20 16:57:54  mju
00025  * Redesign layer type registration.
00026  *
00027  * Revision 1.14  2004/10/01 17:20:20  mju
00028  * Add dlgparent to assignObject.
00029  *
00030  * Revision 1.13  2004/07/12 23:14:17  mju
00031  * No georegion.
00032  *
00033  * Revision 1.12  2004/03/05 17:51:30  mju
00034  * Make dtor virtual if have virtual fns.
00035  *
00036  * Revision 1.11  2004/02/13 15:49:15  scowan
00037  * Fixed deprecated mgd items.
00038  *
00039  * Revision 1.10  2004/02/06 16:01:54  mju
00040  * Use GRE_FIND_FLAGS.
00041  *
00042  * Revision 1.9  2003/10/15 17:09:12  scowan
00043  * Removed get object filter forward declaration.
00044  *
00045  * Revision 1.8  2003/09/15 13:48:59  fileserver!dwilliss
00046  * Doxygen
00047  *
00048  * Revision 1.7  2003/07/30 15:30:04  mju
00049  * Ignore private sections.
00050  *
00051  * Revision 1.6  2002/10/23 22:07:21  mju
00052  * Add v_GetElemSetByExtent.
00053  *
00054  * Revision 1.5  2002/09/23 15:23:31  mju
00055  * Add openprivateobject().
00056  *
00057  * Revision 1.4  2002/09/20 17:03:07  mju
00058  * Only declare v_ControlPanel if X or MFC.
00059  *
00060  * Revision 1.3  2002/09/19 17:08:55  mju
00061  * Make tin obj a pointer so no dependency on tin header.
00062  *
00063  * Revision 1.2  2002/09/09 21:13:42  mju
00064  * Fix inclusion guard.
00065  *
00066  * Revision 1.1  2002/09/09 20:37:35  mju
00067  * Initial revision
00068  * \endif
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 //! GRE layer class for viewing TIN (Triangulated Irregular Network) spatial object.
00088 class GRE_LAYER_TIN : public GRE_LAYER {
00089    public:
00090 
00091       // GRE_LAYER_TIN::DISPPARM
00092       class DISPPARM : public GRE_LAYER::DISPPARM {
00093          public:
00094 
00095             class DLG;                             //!< Layer settings dialog, defined in <gre/uitin.h>
00096 
00097             RVC::OBJITEM m_ObjItem;
00098             RVC::OBJECTNAME m_GeorefName;          //!< Name of georeference object
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             //! Set to use specified object.
00126             ERRVALUE SetObject (
00127                const RVCOBJITEM& objitem,    //!< Object to set
00128                bool keepsettings = false     //!< Retain current display settings
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             //! Overrides from SERIALIZABLE.
00139             virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00140             virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00141 
00142             //! Overrides from GRE_LAYER::DISPPARM.
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 //!< GENERATING_DOXYGEN_OUTPUT
00149          }; //! End of GRE_LAYER_TIN::DISPPARM
00150 
00151       //! Register this layer type
00152       static void RegisterType (
00153          );
00154 
00155       //! Install SML class, called by internal SML function.
00156       static void SMLClassInstall (
00157          SMLCONTEXT *context
00158          );
00159 
00160       //! Construct layer and insert into list
00161       explicit GRE_LAYER_TIN (
00162          GRE_GROUP *group,                            //!< Group to contain layer
00163          CREATEFLAGS createflags = CREATEFLAG_None,   //!< Creation flags
00164          GRE::LISTPOS listpos = GRE::LISTPOS_Last,    //!< Position in list
00165          GRE_LAYER *reflayer = 0                      //!< Reference layer for insertion
00166          );
00167 
00168       //! Destructor.
00169       virtual ~GRE_LAYER_TIN ();
00170 
00171       //! Retrieve layer-specific display parameters.
00172       const DISPPARM& GetDispParm (
00173          ) const { return (m_dispparm); }
00174 
00175       //! Set layer-specific display parameters.
00176       //! This is the recommended method for changing how an existing layer is to be
00177       //! rendered.  Validation will be performed on the specified parameters and
00178       //! adjustments made to the layer's copy if necessary.  Use of this method
00179       //! usually result in a ChangeBegin / ChangeEnd message pair, and will also
00180       //! generate a ChangeObject message if the spatial object used in the layer
00181       //! is changed.
00182       ERRVALUE SetDispParm (
00183          const DISPPARM& dispparm               //!< Parameters to set
00184          );
00185 
00186    protected:
00187 
00188       DISPPARM m_dispparm;                      //!< Layer-specific display parameters
00189 
00190    public:
00191       #ifndef GENERATING_DOXYGEN_OUTPUT
00192       class PRIVDRAWDATA;
00193       #endif //!< GENERATING_DOXYGEN_OUTPUT
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       //! Overrides from GRE_LAYER.
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 //!< GENERATING_DOXYGEN_OUTPUT
00269    };
00270 
00271 
00272 //===================================================================================================================
00273 
00274 
00275 #endif   //!< INC_GRE_LRTIN_H

Generated on Wed May 31 15:26:41 2006 for TNTsdk by  doxygen 1.3.8-20040913