lrvector.h

Go to the documentation of this file.
00001 /**
00002  * gre/lrvector - GRE_LAYER_VECTOR class definition.
00003  *
00004  * \if NODOC
00005  * $Id: lrvector.h_v 1.18 2004/10/15 21:28:13 ldyas Exp $
00006  *
00007  * $Log: lrvector.h_v $
00008  * Revision 1.18  2004/10/15 21:28:13  ldyas
00009  * added needsmem24 method
00010  *
00011  * Revision 1.17  2004/10/01 17:20:25  mju
00012  * Add dlgparent to assignObject.
00013  *
00014  * Revision 1.16  2004/09/03 22:50:09  dwilliss
00015  * *** empty log message ***
00016  *
00017  * Revision 1.15  2004/07/22 22:16:14  dwilliss
00018  * Moved LABLEPLACEMENT out of the layer.  It's now in a LAYERVIEW-derived
00019  * class which is private to mdvector.c
00020  *
00021  * Revision 1.14  2004/07/21 22:37:17  dwilliss
00022  * Added the construct layer view method
00023  *
00024  * Revision 1.13  2004/07/20 22:21:33  dwilliss
00025  * *** empty log message ***
00026  *
00027  * Revision 1.12  2004/07/19 22:55:49  dwilliss
00028  * LABELPLACEMENT changes
00029  *
00030  * Revision 1.11  2004/07/12 23:14:19  mju
00031  * No georegion.
00032  *
00033  * Revision 1.10  2004/04/08 17:20:33  vdronov
00034  * added m_VectorModifyStamp
00035  *
00036  * Revision 1.9  2004/04/08 17:08:28  vdronov
00037  * *** empty log message ***
00038  *
00039  * Revision 1.8  2004/03/05 15:12:56  mju
00040  * Use virtual dtor for dispprma.
00041  *
00042  * Revision 1.7  2004/02/13 15:46:17  scowan
00043  * Fixed deprecated mgd items.
00044  *
00045  * Revision 1.6  2004/02/06 16:02:00  mju
00046  * Use GRE_FIND_FLAGS.
00047  *
00048  * Revision 1.5  2003/09/23 13:16:35  mju
00049  * Explicit init base in dispparm copy ctor.
00050  *
00051  * Revision 1.4  2003/09/15 13:48:59  fileserver!dwilliss
00052  * Doxygen
00053  *
00054  * Revision 1.3  2003/07/30 15:30:59  mju
00055  * Ignore private sections.
00056  *
00057  * Revision 1.2  2003/06/24 16:24:19  mju
00058  * Move layer_vector class defn here.
00059  *
00060  * Revision 1.1  2002/09/19 17:09:20  mju
00061  * Initial revision
00062  * \endif
00063 **/
00064 
00065 #ifndef  INC_GRE_LRVECTOR_H
00066 #define  INC_GRE_LRVECTOR_H
00067 
00068 #ifndef  INC_MI32_GRE_H
00069 #include <mi32/gre.h>
00070 #endif
00071 
00072 #ifndef  INC_GRE_LABELPLACEMENT_H
00073 #include <gre/labelplacement.h>
00074 #endif
00075 
00076 //===================================================================================================================
00077 
00078 //! GRE layer class for viewing Vector spatial object.
00079 class GRE_LAYER_VECTOR : public GRE_LAYER {
00080    public:
00081 
00082       // GRE_LAYER_VECTOR::DISPPARM
00083       class DISPPARM : public GRE_LAYER::DISPPARM {
00084          public:
00085 
00086             class DLG;                             //!< Layer settings dialog, defined in <gre/uivector.h>
00087 
00088             RVC::OBJITEM m_ObjItem;
00089             RVC::OBJECTNAME m_GeorefName;          //!< Name of georeference object
00090             RVC::OBJITEM m_ObjItemStyle;
00091             POINTPARMS Point;
00092             LINEPARMS Line;
00093             POLYPARMS Poly;
00094             LABELPARMS Label;
00095             POINTPARMS Node;
00096             POINTSTYLE NodeDangleStyle;            //!< Special style for "dangling" nodes
00097             D3POLYPARMS D3Poly;
00098             D3POINTPARMS D3Point;
00099             bool EnablePolyFill3D;
00100             bool m_EnableLabelClipUnder;
00101             bool m_IsEditable;
00102             bool m_HasSaveInfo;
00103             bool m_ShowLabelBase;
00104             LINESTYLE m_LabelBaseStyle;
00105             mutable RVC::OBJITEM m_SaveObjItem;
00106             mutable RVC::OBJITEM m_SaveObjItemStyle;
00107 
00108             DISPPARM ();
00109             DISPPARM (
00110                const DISPPARM& rhs
00111                ): GRE_LAYER::DISPPARM(rhs) { Copy(rhs); }
00112             virtual ~DISPPARM (
00113                ) { Free(); }
00114 
00115             DISPPARM& operator= (
00116                const DISPPARM& rhs
00117                ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00118 
00119             //! Set to use specified object.
00120             ERRVALUE SetObject (
00121                const RVCOBJITEM& objitem,    //!< Object to set
00122                bool keepsettings = false     //!< Retain current display settings
00123                );
00124 
00125          private:
00126             #ifndef GENERATING_DOXYGEN_OUTPUT
00127             static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZER::ITEMDEF *, void *, SERIALIZER::ITEMDEF::ACTION);
00128             void Copy (const DISPPARM&);
00129             void Free ();
00130             void UpdateSaveInfo () const;
00131 
00132             //! Overrides from SERIALIZABLE.
00133             virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00134             virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00135 
00136             //! Overrides from GRE_LAYER::DISPPARM.
00137             virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00138             virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00139             virtual ERRVALUE v_Validate ();
00140 
00141             friend class GRE_LAYER_VECTOR;
00142             #endif //!< GENERATING_DOXYGEN_OUTPUT
00143          }; //! End of GRE_LAYER_VECTOR::DISPPARM
00144 
00145       //! Construct instance of this layer type
00146       static int Construct (
00147          GRE_GROUP *group,                      //!< Group to contain layer
00148          GRE_LAYER **retlayer,                  //!< Layer returned
00149          GRE_LAYER *reflayer,                   //!< Reference layer for insertion
00150          UINT32 flags                           //!< Creation flags
00151          );
00152 
00153       //! Register this layer type
00154       static void RegisterType (
00155          );
00156 
00157       //! Method to install SML class, called by internal SML function.
00158       static void SMLClassInstall (
00159          SMLCONTEXT *context                    //!< SML context
00160          );
00161 
00162       //! Construct layer and insert into list
00163       explicit GRE_LAYER_VECTOR (
00164          GRE_GROUP *group,                      //!< Group to contain layer
00165          GRE_LAYER *reflayer = 0,               //!< Reference layer for insertion
00166          UINT32 flags = MDISPCREATE_InsertAfter //!< MDISPCREATE flags
00167          );
00168 
00169       virtual ~GRE_LAYER_VECTOR ();
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    private:
00191       #ifndef GENERATING_DOXYGEN_OUTPUT
00192 
00193    #ifdef X_NATIVE
00194       static void CB_ExtractRegion (Widget, void*, void*);
00195       static void CB_LegendElemListAddRmv (Widget, void*, void*);
00196       ERRVALUE OnLegendElemListAddRmv (Widget dlgparent);
00197    #endif
00198       static void DBCB_D3Point (DBCALLBACKSTRUCT*, GRE_LAYER_VECTOR*);
00199       static void DBCB_D3Poly (DBCALLBACKSTRUCT*, GRE_LAYER_VECTOR*);
00200       static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00201 
00202       GRE_LEGEND_POINT m_PointLegend;
00203       GRE_LEGEND_LINE m_LineLegend;
00204       GRE_LEGEND_POLY m_PolyLegend;
00205       GRE_LEGEND_POINT m_NodeLegend;
00206       COMPINFO m_PointCompInfo;
00207       COMPINFO m_LineCompInfo;
00208       COMPINFO m_PolyCompInfo;
00209       COMPINFO m_NodeCompInfo;
00210       COMPINFO m_LabelCompInfo;
00211       GRE_SCRIPTCONTEXT_STYLE m_StyleSC;
00212       int m_StyleSegPoint;
00213       int m_StyleSegLine;
00214       int m_StyleSegPoly;
00215       int m_StyleSegNode;
00216       int m_StyleSegPoint3dBase;
00217       int m_StyleSegPoint3dExt;
00218       int m_StyleSegPoly3dExt;
00219       bool m_HaveTempDrapeRasts;
00220       RVCFILEHANDLE m_TempDrapeFileHandle;
00221       RVC::OBJITEM m_TempDrapeRast;
00222       RVC::OBJITEM m_TempDrapeMask;
00223       RVC::VECTOR *m_pObjVector;
00224 
00225       UINT32 m_VectorModifyStamp;
00226    
00227       class PRIVDRAWDATA;
00228       friend class PRIVDRAWDATA;
00229       
00230       int CallDrawFilter (GRE_LAYERDC* ldc, ELEMTYPE ElemType, INT32 ElemNum, void* data) {
00231          if (m_DrawFilter != 0) return (m_DrawFilter(ldc, ElemType, ElemNum, data));
00232          return (1);
00233          }
00234 
00235       int DrawPolyFilled3D (GRE_LAYERDC&);
00236       ERRVALUE OpenPrivateObject ();
00237       void ScalePointsZ (POLYLINE&);
00238       void Setup3D ();
00239       ERRVALUE SetupDrape3D (GRE_LAYERDC&);
00240       ERRVALUE SetupLegend ();
00241       int SetupRegion ();
00242       ERRVALUE SetupScriptContext (GRE_SCRIPTCONTEXT_DRAW& sc);
00243 
00244       //! Overrides from GRE_LAYER.
00245    #ifdef WIN32_MFC
00246       virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00247       virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00248    #endif
00249    #ifdef X_NATIVE
00250       virtual void v_AppendPopupMenuItems (Widget widget, const DPOINT2D *point, MENUITEMARRAY& menuitems);
00251    #endif
00252       virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00253       virtual bool v_CanShowDetails () const;
00254    #if defined(X_NATIVE) || defined(WIN32_MFC)
00255       virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00256    #endif
00257       virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00258       virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00259       virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00260       virtual ERRVALUE v_DrawElementLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, INT32 ElemNum, const void *style);
00261       virtual ERRVALUE v_DrawElementsLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, const UINT8 *ElemSet, const void *style);
00262       virtual ERRVALUE v_DrawElementSample (const GRE_ELEMSAMPLE_DC& sampledc, const RVC::ELEMENT& element, const LRECT2D& samplerect);
00263       virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, GRE_FIND_FLAGS findflags);
00264       virtual int v_GetComponent (ELEMTYPE ElemType) const;
00265       virtual MICON v_GetComponentIcon (int component) const;
00266       virtual COMPINFO* v_GetComponentInfo (int component);
00267       virtual MISTRING v_GetComponentName (int component) const;
00268       virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00269       virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00270       virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
00271       virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents);
00272       virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, BITSET& ElemSet);
00273       virtual ELEMTYPE v_GetElemType (int component) const;
00274       virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00275       virtual GRE::LABELPLACEMENT* v_GetLabelPlacement(GRE_VIEW* view);
00276       virtual bool v_GetLabelColor(GRE_LAYERDC& dc, const GRE::LABELPLACE& place, COLOR& color);
00277       virtual const GRE_LEGEND* v_GetLegend (ELEMTYPE ElemType);
00278       virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00279       virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00280       virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00281    #ifdef X_NATIVE
00282       virtual MENUITEM* v_GetToolMenu () const;
00283    #endif
00284    #ifdef WIN32_MFC
00285       virtual bool v_HasTreeViewLegend () const;
00286    #endif
00287       virtual bool v_NeedsMEM24 (bool IsHirez) const;
00288       virtual bool v_IsTableUsableForComponent (int component, const RVCTABLEINFO& table) const;
00289    #if defined(X_NATIVE) || defined(WIN32_MFC)
00290       virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00291    #endif
00292       virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, INT32 ElemNum);
00293       virtual const char* v_SerialGetTagName () const;
00294       virtual ERRVALUE v_SerialRead (SERIALIZER& serializer);
00295       virtual void v_SetDftName (bool ReplaceExisting);
00296       virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00297       virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
00298       virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
00299       virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00300       virtual int v_TestElementByRegion (ELEMTYPE ElemType, INT32 ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00301       virtual int v_UpdateExtents (bool forceupdate);
00302       virtual GRE::LAYERVIEW* v_ConstructLayerView(GRE_VIEW* view);
00303 
00304       GRE_LAYER_VECTOR (const GRE_LAYER_VECTOR&);
00305       GRE_LAYER_VECTOR& operator= (const GRE_LAYER_VECTOR&);
00306 
00307       #endif //!< GENERATING_DOXYGEN_OUTPUT
00308    };
00309 
00310 
00311 //===================================================================================================================
00312 
00313 #endif   //!< INC_GRE_LRVECTOR_H

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