lrcad.h

Go to the documentation of this file.
00001 /**
00002  * gre/lrcad - GRE_LAYER_CAD class definition.
00003  *
00004  * \if NODOC
00005  * $Id: lrcad.h_v 1.5 2004/10/01 17:19:48 mju Exp $
00006  *
00007  * $Log: lrcad.h_v $
00008  * Revision 1.5  2004/10/01 17:19:48  mju
00009  * Add dlgparent to assignObject.
00010  *
00011  * Revision 1.4  2004/09/08 20:23:04  dwilliss
00012  * Implement LAYERPLACEMENT stuff
00013  *
00014  * Revision 1.3  2004/07/12 23:13:44  mju
00015  * Use region2d.
00016  *
00017  * Revision 1.2  2004/06/16 21:54:25  scowan
00018  * Significant changes to cad layer and dispparm definitions.
00019  *
00020  * Revision 1.1  2004/06/04 20:50:00  scowan
00021  * Initial revision
00022  *
00023  * \endif
00024 **/
00025 
00026 #ifndef  INC_GRE_LRCAD_H
00027 #define  INC_GRE_LRCAD_H
00028 
00029 #ifndef  INC_MI32_GRE_H
00030 #include <mi32/gre.h>
00031 #endif
00032 
00033 #ifndef GENERATING_DOXYGEN_OUTPUT
00034 namespace GRE {
00035    class LABELPLACEMENT;
00036    class LABELPLACE;
00037    }
00038 #endif
00039 
00040 //===================================================================================================================
00041 
00042 //! GRE layer class for viewing CAD spatial object.
00043 class GRE_LAYER_CAD : public GRE_LAYER {
00044    public:
00045 
00046       // GRE_LAYER_CAD::DISPPARM
00047       class DISPPARM : public GRE_LAYER::DISPPARM {
00048          public:
00049 
00050             class DLG;
00051 
00052             RVC::OBJITEM m_ObjItem;
00053             RVC::OBJECTNAME m_GeorefName;          //!< Name of georeference object
00054             RVC::OBJITEM m_ObjItemStyle;
00055             INT32 BlockNum;                     //!< Number of block to display
00056             MULTISTYLE AllSame;              //!< Style to use if StyleMode == STYLEMODE_AllSame
00057             MULTISTYLE Hilite;               //!< Style to use for highlighting "selected" elements
00058             UINT32 ElemDrawPixel;
00059             UINT32 ElemDrawHilitePixel;
00060             UINT16 SelectMode;                  //!< Element selection mode - SELECTMODE_xxxxx...
00061             UINT16 StyleMode;                //!< Element style mode - STYLEMODE_xxxxx...
00062             UINT8 CADElemSelect[(CAD_LAST + 7)/8];
00063             INT16 SelectTable;                  //!< "Style assignment" table number for CAD element selection
00064             INT16 StyleTable;                //!< "Style assignment" table number for CAD element styling
00065             UNICODE *SelectQueryStr;         //!< Query string for element selection
00066             UNICODE *StyleQueryStr;          //!< Query string for element styling
00067             DATATIPPARMS DataTip;            //!< DataTip parameters
00068             bool m_EnableLabelClipUnder;
00069             bool m_IsEditable;
00070             bool m_HasSaveInfo;
00071             bool m_ShowLabelBase;
00072             LINESTYLE m_LabelBaseStyle;
00073             LABELFRAMEPARMS m_LabelFrame;
00074             mutable RVC::OBJITEM m_SaveObjItem;
00075             mutable RVC::OBJITEM m_SaveObjItemStyle;
00076 
00077             DISPPARM ();
00078             DISPPARM (
00079                const DISPPARM& rhs
00080                ): GRE_LAYER::DISPPARM(rhs) { Copy(rhs); }
00081             virtual ~DISPPARM (
00082                ) { Free(); }
00083 
00084             DISPPARM& operator= (const DISPPARM& rhs) {
00085                if (this != &rhs) {
00086                   Free();
00087                   Copy(rhs);
00088                   }
00089                return (*this);
00090                }
00091 
00092             //! Set to use specified object.
00093             ERRVALUE SetObject (
00094                const RVCOBJITEM& objitem,    //!< Object to set
00095                bool keepsettings = false     //!< Retain current display settings
00096                );
00097 
00098          private:
00099             #ifndef GENERATING_DOXYGEN_OUTPUT
00100             static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZER::ITEMDEF *, void *, SERIALIZER::ITEMDEF::ACTION);
00101             void Copy (const DISPPARM&);
00102             void Free ();
00103             void UpdateSaveInfo () const;
00104 
00105             //! Overrides from SERIALIZABLE.
00106             virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00107             virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00108             
00109             //! Overrides from GRE_LAYER::DISPPARM.
00110             virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00111             virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00112             virtual ERRVALUE v_Validate ();
00113 
00114             friend class GRE_LAYER_CAD;
00115             #endif // GENERATING_DOXYGEN_OUTPUT
00116          }; // End of GRE_LAYER_CAD::DISPPARM
00117 
00118       //! Construct instance of this layer type
00119       static int Construct (
00120          GRE_GROUP *group,                      //!< Group to contain layer
00121          GRE_LAYER **retlayer,                  //!< Layer returned
00122          GRE_LAYER *reflayer,                   //!< Reference layer for insertion
00123          UINT32 flags                           //!< Creation flags
00124          );
00125 
00126       //! Register this layer type
00127       static void RegisterType (
00128          );
00129 
00130       //! Install SML class, called by internal SML function.
00131       static void SMLClassInstall (
00132          SMLCONTEXT *context
00133          );
00134 
00135       //! Construct layer and insert into list
00136       explicit GRE_LAYER_CAD (
00137          GRE_GROUP *group,                      //!< Group to contain layer
00138          GRE_LAYER *reflayer = 0,               //!< Reference layer for insertion
00139          UINT32 flags = MDISPCREATE_InsertAfter //!< MDISPCREATE flags
00140          );
00141 
00142       virtual ~GRE_LAYER_CAD ();
00143 
00144       //! Get index into database list given "element number"
00145       INT32 GetDBListIndex (
00146          INT32 ElemNum,                         //!< Element number
00147          int dbhandle = -1                      //!< Open database object handle or -1 (default) if not available
00148          );
00149 
00150       //! Retrieve layer-specific display parameters
00151       const DISPPARM& GetDispParm (
00152          ) const { return (m_dispparm); }
00153 
00154       //! Set layer-specific display parameters.
00155       //!
00156       //! This is the recommended method for changing how an existing layer is to be
00157       //! rendered.  Validation will be performed on the specified parameters and
00158       //! adjustments made to the layer's copy if necessary.  Use of this method
00159       //! usually result in a ChangeBegin / ChangeEnd message pair, and will also
00160       //! generate a ChangeObject message if the spatial object used in the layer
00161       //! is changed.
00162       ERRVALUE SetDispParm (
00163          const DISPPARM& dispparm               //!< Parameters to set
00164          );
00165 
00166    protected:
00167 
00168       DISPPARM m_dispparm;                      //!< Layer-specific display parameters
00169       COMPINFO m_ElemCompInfo;
00170 
00171       virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00172 
00173    private:
00174       #ifndef GENERATING_DOXYGEN_OUTPUT
00175       
00176       #if defined(X_NATIVE) || defined(WIN32_MFC)
00177          DISPPARM::DLG* m_ControlPanelDialog;
00178       #endif
00179       RVC::CAD *m_pObjCad;
00180       
00181       class PRIVDRAWDATA;
00182       friend class PRIVDRAWDATA;
00183 
00184       ERRVALUE OpenPrivateObject ();
00185       int SetupRegion ();
00186 
00187       //! Overrides from GRE_LAYER.
00188    #ifdef WIN32_MFC
00189       virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00190       virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00191    #endif
00192       virtual bool v_CanShowDetails () const;
00193       virtual GRE::LAYERVIEW* v_ConstructLayerView (GRE_VIEW*);
00194       virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00195    #if defined(X_NATIVE) || defined(WIN32_MFC)
00196       virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00197    #endif
00198       virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00199       virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00200       virtual INT32 v_DbListIndexToElemNum (int component, INT32 index);
00201       virtual INT32 v_DbListElemNumToIndex (int component, INT32 ElemNum);
00202       virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00203       virtual ERRVALUE v_DrawElementLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, INT32 ElemNum, const void *style);
00204       virtual ERRVALUE v_DrawElementsLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, const UINT8 *ElemSet, const void *style);
00205       virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, GRE_FIND_FLAGS findflags);
00206       virtual int v_GetComponent (ELEMTYPE ElemType) const;
00207       virtual MICON v_GetComponentIcon (int component) const;
00208       virtual COMPINFO* v_GetComponentInfo (int component);
00209       virtual MISTRING v_GetComponentName (int component) const;
00210       virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00211       virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00212       virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
00213       virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents);
00214       virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, BITSET& ElemSet);
00215       virtual ELEMTYPE v_GetElemType (int component) const;
00216       virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00217       virtual bool v_GetLabelColor (GRE_LAYERDC&, const GRE::LABELPLACE&, COLOR&);
00218       virtual GRE::LABELPLACEMENT* v_GetLabelPlacement (GRE_VIEW*);
00219       virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00220       virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00221    #ifdef WIN32_MFC
00222       virtual bool v_HasTreeViewLegend () const;
00223    #endif
00224    #if defined(X_NATIVE) || defined(WIN32_MFC)
00225       virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00226    #endif
00227       virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, INT32 ElemNum);
00228       virtual const char* v_SerialGetTagName () const;
00229       virtual void v_SetDftName (bool ReplaceExisting);
00230       virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00231       virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
00232       virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00233       virtual int v_TestElementByRegion (ELEMTYPE ElemType, INT32 ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00234       virtual int v_UpdateExtents (bool forceupdate);
00235 
00236       GRE_LAYER_CAD (const GRE_LAYER_CAD&);
00237       GRE_LAYER_CAD& operator= (const GRE_LAYER_CAD&);
00238 
00239       #endif // GENERATING_DOXYGEN_OUTPUT
00240    };
00241 
00242 
00243 //===================================================================================================================
00244 
00245 class GRE_LAYER_SKETCH : public GRE_LAYER_CAD {
00246    public:
00247 
00248       enum WARNOUTSIDE {
00249          WARNOUTSIDE_Always,
00250          WARNOUTSIDE_Once,
00251          WARNOUTSIDE_Never
00252          };
00253 
00254       //! Construct instance of this layer type
00255       static int Construct (
00256          GRE_GROUP *group,                      //!< Group to contain layer
00257          GRE_LAYER **retlayer,                  //!< Layer returned
00258          GRE_LAYER *reflayer,                   //!< Reference layer for insertion
00259          UINT32 flags                           //!< Creation flags
00260          );
00261 
00262       //! Register this layer type
00263       static void RegisterType (
00264          );
00265 
00266       //! Construct layer and insert into list
00267       explicit GRE_LAYER_SKETCH (
00268          GRE_GROUP *group,                      //!< Group to contain layer
00269          GRE_LAYER *reflayer = 0,               //!< Reference layer for insertion
00270          UINT32 flags = MDISPCREATE_InsertAfter //!< MDISPCREATE flags
00271          );
00272 
00273       virtual ~GRE_LAYER_SKETCH ();
00274 
00275    #if defined(X_NATIVE) || defined(WIN32_MFC)
00276       //! Add element to sketch object.
00277       ERRVALUE AddElement (
00278          MDLGPARENT dlgparent,
00279          RVC::CAD::ELEMENT& Element,
00280          const MULTISTYLE& style,
00281          GRE_VIEW *view
00282          );
00283    #endif
00284 
00285    #if defined(X_NATIVE) || defined(WIN32_MFC)
00286       //! Delete last element in sketch (CAD) object.
00287       ERRVALUE DeleteLastElement (
00288          );
00289    #endif
00290 
00291    #if defined(X_NATIVE) || defined(WIN32_MFC)
00292       //! Display dialog allowing user to define attribute table for sketch object.
00293       ERRVALUE DlgDefineAttribTable (
00294          MDLGPARENT dlgparent
00295          );
00296    #endif
00297 
00298    #if defined(X_NATIVE) || defined(WIN32_MFC)
00299       //! Locate existing attribute table if any.
00300       ERRVALUE FindAttribTable (
00301          );
00302    #endif
00303 
00304    #if defined(X_NATIVE) || defined(WIN32_MFC)
00305       //! Locate existing attribute table if any.
00306       RVC::STYLE& GetStyleObject (
00307          ) { return (m_StyleObj); }
00308    #endif
00309 
00310    #if defined(X_NATIVE) || defined(WIN32_MFC)
00311       //! Determine if layer has attribute table defined.
00312       bool HasAttribTable (
00313          ) const { return (m_AttribTableNum != TABLE_Invalid); }
00314    #endif
00315 
00316    #if defined(X_NATIVE) || defined(WIN32_MFC)
00317       //! Set whether to prompt user for attribute record when adding element
00318       void SetPromptForAttrib (
00319          bool PromptForAttrib
00320          ) { m_PromptForAttrib = PromptForAttrib; }
00321    #endif
00322 
00323    #if defined(X_NATIVE) || defined(WIN32_MFC)
00324       //! Create or open style object used by sketch layer.
00325       ERRVALUE SetupStyleObject (
00326          );
00327    #endif
00328 
00329    #if defined(X_NATIVE) || defined(WIN32_MFC)
00330       //! Set option for warning user of adding elements outside group.
00331       void SetWarnOutside (
00332          WARNOUTSIDE WarnOutside
00333          ) { m_WarnOutside = WarnOutside; }
00334    #endif
00335 
00336    private:
00337       #ifndef GENERATING_DOXYGEN_OUTPUT
00338 
00339    #if defined(X_NATIVE) || defined(WIN32_MFC)
00340       WARNOUTSIDE m_WarnOutside;
00341       bool m_WarnOutsideDone;
00342       bool m_PromptForAttrib;
00343       int m_AttribTableNum;
00344       DBEDIT m_DbEdit;
00345    #endif
00346       RVC::STYLE m_StyleObj;
00347       RVC::CAD m_CadSketchObj;
00348 
00349       ERRVALUE OpenPrivateObject (RVC::OBJECT::OPENMODE mode);
00350       //! Overrides from GRE_LAYER
00351    #if defined(X_NATIVE) || defined(WIN32_MFC)
00352       virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00353    #endif
00354       virtual const char* v_SerialGetTagName () const;
00355 
00356       GRE_LAYER_SKETCH (const GRE_LAYER_SKETCH&);
00357       GRE_LAYER_SKETCH& operator= (const GRE_LAYER_SKETCH&);
00358 
00359       #endif // GENERATING_DOXYGEN_OUTPUT
00360    };
00361 
00362 //===================================================================================================================
00363 
00364 #endif   //!< INC_GRE_LRCAD_H

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