gre/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.5 2003/09/23 13:16:35 mju Exp $
00006  *
00007  * $Log: lrvector.h_v $
00008  * Revision 1.5  2003/09/23 13:16:35  mju
00009  * Explicit init base in dispparm copy ctor.
00010  *
00011  * Revision 1.4  2003/09/15 13:48:59  fileserver!dwilliss
00012  * Doxygen
00013  *
00014  * Revision 1.3  2003/07/30 15:30:59  mju
00015  * Ignore private sections.
00016  *
00017  * Revision 1.2  2003/06/24 16:24:19  mju
00018  * Move layer_vector class defn here.
00019  *
00020  * Revision 1.1  2002/09/19 17:09:20  mju
00021  * Initial revision
00022  * \endif
00023 **/
00024 
00025 #ifndef  INC_GRE_LRVECTOR_H
00026 #define  INC_GRE_LRVECTOR_H
00027 
00028 #ifndef  INC_MI32_GRE_H
00029 #include <mi32/gre.h>
00030 #endif
00031 
00032 //===================================================================================================================
00033 
00034 //! GRE layer class for viewing Vector spatial object.
00035 class GRE_LAYER_VECTOR : public GRE_LAYER {
00036    public:
00037 
00038       // GRE_LAYER_VECTOR::DISPPARM
00039       class DISPPARM : public GRE_LAYER::DISPPARM {
00040          public:
00041 
00042             class DLG;                             //!< Layer settings dialog, defined in <gre/uivector.h>
00043 
00044             RVC::OBJITEM m_ObjItem;
00045             RVC::OBJECTNAME m_GeorefName;          //!< Name of georeference object
00046             RVC::OBJITEM m_ObjItemStyle;
00047             POINTPARMS Point;
00048             LINEPARMS Line;
00049             POLYPARMS Poly;
00050             LABELPARMS Label;
00051             POINTPARMS Node;
00052             POINTSTYLE NodeDangleStyle;            //!< Special style for "dangling" nodes
00053             D3POLYPARMS D3Poly;
00054             D3POINTPARMS D3Point;
00055             bool EnablePolyFill3D;
00056             bool m_EnableLabelClipUnder;
00057             bool m_IsEditable;
00058             bool m_HasSaveInfo;
00059             bool m_ShowLabelBase;
00060             LINESTYLE m_LabelBaseStyle;
00061             mutable RVC::OBJITEM m_SaveObjItem;
00062             mutable RVC::OBJITEM m_SaveObjItemStyle;
00063 
00064             DISPPARM ();
00065             DISPPARM (
00066                const DISPPARM& rhs
00067                ): GRE_LAYER::DISPPARM(rhs) { Copy(rhs); }
00068             ~DISPPARM (
00069                ) { Free(); }
00070 
00071             DISPPARM& operator= (
00072                const DISPPARM& rhs
00073                ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00074 
00075             //! Set to use specified object.
00076             ERRVALUE SetObject (
00077                const RVCOBJITEM& objitem,    //!< Object to set
00078                bool keepsettings = false     //!< Retain current display settings
00079                );
00080 
00081          private:
00082             #ifndef GENERATING_DOXYGEN_OUTPUT
00083             static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZER::ITEMDEF *, void *, SERIALIZER::ITEMDEF::ACTION);
00084             void Copy (const DISPPARM&);
00085             void Free ();
00086             void UpdateSaveInfo () const;
00087 
00088             //! Overrides from SERIALIZABLE.
00089             virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00090             virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00091 
00092             //! Overrides from GRE_LAYER::DISPPARM.
00093             virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00094             virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00095             virtual ERRVALUE v_Validate ();
00096 
00097             friend class GRE_LAYER_VECTOR;
00098             #endif //!< GENERATING_DOXYGEN_OUTPUT
00099          }; //! End of GRE_LAYER_VECTOR::DISPPARM
00100 
00101       //! Construct instance of this layer type
00102       static int Construct (
00103          GRE_GROUP *group,                      //!< Group to contain layer
00104          GRE_LAYER **retlayer,                  //!< Layer returned
00105          GRE_LAYER *reflayer,                   //!< Reference layer for insertion
00106          UINT32 flags                           //!< Creation flags
00107          );
00108 
00109       //! Register this layer type
00110       static void RegisterType (
00111          );
00112 
00113       //! Method to install SML class, called by internal SML function.
00114       static void SMLClassInstall (
00115          SMLCONTEXT *context                    //!< SML context
00116          );
00117 
00118       //! Construct layer and insert into list
00119       explicit GRE_LAYER_VECTOR (
00120          GRE_GROUP *group,                      //!< Group to contain layer
00121          GRE_LAYER *reflayer = 0,               //!< Reference layer for insertion
00122          UINT32 flags = MDISPCREATE_InsertAfter //!< MDISPCREATE flags
00123          );
00124 
00125       virtual ~GRE_LAYER_VECTOR ();
00126 
00127       //! Retrieve layer-specific display parameters
00128       const DISPPARM& GetDispParm (
00129          ) const { return (m_dispparm); }
00130 
00131       //! Set layer-specific display parameters.
00132       //! This is the recommended method for changing how an existing layer is to be
00133       //! rendered.  Validation will be performed on the specified parameters and
00134       //! adjustments made to the layer's copy if necessary.  Use of this method
00135       //! usually result in a ChangeBegin / ChangeEnd message pair, and will also
00136       //! generate a ChangeObject message if the spatial object used in the layer
00137       //! is changed.
00138       ERRVALUE SetDispParm (
00139          const DISPPARM& dispparm               //!< Parameters to set
00140          );
00141 
00142    protected:
00143 
00144       DISPPARM m_dispparm;                      //!< Layer-specific display parameters
00145 
00146    private:
00147       #ifndef GENERATING_DOXYGEN_OUTPUT
00148 
00149    #ifdef X_NATIVE
00150       static void CB_ExtractRegion (Widget, void*, void*);
00151       static void CB_LegendElemListAddRmv (Widget, void*, void*);
00152       ERRVALUE OnLegendElemListAddRmv (Widget dlgparent);
00153    #endif
00154       static void DBCB_D3Point (DBCALLBACKSTRUCT*, GRE_LAYER_VECTOR*);
00155       static void DBCB_D3Poly (DBCALLBACKSTRUCT*, GRE_LAYER_VECTOR*);
00156       static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00157 
00158       GRE_LEGEND_POINT m_PointLegend;
00159       GRE_LEGEND_LINE m_LineLegend;
00160       GRE_LEGEND_POLY m_PolyLegend;
00161       GRE_LEGEND_POINT m_NodeLegend;
00162       COMPINFO m_PointCompInfo;
00163       COMPINFO m_LineCompInfo;
00164       COMPINFO m_PolyCompInfo;
00165       COMPINFO m_NodeCompInfo;
00166       COMPINFO m_LabelCompInfo;
00167       GRE_SCRIPTCONTEXT_STYLE m_StyleSC;
00168       int m_StyleSegPoint;
00169       int m_StyleSegLine;
00170       int m_StyleSegPoly;
00171       int m_StyleSegNode;
00172       int m_StyleSegPoint3dBase;
00173       int m_StyleSegPoint3dExt;
00174       int m_StyleSegPoly3dExt;
00175       bool m_HaveTempDrapeRasts;
00176       RVCFILEHANDLE m_TempDrapeFileHandle;
00177       RVC::OBJITEM m_TempDrapeRast;
00178       RVC::OBJITEM m_TempDrapeMask;
00179       RVC::VECTOR *m_pObjVector;
00180       
00181       class PRIVDRAWDATA;
00182       friend class PRIVDRAWDATA;
00183       
00184       int CallDrawFilter (GRE_LAYERDC* ldc, ELEMTYPE ElemType, INT32 ElemNum, void* data) {
00185          if (m_DrawFilter != 0) return (m_DrawFilter(ldc, ElemType, ElemNum, data));
00186          return (1);
00187          }
00188 
00189       int DrawPolyFilled3D (GRE_LAYERDC&);
00190       ERRVALUE OpenPrivateObject ();
00191       void ScalePointsZ (POLYLINE&);
00192       void Setup3D ();
00193       ERRVALUE SetupDrape3D (GRE_LAYERDC&);
00194       ERRVALUE SetupLegend ();
00195       int SetupRegion ();
00196       ERRVALUE SetupScriptContext (GRE_SCRIPTCONTEXT_DRAW& sc);
00197 
00198       //! Overrides from GRE_LAYER.
00199    #ifdef WIN32_MFC
00200       virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00201       virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00202    #endif
00203    #ifdef X_NATIVE
00204       virtual void v_AppendPopupMenuItems (Widget widget, const DPOINT2D *point, MENUITEMARRAY& menuitems);
00205    #endif
00206       virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem);
00207       virtual bool v_CanShowDetails () const;
00208    #if defined(X_NATIVE) || defined(WIN32_MFC)
00209       virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00210    #endif
00211       virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00212       virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00213       virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00214       virtual ERRVALUE v_DrawElementLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, INT32 ElemNum, const void *style);
00215       virtual ERRVALUE v_DrawElementsLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, const UINT8 *ElemSet, const void *style);
00216       virtual ERRVALUE v_DrawElementSample (const GRE_ELEMSAMPLE_DC& sampledc, const RVC::ELEMENT& element, const LRECT2D& samplerect);
00217       virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, UINT32 findflags);
00218       virtual int v_GetComponent (ELEMTYPE ElemType) const;
00219       virtual MICON v_GetComponentIcon (int component) const;
00220       virtual COMPINFO* v_GetComponentInfo (int component);
00221       virtual MISTRING v_GetComponentName (int component) const;
00222       virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00223       virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00224       virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
00225       virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents);
00226       virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, BITSET& ElemSet);
00227       virtual ELEMTYPE v_GetElemType (int component) const;
00228       virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00229       virtual const GRE_LEGEND* v_GetLegend (ELEMTYPE ElemType);
00230       virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00231       virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00232       virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00233    #ifdef X_NATIVE
00234       virtual MENUITEM* v_GetToolMenu () const;
00235    #endif
00236    #ifdef WIN32_MFC
00237       virtual bool v_HasTreeViewLegend () const;
00238    #endif
00239       virtual bool v_IsTableUsableForComponent (int component, const RVCTABLEINFO& table) const;
00240    #if defined(X_NATIVE) || defined(WIN32_MFC)
00241       virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00242    #endif
00243       virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, INT32 ElemNum);
00244       virtual const char* v_SerialGetTagName () const;
00245       virtual ERRVALUE v_SerialRead (SERIALIZER& serializer);
00246       virtual void v_SetDftName (bool ReplaceExisting);
00247       virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00248       virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
00249       virtual void v_SetLegendSampleFlags (MgdSAMPLEFLAGS SampleFlags);
00250       virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00251       virtual int v_TestElementByRegion (ELEMTYPE ElemType, INT32 ElemNum, const GEOREGION& Region, GEOREGION::TESTMODE TestMode);
00252       virtual int v_UpdateExtents (bool forceupdate);
00253 
00254       GRE_LAYER_VECTOR (const GRE_LAYER_VECTOR&);
00255       GRE_LAYER_VECTOR& operator= (const GRE_LAYER_VECTOR&);
00256 
00257       #endif //!< GENERATING_DOXYGEN_OUTPUT
00258    };
00259 
00260 
00261 //===================================================================================================================
00262 
00263 #endif   //!< INC_GRE_LRVECTOR_H

Generated on Thu Aug 12 06:18:26 2004 for TNTsdk by doxygen 1.3.4-20031026