lrshape.h

Go to the documentation of this file.
00001 /**
00002  * gre/lrshape - GRE_LAYER_SHAPE class definition.
00003  *
00004  * \if NODOC
00005  * $Id: lrshape.h_v 1.17 2005/03/01 16:51:07 scowan Exp $
00006  *
00007  * $Log: lrshape.h_v $
00008  * Revision 1.17  2005/03/01 16:51:07  scowan
00009  * Support v_copy method.
00010  *
00011  * Revision 1.16  2005/02/23 18:54:58  mju
00012  * Move label placement stuff to layerview.
00013  *
00014  * Revision 1.15  2005/01/26 23:43:43  ldyas
00015  * *** empty log message ***
00016  *
00017  * Revision 1.14  2005/01/26 23:41:45  ldyas
00018  * added auto label element.
00019  *
00020  * Revision 1.13  2005/01/20 16:57:34  mju
00021  * Redesign layer type registration.
00022  *
00023  * Revision 1.12  2004/10/01 17:20:15  mju
00024  * Add dlgparent to assignObject.
00025  *
00026  * Revision 1.11  2004/09/08 20:23:24  dwilliss
00027  * Implement LAYERPLACEMENT stuff
00028  *
00029  * Revision 1.10  2004/07/12 23:14:13  mju
00030  * No georegion.
00031  *
00032  * Revision 1.9  2004/07/06 17:32:56  scowan
00033  * Changed to use more common element type styles.
00034  *
00035  * Revision 1.8  2004/03/05 18:43:47  mju
00036  * Eliminate old mgd.
00037  *
00038  * Revision 1.7  2004/02/06 16:01:49  mju
00039  * Use GRE_FIND_FLAGS.
00040  *
00041  * Revision 1.6  2003/09/15 13:48:59  fileserver!dwilliss
00042  * Doxygen
00043  *
00044  * Revision 1.5  2003/07/30 15:28:19  mju
00045  * Ignore private sections.
00046  *
00047  * Revision 1.4  2003/06/18 21:50:39  scowan
00048  * Fixed for windows native.
00049  *
00050  * Revision 1.3  2003/06/17 21:19:34  scowan
00051  * Updated for drawing.
00052  *
00053  * Revision 1.2  2003/06/14 02:11:27  scowan
00054  * Chagned dregion to a region2d in layerdc.
00055  * Calls floating point mgd methods.
00056  *
00057  * Revision 1.1  2003/06/06 22:08:02  scowan
00058  * Initial revision
00059  *
00060  * \endif
00061 **/
00062 
00063 #ifndef  INC_GRE_LRSHAPE_H
00064 #define  INC_GRE_LRSHAPE_H
00065 
00066 #ifndef  INC_MI32_GRE_H
00067 #include <mi32/gre.h>
00068 #endif
00069 
00070 #ifndef  INC_MI32_MGD2_H
00071 #include <mi32/mgd2.h>
00072 #endif
00073 
00074 #ifndef GENERATING_DOXYGEN_OUTPUT
00075 namespace RVC {
00076    class SHAPE;
00077    }
00078 
00079 namespace GRE {
00080    class LABELPLACEMENT;
00081    class LABELPLACE;
00082    }
00083 #endif // GENERATING_DOXYGEN_OUTPUT
00084 
00085    
00086 //! GRE layer class for viewing Shape spatial object.
00087 //===================================================================================================================
00088 
00089 class GRE_LAYER_SHAPE : public GRE_LAYER {
00090    public:
00091 
00092       // GRE_LAYER_SHAPE::DISPPARM
00093       class DISPPARM : public GRE_LAYER::DISPPARM {
00094          public:
00095 
00096             class DLG;                             //!< Layer settings dialog, defined in <gre/uishape.h>
00097 
00098             //! Element parameters.
00099             class ELEMENTPARMS {
00100                public:
00101                   SELECTPARMS Select;
00102                   POINTPARMS::POINTSTYLEPARMS m_PointStyle;
00103                   LINEPARMS::LINESTYLEPARMS m_LineStyle;
00104                   POLYPARMS::POLYSTYLEPARMS m_PolyStyle;
00105                   DATATIPPARMS DataTip;                  //!< DataTip parameters
00106                   
00107                   LEGENDPARMS Legend;
00108                   RVC::OBJECTNAME LegendElemTableName;
00109 
00110                   ELEMENTPARMS ();
00111                   ELEMENTPARMS (const ELEMENTPARMS& rhs);
00112                   ~ELEMENTPARMS ();
00113 
00114                   ELEMENTPARMS& operator= (const ELEMENTPARMS& rhs);
00115                   void Validate ();
00116                   AUTOLABELPARMS AutoLabel;
00117                };
00118                
00119             RVC::OBJITEM m_ObjItem;
00120             RVC::OBJECTNAME m_GeorefName;          //!< Name of georeference object
00121             RVC::OBJITEM m_ObjItemStyle;
00122             ELEMENTPARMS m_Element;
00123             bool m_EnablePolyFill3D;
00124             bool m_EnableLabelClipUnder;
00125             bool m_IsEditable;
00126             bool m_HasSaveInfo;
00127             mutable RVC::OBJITEM m_SaveObjItem;
00128             mutable RVC::OBJITEM m_SaveObjItemStyle;
00129             MISTRING m_ConnectionString;
00130 
00131             DISPPARM ();
00132             DISPPARM (
00133                const DISPPARM& rhs
00134                ) { Copy(rhs); }
00135 
00136             virtual ~DISPPARM (
00137                ) { Free(); }
00138 
00139             DISPPARM& operator= (
00140                const DISPPARM& rhs
00141                ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00142 
00143             //! Set to use specified object.
00144             ERRVALUE SetObject (
00145                const RVCOBJITEM& objitem,    //!< Object to set
00146                bool keepsettings = false     //!< Retain current display settings
00147                );
00148 
00149          private:
00150             #ifndef GENERATING_DOXYGEN_OUTPUT
00151             static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZER::ITEMDEF *, void *, SERIALIZER::ITEMDEF::ACTION);
00152             void Copy (const DISPPARM&);
00153             void Free ();
00154             void UpdateSaveInfo () const;
00155 
00156             //! Overrides from SERIALIZABLE.
00157             virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00158             virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00159 
00160             //! Overrides from GRE_LAYER::DISPPARM.
00161             virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00162             virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00163             virtual ERRVALUE v_Validate ();
00164 
00165             friend class GRE_LAYER_SHAPE;
00166             #endif //!< GENERATING_DOXYGEN_OUTPUT
00167          }; //! End of GRE_LAYER_SHAPE::DISPPARM
00168 
00169       //! Register this layer type
00170       static void RegisterType (
00171          );
00172 
00173       //! Method to install SML class, called by internal SML function.
00174       static void SMLClassInstall (
00175          SMLCONTEXT *context                    //!< SML context
00176          );
00177 
00178       //! Construct layer and insert into list.
00179       explicit GRE_LAYER_SHAPE (
00180          GRE_GROUP *group,                            //!< Group to contain layer
00181          CREATEFLAGS createflags = CREATEFLAG_None,   //!< Creation flags
00182          GRE::LISTPOS listpos = GRE::LISTPOS_Last,    //!< Position in list
00183          GRE_LAYER *reflayer = 0                      //!< Reference layer for insertion
00184          );
00185 
00186       virtual ~GRE_LAYER_SHAPE ();
00187 
00188       //! Retrieve layer-specific display parameters
00189       const DISPPARM& GetDispParm (
00190          ) const { return (m_dispparm); }
00191 
00192       //! Set layer-specific display parameters.
00193       //! This is the recommended method for changing how an existing layer is to be
00194       //! rendered.  Validation will be performed on the specified parameters and
00195       //! adjustments made to the layer's copy if necessary.  Use of this method
00196       //! usually result in a ChangeBegin / ChangeEnd message pair, and will also
00197       //! generate a ChangeObject message if the spatial object used in the layer
00198       //! is changed.
00199       ERRVALUE SetDispParm (
00200          const DISPPARM& dispparm               //!< Parameters to set
00201          );
00202 
00203    protected:
00204 
00205       DISPPARM m_dispparm;                      //!< Layer-specific display parameters
00206 
00207    private:
00208       #ifndef GENERATING_DOXYGEN_OUTPUT
00209 
00210    #ifdef X_NATIVE
00211       static void CB_ExtractRegion (Widget, void*, void*);
00212       static void CB_LegendElemListAddRmv (Widget, void*, void*);
00213       ERRVALUE OnLegendElemListAddRmv (Widget dlgparent);
00214    #endif
00215       static void DBCB_D3Point (DBCALLBACKSTRUCT*, GRE_LAYER_SHAPE*);
00216       static void DBCB_D3Poly (DBCALLBACKSTRUCT*, GRE_LAYER_SHAPE*);
00217       static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00218 
00219       GRE_LEGEND_POINT m_PointLegend;
00220       GRE_LEGEND_LINE m_LineLegend;
00221       GRE_LEGEND_POLY m_PolyLegend;
00222       COMPINFO m_ElementCompInfo;
00223       GRE_SCRIPTCONTEXT_STYLE m_StyleSC;
00224       int m_StyleSegPoint;
00225       int m_StyleSegLine;
00226       int m_StyleSegPoly;
00227       int m_StyleSegPoint3dBase;
00228       int m_StyleSegPoint3dExt;
00229       int m_StyleSegPoly3dExt;
00230       bool m_HaveTempDrapeRasts;
00231       RVC::OBJECT m_TempDrapeFile;
00232       RVC::OBJITEM m_TempDrapeRast;
00233       RVC::OBJITEM m_TempDrapeMask;
00234       #if defined(X_NATIVE) || defined(WIN32_MFC)
00235          DISPPARM::DLG* m_ControlPanelDialog;
00236       #endif
00237       RVC::SHAPE *m_pObjShape;
00238       
00239       class PRIVDRAWDATA;
00240       friend class PRIVDRAWDATA;
00241       
00242       int CallDrawFilter (GRE_LAYERDC* ldc, INT32 ElemNum, void* data) {
00243          if (m_DrawFilter != 0) return (m_DrawFilter(ldc, ELEMTYPE_All, ElemNum, data));
00244          return (1);
00245          }
00246 
00247       int DrawPolyFilled3D (GRE_LAYERDC&);
00248       ERRVALUE OpenPrivateObject ();
00249       void ScalePointsZ (POLYLINE&);
00250       void Setup3D ();
00251       ERRVALUE SetupDrape3D (GRE_LAYERDC&);
00252       ERRVALUE SetupLegend ();
00253       int SetupRegion ();
00254       ERRVALUE SetupScriptContext (GRE_SCRIPTCONTEXT_DRAW& sc);
00255 
00256       //! Overrides from GRE_LAYER.
00257    #ifdef WIN32_MFC
00258       virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00259       virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00260    #endif
00261    #ifdef X_NATIVE
00262       virtual void v_AppendPopupMenuItems (Widget widget, const DPOINT2D *point, MENUITEMARRAY& menuitems);
00263    #endif
00264       virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00265       virtual bool v_CanShowDetails () const;
00266       virtual GRE::LAYERVIEW* v_ConstructLayerView (GRE_VIEW*);
00267    #if defined(X_NATIVE) || defined(WIN32_MFC)
00268       virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00269    #endif
00270       virtual GRE_LAYER* v_Copy (GRE_GROUP *group) const;
00271       virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00272       virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00273       virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00274       virtual ERRVALUE v_DrawElementLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, INT32 ElemNum, const void *style);
00275       virtual ERRVALUE v_DrawElementsLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, const UINT8 *ElemSet, const void *style);
00276       virtual ERRVALUE v_DrawElementSample (const GRE_ELEMSAMPLE_DC& sampledc, const RVC::ELEMENT& element, const LRECT2D& samplerect);
00277       virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, GRE_FIND_FLAGS findflags);
00278       virtual int v_GetComponent (ELEMTYPE ElemType) const;
00279       virtual MICON v_GetComponentIcon (int component) const;
00280       virtual COMPINFO* v_GetComponentInfo (int component);
00281       virtual MISTRING v_GetComponentName (int component) const;
00282       virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00283       virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00284       virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
00285       virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents);
00286       virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, BITSET& ElemSet);
00287       virtual ELEMTYPE v_GetElemType (int component) const;
00288       virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00289       virtual bool v_GetLabelColor (GRE_LAYERDC&, const GRE::LABELPLACE&, COLOR&);
00290       virtual const GRE_LEGEND* v_GetLegend (ELEMTYPE ElemType);
00291       virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00292       virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00293       virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00294    #ifdef X_NATIVE
00295       virtual MENUITEM* v_GetToolMenu () const;
00296    #endif
00297    #ifdef WIN32_MFC
00298       virtual bool v_HasTreeViewLegend () const;
00299    #endif
00300       virtual bool v_IsTableUsableForComponent (int component, const RVCTABLEINFO& table) const;
00301    #if defined(X_NATIVE) || defined(WIN32_MFC)
00302       virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00303    #endif
00304       virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, INT32 ElemNum);
00305       virtual const char* v_SerialGetTagName () const;
00306       virtual ERRVALUE v_SerialRead (SERIALIZER& serializer);
00307       virtual void v_SetDftName (bool ReplaceExisting);
00308       virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00309       virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
00310       virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
00311       virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00312       virtual int v_TestElementByRegion (ELEMTYPE ElemType, INT32 ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00313       virtual int v_UpdateExtents (bool forceupdate);
00314 
00315       GRE_LAYER_SHAPE (const GRE_LAYER_SHAPE&);
00316       GRE_LAYER_SHAPE& operator= (const GRE_LAYER_SHAPE&);
00317 
00318       #endif //!< GENERATING_DOXYGEN_OUTPUT
00319    };
00320 
00321 
00322 #endif   //!< INC_GRE_LRSHAPE_H
00323 

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