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

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