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

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