lrpinmap.h

Go to the documentation of this file.
00001 /**
00002  * \file lrpinmap.h <gre/lrpinmap.h>
00003  * \brief Definitions for GRE_LAYER_PINMAP
00004  *
00005  * \if NODOC
00006  * $Id: lrpinmap.h_v 1.6 2005/03/31 16:57:06 fileserver!dwilliss Exp $
00007  * \endif
00008 **/
00009 
00010 #ifndef  INC_GRE_LRPINMAP_H
00011 #define  INC_GRE_LRPINMAP_H
00012 
00013 #ifndef  INC_GRE_LAYER_H
00014 #include <gre/layer.h>
00015 #endif
00016 
00017 #ifndef  INC_GRE_LEGEND_H
00018 #include <gre/legend.h>
00019 #endif
00020 
00021 #ifndef  INC_MI32_LATLONFM_H
00022 #include <mi32/latlonfm.h>
00023 #endif
00024 
00025 //===================================================================================================================
00026 
00027 class GRE_LAYER_PINMAP : public GRE_LAYER {
00028    public:
00029 
00030       class DISPPARM : public GRE_LAYER::DISPPARM {
00031          public:
00032 
00033             class DLG;
00034 
00035             static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZER::ITEMDEF *, void *, SERIALIZER::ITEMDEF::ACTION);
00036 
00037             MIUNICODE filename[FILENAME_MAX];         //!< Filename of the object
00038             int fhandle;                           //!< RVC file handle
00039             int ohandle;                           //!< RVC object handle
00040             MIUNICODE stylefilename[FILENAME_MAX]; //!< File for style object if needed, blank if under vector
00041             INT32 styleinode;                      //!< Inode for style object if needed, <= 0 if under vector
00042             int stylefhandle;                      //!< File handle for open style object
00043             int styleohandle;                      //!< Object handle for open style object
00044             RVCDBASEINFO objinfo;
00045             INT16 tablenum;
00046             INT16 xfield;                    //!< -1 indicates set by query
00047             INT16 yfield;                    //!< -1 indicates set by query
00048             INT16 zfield;                    //!< -1 if by query, -2 if none
00049             INT16 labelfield;                //!< -1 if by query, -2 if none
00050             UINT8 LabelPosn;                 //!< Label position
00051             INT32 NumRecords;
00052             POINTSTYLE PointStyle;
00053             UINT16 SelectMode;               //!< Record selection mode - SELECTMODE_xxxxx...
00054             UINT16 StyleMode;                //!< Record style mode - STYLEMODE_xxxxx...
00055             MIUNICODE *QueryString;
00056             TEXTSTYLE LabelStyle;
00057             DMSTYPE LatLonFormat;
00058             UINT8 XYUnitCode;
00059             UINT8 ZUnitCode;
00060             DATATIPPARMS DataTip;            //!< DataTip parameters
00061             SPATREF::COORDREFSYS PointCRS;
00062 
00063             DISPPARM ();
00064             DISPPARM (
00065                const DISPPARM& rhs
00066                ): GRE_LAYER::DISPPARM(rhs) { Copy(rhs); }
00067             virtual ~DISPPARM (
00068                ) { Free(); }
00069 
00070             DISPPARM& operator= (const DISPPARM& rhs) {
00071                if (this != &rhs) {
00072                   Free();
00073                   Copy(rhs);
00074                   }
00075                return (*this);
00076                }
00077 
00078             void CloseObject ();
00079             int OpenObject (UINT32, MDLGPARENT parent = NULL);
00080 
00081          protected:
00082             virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00083 
00084          private:
00085             #ifndef GENERATING_DOXYGEN_OUTPUT
00086             void Copy (const DISPPARM&);
00087             void Free ();
00088 
00089             virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00090             virtual ERRVALUE v_Validate ();
00091 
00092             friend class GRE_LAYER_PINMAP;
00093             #endif // GENERATING_DOXYGEN_OUTPUT
00094          };
00095 
00096       //! Register this layer type
00097       static void RegisterType (
00098          );
00099 
00100       //! Install SML class, called by internal SML function.
00101       static void SMLClassInstall (
00102          SMLCONTEXT *context                    //!< SML context
00103          );
00104 
00105       //! Construct layer and insert into list
00106       explicit GRE_LAYER_PINMAP (
00107          GRE_GROUP *group,                            //!< Group to contain layer
00108          CREATEFLAGS createflags = CREATEFLAG_None,   //!< Creation flags
00109          GRE::LISTPOS listpos = GRE::LISTPOS_Last,    //!< Position in list
00110          GRE_LAYER *reflayer = 0                      //!< Reference layer for insertion
00111          );
00112 
00113       virtual ~GRE_LAYER_PINMAP ();
00114 
00115       //! Open object(s) for this layer
00116       //! @return TRUE if was opened, FALSE if open already, < 0 if error
00117       virtual int OpenObject (
00118          UINT32 filemode = RVCFILE_ReadLock,    //!< RVC file access mode
00119          MDLGPARENT dlgparent = 0               //!< Parent for dialog
00120          );
00121 
00122       //! Retrieve layer-specific display parameters.
00123       const DISPPARM& GetDispParm (
00124          ) const {
00125          return (m_dispparm);
00126          }
00127 
00128       //! Get point coordinates for specified "element" (record number).
00129       ERRVALUE GetPoint (
00130          INT32 ElemNum,                         //!< Element record number in table
00131          DPOINT3D& point                        //!< Point coordinates returned
00132          );
00133 
00134       //! Set layer-specific display parameters.
00135       //!
00136       //! This is the recommended method for changing how an existing layer is to be
00137       //! rendered.  Validation will be performed on the specified parameters and
00138       //! adjustments made to the layer's copy if necessary.  Use of this method
00139       //! usually result in a ChangeBegin / ChangeEnd message pair, and will also
00140       //! generate a ChangeObject message if the spatial object used in the layer
00141       //! is changed.
00142       ERRVALUE SetDispParm (
00143          const DISPPARM& dispparm               //!< Parameters to set
00144          );
00145 
00146    protected:
00147 
00148       DISPPARM m_dispparm;                      //!< Layer-specific display parameters
00149 
00150    private:
00151       #ifndef GENERATING_DOXYGEN_OUTPUT
00152 
00153       class PRIVDRAWDATA;
00154       friend class PRIVDRAWDATA;
00155 
00156       static void CB_NotifyDatabase (DBCALLBACKSTRUCT*, void *vlayer);
00157       static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00158       static void SMLGET_StyleByScript (SMLCONTEXT*, SMLCLASSMEMBER*, void*, SMLARG*);
00159       static void SMLSET_Field (SMLCONTEXT*, SMLCLASSMEMBER*, void*, SMLARG*);
00160       static void SMLSET_StyleByScript (SMLCONTEXT*, SMLCLASSMEMBER*, void*, SMLARG*);
00161       static void SMLSET_Table (SMLCONTEXT*, SMLCLASSMEMBER*, void*, SMLARG*);
00162 
00163       GRE_LEGEND_POINT m_Legend;
00164       COMPINFO m_RecCompInfo;
00165       QUADTREE* m_SearchTree;
00166       INT32 m_SearchNumAdded;
00167 
00168       void ExtendRegion (
00169          const DPOINT3D& point
00170          );
00171 
00172       //! Overrides from GRE_LAYER.
00173    #ifdef WIN32_MFC
00174       virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00175       virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00176    #endif
00177       virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00178       virtual bool v_CanShowDetails () const;
00179       virtual void v_CloseObject ();
00180    #if defined(X_NATIVE) || defined(WIN32_MFC)
00181       virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00182    #endif
00183       virtual GRE_LAYER* v_Copy (GRE_GROUP *group) const;
00184       virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00185       virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00186       virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00187       virtual ERRVALUE v_DrawElementLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, INT32 ElemNum, const void *style);
00188       virtual ERRVALUE v_DrawElementsLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, const UINT8 *ElemSet, const void *style);
00189       virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, GRE_FIND_FLAGS findflags);
00190       virtual int v_GetComponent (ELEMTYPE ElemType) const;
00191       virtual MICON v_GetComponentIcon (int component) const;
00192       virtual COMPINFO* v_GetComponentInfo (int component);
00193       virtual MISTRING v_GetComponentName (int component) const;
00194       virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00195       virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00196       virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents);
00197       virtual ELEMTYPE v_GetElemType (int component) const;
00198       virtual const GRE_LEGEND* v_GetLegend (ELEMTYPE ElemType);
00199       virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00200       virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00201       virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00202    #ifdef WIN32_MFC
00203       virtual bool v_HasTreeViewLegend () const;
00204    #endif
00205       virtual int v_HighlightElementsByRegion (ELEMTYPE ElemType, const REGION2D& Region, TESTCRITERIA RegionTest, GRE_VIEW *firstview, GRE::DRAWFLAGS drawflags);
00206    #if defined(X_NATIVE) || defined(WIN32_MFC)
00207       virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00208    #endif
00209       virtual const char* v_SerialGetTagName () const;
00210       virtual ERRVALUE v_SerialRead (SERIALIZER& serializer);
00211       virtual void v_SetDftName (bool ReplaceExisting);
00212       virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00213       virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
00214       virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00215       virtual int v_TestElementByRegion (ELEMTYPE ElemType, INT32 ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00216       virtual int v_UpdateExtents (bool forceupdate);
00217       virtual GRE::LAYERVIEW* v_ConstructLayerView(GRE_VIEW* view);
00218       virtual bool v_GetLabelColor(GRE_LAYERDC&, const GRE::LABELPLACE&, COLOR&);
00219 
00220       GRE_LAYER_PINMAP (const GRE_LAYER_PINMAP&);
00221       GRE_LAYER_PINMAP& operator= (const GRE_LAYER_PINMAP&);
00222 
00223       #endif // GENERATING_DOXYGEN_OUTPUT
00224    };
00225 
00226 
00227 
00228 
00229 #endif   // INC_GRE_LRPINMAP_H
00230 

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