gre/layer.h

Go to the documentation of this file.
00001 /**
00002  * \file gre/layer.h
00003  * \brief GRE::LAYER class definition
00004  *
00005  * \if NODOC
00006  * $Id: layer.h_v 1.12 2003/12/15 16:52:51 mju Exp $
00007  *
00008  * $Log: layer.h_v $
00009  * Revision 1.12  2003/12/15 16:52:51  mju
00010  * Add dispflag_VectNoFillHighlighted.
00011  *
00012  * Revision 1.11  2003/11/20 13:26:33  mju
00013  * Add SetVisiblityGroupFromLayout.
00014  *
00015  * Revision 1.10  2003/10/06 19:38:38  mju
00016  * nc.
00017  *
00018  * Revision 1.9  2003/10/02 16:11:16  linux32build!build
00019  * doxygen
00020  *
00021  * Revision 1.8  2003/09/25 21:22:24  dwilliss
00022  * Don't capitalize enum any more. Genitor needed it, doxygen doesn't like it
00023  *
00024  * Revision 1.7  2003/09/23 13:08:08  mju
00025  * Explicitly init serializble in copy dispparm copy ctor.
00026  *
00027  * Revision 1.6  2003/09/18 22:00:53  mju
00028  * nc.
00029  *
00030  * Revision 1.5  2003/09/15 13:48:59  fileserver!dwilliss
00031  * Doxygen
00032  *
00033  * Revision 1.4  2003/07/31 13:38:40  mju
00034  * Add Filter method to LAYER::FILTER.
00035  *
00036  * Revision 1.3  2003/07/30 15:15:58  mju
00037  * Ignore private sections.
00038  * Move DISPPARM defn outside layer so will be doc'd.  Add inlines where req'd.
00039  *
00040  * Revision 1.2  2003/06/17 13:39:52  mju
00041  * Include mfctreeview.h for MFC.
00042  *
00043  * Revision 1.1  2003/06/16 19:39:43  mju
00044  * Initial revision
00045  * \endif
00046 **/
00047 
00048 #ifndef  INC_GRE_LAYER_H
00049 #define  INC_GRE_LAYER_H
00050 
00051 #ifndef  INC_GRE_OBJECTBASE_H
00052    #include <gre/objectbase.h>
00053 #endif
00054 
00055 #ifndef  INC_GRE_VIEWABLE_H
00056    #include <gre/viewable.h>
00057 #endif
00058 
00059 #ifndef  INC_GRE_ELEMSEARCH_H
00060    #include <gre/elemsearch.h>
00061 #endif
00062 
00063 #ifndef  INC_GRE_3DWIREFRAME_H
00064    #include <gre/3dwireframe.h>
00065 #endif
00066 
00067 #if !defined(INC_GRE_MFCTREEVIEW) && defined(WIN32_MFC)
00068    #include <gre/mfctreeview.h>
00069 #endif
00070 
00071 #ifndef  INC_MI32_GRTREE_H
00072    #include <mi32/grtree.h>
00073 #endif
00074 
00075 #ifndef  INC_MI32_RANGE_H
00076    #include <mi32/range.h>
00077 #endif
00078 
00079 #ifndef  INC_MI32_REGION_H
00080    #include <mi32/region.h>
00081 #endif
00082 
00083 #ifndef  INC_RVC_ELEMENT_H
00084    #include <rvc/element.h>
00085 #endif
00086 
00087 #ifndef  INC_MI32_RVCPARMS_H
00088    #include <mi32/rvcparms.h>
00089 #endif
00090 
00091 #ifndef  INC_MI32_DBEDIT_H
00092    #include <mi32/dbedit.h>
00093 #endif
00094 
00095 class BITSET;
00096 class BITSET_UNOWNED;
00097 struct SMLCONTEXT;
00098 struct SMLCLASSMEMBER;
00099 union SMLARG;
00100 struct DATATIPPARMS;
00101 class GRE_ELEMSAMPLE_DC;
00102 namespace RVC {
00103    class GETOBJFILTER;
00104    }
00105 
00106 //===================================================================================================================
00107 
00108 //! Flags stored in xxxxDISPPARM.dispflags
00109 enum DISPFLAGS {
00110    DISPFLAG_None =                  0x00000000,
00111    DISPFLAG_SaveDrawnSetOBS =       0x00000001, //!< OBSOLETE, DO NOT USE, retain def so can read old dispparms
00112    DISPFLAG_KeepOpenOBS =           0x00000002, //!< OBSOLETE, DO NOT USE, retain so can read old dispparms
00113    DISPFLAG_UseTempFile =           0x00000004, //!< Object is in a temporary file
00114    DISPFLAG_EditObjectOBS =         0x00000008, //!< OBSOLETE, DO NOT USE, retain so can read old dispparms
00115    DISPFLAG_NoDrawLabels =          0x40000000, //!< Don't draw labels
00116    DISPFLAG_DrawLabelsOnly =        0x80000000, //!< Only draw labels
00117 
00118    DISPFLAG_WarpToGeorefModel =     0x00000100, //!< Warp to model specified with georeference
00119    DISPFLAG_UsesTransparency =      0x00000200, //!< Uses transparency effects
00120    DISPFLAG_NoDrawWireframe =       0x00000400, //!< Don't draw layer in wireframe mode
00121    DISPFLAG_MayUseTransparency =    0x00000800, //!< Use of transparency unknown, assume it does until first time draw
00122 
00123    DISPFLAG_VectDrawNodes =         0x00010000, //!< Draw nodes for vector object
00124    DISPFLAG_VectLinesFirst =        0x00020000, //!< Draw vector lines before polygons
00125    DISPFLAG_VectNoFillPoly =        0x00040000, //!< Disable polygon filling
00126    DISPFLAG_VectNoFillHighlighted = 0x00080000, //!< Disable polygon filling when highlighted
00127 
00128    DISPFLAG_TINEdgesFirst =         0x00020000, //!< Draw TIN edges before triangles
00129    DISPFLAG_TINNoFillTri =          0x00040000, //!< Don't fill TIN triangles
00130 
00131    DISPFLAG_RastNullTransp =        0x00010000, //!< Make "null" cells transparent
00132    DISPFLAG_RastSkipOddLines =      0x00020000, //!< Skip odd screen lines (for 3Dmax glasses)
00133    DISPFLAG_RastSkipEvenLines =     0x00040000, //!< Skip even screen lines (for 3Dmax glasses)
00134    DISPFLAG_RastDoBlendMask =       0x00080000, //!< Do mask transparency blending if possible
00135    DISPFLAG_RastDisableRayCast =    0x00100000, //!< Disable ray-casting for 3D rendering
00136    DISPFLAG_RastSmoothForeground =  0x00200000, //!< Smooth foreground in 3D
00137    DISPFLAG_RastHyperspectLossy =   0x00400000, //!< Display hyperspectral in fast-lossy mode
00138 
00139    DISPFLAG_SurfProjOffEdge =       0x00010000, //!< Project data off edge of surface
00140 
00141    DISPFLAG_FormulaNullTransp =     0x00010000, //!< Make "null" cells transparent
00142    DISPFLAG_FormulaSkipOddLines =   0x00020000, //!< Skip odd screen lines (for 3Dmax glasses)
00143    DISPFLAG_FormulaSkipEvenLines =  0x00040000, //!< Skip even screen lines (for 3Dmax glasses)
00144    };
00145 DEFINE_ENUM_OP_BITWISE(DISPFLAGS);
00146 
00147 //===================================================================================================================
00148 
00149 enum LAYERDRAWFLAGS {
00150    LAYERDRAWFLAG_None =             0x0000,  //!< No flags
00151 // LAYERDRAWFLAG_ClipTo =           0x0001,
00152    LAYERDRAWFLAG_Clip =             0x0002,  //!< Clip layer
00153    LAYERDRAWFLAG_NoClipToGroup =    0x0004,  //!< Don't clip layer to group
00154    LAYERDRAWFLAG_SaveToTemplate =   0x0008,  //!< Save layer as-is to template
00155    LAYERDRAWFLAG_EditInTNTserver =  0x0010,  //!< Allow layer to be edited in TNTserver
00156    LAYERDRAWFLAG_MaskAll =          0xFFFF,  //!< Mask for setting all flags
00157    };
00158 DEFINE_ENUM_OP_BITWISE(LAYERDRAWFLAGS);
00159 
00160 //===================================================================================================================
00161 
00162 enum LAYERFLAGS {
00163    LAYERFLAG_None =                 0x00000000, //!< No flags
00164    LAYERFLAG_NoSelNewObj =          0x00000010, //!< Don't allow user to select new object(s) via CtrlPanel
00165    LAYERFLAG_HiliteColorSet =       0x00000040, //!< Separate highlight color has been set for layer
00166    LAYERFLAG_3D =                   0x00000200, //!< Layer is fully 3-D, no "surface" required
00167    LAYERFLAG_KeepOpen =             0x00020000, //!< Set if object should remain open until layer is destroyed
00168    LAYERFLAG_Editable =             0x00040000, //!< Set if layer can be edited
00169    LAYERFLAG_CanShowInLocator =     0x00100000, //!< Set if can show this layer in the Locator window
00170    LAYERFLAG_IgnoreExtents =        0x00400000, //!< Ignore this layer when determining group extents
00171    LAYERFLAG_NoGeoreference =       0x00080000, //!< Set if no georeference info should be read for layer
00172    LAYERFLAG_NoDrawActiveElem =     0x01000000, //!< Don't draw "active" element
00173    LAYERFLAG_NoShowInLayerMgr =     0x02000000, //!< Don't show in layer manager, must also set LAYERFLAG_Temporary
00174    LAYERFLAG_NoAllowHide =          0x04000000, //!< Don't allow user to hide layer
00175    LAYERFLAG_NoAllowDelete =        0x08000000, //!< Don't allow user to delete layer
00176    LAYERFLAG_Temporary =            0x10000000, //!< Layer is temporary, cannot save in layout
00177    LAYERFLAG_MaskAll =              0xFFFFFFFF, //!< Mask for setting all flags
00178    };
00179 DEFINE_ENUM_OP_BITWISE(LAYERFLAGS);
00180 
00181 //===================================================================================================================
00182 
00183 #define  GRE_MAXLAYERTYPES    32
00184 
00185 //! Layer base class.
00186 class GRE_LAYER : public GRE_OBJECT {
00187    public:
00188 
00189       //! Layer types.
00190       enum TYPE {
00191          TYPE_None =       0,
00192          TYPE_Raster =     1,
00193          TYPE_Vector =     2,
00194          TYPE_CAD =        3,
00195          TYPE_DBPinmap =   4,
00196          TYPE_MapGrid =    5,
00197          TYPE_ScaleBar =   6,
00198          TYPE_Text =       7,
00199          TYPE_Legend =     8,
00200          TYPE_TIN =        9,
00201          TYPE_Sketch =     10,
00202          TYPE_Region =     11,
00203          TYPE_Surface =    12,
00204          TYPE_Script =     13,
00205          TYPE_Formula =    14,
00206          TYPE_Legend2 =    15,
00207          TYPE_Shape =      16,
00208          TYPE_NEXT
00209          //! Check GRE_MAXLAYERTYPES when add new types
00210          };
00211 
00212       //! Container for global layer options.
00213       class GLOBALOPTIONS {      // GRE_LAYER::GLOBALOPTIONS
00214          public:
00215 
00216             class FORM;                         //!< Global options form, defined in <gre/uilrglob.h>
00217 
00218             enum DFTNAMEMODE {
00219                DFTNAMEMODE_ObjectDesc =      0,    //!< Use object description (or name if no description)
00220                DFTNAMEMODE_ObjectName =      1,    //!< Use object name
00221                DFTNAMEMODE_FileObjNames =    2     //!< Use combined file and object names
00222                };
00223             
00224             GLOBALOPTIONS (
00225                ): m_DftNameMode(DFTNAMEMODE_ObjectDesc), m_AutoOpenDftTableOnSel(true) { }
00226 
00227          #ifdef X_NATIVE
00228             Widget CreateEditForm (
00229                Widget parent,
00230                const Arg *arglist,
00231                int argcount
00232                );
00233          #endif
00234 
00235             bool GetAutoOpenDftTableOnSel (
00236                ) const { return (m_AutoOpenDftTableOnSel); }
00237 
00238             DFTNAMEMODE GetDftNameMode (
00239                ) const { return (m_DftNameMode); }
00240 
00241             void IniRead (
00242                const char *inigroup = 0
00243                );
00244 
00245             void IniWrite (
00246                const char *inigroup = 0
00247                ) const;
00248 
00249             void SetAutoOpenDftTableOnSel (
00250                bool AutoOpenDftTableOnSel
00251                ) { m_AutoOpenDftTableOnSel = AutoOpenDftTableOnSel; }
00252 
00253             void SetDftNameMode (
00254                DFTNAMEMODE DftNameMode
00255                ) { m_DftNameMode = DftNameMode; }
00256 
00257          private:
00258             #ifndef GENERATING_DOXYGEN_OUTPUT
00259             DFTNAMEMODE m_DftNameMode;
00260             bool m_AutoOpenDftTableOnSel;       //!< Automatically open default table on element selection (highlighting)
00261             friend class GRE_LAYER;
00262             #endif // GENERATING_DOXYGEN_OUTPUT
00263          }; // End of GRE_LAYER::GLOBALOPTIONS
00264 
00265       class DISPPARM;
00266 
00267       class TYPEDEFN;
00268       class COMPINFO;
00269       class FILTER;
00270       class FILTER_EXCLUDE;
00271 
00272    #ifdef X_NATIVE   
00273       //! Form for layer in "object manager".
00274       class OBJMGRFORM {
00275          public:
00276 
00277             //! Constructor.
00278             OBJMGRFORM (
00279                GRE_LAYER *layer
00280                );
00281 
00282             //! Destructor.
00283             ~OBJMGRFORM (
00284                );
00285 
00286             //! Create the form widget.
00287             Widget Create (
00288                );
00289 
00290             void DestroyForm (
00291                );
00292 
00293             Widget GetForm (
00294                ) const { return (m_form); }
00295 
00296             Widget GetToolMenuButton (
00297                ) const { return (m_ToolIconMB); }
00298 
00299             //! Hide the layer form in the object manager.
00300             void Hide (
00301                );
00302 
00303             void HideDetails (
00304                );
00305 
00306             //! Set the position of the object manager
00307             //! @return Next position after item.
00308             short SetObjMgrPos (
00309                short pindex = -2
00310                );
00311 
00312             //! Show layer form in object manager.
00313             short Show (
00314                short pindex = -2
00315                );
00316 
00317             void ShowDetails (
00318                );
00319 
00320          private:
00321             #ifndef GENERATING_DOXYGEN_OUTPUT
00322 
00323             GRE_LAYER *m_layer;
00324             Widget m_form;
00325             Widget m_ActiveTB;
00326             Widget m_ShowDetailsTB;
00327             Widget m_ToolIconMB;
00328             Widget m_VisibleIcon[GRE_MAXVIEWS];
00329             Widget m_MinScaleVisibleP;
00330             Widget m_MaxScaleVisibleP;
00331             Widget m_NameLabel;
00332             Widget m_DeleteMB;
00333 
00334             static void CB_CmdLayerDelete (Widget, void *vlayer, void*);
00335             static void CB_CmdLayerControls (Widget, void *vlayer, void*);
00336             static void CB_CmdTool (Widget, void *voption, void*);
00337             static void CB_EditScaleRange (Widget, void *vlayer);
00338             static void CB_NotifyGreObject (const GRE_CALLBACK_MSG *msg, void *vpObjMgrForm);
00339             static void CB_NotifyGreView (const GRE_CALLBACK_MSG *msg, void*);
00340             static void CB_ToggleActive (Widget, void *vlayer, XmToggleButtonCallbackStruct*);
00341             static void CB_ToggleShowDetails (Widget, void *vpObjMgrForm, XmToggleButtonCallbackStruct*);
00342             static void CB_ToggleVisibleInViewNum (Widget, void *vViewNum, XmToggleButtonCallbackStruct*);
00343 
00344             void OnNotifyGreObject (const GRE_CALLBACK_MSG& msg);
00345             void UpdateShowInternalTables ();
00346             void UpdateShowScaleRanges ();
00347 
00348             OBJMGRFORM (const OBJMGRFORM&);
00349             OBJMGRFORM& operator= (const OBJMGRFORM&);
00350 
00351             #endif // GENERATING_DOXYGEN_OUTPUT
00352          }; //! End of GRE_LAYER::OBJMGRFORM
00353    #endif
00354 
00355    #ifdef X_NATIVE
00356       class RAWELEMFORM {
00357          public:
00358 
00359             //! Constructor.
00360             explicit RAWELEMFORM (
00361                GRE_LAYER *layer
00362                );
00363 
00364             //! Destructor.
00365             ~RAWELEMFORM (
00366                );
00367 
00368             void CreateToggleForm (
00369                );
00370 
00371             void DestroyForms (
00372                );
00373 
00374             Widget GetToggleForm (
00375                ) const { return (m_ToggleForm); }
00376 
00377             void HideForms (
00378                );
00379 
00380             bool IsInfoShown (
00381                ) const { return (m_InfoForm != 0 && XtIsManaged(m_InfoForm)); }
00382 
00383             void SetElement (
00384                ELEMTYPE ElemType,
00385                INT32 ElemNum
00386                );
00387 
00388             short ShowToggleForm (
00389                short pindex
00390                );
00391 
00392             void SetInfoText (
00393                const UNICODE *string
00394                );
00395 
00396             //! Set the position of the Object Manager
00397             //! @return Next position after item.
00398             short SetObjMgrPos (
00399                short pindex
00400                );
00401 
00402          private:
00403             #ifndef GENERATING_DOXYGEN_OUTPUT
00404 
00405             GRE_LAYER *m_layer;
00406             ELEMTYPE m_ElemType;
00407             INT32 m_ElemNum;
00408             Widget m_ToggleForm;             //!< Form containing toggle for showing raw info
00409             Widget m_ShowInfoTB;             //!< Toggle for showing raw info
00410             Widget m_InfoForm;               //!< Form containing raw info
00411             Widget m_ElemNumP;               //!< 'Prompt' for entering element number
00412             Widget m_ElemTypeTB[6];          //!< ToggleButtons for selecting element type, indexed by component
00413             Widget m_InfoXeT;
00414 
00415             static void CB_BtnNextSelected (Widget, void*, void*);
00416             static void CB_BtnPrevSelected (Widget, void*, void*);
00417             static void CB_BtnSelectPrev (Widget, void*, void*);
00418             static void CB_BtnSelectNext (Widget, void*, void*);
00419             static void CB_EditElemNum (Widget, void*);
00420             static void CB_ToggleSetElemType (Widget, void*, void*);
00421             static void CB_ToggleShowInfo (Widget, void*, XmToggleButtonCallbackStruct*);
00422             static void EH_ResizeSW (Widget, void*, XEvent*, Boolean*);
00423 
00424             void CreateInfoForm ();
00425             void OnEditElemNum ();
00426             void SelectPrevNext (int add);
00427             void SetElemType (ELEMTYPE ElemType);
00428             void ShowInfoForm (bool show);
00429 
00430             RAWELEMFORM (const RAWELEMFORM&);
00431             RAWELEMFORM& operator= (const RAWELEMFORM&);
00432 
00433             #endif // GENERATING_DOXYGEN_OUTPUT
00434          }; //! End of GRE_LAYER::RAWELEMFORM
00435    #endif
00436 
00437       //! Determine if can construct layer from RVC object.
00438       static bool CanConstructFromObject (
00439          const RVC::OBJITEM& objitem
00440          );
00441 
00442       //! Construct layers using geospatial catalog.
00443       static ERRVALUE ConstructFromGeoCat (
00444          MDLGPARENT dlgparent,
00445          GRE_GROUP *group
00446          );
00447 
00448       //! Construct layer from specified object.
00449       static ERRVALUE ConstructFromObject (
00450          GRE_GROUP *group,                      //!< Group to contain new layer
00451          const RVC::OBJITEM& objitem,              //!< Object to construct layer for
00452          GRE_LAYER **retlayer = 0,              //!< New layer returned
00453          GRE_LAYER *reflayer = 0,               //!< Reference layer for insertion
00454          UINT32 createflags = 0                 //!< Creation flags
00455          );
00456 
00457       //! Construct multiple layers using object list (quick-add).
00458       static ERRVALUE ConstructFromObjList (
00459          GRE_GROUP *group,                      //!< Group to construct layers in, layers will be added after active layer
00460          const RVC::OBJITEMLIST& objlist           //!< List of objects to construct layers for
00461          );
00462 
00463       //! Edit global settings via dialog
00464       //! @return true if settings changed, false if not
00465       static bool EditGlobalSettings (
00466          MDLGPARENT dlgparent
00467          );
00468 
00469       //! Get default layer naming mode.
00470       static GLOBALOPTIONS::DFTNAMEMODE GetDftNameMode (
00471          ) { return (s_GlobalOptions.m_DftNameMode); }
00472 
00473       static const GLOBALOPTIONS& GetGlobalOptions (
00474          ) { InitStatic(); return (s_GlobalOptions); }
00475 
00476       //! Get number of registered layer types
00477       static UINT16 GetNumTypes (
00478          ) { return (s_NumTypes); }
00479 
00480       //! Get type definition for specific layer type index
00481       static const TYPEDEFN& GetTypeDefn (
00482          UINT16 idx
00483          ) { return (*s_TypeDefns[idx]); }
00484 
00485       //! Get type definition for specific layer type
00486       static const TYPEDEFN* GetTypeDefn (
00487          TYPE layertype
00488          );
00489 
00490       //! Get localized name for specific layer type
00491       static const UNICODE* GetTypeName (
00492          TYPE layertype
00493          );
00494 
00495    #if defined(X_NATIVE) || defined(WIN32_MFC)
00496       //! Prompt for multiple objects for quick-add.
00497       static ERRVALUE PromptObjects (
00498          MDLGPARENT dlgparent,                  //!< Parent for dialog
00499          RVC::OBJITEMLIST& objlist,             //!< List of selected objects returned
00500          GETOBJFLAGS flags=GETOBJFLAG_None,     //!< Additional flags for selection dialog
00501          const UNICODE *prompt = 0              //!< Prompt message for use in dialog ( Default is TEXTID_Prompt_Objects_Display )
00502          );
00503    #endif
00504 
00505       //! Register layer type
00506       static void RegisterLayerType (
00507          TYPEDEFN& typedefn
00508          );
00509 
00510       //! Set whether the default attribute table should be opened on element selection.
00511       static void SetAutoOpenDftTableOnSel (
00512          bool AutoOpenDftTableOnSel
00513          ) { s_GlobalOptions.m_AutoOpenDftTableOnSel = AutoOpenDftTableOnSel; }
00514 
00515       //! Set default layer naming mode
00516       static void SetDftNameMode (
00517          GLOBALOPTIONS::DFTNAMEMODE DftNameMode
00518          ) { s_GlobalOptions.m_DftNameMode = DftNameMode; }
00519 
00520       static void SetGlobalOptions (
00521          const GLOBALOPTIONS& options
00522          ) { s_GlobalOptions = options; }
00523 
00524       //! Method to install SML class, called by internal SML function.
00525       static void SMLClassInstall (
00526          SMLCONTEXT *context                    //!< SML context
00527          );
00528 
00529       //! Constructor
00530       GRE_LAYER (
00531          GRE_GROUP *group,                      //!< Group to contain layer
00532          GRE_LAYER *reflayer,                   //!< Reference layer for insertion
00533          TYPE layertype,                        //!< Layer type
00534          DISPPARM& dispparm,                    //!< Reference to layer's internal DISPPARM
00535          UINT32 flags                           //!< MDISPCREATE flags
00536          );
00537 
00538       //! Destructor
00539       virtual ~GRE_LAYER ();
00540 
00541    #ifdef WIN32_MFC
00542       //! Add "details" items to treeview (WIN32_MFC).
00543       void AddTreeViewDetails (
00544          GRE_MFC_TREEVIEW& TreeView,
00545          HTREEITEM hParent,
00546          HTREEITEM hInsertAfter
00547          ) { v_AddTreeViewDetails(TreeView,hParent,hInsertAfter); }
00548    #endif
00549 
00550    #ifdef WIN32_MFC
00551       //! Add "legend" items to treeview (WIN32_MFC).
00552       void AddTreeViewLegend (
00553          GRE_MFC_TREEVIEW& TreeView,
00554          HTREEITEM hParent,
00555          HTREEITEM hInsertAfter
00556          ) { v_AddTreeViewLegend(TreeView,hParent,hInsertAfter); }
00557    #endif
00558 
00559    #ifdef X_NATIVE
00560       //! Append items to popup menu (X only).
00561       void AppendPopupMenuItems (
00562          Widget widget,                      //!< Widget popup event occurred in
00563          const DPOINT2D *point,              //!< Point in layer coordinates where popup event occurred, NULL if not in view
00564          MENUITEMARRAY& menuitems            //!< Menu item array to append to
00565          ) { v_AppendPopupMenuItems(widget,point,menuitems); }
00566    #endif
00567 
00568       //! Assign layer to use specified object.
00569       ERRVALUE AssignObject (
00570          const RVC::OBJITEM& objitem
00571          ) { return (v_AssignObject(objitem)); }
00572 
00573       //! Assign layer to use specified object.
00574       ERRVALUE AssignObject (
00575          const FNAMEINODEUC *fnip
00576          );
00577 
00578       //! Determine if layer is set to be editable via TNTserver.
00579       bool CanEditInTNTserver (
00580          ) const { return ((drawflags & LAYERDRAWFLAG_EditInTNTserver) != 0); }
00581 
00582       //! Determine if capable of retrieving element extents
00583       bool CanGetElemExtents (
00584          ) const { return (m_CanGetElemExtents); }
00585 
00586       //! Determine if can open control dialog for layer
00587       bool CanOpenControlPanel (
00588          ) const { return (!m_IsControlPanelDisabled); }
00589 
00590       //! Determine if capable of reporting raw element information
00591       bool CanReportRawElemInfo (
00592          ) const { return (m_CanReportRawElemInfo); }
00593 
00594       //! Determine if can show "details" (components).
00595       bool CanShowDetails (
00596          ) const { return (v_CanShowDetails()); }
00597 
00598       //! Determine if element can be tested if inside/outside region
00599       bool CanTestElementByRegion (
00600          ) const { return (m_CanTestElementByRegion); }
00601 
00602       bool CanViewIn2D (
00603          ) const { return (m_CanViewIn2D); }
00604 
00605       bool CanViewIn3D (
00606          ) const { return (m_CanViewIn3D); }
00607 
00608       //! Change position in list
00609       bool ChangeListPos (
00610          GRE_LAYER* reflayer,
00611          UINT32 insertpos
00612          );
00613 
00614       //! Request close of object(s) associated with layer.
00615       void CloseObject (
00616          ) { v_CloseObject(); };
00617 
00618       //! Compute "margins" for layer
00619       void ComputeMargins (
00620          double& tmargin,                       //!< Top margin in "layer" coordinates returned
00621          double& bmargin,                       //!< Bottom margin in "layer" coordinates returned
00622          double& lmargin,                       //!< Left margin in "layer" coordinates returned
00623          double& rmargin                        //!< Right margin in "layer" coordinates returned
00624          ) { v_ComputeMargins(tmargin,bmargin,lmargin,rmargin); }
00625 
00626       //! Get default DataTip prefix for specified component.
00627       void DataTipGetDefaultPrefix (
00628          int component,                         //!< Component index
00629          DATATIPPARMS& DataTipParms             //!< DataTip parameters passed/returned
00630          ) const { v_DataTipGetDefaultPrefix(component,DataTipParms); }
00631 
00632       //! Get DataTip settings for specified component
00633       const DATATIPPARMS& DataTipGetParms (
00634          int component                          //!< Component index
00635          ) const { return (v_DataTipGetParms(component)); }
00636 
00637       //! Get DataTip search distance in pixels.
00638       inline int DataTipGetSearchDist (
00639          ) const;
00640 
00641       //! Determine if has DataTip available for any component.
00642       bool DataTipHasAvailable (
00643          ) const;
00644 
00645       //! Determine if has DataTip enabled for any component.
00646       bool DataTipHasEnabled (
00647          ) const;
00648 
00649       //! Determine if DataTip is enabled for this layer.
00650       //! May also need to use DataTipHasAvailable to determine if a DataTip is actually available.
00651       bool DataTipIsEnabled (
00652          ) const { return (m_DataTipEnabled); }
00653 
00654       //! Set default DataTip prefix for specified layer component.
00655       void DataTipSetDefaultPrefix (
00656          int component                          //!< Component index
00657          );
00658 
00659       //! Set DataTip parameters for specified layer component
00660       ERRVALUE DataTipSetParms (
00661          int component,                         //!< Component index
00662          const DATATIPPARMS& DataTipParms       //!< Parameter values to set
00663          ) { return (v_DataTipSetParms(component,DataTipParms)); }
00664 
00665       //! Get DataTip for specified element.
00666       //! The string if any will be appended to the MISTRING provided.
00667       //! @return TRUE if string was appended, FALSE if not, < 0 if error.
00668       int DataTipGetString (
00669          ELEMTYPE ElemType,                     //!< Element type
00670          INT32 ElemNum,                         //!< Element number
00671          MISTRING& string                       //!< String to append to
00672          );
00673 
00674       //! Translate DbList index to element number.
00675       INT32 DbListIndexToElemNum (
00676          int component,
00677          INT32 index
00678          ) { return (v_DbListIndexToElemNum(component,index)); }
00679 
00680       //! Translate element number to DbList index.
00681       INT32 DbListElemNumToIndex (
00682          int component,
00683          INT32 ElemNum
00684          ) { return (v_DbListElemNumToIndex(component,ElemNum)); }
00685 
00686       //! Determine if DbList index is same as element number.
00687       bool DbListIsIndexElemNum (
00688          ) const { return (m_DbListIsIndexElemNum); }
00689 
00690       void DisableControlPanel (
00691          ) { m_IsControlPanelDisabled = true; return; }
00692 
00693       //! Draw this layer.
00694       ERRVALUE Draw (
00695          GRE_LAYERDC& layerdc                   //!< Drawing control parameters
00696          ) { return (v_Draw(layerdc)); }
00697 
00698       //! Draw all views containing layer
00699       int DrawAllViews (
00700          UINT32 flags = 0                       //!< MDISPDRAW_... flags
00701          );
00702 
00703       ERRVALUE DrawElement (
00704          GRE_VIEW *view,                        //!< View to draw in, 0 for all
00705          ELEMTYPE ElemType,
00706          INT32 ElemNum,
00707          UINT32 drawflags
00708          );
00709 
00710       //! Draw single element for this layer
00711       ERRVALUE DrawElementLow (
00712          GRE_LAYERDC& layerdc,                  //!< Drawing control parameters
00713          ELEMTYPE ElemType,                     //!< Element type
00714          INT32 ElemNum,                         //!< Element number
00715          const void *style                      //!< Style for override, 0 for default
00716          ) { return (v_DrawElementLow(layerdc,ElemType,ElemNum,style)); }
00717 
00718       ERRVALUE DrawElements (
00719          GRE_VIEW *view,                        //!< View to draw in, 0 for all
00720          ELEMTYPE ElemType,
00721          UINT8 *ElemSet,
00722          UINT32 drawflags
00723          );
00724 
00725       //! Draw set of elements for this layer
00726       ERRVALUE DrawElementsLow (
00727          GRE_LAYERDC& layerdc,                  //!< Drawing control parameters
00728          ELEMTYPE ElemType,                     //!< Element type
00729          const UINT8 *ElemSet,                  //!< Element set
00730          const void *style                      //!< Style for override, 0 for default
00731          ) { return (v_DrawElementsLow(layerdc,ElemType,ElemSet,style)); }
00732 
00733       //! Draw element sample.
00734       ERRVALUE DrawElementSample (
00735          const GRE_ELEMSAMPLE_DC& sampledc,     //!< Drawing control parameters
00736          const RVC::ELEMENT& element,           //!< Element
00737          const LRECT2D& samplerect              //!< Destination rectangle
00738          ) { return (v_DrawElementSample(sampledc,element,samplerect)); }
00739 
00740       void EditColors (
00741          MDLGPARENT dlgparent
00742          );
00743 
00744       //! Enable DataTip for layer if available.
00745       //! The DataTip is enabled by default, this setting allows the user to easily turn DataTips on/off by layer.
00746       void EnableDataTip (
00747          bool enable = true
00748          ) { m_DataTipEnabled = enable; return; }
00749 
00750       //! Find closest element to specified point.
00751       //! @return element number, -1 if not found, < -1 if error
00752       INT32 FindClosestElement (
00753          const DPOINT2D& point,                 //!< Point in "object" coordinates
00754          double searchdist,                     //!< Distance to search in "object" coordinates
00755          double *distret,                       //!< Distance returned in "object" coordinates, (NULL if don't need)
00756          int component,                         //!< Component to search
00757          const UINT8 *SearchSet,                //!< Set of elements to search, NULL for all elements
00758          UINT32 findflags                       //!< MDISPFIND_... flags
00759          ) { return (v_FindClosestElement(point,searchdist,distret,component,SearchSet,findflags)); }
00760 
00761       //! Find elements matching specified query.
00762       //! @return number of elements found, < 0 if error
00763       INT32 FindElementsByQuery (
00764          ELEMTYPE ElemType,                     //!< Element type
00765          BITSET_UNOWNED& ElemSet,               //!< Set of elements found
00766          const UNICODE *QueryScript,            //!< Query script string
00767          SMLCONTEXT* QueryContext = 0           //!< Query/SML context
00768          );
00769 
00770       //! Find elements matching specified query with "match quality".
00771       //! An array of values, one per element, is returned with values from 0-255 corresponding
00772       //! to query return values from 0.0 to 1.0.  Values < 0 will be 0, values > 255 will be 255.
00773       ERRVALUE FindElementsByQueryExt (
00774          ELEMTYPE ElemType,                     //!< Element type
00775          SIMPLE_ARRAY<UINT8>& Result,           //!< Result for each element
00776          const UNICODE *QueryScript,            //!< Query script string
00777          SMLCONTEXT* QueryContext = 0           //!< Query/SML context
00778          );
00779 
00780       GRE_LAYER_SURFACE* FindSurfaceLayer (
00781          ) const;
00782 
00783       #ifndef GENERATING_DOXYGEN_OUTPUT
00784       //! Make protected when possible.
00785       void FinishCreation (UINT32 flags = 0);
00786       #endif // GENERATING_DOXYGEN_OUTPUT
00787 
00788       inline bool GetActiveElement (
00789          ELEMTYPE& ElemType,
00790          INT32& ElemNum
00791          ) const;
00792 
00793       inline bool GetActiveElement (
00794          RVC::ELEMENT& element
00795          ) const;
00796 
00797       inline INT32 GetActiveElemNum (
00798          ) const;
00799 
00800       inline ELEMTYPE GetActiveElemType (
00801          ) const;
00802 
00803       inline const COLOR& GetColorPedestal (
00804          ) const;
00805 
00806       //! Get component for specified element type.
00807       //! @return Component index, -1 if no corresponding component.
00808       int GetComponent (
00809          ELEMTYPE ElemType                      //!< Element type
00810          ) const { return (v_GetComponent(ElemType)); }
00811 
00812       //! Get icon for component.
00813       //! @return Icon for component or NULL if none
00814       MICON GetComponentIcon (
00815          int component                          //!< Component index
00816          ) const { return (v_GetComponentIcon(component)); }
00817 
00818       //! Get component information.
00819       //! @return Pointer to component information or NULL if none.
00820       COMPINFO* GetComponentInfo (
00821          int component                          //!< Component index
00822          ) { return (v_GetComponentInfo(component)); }
00823 
00824       //! Get component information (const version).
00825       //! @return Pointer to component information or NULL if none.
00826       const COMPINFO* GetComponentInfo (
00827          int component
00828          ) const { return (const_cast<GRE_LAYER*>(this)->GetComponentInfo(component)); }
00829 
00830       //! Get component information by element type.
00831       //! @return Pointer to component information or NULL if none.
00832       COMPINFO* GetComponentInfoByType (
00833          ELEMTYPE elemtype                      //!< Element type
00834          );
00835 
00836       //! Get localized name of component.
00837       //! @return Component name.
00838       MISTRING GetComponentName (
00839          int component                          //!< Component index
00840          ) const { return (v_GetComponentName(component)); }
00841 
00842       //! Get "parent" for dialogs associated with layer.
00843       MDLGPARENT GetDialogParent (
00844          ) const;
00845 
00846       //! Get DISPFLAGS for layer.
00847       inline DISPFLAGS GetDispFlags (
00848          ) const;
00849 
00850       UINT16 GetDispParmUsage (
00851          ) const { return ((layerflags & LAYERFLAG_Editable) ? DPARMUSAGE_Edit : DPARMUSAGE_Display); }
00852 
00853       //! Get pointer to default style of element type.
00854       //! @return Pointer to style, do not free.
00855       const void* GetElemDefaultStyle (
00856          ELEMTYPE ElemType                      //!< Element type
00857          ) const { return (v_GetElemDefaultStyle(ElemType)); }
00858 
00859       //! Get selection mode for element drawing
00860       //! @return Selection mode
00861       UINT16 GetElemDrawSelectionMode (
00862          ELEMTYPE ElemType                      //!< Element type
00863          ) const { return (v_GetElemDrawSelectionMode(ElemType)); }
00864 
00865       //! Get style mode for element drawing.
00866       //! @return style mode
00867       UINT16 GetElemDrawStyleMode (
00868          ELEMTYPE ElemType                      //!< Element type
00869          ) const { return (v_GetElemDrawStyleMode(ElemType)); }
00870 
00871       //! Get extents of specified element.
00872       ERRVALUE GetElemExtents (
00873          ELEMTYPE ElemType,                     //!< Element type
00874          INT32 ElemNum,                         //!< Element number
00875          DRECT3D& Extents                       //!< Extents returned
00876          ) { return (v_GetElemExtents(ElemType,ElemNum,Extents)); }
00877 
00878       //! Get element search structure.
00879       ERRVALUE GetElemSearchInfo (
00880          ELEMTYPE ElemType,                     //!< Element type
00881          GRE_ELEMSEARCH **sip                   //!< Pointer to search structure returned, DO NOT FREE!
00882          );
00883 
00884       UINT8 GetElemSelectMode (
00885          ) const;
00886 
00887       //! Get combined extents of all elements in set.
00888       ERRVALUE GetElemSetExtents (
00889          ELEMTYPE ElemType,                     //!< Element type
00890          const BITSET_UNOWNED& ElemSet,         //!< Set of elements
00891          DRECT3D& Extents                       //!< Extents in layer object coordinates returned
00892          );
00893 
00894       //! Get element type associated with specified component.
00895       ELEMTYPE GetElemType (
00896          int component                          //!< Component index
00897          ) const { return (v_GetElemType(component)); }
00898 
00899       const DRECT2D& GetExtents (
00900          ) const { return (m_Region.Extents); }
00901 
00902       GRE_GROUP * GetGroup (
00903          ) const { return (group); }
00904 
00905       //! Get georeference name for layer component.
00906       //! @return 'True' if layer has a georeference name, 'false' if not
00907       bool GetGeorefName (
00908          RVC::OBJECTNAME& gname,
00909          int component = 0                      //!< Component index
00910          ) const { return (v_GetGeorefName(gname,component)); }
00911 
00912       //! Get LAYERDRAWFLAGS for layer.
00913       LAYERDRAWFLAGS GetLayerDrawFlags (
00914          ) const { return (static_cast<LAYERDRAWFLAGS>(drawflags)); }
00915 
00916       //! Get LAYERFLAGS for layer.
00917       LAYERFLAGS GetLayerFlags (
00918          ) const { return (static_cast<LAYERFLAGS>(layerflags)); }
00919 
00920       //! Get layer type.
00921       TYPE GetLayerType (
00922          ) const { return (m_layertype); }
00923 
00924       //! Get legend for specified element type.
00925       //! @return Pointer to legend or NULL if no legend.
00926       const GRE_LEGEND* GetLegend (
00927          ELEMTYPE ElemType = ELEMTYPE_Empty     //!< Element type
00928          ) { return (v_GetLegend(ElemType)); }
00929 
00930       GraphicTreeItemMsgHandler GetLegendMsgHandler (
00931          ) const { return (m_LegendMsgHandler); }
00932 
00933       //! Get current layer drawing order position in list.
00934       //! @return 0 for first layer, 1 for second, etc.
00935       int GetListPos (
00936          );
00937 
00938       double GetMapScale (
00939          ) const;
00940 
00941       UINT8 GetMaskBlue (
00942          ) const { return (m_MaskBlue); }
00943 
00944       UINT8 GetMaskGreen (
00945          ) const { return (m_MaskGreen); }
00946 
00947       UINT8 GetMaskRed (
00948          ) const { return (m_MaskRed); }
00949 
00950       double GetMaxScaleVisible (
00951          ) const { return (m_MaxScaleVisible); }
00952 
00953       double GetMinScaleVisible (
00954          ) const { return (m_MinScaleVisible); }
00955 
00956       //! Get name of layer as MISTRING.
00957       void GetName (
00958          MISTRING& retname
00959          ) { retname = this->name; }
00960 
00961       //! Get name of layer.
00962       const UNICODE* GetName (
00963          ) const { return (name); }
00964 
00965       //! Get next layer in group.
00966       GRE_LAYER* GetNext (
00967          ) const { return (nextlayer); }
00968 
00969       inline int GetNumComponents (
00970          ) const;
00971 
00972       //! Get number of elements of specified type.
00973       //! @return number of elements, < 0 if error.
00974       INT32 GetNumElements (
00975          ELEMTYPE ElemType                      //!< Element type
00976          ) { return (v_GetNumElements(ElemType)); }
00977 
00978       inline int GetNumObjects (
00979          ) const;
00980 
00981    #ifdef X_NATIVE
00982       OBJMGRFORM& GetObjMgrForm (
00983          ) { return (m_ObjMgrForm); }
00984    #endif
00985 
00986       //! Get RVC::OBJITEM for layer component.
00987       //! @return Reference to object item, will be unattached if no object
00988       const RVC::OBJITEM& GetObjItem (
00989          int component = 0                      //!< Component index
00990          ) const { return (v_GetObjItem(component)); }
00991 
00992       //! Get previous layer in group.
00993       GRE_LAYER* GetPrevious (
00994          ) const { return (prevlayer); }
00995 
00996       const DRECT2D& GetProjExtents (
00997          ) const {
00998          MregionGenerateDest(const_cast<DREGION*>(&m_Region));
00999          return (m_Region.DestExtents);
01000          }
01001 
01002       const MAPPROJPARM& GetProjParm (
01003          ) const { return (m_Region.mapparm); }
01004 
01005    #ifdef X_NATIVE
01006       RAWELEMFORM& GetRawElemForm (
01007          ) { return (m_RawElemForm); }
01008    #endif
01009 
01010       const DREGION& GetRegion (
01011          ) const { return (m_Region); }
01012 
01013       //! Get whether to show internal tables in table lists.
01014       bool GetShowInternalTables (
01015          ) const { return (GetViewable()->GetShowInternalTables()); }
01016 
01017       //! Get whether to show scale ranges in layer lists.
01018       bool GetShowScaleRanges (
01019          ) const { return (GetViewable()->GetShowScaleRanges()); }
01020 
01021       void GetSizeMeters (
01022          double& xsize,
01023          double& ysize
01024          ) const;
01025 
01026       //! Get style information for specified element type
01027       //! @return 0 if OK, -1 if no style object, < -1 if error
01028       ERRVALUE GetStyleInfo (
01029          ELEMTYPE ElemType,                     //!< Element type
01030          RVC::OBJITEM& ObjItem,                 //!< Style object item returned
01031          RVC::OBJECTNAME& TableName             //!< Style assignment table name returned
01032          ) { return (v_GetStyleInfo(ElemType,ObjItem,TableName)); }
01033 
01034    #ifdef X_NATIVE
01035       //! Get layer-specific items to add to "tools" menu.
01036       //! @return Menu item array or NULL if no items, DO NOT FREE.
01037       MENUITEM* GetToolMenu (
01038          ) const { return (v_GetToolMenu()); }
01039    #endif
01040 
01041       //! Get tranformation from layer to group's map coordinates in TRANSPARM
01042       void GetTransGroup (
01043          TRANSPARM& transparm                   //!< Transformation parameters to fill in
01044          ) const;
01045 
01046       //! Get tranformation from layer to group's map coordinates in TRANS2D_MAPGEN
01047       void GetTransGroup (
01048          TRANS2D_MAPGEN& trans                  //!< Transformation to fill in
01049          ) const;
01050 
01051       //! Get transformation from layer to map in TRANSPARM
01052       void GetTransMap (
01053          TRANSPARM& transparm,                  //!< Transformation parameters to fill in
01054          bool setoutput                         //!< True to set in output side, false for input side
01055          ) const;
01056 
01057       //! Get transformation from layer to map in TRANS2D_MAPGEN
01058       void GetTransMap (
01059          TRANS2D_MAPGEN& trans,                 //!< Transformation to fill in
01060          bool setoutput                         //!< True to set in output side, false for input side
01061          ) const;
01062 
01063       //! Get type definition for this layer
01064       const TYPEDEFN& GetTypeDefn (
01065          ) const { return (*GetTypeDefn(m_layertype)); }
01066 
01067       //! Get unique layer ID.
01068       //! IDs are unique within the scope of the topmost VIEWABLE object.  Thus all
01069       //! layers in a layout have unique IDs within that layout.
01070       UINT32 GetUniqueID (
01071          ) const { return (m_UniqueID); }
01072 
01073       //! Get top-level GRE_VIEWABLE which contains layer.
01074       GRE_VIEWABLE* GetViewable (
01075          ) const;
01076 
01077       //! Get "map scale" of first view containing layer.
01078       //! @return "inverse" of scale (eg. 24000 for 1:24000)
01079       double GetViewMapScale (
01080          ) const;
01081 
01082       //! Get visiblity for layer in group views.
01083       UINT32 GetVisibleGroup (
01084          ) const { return (VisibleViewGroup); }
01085 
01086       //! Get visiblity for layer in layout views.
01087       UINT32 GetVisibleLayout (
01088          ) const { return (VisibleViewLayout); }
01089 
01090       //! Get scale range over which layer is visible
01091       void GetVisibleScaleRange (
01092          double& MinScaleVisible,               //!< Minimum scale visible returned, 0 for no minimum
01093          double& MaxScaleVisible                //!< Maximum scale visible returned, 0 for no maximum
01094          ) { MinScaleVisible = m_MinScaleVisible; MaxScaleVisible = m_MaxScaleVisible; }
01095 
01096       //! Get 3D wireframe color for layer.
01097       inline const COLOR& GetWireframeColor (
01098          ) const;
01099 
01100       //! Get Z offset (unscaled) for layer.
01101       inline double GetZOffset (
01102          ) const;
01103 
01104       //! Get Z range (scaled) for layer.
01105       void GetZRangeScaled (
01106          DOUBLE_RANGE& zrange
01107          ) const;
01108 
01109       //! Determine if layer has color plane masks set.
01110       bool HasColorMasks (
01111          ) const { return (m_MaskRed != 0 || m_MaskGreen != 0 || m_MaskBlue != 0); }
01112 
01113       //! Determine if layer has null "image" cells.
01114       bool HasNullImageCells (
01115          ) const { return (v_HasNullImageCells()); }
01116 
01117       //! Determine if layer can show a legend in LegendView
01118       bool HasLegend (
01119          ) const { return (m_LegendMsgHandler != 0); }
01120 
01121    #ifdef WIN32_MFC
01122       //! Determine if layer supports "legend" for treeview (WIN32_MFC).
01123       bool HasTreeViewLegend (
01124          ) const { return (v_HasTreeViewLegend()); }
01125    #endif
01126 
01127       //! Determine if layer has valid extents
01128       bool HasValidExtents (
01129          ) const { return (m_HasExtents); }
01130 
01131       //! Highlight single element in layer.
01132       //! @return TRUE if selected set changed, FALSE if not, < 0 if error
01133       int HighlightElement (
01134          ELEMTYPE ElemType,
01135          INT32 ElemNum,
01136          int SelectMode,
01137          GRE_VIEW *firstview,
01138          UINT32 drawflags
01139          );
01140 
01141       //! Highlight set of elements in layer.
01142       //! @return TRUE if selected set changed, FALSE if not, < 0 if error
01143       int HighlightElements (
01144          ELEMTYPE ElemType,
01145          const UINT8 *ElemSet,
01146          int SelectMode,
01147          GRE_VIEW *firstview,
01148          UINT32 drawflags
01149          );
01150 
01151       //! Highlight elements matching specified query.
01152       //! @return number of elements found, < 0 if error
01153       int HighlightElementsByQuery (
01154          ELEMTYPE ElemType,
01155          SMLCONTEXT* QueryContext,
01156          int QuerySegment,
01157          const UNICODE* QueryScript,
01158          GRE_VIEW *firstview,
01159          UINT32 drawflags
01160          );
01161 
01162       //! Highlight elements using specified region.
01163       //! @return TRUE if highlight set changed, FALSE if not < 0 if error.
01164       int HighlightElementsByRegion (
01165          ELEMTYPE ElemType,
01166          const GEOREGION& Region,
01167          GEOREGION::TESTMODE RegionTest,
01168          GRE_VIEW *firstview,
01169          UINT32 DrawFlags
01170          ) { return (v_HighlightElementsByRegion(ElemType,Region,RegionTest,firstview,DrawFlags)); }
01171 
01172       //! Determine if layer is in the process of being created.
01173       bool IsBeingCreated (
01174          ) const { return (m_IsBeingCreated); }
01175 
01176       //! Determine if specified component is marked as "selectable" for highlighting by user.
01177       bool IsComponentSelectable (
01178          int component
01179          ) const;
01180 
01181       bool IsEditable (
01182          ) const { return ((layerflags &