00001
00621 #ifndef INC_GRE_LAYER_H
00622 #define INC_GRE_LAYER_H
00623
00624 #ifndef INC_GRE_OBJECTBASE_H
00625 #include <gre/objectbase.h>
00626 #endif
00627
00628 #if !defined(INC_MGUI_TREE_H) && defined(USE_MGUI)
00629 #include <mgui/tree.h>
00630 #endif
00631
00632 #ifndef INC_MI32_GRTREE_H
00633 #include <mi32/grtree.h>
00634 #endif
00635
00636 #ifndef INC_RVC_ELEMENT_H
00637 #include <rvc/element.h>
00638 #endif
00639
00640 #ifndef INC_RVC_DISPPARMUSAGE_H
00641 #include <rvc/dispparmusage.h>
00642 #endif
00643
00644 #ifndef INC_MGUI_DLGGETOBJECTSTYLE_H
00645 #include <mgui/dlggetobjectstyle.h>
00646 #endif
00647
00648 #ifndef INC_RVC_OBJECTNAME_H
00649 #include <rvc/objectname.h>
00650 #endif
00651
00652 #ifndef INC_MI32_REGION2D_H
00653 #include <mi32/region2d.h>
00654 #endif
00655
00656 #ifndef INC_MI32_SERIALIZABLE_H
00657 #include <mi32/serializable.h>
00658 #endif
00659
00660 #ifndef INC_MI32_SERIALIZERITEM_H
00661 #include <mi32/serializeritem.h>
00662 #endif
00663
00664 #ifndef INC_MI32_ELEMSTYL_H
00665 #include <mi32/elemstyl.h>
00666 #endif
00667
00668 #ifndef INC_RVC_OTYPESET_H
00669 #include <rvc/otypeset.h>
00670 #endif
00671
00672 #ifndef INC_MI32_SMLBASE_H
00673 #include <mi32/smlbase.h>
00674 #endif
00675
00676 #ifndef INC_MI32_TRANS2DMAPGEN_H
00677 #include <mi32/trans2dmapgen.h>
00678 #endif
00679
00680 #ifndef INC_MI32_MG2ENUMS_H
00681 #include <mi32/mg2enums.h>
00682 #endif
00683
00684 #ifndef INC_MI32_UNSIGNEDSET_H
00685 #include <mi32/unsignedset.h>
00686 #endif
00687
00688 #ifndef INC_MI32_DELEGATEFILTER_H
00689 #include <mi32/delegatefilter.h>
00690 #endif
00691
00692
00693 #ifndef GENERATING_DOXYGEN_OUTPUT
00694
00695 class DBEDIT;
00696 struct DATATIPPARMS;
00697 struct DBEDIT_MSG;
00698 struct MENUITEM;
00699 class MENUITEMARRAY;
00700 namespace RVC {
00701 class DESCRIPTOR;
00702 class DBTABLE;
00703 class DBASE_ELEMENT;
00704 class OBJECT;
00705 class OBJITEM;
00706 class OBJITEMLIST;
00707 }
00708 namespace MGD {
00709 class DEVICE;
00710 }
00711 namespace SPATMOD {
00712 namespace IMAGE {
00713 class STAGE_ARRAY;
00714 }
00715 }
00716 namespace MGUI {
00717 class DLGSHELL;
00718 class MENU;
00719 class DLG_GETOBJECT_FILTER;
00720 }
00721 #endif // GENERATING_DOXYGEN_OUTPUT
00722
00723
00724 namespace GRE {
00725
00726
00727
00729 enum DISPFLAGS {
00730 DISPFLAG_None = 0x00000000,
00731
00732
00733 DISPFLAG_ExcludeFromGroupExtents = 0x00000004,
00734
00735
00736 DISPFLAG_WarpToGeorefModel = 0x00000100,
00737 DISPFLAG_UsesTransparency = 0x00000200,
00738 DISPFLAG_NoDrawWireframe = 0x00000400,
00739 DISPFLAG_MayUseTransparency = 0x00000800,
00740 DISPFLAG_Antialias = 0x00001000,
00741 DISPFLAG_HintThinLines = 0x00002000,
00742 DISPFLAG_EnableMultiPassRender = 0x00004000,
00743 DISPFLAG_NoMergeLegendDups = 0x00008000,
00744
00745
00746 DISPFLAG_NoDrawLabels = 0x40000000,
00747 DISPFLAG_DrawLabelsOnly = 0x80000000,
00748
00749
00750
00751
00752 DISPFLAG_VectDrawNodes = 0x00010000,
00753 DISPFLAG_VectLinesFirst = 0x00020000,
00754 DISPFLAG_VectNoFillPoly = 0x00040000,
00755 DISPFLAG_VectNoFillHighlighted = 0x00080000,
00756
00757
00758 DISPFLAG_TINEdgesFirst = 0x00020000,
00759 DISPFLAG_TINNoFillTri = 0x00040000,
00760
00761
00762 DISPFLAG_RastNullTransp = 0x00010000,
00763 DISPFLAG_RastSkipOddLines = 0x00020000,
00764 DISPFLAG_RastSkipEvenLines = 0x00040000,
00765 DISPFLAG_RastDoBlendMask = 0x00080000,
00766 DISPFLAG_RastBlackTransp = 0x00100000,
00767
00768 DISPFLAG_RastHyperspectLossy = 0x00400000,
00769 DISPFLAG_RastWhiteTransp = 0x00800000,
00770 DISPFLAG_RastLinesBetweenCells = 0x01000000,
00771 DISPFLAG_RastLabelsInCells = 0x02000000,
00772
00773
00774 DISPFLAG_SurfProjOffEdge = 0x00010000,
00775
00776
00777 DISPFLAG_FormulaNullTransp = 0x00010000,
00778 DISPFLAG_FormulaSkipOddLines = 0x00020000,
00779 DISPFLAG_FormulaSkipEvenLines = 0x00040000,
00780 };
00781 #ifndef GENERATING_DOXYGEN_OUTPUT
00782 DEFINE_ENUM_OP_BITWISE(DISPFLAGS)
00783 #endif
00784
00785
00786
00787 enum LAYERFLAGS {
00788 LAYERFLAG_None = 0x00000000,
00789 LAYERFLAG_NoSelNewObj = 0x00000010,
00790 LAYERFLAG_HiliteColorSet = 0x00000040,
00791 LAYERFLAG_DataTipIgnoreDrawnSet = 0x00000080,
00792 LAYERFLAG_NoInvalidateViews = 0x00000100,
00793 LAYERFLAG_3D = 0x00000200,
00794 LAYERFLAG_KeepOpen = 0x00020000,
00795 LAYERFLAG_Editable = 0x00040000,
00796 LAYERFLAG_CanShowInLocator = 0x00100000,
00797 LAYERFLAG_NoGeoreference = 0x00080000,
00798 LAYERFLAG_NoDrawActiveElem = 0x01000000,
00799 LAYERFLAG_NoShowInLayerMgr = 0x02000000,
00800 LAYERFLAG_NoAllowHide = 0x04000000,
00801 LAYERFLAG_NoAllowDelete = 0x08000000,
00802 LAYERFLAG_Temporary = 0x10000000,
00803 LAYERFLAG_MaskAll = 0xFFFFFFFF,
00804 };
00805 #ifndef GENERATING_DOXYGEN_OUTPUT
00806 DEFINE_ENUM_OP_BITWISE(LAYERFLAGS)
00807 #endif
00808
00809
00810
00811 enum LAYERDRAWFLAGS {
00812 LAYERDRAWFLAG_None = 0x0000,
00813
00814 LAYERDRAWFLAG_Clip = 0x0002,
00815 LAYERDRAWFLAG_NoClipToGroup = 0x0004,
00816 LAYERDRAWFLAG_SaveToTemplate = 0x0008,
00817 LAYERDRAWFLAG_MaskAll = 0xFFFF,
00818 };
00819 #ifndef GENERATING_DOXYGEN_OUTPUT
00820 DEFINE_ENUM_OP_BITWISE(LAYERDRAWFLAGS)
00821 #endif
00822
00823
00824
00825 #define GRE_MAXLAYERTYPES 32
00826
00828 class LAYER : public GRE::OBJECT {
00829 public:
00830
00832 enum TYPE {
00833 TYPE_None = 0,
00834 TYPE_Raster = 1,
00835 TYPE_Vector = 2,
00836 TYPE_CAD = 3,
00837 TYPE_DBPinmap = 4,
00838 TYPE_MapGrid = 5,
00839 TYPE_ScaleBar = 6,
00840 TYPE_Text = 7,
00841 TYPE_Legend = 8,
00842 TYPE_TIN = 9,
00843 TYPE_Sketch = 10,
00844 TYPE_Region = 11,
00845 TYPE_Surface = 12,
00846 TYPE_Script = 13,
00847 TYPE_Formula = 14,
00848 TYPE_Legend2 = 15,
00849 TYPE_Shape = 16,
00850 TYPE_Image_SpatMod = 17,
00851 TYPE_Image_WMS = 18,
00852 TYPE_Generic = 19,
00853 TYPE_Image_ArcIMS = 20,
00854 TYPE_Image_Tileset = 21,
00855 TYPE_Lidar = 22,
00856 TYPE_KML = 23,
00857 TYPE_Image_BingMaps = 24,
00858 TYPE_COUNT
00859
00860 };
00861
00862 enum CREATEFLAGS {
00863 CREATEFLAG_None = 0x0000,
00864 CREATEFLAG_NoCallCreateCB = 0x0001,
00865 CREATEFLAG_Temporary = 0x0002,
00866 CREATEFLAG_NoSelNewObj = 0x0004,
00867 CREATEFLAG_KeepOpen = 0x0008,
00868 CREATEFLAG_Editable = 0x0010,
00869 CREATEFLAG_NoGeoreference = 0x0020,
00870 CREATEFLAG_IgnoreExtents = 0x0040,
00871 CREATEFLAG_NoAllowDelete = 0x0080,
00872 CREATEFLAG_NoControlPanel = 0x0100,
00873 CREATEFLAG_NoComputePos = 0x0200,
00874 CREATEFLAG_NoSetActive = 0x0400,
00875 CREATEFLAG_NoShowInMgr = 0x0800,
00876 CREATEFLAG_NoChangeGroupRenderCRS = 0x1000,
00877 };
00878
00879 enum DIMENSION {
00880 DIMENSION_Height = 0,
00881 DIMENSION_Width = 1
00882 };
00883
00884 enum SETACTIVEFLAGS {
00885 SETACTIVEFLAG_None = 0x0000,
00886 SETACTIVEFLAG_First = 0x0001,
00887 SETACTIVEFLAG_Previous = 0x0002,
00888 SETACTIVEFLAG_Next = 0x0004,
00889 SETACTIVEFLAG_Last = 0x0008,
00890 SETACTIVEFLAG_KeepCurrent = 0x0010,
00891 SETACTIVEFLAG_NoWrap = 0x0020,
00892 SETACTIVEFLAG_UpdateScreen = 0x0040,
00893 SETACTIVEFLAG_UpdateBuffers = 0x0080,
00894 };
00895
00897 enum SNAPTO {
00898 SNAPTO_EndPoint = 1,
00899 SNAPTO_Vertex = 2,
00900 SNAPTO_Element = 3,
00901 };
00902
00904 class GLOBALOPTIONS {
00905 public:
00906
00907 class FORM;
00908
00909 enum DFTNAMEMODE {
00910 DFTNAMEMODE_ObjectDesc = 0,
00911 DFTNAMEMODE_ObjectName = 1,
00912 DFTNAMEMODE_FileObjNames = 2
00913 };
00914
00915 GLOBALOPTIONS (
00916 );
00917
00918 #ifdef X_NATIVE
00919 Widget CreateEditForm (
00920 Widget parent,
00921 const Arg *arglist,
00922 int argcount
00923 );
00924 #endif
00925
00926 bool GetAntialiasing (
00927 ) const {return(m_Antialiasing); }
00928
00929 bool GetAutoOpenDftTableOnSel (
00930 ) const { return (m_AutoOpenDftTableOnSel); }
00931
00932 DFTNAMEMODE GetDftNameMode (
00933 ) const { return (m_DftNameMode); }
00934
00935 bool GetDftRenderMultiPass (
00936 ) const { return (m_DftRenderMultiPass); }
00937
00938 bool GetDftShowSystemTables (
00939 ) const { return (m_DftShowSystemTables); }
00940
00941 bool GetForceGeorefAffine (
00942 ) const { return (m_ForceGeorefAffine); }
00943
00944 bool GetHintThinLines (
00945 ) const {return(m_HintThinLines);}
00946
00950 void IniRead ();
00951
00955 void IniWrite () const;
00956
00957 void SetAntialiasing (
00958 bool antialias
00959 ) { m_Antialiasing = antialias; }
00960
00961 void SetAutoOpenDftTableOnSel (
00962 bool AutoOpenDftTableOnSel
00963 ) { m_AutoOpenDftTableOnSel = AutoOpenDftTableOnSel; }
00964
00965 void SetDftNameMode (
00966 DFTNAMEMODE DftNameMode
00967 ) { m_DftNameMode = DftNameMode; }
00968
00969 void SetDftShowSystemTables (
00970 bool DftShowSystemTables
00971 ) { m_DftShowSystemTables = DftShowSystemTables; }
00972
00973 void SetForceGeorefAffine (
00974 bool ForceGeorefAffine
00975 ) { m_ForceGeorefAffine = ForceGeorefAffine; }
00976
00977 void SetHintThinLines (
00978 bool hint
00979 ) { m_HintThinLines = hint;}
00980
00981 private:
00982 #ifndef GENERATING_DOXYGEN_OUTPUT
00983 DFTNAMEMODE m_DftNameMode;
00984 bool m_AutoOpenDftTableOnSel;
00985 friend class LAYER;
00986 bool m_Antialiasing;
00987 bool m_HintThinLines;
00988 bool m_DftRenderMultiPass;
00989 bool m_DftShowSystemTables;
00990 bool m_ForceGeorefAffine;
00991
00992 #endif // GENERATING_DOXYGEN_OUTPUT
00993 };
00994
00996 class LEGENDREDRAWDISABLER {
00997 public:
00998 LEGENDREDRAWDISABLER (GRE::LAYER *layer);
00999 ~LEGENDREDRAWDISABLER ();
01000 private:
01001 #ifndef GENERATING_DOXYGEN_OUTPUT
01002 GRE::LAYER *m_layer;
01003 #endif
01004 };
01005
01006 class COMMONPARM;
01007 class DISPPARM;
01008
01009 class TYPEDEFN;
01010 class COMPINFO;
01011 class FILTER;
01012 class FILTER_EXCLUDE;
01013
01015 static bool CanConstructFromObject (
01016 const RVC::OBJITEM& objitem
01017 );
01018
01020 static ERRVALUE ConstructAndAssignObject (
01021 GRE::GROUP *group,
01022 LAYER::TYPE layertype,
01023 const RVC::OBJITEM& objitem,
01024 LAYER **retlayer = 0,
01025 CREATEFLAGS createflags = LAYER::CREATEFLAG_None,
01026 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
01027 LAYER *reflayer = 0
01028 );
01029
01030 #ifdef USE_MGUI
01032 static ERRVALUE ConstructAndPromptObject (
01033 MDLGPARENT dlgparent,
01034 GRE::GROUP *group,
01035 LAYER::TYPE layertype,
01036 LAYER **retlayer,
01037 CREATEFLAGS createflags,
01038 GRE::LISTPOS listpos,
01039 LAYER *reflayer,
01040 bool OpenSettings
01041 );
01042 #endif
01043
01045 static ERRVALUE ConstructFromObject (
01046 GRE::GROUP *group,
01047 const RVC::OBJITEM& objitem,
01048 LAYER **retlayer = 0,
01049 CREATEFLAGS createflags = CREATEFLAG_None,
01050 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
01051 LAYER *reflayer = 0,
01052 MDLGPARENT dlgparent = 0
01053 );
01054
01056 static ERRVALUE ConstructFromObjList (
01057 GRE::GROUP *group,
01058 const RVC::OBJITEMLIST& objlist,
01059 MDLGPARENT dlgparent = 0,
01060 GRE::LISTPOS listpos = GRE::LISTPOS_After,
01061 LAYER *reflayer = 0
01062 );
01063
01066 static bool EditGlobalSettings (
01067 MDLGPARENT dlgparent
01068 );
01069
01071 static GLOBALOPTIONS::DFTNAMEMODE GetDftNameMode (
01072 ) { return (s_GlobalOptions.m_DftNameMode); }
01073
01075 static const GLOBALOPTIONS& GetGlobalOptions (
01076 ) { InitStatic(); return (s_GlobalOptions); }
01077
01079 static UINT16 GetNumTypes (
01080 ) { return (s_NumTypes); }
01081
01083 static const TYPEDEFN& GetTypeDefn (
01084 UINT16 idx
01085 ) { return (*s_TypeDefns[idx]); }
01086
01088 static const TYPEDEFN* GetTypeDefn (
01089 TYPE layertype
01090 );
01091
01093 static TEXTID GetTypeName (
01094 TYPE layertype
01095 );
01096
01097 #ifdef USE_MGUI
01099 static ERRVALUE PromptGeoDatabasesAndConstruct (
01100 MDLGPARENT dlgparent,
01101 GRE::GROUP *group
01102 );
01103 #endif
01104
01105 #ifdef USE_MGUI
01107 static ERRVALUE PromptObjects (
01108 MDLGPARENT dlgparent,
01109 RVC::OBJITEMLIST& objlist,
01110 MGUI::DLG_GETOBJECT_STYLE dlgstyle = MGUI::DLG_GETOBJECT_STYLE_OnlyExisting,
01111 const MISTRING *pDlgTitle = 0
01112 );
01113 #endif
01114
01115 #ifdef USE_MGUI
01117 static ERRVALUE PromptObjectsAndConstruct (
01118 MDLGPARENT dlgparent,
01119 GRE::GROUP *group,
01120 MGUI::DLG_GETOBJECT_STYLE dlgstyle = MGUI::DLG_GETOBJECT_STYLE_AllowDuplicate|MGUI::DLG_GETOBJECT_STYLE_WebLayers,
01121 GRE::LISTPOS listpos = GRE::LISTPOS_After,
01122 LAYER *reflayer = 0
01123 );
01124 #endif
01125
01127 static void RegisterLayerType (
01128 TYPEDEFN& typedefn
01129 );
01130
01132 static void SetAutoOpenDftTableOnSel (
01133 bool AutoOpenDftTableOnSel
01134 ) { s_GlobalOptions.m_AutoOpenDftTableOnSel = AutoOpenDftTableOnSel; }
01135
01137 static void SetDftNameMode (
01138 GLOBALOPTIONS::DFTNAMEMODE DftNameMode
01139 ) { s_GlobalOptions.m_DftNameMode = DftNameMode; }
01140
01142 static void SetGlobalOptions (
01143 const GLOBALOPTIONS& options
01144 ) { s_GlobalOptions = options; }
01145
01147 static void SMLClassInstall (
01148 SML::CONTEXT *context
01149 );
01150
01151 static SML::CLASSMEMBER* GetSMLClassMembers (
01152 );
01153
01155 LAYER (
01156 GRE::GROUP *group,
01157 TYPE layertype,
01158 DISPPARM& dispparm,
01159 CREATEFLAGS createflags,
01160 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
01161 LAYER *reflayer = 0
01162 );
01163
01165 virtual ~LAYER ();
01166
01167 #ifdef X_NATIVE
01169 void AppendPopupMenuItems (
01170 Widget widget,
01171 const DPOINT2D *point,
01172 MENUITEMARRAY& menuitems
01173 ) { v_AppendPopupMenuItems(widget,point,menuitems); }
01174 #endif
01175
01177 ERRVALUE AssignObject (
01178 const RVC::OBJITEM& objitem,
01179 MDLGPARENT dlgparent = 0
01180 ) { return (v_AssignObject(objitem,dlgparent)); }
01181
01182 int CallDrawFilter (LAYERDC *ldc, const RVC::ELEMENT& element, void *vpStyle) {
01183 if (m_DrawFilter != 0) return (m_DrawFilter(ldc, element.GetType(), static_cast<INT32>(element.GetNumber()), vpStyle));
01184 return (1);
01185 }
01186
01187 int CallDrawFilter (LAYERDC *ldc, ELEMTYPE ElemType, INT32 ElemNum, void *vpStyle) {
01188 if (m_DrawFilter != 0) return (m_DrawFilter(ldc, ElemType, ElemNum, vpStyle));
01189 return (1);
01190 }
01191
01193 bool CanGetElemExtents (
01194 ) const { return (m_CanGetElemExtents); }
01195
01197 bool CanOpenControlPanel (
01198 ) const { return (!m_IsControlPanelDisabled); }
01199
01201 bool CanRender (
01202 ) const { return (v_CanRender()); }
01203
01205 bool CanReportRawElemInfo (
01206 ) const { return (m_CanReportRawElemInfo); }
01207
01209 bool CanShowDetails (
01210 ) const { return (v_CanShowDetails()); }
01211
01213 bool CanShowInView (
01214 const VIEW *view = 0
01215 ) const;
01216
01218 bool CanTestElementByRegion (
01219 ) const { return (m_CanTestElementByRegion); }
01220
01222 bool CanViewIn2D () const;
01223
01225 bool CanViewIn3D () const
01226 { return (m_CanViewIn3D); }
01227
01229 bool CanViewStereo2D () const
01230 { return (m_CanViewStereo2D && CanViewIn2D()); }
01231
01233 bool CanZoomToMaxDetail (
01234 ) const;
01235
01237 bool ChangeListPos (
01238 LAYER* reflayer,
01239 GRE::LISTPOS listpos
01240 );
01241
01243 ERRVALUE CheckDenseDetail (
01244 MDLGPARENT dlgparent
01245 );
01246
01248 void CloseObject (
01249 ) { v_CloseObject(); };
01250
01252 double ComputeDftMaxVisibleScale () const
01253 { return (v_ComputeDftMaxVisibleScale()); }
01254
01256 void ComputeMargins (
01257 double& tmargin,
01258 double& bmargin,
01259 double& lmargin,
01260 double& rmargin
01261 ) { v_ComputeMargins(tmargin,bmargin,lmargin,rmargin); }
01262
01263 #ifndef GENERATING_DOXYGEN_OUTPUT
01264
01265 GRE::LAYERSECTION* ConstructLayerSection (
01266 GRE::VIEW *view
01267 ) { return (v_ConstructLayerSection(view)); }
01268 #endif
01269
01270 #ifndef GENERATING_DOXYGEN_OUTPUT
01271
01272 GRE::LAYERVIEW* ConstructLayerView (
01273 GRE::VIEW *view
01274 ) { return (v_ConstructLayerView(view)); }
01275 #endif
01276
01278 LAYER* Copy (
01279 GRE::GROUP* NewGroup
01280 ) const { return (v_Copy(NewGroup)); }
01281
01283 void DataTipCloseTables (
01284 );
01285
01287 void DataTipGetDefaultPrefix (
01288 int component,
01289 DATATIPPARMS& DataTipParms
01290 ) const { v_DataTipGetDefaultPrefix(component,DataTipParms); }
01291
01293 void DataTipGetObjectNamesString (
01294 const DPOINT2D& point,
01295 MISTRING& string,
01296 int indent = 0,
01297 GRE::VIEW *view = 0
01298 ) const { return (v_DataTipGetObjectNamesString(point, string, indent, view)); }
01299
01302 const DATATIPPARMS *DataTipGetParms (
01303 int component
01304 ) const { return (v_DataTipGetParms(component)); }
01305
01307 int DataTipGetSearchDist (
01308 ) const;
01309
01312 int DataTipGetString (
01313 ELEMTYPE ElemType,
01314 ELEMNUM ElemNum,
01315 MISTRING& string,
01316 SPATMOD::IMAGE::STAGE_ARRAY& images
01317 ) { return (v_DataTipGetString(ElemType,ElemNum,string,images)); }
01318
01323 int DataTipGetString (
01324 const DPOINT2D& point,
01325 MISTRING& string,
01326 SPATMOD::IMAGE::STAGE_ARRAY& images,
01327 GRE::VIEW *view = 0
01328 ) { return (v_DataTipGetString(point,string,images,view)); }
01329
01331 bool DataTipHasAvailable (
01332 ) const { return (v_DataTipHasAvailable()); }
01333
01335 bool DataTipHasEnabled (
01336 ) const { return (v_DataTipHasEnabled()); }
01337
01340 bool DataTipIsEnabled (
01341 ) const { return (m_DataTipEnabled); }
01342
01344 void DataTipSetDefault (
01345 bool force = false
01346 );
01347
01349 void DataTipSetDefault (
01350 int component,
01351 bool force = false
01352 );
01353
01355 void DataTipSetDefaultPrefix (
01356 int component
01357 );
01358
01360 ERRVALUE DataTipSetParms (
01361 int component,
01362 const DATATIPPARMS& DataTipParms
01363 ) { return (v_DataTipSetParms(component,DataTipParms)); }
01364
01366 ERRVALUE DataTipSetTableField (
01367 int component,
01368 const RVC::OBJECTNAME& TableName,
01369 const RVC::OBJECTNAME& FieldName
01370 );
01371
01373 ERRVALUE DataTipSetTableField (
01374 int component,
01375 const char *TableName,
01376 const char *FieldName
01377 );
01378
01380 ERRVALUE DataTipSetVisible (
01381 int component,
01382 bool visible
01383 );
01384
01386 INT32 DbListElemNumToIndex (
01387 int component,
01388 ELEMNUM ElemNum
01389 ) { return (v_DbListElemNumToIndex(component,ElemNum)); }
01390
01392 bool DbListIsIndexElemNum (
01393 ) const { return (m_DbListIsIndexElemNum); }
01394
01396 void DestroyAllLayerViews (
01397 );
01398
01400 void DisableControlPanel (
01401 ) { m_IsControlPanelDisabled = true; }
01402
01403 #ifdef USE_MGUI
01405 void DlgDataTipSettings (
01406 MDLGPARENT dlgparent
01407 );
01408 #endif
01409
01410 #ifdef USE_MGUI
01412 ERRVALUE DlgHighlightByQuery (
01413 MDLGPARENT dlgparent
01414 );
01415 #endif
01416
01418 ERRVALUE Draw (
01419 LAYERDC& layerdc
01420 ) { return (v_Draw(layerdc)); }
01421
01423 ERRVALUE DrawAllViews (
01424 GRE::DRAWCONDITION condition = GRE::DRAWCONDITION_Always
01425 );
01426
01428 ERRVALUE DrawElement (
01429 GRE::VIEW *view,
01430 ELEMTYPE ElemType,
01431 ELEMNUM ElemNum,
01432 GRE::RENDERTARGET Target,
01433 GRE::DRAWFLAGS drawflags = GRE::DRAWFLAG_None
01434 );
01435
01437 ERRVALUE DrawElement (
01438 GRE::VIEW *view,
01439 const RVC::ELEMENT& element,
01440 GRE::RENDERTARGET Target,
01441 GRE::DRAWFLAGS drawflags = GRE::DRAWFLAG_None
01442 ) { return (DrawElement(view,element.GetType(),element.GetNumber(),Target,drawflags)); }
01443
01445 ERRVALUE DrawElementLow (
01446 LAYERDC& layerdc,
01447 ELEMTYPE ElemType,
01448 ELEMNUM ElemNum,
01449 const void *style = 0
01450 ) { return (v_DrawElementLow(layerdc,ElemType,ElemNum,style)); }
01451
01453 ERRVALUE DrawElements (
01454 GRE::VIEW *view,
01455 ELEMTYPE ElemType,
01456 const UNSIGNEDSET *pElemSet,
01457 GRE::RENDERTARGET Target,
01458 GRE::DRAWFLAGS drawflags = GRE::DRAWFLAG_None
01459 );
01460
01462 ERRVALUE DrawElementsLow (
01463 LAYERDC& layerdc,
01464 ELEMTYPE ElemType,
01465 const UNSIGNEDSET *pElemSet,
01466 const void *style = 0
01467 ) { return (v_DrawElementsLow(layerdc,ElemType,pElemSet,style)); }
01468
01470 ERRVALUE DrawElementSample (
01471 const GRE::ELEMSAMPLE_DC& sampledc,
01472 const RVC::ELEMENT& element,
01473 const LRECT2D& samplerect
01474 ) { return (v_DrawElementSample(sampledc,element,samplerect)); }
01475
01477 ERRVALUE DrawHighlighted (
01478 GRE::VIEW *view,
01479 GRE::DRAWFLAGS DrawFlags = GRE::DRAWFLAG_None
01480 );
01481
01483 ERRVALUE DrawLabel (
01484 LAYERDC& layerdc,
01485 const GRE::LABELPLACE& place,
01486 const COLOR* ForegroundColor = 0
01487 );
01488
01490 ERRVALUE DrawLabels (
01491 LAYERDC& layerdc
01492 );
01493
01495 ERRVALUE DrawOverlay (
01496 LAYERDC& layerdc
01497 ) { return (v_DrawOverlay(layerdc)); }
01498
01500 void EditColors (
01501 MDLGPARENT dlgparent
01502 );
01503
01506 void EnableDataTip (
01507 bool enable = true
01508 ) { m_DataTipEnabled = enable; return; }
01509
01512 ERRVALUE EstimateRangeZ (
01513 const LAYERVIEW *pLayerView,
01514 DOUBLE_RANGE& range
01515 ) const;
01516
01519 ELEMNUM FindClosestElement (
01520 const DPOINT2D& point,
01521 double searchdist,
01522 double *distret,
01523 int component,
01524 const UNSIGNEDSET *pSearchSet,
01525 GRE::FINDFLAGS findflags
01526 ) { return (v_FindClosestElement(point,searchdist,distret,component,pSearchSet,findflags)); }
01527
01530 INT64 FindElementsByQuery (
01531 ELEMTYPE ElemType,
01532 UNSIGNEDSET& ElemSet,
01533 const MIUNICODE *QueryScript,
01534 SML::CONTEXT *pQueryContext = 0
01535 );
01536
01540 ERRVALUE FindElementsByQueryExt (
01541 ELEMTYPE ElemType,
01542 SIMPLE_ARRAY<UINT8>& Result,
01543 const MIUNICODE *QueryScript,
01544 SML::CONTEXT *pQueryContext = 0
01545 );
01546
01549 LAYER_SURFACE* FindSurfaceLayer (
01550 ) const;
01551
01552 #ifndef GENERATING_DOXYGEN_OUTPUT
01553
01554 void FinishCreation (
01555 bool notify = true
01556 );
01557
01558 #endif // GENERATING_DOXYGEN_OUTPUT
01559
01561 const RVC::ELEMENT& GetActiveElement () const
01562 { return (m_ActiveElem); }
01563
01566 bool GetActiveElement (
01567 RVC::ELEMENT& element
01568 ) const;
01569
01572 ELEMNUM GetActiveElemNum (
01573 ) const { return (m_ActiveElem.GetNumber()); }
01574
01577 ELEMTYPE GetActiveElemType (
01578 ) const { return (m_ActiveElem.GetType()); }
01579
01581 const COLOR& GetColorPedestal (
01582 ) const;
01583
01586 int GetComponent (
01587 ELEMTYPE ElemType
01588 ) const { return (v_GetComponent(ElemType)); }
01589
01592 MICONSTRUCT* GetComponentIcon (
01593 int component
01594 ) const { return (v_GetComponentIcon(component)); }
01595
01598 COMPINFO* GetComponentInfo (
01599 int component
01600 ) { return (v_GetComponentInfo(component)); }
01601
01604 const COMPINFO* GetComponentInfo (
01605 int component
01606 ) const { return (const_cast<LAYER*>(this)->GetComponentInfo(component)); }
01607
01610 COMPINFO* GetComponentInfoByType (
01611 ELEMTYPE elemtype
01612 );
01613
01616 MISTRING GetComponentName (
01617 int component
01618 ) const { return (v_GetComponentName(component)); }
01619
01621 DISPFLAGS GetDispFlags (
01622 ) const;
01623
01624 RVC::DISPPARMUSAGE GetDispParmUsage (
01625 ) const { return ((layerflags & LAYERFLAG_Editable) ? RVC::DISPPARMUSAGE_Edit : RVC::DISPPARMUSAGE_Display); }
01626
01629 const void* GetElemDefaultStyle (
01630 ELEMTYPE ElemType
01631 ) const { return (v_GetElemDefaultStyle(ElemType)); }
01632
01635 UINT16 GetElemDrawSelectionMode (
01636 ELEMTYPE ElemType
01637 ) const { return (v_GetElemDrawSelectionMode(ElemType)); }
01638
01641 UINT16 GetElemDrawStyleMode (
01642 ELEMTYPE ElemType
01643 ) const { return (v_GetElemDrawStyleMode(ElemType)); }
01644
01646 ERRVALUE GetElemExtents (
01647 ELEMTYPE ElemType,
01648 ELEMNUM ElemNum,
01649 DRECT3D& Extents
01650 ) { return (v_GetElemExtents(ElemType,ElemNum,Extents)); }
01651
01653 GRE::HIGHLIGHTMODE GetElemHighlightMode (
01654 ) const;
01655
01658 UNSIGNEDSET* GetElemHighlightSet (
01659 ELEMTYPE ElemType = ELEMTYPE_All
01660 );
01661
01663 ERRVALUE GetElemSetExtents (
01664 ELEMTYPE ElemType,
01665 const UNSIGNEDSET& ElemSet,
01666 DRECT3D& Extents
01667 );
01668
01670 ELEMTYPE GetElemType (
01671 int component
01672 ) const { return (v_GetElemType(component)); }
01673
01675 const DRECT3D& GetExtents (
01676 ) const { return (m_ObjRegion.GetExtents()); }
01677
01679 GRE::GROUP * GetGroup (
01680 ) const { return (m_group); }
01681
01684 bool GetGeorefName (
01685 RVC::OBJECTNAME& gname,
01686 int component = 0
01687 ) const { return (v_GetGeorefName(gname,component)); }
01688
01690 LAYERDRAWFLAGS GetLayerDrawFlags (
01691 ) const { return (static_cast<LAYERDRAWFLAGS>(m_drawflags)); }
01692
01694 LAYERFLAGS GetLayerFlags (
01695 ) const { return (static_cast<LAYERFLAGS>(layerflags)); }
01696
01698 TYPE GetLayerType (
01699 ) const { return (m_layertype); }
01700
01703 const GRE::LEGEND* GetLegend (
01704 ELEMTYPE ElemType = ELEMTYPE_Empty
01705 ) { return (v_GetLegend(ElemType)); }
01706
01707 #ifdef X_NATIVE
01708 GraphicTreeItemMsgHandler GetLegendMsgHandler (
01709 ) const { return (m_LegendMsgHandler); }
01710 #endif
01711
01714 int GetListPos (
01715 );
01716
01720 const SPATREF::COORDREFSYS& GetMapCoordRefSys (
01721 ) const { return (GetMapRegion().GetCoordRefSys()); }
01722
01724 const REGION2D& GetMapRegion (
01725 ) const { return (m_MapRegion); }
01726
01727 double GetMapScale (
01728 ) const;
01729
01730 UINT8 GetMaskBlue (
01731 ) const { return (m_MaskBlue); }
01732
01733 UINT8 GetMaskGreen (
01734 ) const { return (m_MaskGreen); }
01735
01736 UINT8 GetMaskRed (
01737 ) const { return (m_MaskRed); }
01738
01739 double GetMaxScaleVisible (
01740 bool IncludeGroup = false
01741 ) const;
01742
01743 double GetMinScaleVisible (
01744 bool IncludeGroup = false
01745 ) const;
01746
01747 UINT32 GetModifyStamp (
01748 ) const { return (m_ModifyStamp); }
01749
01751 const MISTRING& GetName (
01752 ) const { return (m_Name); }
01753
01754 #ifndef NO_DEPRECATED
01757 DEPRECATED void GetName (
01758 MISTRING& retname
01759 ) { retname = m_Name; }
01760 #endif
01761
01763 LAYER* GetNext (
01764 ) const { return (m_nextlayer); }
01765
01766 int GetNumComponents (
01767 ) const;
01768
01771 INT64 GetNumElements (
01772 ELEMTYPE ElemType
01773 ) { return (v_GetNumElements(ElemType)); }
01774
01777 INT64 GetNumElementsDeleted (
01778 ELEMTYPE ElemType
01779 ) { return (v_GetNumElementsDeleted(ElemType)); }
01780
01781 int GetNumObjects (
01782 ) const;
01783
01786 const RVC::OBJITEM& GetObjItem (
01787 int component = 0
01788 ) const { return (v_GetObjItem(component)); }
01789
01791 const REGION2D& GetObjRegion (
01792 ) const { return (m_ObjRegion); }
01793
01795 LAYER* GetPrevious (
01796 ) const { return (m_prevlayer); }
01797
01799 double GetScaleMaxDetail (
01800 const DPOINT2D& point,
01801 const SPATREF::COORDREFSYS& crs,
01802 double DisplayPixelSizeMM
01803 ) const;
01804
01805 void GetSizeMeters (
01806 double& xsize,
01807 double& ysize
01808 ) const;
01809
01812 ERRVALUE GetStyleInfo (
01813 ELEMTYPE ElemType,
01814 RVC::OBJITEM& ObjItem,
01815 RVC::OBJECTNAME& TableName
01816 ) { return (v_GetStyleInfo(ElemType,ObjItem,TableName)); }
01817
01819 void GetTransGroup (
01820 TRANS2D_MAPGEN& trans
01821 ) const;
01822
01824 void GetTransMap (
01825 TRANS2D_MAPGEN& trans,
01826 bool setoutput
01827 ) const;
01828
01830 const TYPEDEFN& GetTypeDefn (
01831 ) const { return (*GetTypeDefn(m_layertype)); }
01832
01836 UINT32 GetUniqueID (
01837 ) const { return (m_UniqueID); }
01838
01840 GRE::VIEWABLE* GetViewable (
01841 ) const;
01842
01845 double GetViewMapScale (
01846 ) const;
01847
01849 UINT32 GetVisibleGroup (
01850 ) const { return (m_VisibleViewGroup); }
01851
01853 UINT32 GetVisibleLayout (
01854 ) const { return (m_VisibleViewLayout); }
01855
01857 void GetVisibleScaleRange (
01858 double& MinScaleVisible,
01859 double& MaxScaleVisible,
01860 bool IncludeGroup = false
01861 ) const;
01862
01864 UINT32 GetVisibleViewable (
01865 ) const;
01866
01868 const COLOR& GetWireframeColor (
01869 ) const;
01870
01872 double GetZOffset (
01873 ) const;
01874
01876 void GetZRangeScaled (
01877 DOUBLE_RANGE& zrange
01878 ) const;
01879
01881 bool HasActiveElement ();
01882
01884 bool HasColorMasks (
01885 ) const { return (m_MaskRed != 0 || m_MaskGreen != 0 || m_MaskBlue != 0); }
01886
01888 bool HasDrawFilter (
01889 ) const { return (m_DrawFilter != 0); }
01890
01892 bool HasDispParmSubObject () const
01893 { return (v_HasDispParmSubObject()); }
01894
01896 bool HasHighlighted (
01897 ) const { return (v_HasHighlighted()); }
01898
01900 bool HasLegend (
01901 ) const { return (v_HasLegend()); }
01902
01904 bool HasNullImageCells (
01905 ) const { return (v_HasNullImageCells()); }
01906
01908 bool HasValidExtents (
01909 ) const { return (m_HasExtents); }
01910
01913 int HighlightElement (
01914 ELEMTYPE ElemType,
01915 ELEMNUM ElemNum,
01916 GRE::HIGHLIGHTMODE HighlightMode,
01917 GRE::VIEW *firstview = 0,
01918 GRE::DRAWFLAGS drawflags = GRE::DRAWFLAG_None
01919 );
01920
01923 int HighlightElements (
01924 ELEMTYPE ElemType,
01925 const UNSIGNEDSET *pElemSet,
01926 GRE::HIGHLIGHTMODE HighlightMode,
01927 GRE::VIEW *firstview = 0,
01928 GRE::DRAWFLAGS drawflags = GRE::DRAWFLAG_None
01929 );
01930
01933 int HighlightElementsByQuery (
01934 ELEMTYPE ElemType,
01935 SML::CONTEXT* QueryContext,
01936 int QuerySegment,
01937 const MIUNICODE* QueryScript,
01938 GRE::VIEW *firstview = 0,
01939 GRE::DRAWFLAGS drawflags = GRE::DRAWFLAG_None
01940 );
01941
01944 int HighlightElementsByRegion (
01945 ELEMTYPE ElemType,
01946 const REGION2D& Region,
01947 TESTCRITERIA RegionTest,
01948 GRE::VIEW *firstview = 0,
01949 GRE::DRAWFLAGS drawflags = GRE::DRAWFLAG_None
01950 );
01951
01952 void IncrementModifyStamp (
01953 ) { ++m_ModifyStamp; }
01954
01956 void InvalidateAllViews (
01957 GRE::RENDERTARGET Target = GRE::RENDERTARGET_GroupAll | GRE::RENDERTARGET_LayerAll
01958 );
01959
01960 bool IsAntialiased (
01961 ) { return (v_IsAntialiased()); }
01962
01964 bool IsBeingCreated (
01965 ) const { return (m_IsBeingCreated); }
01966
01968 bool IsComponentSelectable (
01969 int component
01970 ) const;
01971
01973 bool IsEditable (
01974 ) const { return ((layerflags & LAYERFLAG_Editable) != 0); }
01975
01977 bool IsExcludedFromGroupExtents () const;
01978
01979 bool IsLineWidthHinted (
01980 ) const { return (v_IsLineWidthHinted()); }
01981
01983 bool IsManagingPointSymbols () const;
01984
01989 bool IsProportionVariable (
01990 DIMENSION dimension
01991 ) const { return (v_IsProportionVariable(dimension)); }
01992
01994 bool IsRemote (
01995 ) const;
01996
01998 bool IsSortLegendNatural (
01999 ) const;
02000
02002 bool IsTableUsableForComponent (
02003 int component,
02004 const RVC::DBTABLE& table
02005 ) const { return (v_IsTableUsableForComponent(component,table)); }
02006
02007 bool IsValid (
02008 ) const;
02009
02011 bool IsVisibleAtScale (
02012 double scale
02013 ) const;
02014
02016 bool IsVisibleInView (
02017 const GRE::VIEW* view
02018 ) const;
02019
02020 #ifdef USE_MGUI
02022 void MenuAddElemTypeItems (
02023 MGUI::MENU& menu,
02024 ELEMTYPE ElemType
02025 ) { v_MenuAddElemTypeItems(menu,ElemType); }
02026 #endif
02027
02028 #ifdef USE_MGUI
02030 void MenuAddLayerItems (
02031 MGUI::MENU& menu
02032 ) { v_MenuAddLayerItems(menu); }
02033 #endif
02034
02035 #ifdef USE_MGUI
02037 void MenuAddRegionGenItems (
02038 MGUI::MENU& menu,
02039 ELEMTYPE ElemType
02040 ) { v_MenuAddRegionGenItems(menu,ElemType); }
02041 #endif
02042
02043 #ifdef USE_MGUI
02045 void MenuAddViewPopupItems (
02046 MGUI::MENU& menu,
02047 const DPOINT2D *point,
02048 VIEW *view
02049 ) { v_MenuAddViewPopupItems(menu,point,view); }
02050 #endif
02051
02053 void NotifySurfaceChanged (
02054 ) { v_OnNotifySurfaceChanged(); }
02055
02056 #ifdef USE_MGUI
02057 int OpenControlPanel (
02058 MDLGPARENT dlgparent,
02059 bool AddingLayer = false
02060 );
02061 #endif
02062
02065 int OpenObject (
02066 MDLGPARENT dlgparent = 0
02067 ) { return (v_OpenObject(dlgparent)); }
02068
02069 ERRVALUE PanViewToElement (
02070 GRE::VIEW *view,
02071 ELEMTYPE ElemType,
02072 ELEMNUM ElemNum,
02073 GRE::DRAWFLAGS drawflags = GRE::DRAWFLAG_None
02074 );
02075
02076 #ifdef USE_MGUI
02078 ERRVALUE PromptObject (
02079 bool OpenCtrlPanel = false,
02080 MDLGPARENT dlgparent = 0
02081 ) { return (v_PromptObject(OpenCtrlPanel,dlgparent)); }
02082 #endif
02083
02085 ERRVALUE ReportRawElemInfo (
02086 MISTRING& infostr,
02087 ELEMTYPE ElemType,
02088 ELEMNUM ElemNum
02089 ) { return (v_ReportRawElemInfo(infostr,ElemType,ElemNum)); }
02090
02092 ERRVALUE SaveDispParmSubObject (
02093 RVC::DISPPARMUSAGE usage = RVC::DISPPARMUSAGE_Unspecified
02094 ) { return (v_SaveDispParmSubObject(usage)); }
02095
02097 ERRVALUE SaveDispParmSubObject (
02098 const RVC::OBJITEM& ParentObjItem,
02099 RVC::DISPPARMUSAGE usage = RVC::DISPPARMUSAGE_Unspecified
02100 );
02101
02103 void ScalePointZ (
02104 DPOINT3D& pt
02105 ) const;
02106
02109 void ScalePointsZ (
02110 POLYLINE& polyline
02111 ) const;
02112
02114 ERRVALUE SerialRead (
02115 SERIALIZER& serializer
02116 );
02117
02119 ERRVALUE SerialWrite (
02120 SERIALIZER& serializer,
02121 const char *tagname = 0
02122 ) const { return (v_SerialWrite(serializer,tagname)); }
02123
02126 int SetActiveElement (
02127 ELEMTYPE ElemType,
02128 ELEMNUM ElemNum,
02129 SETACTIVEFLAGS flags = SETACTIVEFLAG_None
02130 );
02131
02132 void SetAntialiased (
02133 bool antialias
02134 ) { v_SetAntialiased(antialias); }
02135
02138 bool SetColorActive (
02139 const COLOR& color
02140 );
02141
02144 bool SetColorHighlight (
02145 const COLOR& color
02146 );
02147
02148 void SetColorMasks (
02149 UINT8 MaskRed,
02150 UINT8 MaskGreen,
02151 UINT8 MaskBlue
02152 ) { m_MaskRed = MaskRed; m_MaskGreen = MaskGreen; m_MaskBlue = MaskBlue; }
02153
02155 void SetColorPedestal (
02156 const COLOR& color
02157 );
02158
02160 void SetComponentSelectable (
02161 int component,
02162 bool selectable = true
02163 );
02164
02166 void SetDftName (
02167 bool ReplaceExisting = false
02168 ) { v_SetDftName(ReplaceExisting); }
02169
02171 void SetDispFlags (
02172 DISPFLAGS flags,
02173 DISPFLAGS mask
02174 );
02175
02176 void SetDrawFilter (
02177 int (*DrawFilter)(LAYERDC*, ELEMTYPE, INT32, void*)
02178 ) { m_DrawFilter = DrawFilter; }
02179
02180 void SetDrawFlags (
02181 LAYERDRAWFLAGS flags,
02182 LAYERDRAWFLAGS mask
02183 );
02184
02186 void SetElemDrawSelectionMode (
02187 ELEMTYPE ElemType,
02188 UINT16 SelectMode
02189 ) { v_SetElemDrawSelectionMode(ElemType,SelectMode); }
02190
02192 void SetElemDrawStyleMode (
02193 ELEMTYPE ElemType,
02194 UINT16 StyleMode
02195 ) { v_SetElemDrawStyleMode(ElemType,StyleMode); }
02196
02198 void SetExcludedFromGroupExtents (
02199 bool excluded,
02200 bool notify = true
02201 );
02202
02204 void SetExtentsChanged (
02205 ) { m_HasExtents = false; }
02206
02207 void SetFlags (
02208 LAYERFLAGS flags,
02209 LAYERFLAGS mask,
02210 bool notify = true
02211 );
02212
02214 void SetFuncRemoveCheck (
02215 int (*RemoveCheckFunc)(LAYER*,void*),
02216 void *RemoveCheckData
02217 ) { m_RemoveCheckFunc = RemoveCheckFunc; m_RemoveCheckData = RemoveCheckData; }
02218
02219 void SetHintThinLines (
02220 bool hint
02221 ) { v_SetHintThinLines(hint); }
02222
02224 void SetKeepOpen (
02225 bool KeepOpen = true
02226 ) { if (KeepOpen) this->layerflags |= LAYERFLAG_KeepOpen; else this->layerflags &= ~LAYERFLAG_KeepOpen; }
02227
02229 void SetLegendChanged (
02230 bool notify = true
02231 ) {
02232 if (notify) CallbackInvoke(GRE::MSG::ACTION_ChangeBegin);
02233 m_LegendValid = false;
02234 if (notify) CallbackInvoke(GRE::MSG::ACTION_ChangeEnd);
02235 return;
02236 }
02237
02239 void SetLegendSampleFlags (
02240 MGD::STYLESAMPLEFLAGS SampleFlags
02241 ) { v_SetLegendSampleFlags(SampleFlags); }
02242
02244 void SetListPos (
02245 GRE::LISTPOS listpos,
02246 LAYER *reflayer = 0
02247 );
02248
02249 void SetListPos (
02250 int newpos
02251 );
02252
02253 void SetModified (
02254 bool notify = true
02255 );
02256
02258 void SetName (
02259 const MISTRING& name
02260 );
02261
02263 void SetName (
02264 const RVC::OBJITEM& objitem
02265 );
02266
02268 void SetNotifyGroup (
02269 bool notify = true
02270 ) { m_NoSetModGroup = !notify; }
02271
02275 void SetObjectDescriptor (
02276 int component,
02277 const RVC::DESCRIPTOR& descriptor
02278 ) { v_SetObjectDescriptor(component,descriptor); }
02279
02284 void SetRenderSize (
02285 DIMENSION dimension,
02286 double size
02287 ) { v_SetRenderSize(dimension, size); }
02288
02290 ERRVALUE SetStyleObjItem (
02291 const RVC::OBJITEM& ObjItem
02292 ) { return (v_SetStyleObjItem(ObjItem)); }
02293
02295 void SetTransMap (
02296 const TRANS2D_MAPGEN& trans,
02297 bool fromoutput = false
02298 );
02299
02302 void SetUniqueID (
02303 UINT32 UniqueID
02304 ) { m_UniqueID = UniqueID; }
02305
02307 void SetVisibilityGroupFromLayout (
02308 ) { m_VisibleViewGroup = m_VisibleViewLayout; }
02309
02311 void SetVisibleGroup (
02312 UINT32 flags,
02313 bool set
02314 );
02315
02317 void SetVisibleLayout (
02318 UINT32 flags,
02319 bool set
02320 );
02321
02323 void SetVisibleScaleRange (
02324 double MinScaleVisible,
02325 double MaxScaleVisible
02326 );
02327
02328 void SetVisibleView (
02329 GRE::VIEW *view,
02330 bool visible
02331 );
02332
02334 void SetVisibleViewable (
02335 UINT32 flags,
02336 bool set
02337 );
02338
02340 void SetZScaleOffset (
02341 double zscale,
02342 double zoffset
02343 );
02344
02347 int SnapPoint (
02348 DPOINT3D& ptObject,
02349 SNAPTO SnapTo,
02350 double MaxDistance,
02351 VIEW *view = 0
02352 ) const { return (v_SnapPoint(ptObject,SnapTo,MaxDistance,view)); }
02353
02355 bool SnapPointIsAllowed (
02356 SNAPTO SnapTo
02357 ) const { return (v_SnapPointIsAllowed(SnapTo)); }
02358
02360 ERRVALUE TemplateRead (
02361 SERIALIZER& serializer
02362 ) { return (v_TemplateRead(serializer)); }
02363
02366 int TestElementByRegion (
02367 ELEMTYPE ElemType,
02368 ELEMNUM ElemNum,
02369 const REGION2D& Region,
02370 TESTCRITERIA TestMode,
02371 bool RegionInObjectCoords = true
02372 );
02373
02374 #ifdef USE_MGUI
02376 void TreeViewAddUpdateDetails (
02377 GRE::CTRL_TREEVIEW& TreeView,
02378 MGUI::CTRL_TREE::ITEMHND hndParent,
02379 MGUI::CTRL_TREE::ITEMHND hndInsertAfter
02380 );
02381 #endif
02382
02383 #ifdef USE_MGUI
02385 MGUI::CTRL_TREE::ITEMHND TreeViewAddUpdateLegend (
02386 GRE::CTRL_TREEVIEW& TreeView,
02387 MGUI::CTRL_TREE::ITEMHND hndParent,
02388 MGUI::CTRL_TREE::ITEMHND hndInsertAfter
02389 );
02390 #endif
02391
02392 #ifdef USE_MGUI
02394 MGUI::CTRL_TREE::ITEMHND TreeViewInsertItem (
02395 GRE::CTRL_TREEVIEW& TreeView,
02396 MGUI::CTRL_TREE::ITEMHND hndParent,
02397 MGUI::CTRL_TREE::ITEMHND hndInsertAfter
02398 );
02399 #endif
02400
02401 #ifdef USE_MGUI
02403 void TreeViewSetStateImage (
02404 GRE::CTRL_TREEVIEW& TreeView,
02405 MGUI::CTRL_TREE::ITEMHND hndLayerItem = MGUI::CTRL_TREE::ITEMHND_None
02406 );
02407 #endif
02408
02409 #ifdef USE_MGUI
02411 void TreeViewUpdateDetails (
02412 );
02413 #endif
02414
02416 void UnhighlightAllElements (
02417 bool redraw
02418 );
02419
02421 ERRVALUE UpdateExtents (
02422 bool forceupdate = false
02423 );
02424
02430 bool UsesTransparency (
02431 const MGD::DEVICE *pDevice = 0
02432 ) const { return (v_UsesTransparency(pDevice)); }
02433
02434 ERRVALUE ZoomViewToSelectedElements (
02435 GRE::VIEW *view,
02436 bool activeonly = false
02437 );
02438
02439 protected:
02440
02443 static const SERIALIZERITEM* SerialGetItemDef (SERIALIZER& serializer);
02444
02445 static void SMLGET_DispParmMember (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02446 static void SMLGET_LayerDispFlag (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02447 static void SMLGET_LayerFlag (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02448 static void SMLGET_StyleObject (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02449
02450 static void SMLSET_DispParmMember (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02451 static void SMLSET_DispParmMemberExtChg (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02452 static void SMLSET_LayerDispFlag (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02453 static void SMLSET_LayerFlag (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02454 static void SMLSET_StyleObject (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02455 static void SMLSET_OldProj (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02456 static void SMLSET_TextStyleMember (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02457
02458 bool m_CanGetElemExtents;
02459 bool m_CanReportRawElemInfo;
02460 bool m_CanTestElementByRegion;
02461 bool m_HasExtents;
02462 bool m_LegendValid;
02463 bool m_DbListIsIndexElemNum;
02464 UINT8 m_CurPage;
02465 UINT32 layerflags;
02466 REGION2D m_ObjRegion;
02467 REGION2D m_MapRegion;
02468 TRANS2D_MAPGEN m_TransObjToMap;
02469 RVC::ELEMENT m_ActiveElem;
02470 int (*m_DrawFilter)(LAYERDC*, ELEMTYPE, INT32, void*);
02471 GraphicTreeItemMsgHandler m_LegendMsgHandler;
02472
02474 RVC::DBTABLE* DataTipGetTable (
02475 int component
02476 ) const;
02477
02479 ERRVALUE DataTipOpenTable (
02480 int component
02481 );
02482
02484 void ResetAllElementSets (
02485 );
02486
02489 const char* SerialGetTagName (
02490 ) const { return (v_SerialGetTagName()); }
02491
02493 void SetCanViewIn2D (bool canview)
02494 { m_CanViewIn2D = canview; }
02495
02497 void SetCanViewIn3D (bool canview)
02498 { m_CanViewIn3D = canview; }
02499
02501 void SetCanViewStereo2D (bool canview)
02502 { m_CanViewStereo2D = canview; }
02503
02504 void SetLayerType (
02505 TYPE layertype
02506 ) { m_layertype = layertype; }
02507
02508 #ifdef USE_MGUI
02509 virtual void v_MenuAddElemTypeItems (MGUI::MENU& menu, ELEMTYPE ElemType);
02510 virtual void v_MenuAddLayerItems (MGUI::MENU& menu);
02511 #endif
02512
02513 private:
02514 #ifndef GENERATING_DOXYGEN_OUTPUT
02515
02516 static void InitStatic ();
02517 static ERRVALUE SerializerCB_MaxScaleVisible (SERIALIZER&, const SERIALIZERITEM *, void *, SERIALIZERITEM::ACTION);
02518 static ERRVALUE SerializerCB_MinScaleVisible (SERIALIZER&, const SERIALIZERITEM *, void *, SERIALIZERITEM::ACTION);
02519 static void SMLSET_ScaleRange (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02520 static void SMLFUNC_ShowDetails (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
02521
02522 static bool s_InitDone;
02523 static GLOBALOPTIONS s_GlobalOptions;
02524 static TYPEDEFN *s_TypeDefns[GRE_MAXLAYERTYPES];
02525 static UINT16 s_NumTypes;
02526
02527 LAYER *m_prevlayer;
02528 LAYER *m_nextlayer;
02529 GRE::GROUP *m_group;
02530 TYPE m_layertype;
02531 MISTRING m_Name;
02532 UINT32 m_drawflags;
02533 UINT32 m_VisibleViewGroup;
02534 UINT32 m_VisibleViewLayout;
02535 bool m_IsControlPanelDisabled;
02536 bool m_IsBeingCreated;
02537 bool m_NoSetModGroup;
02538 bool m_CanViewIn2D;
02539 bool m_CanViewIn3D;
02540 bool m_CanViewStereo2D;
02541 CREATEFLAGS m_CreationFlags;
02542 UINT8 m_MaskRed;
02543 UINT8 m_MaskGreen;
02544 UINT8 m_MaskBlue;
02545 UINT8 m_DataTipDftPage;
02546 bool m_DataTipEnabled;
02547 DISPPARM *m_pDispParm;
02548 int (*m_RemoveCheckFunc)(LAYER*,void*);
02549 void *m_RemoveCheckData;
02550 UINT32 m_UniqueID;
02551 UINT32 m_ModifyStamp;
02552 RVC::DBTABLE *m_pObjTableDataTip[5];
02553
02554 ERRVALUE CheckUserRemove ();
02555 bool HasDenseDetail () const
02556 { return (v_HasDenseDetail()); }
02557 void RestoreViewsFromBuffers (GRE::DRAWFLAGS drawflags, GRE::VIEW *view = 0);
02558 #ifdef USE_MGUI
02559 unsigned int TreeViewComputeStateIdx (GRE::VIEW*, bool skiplocator = false) const;
02560 void TreeViewOnChangePosition (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndLayerItem);
02561 bool TreeViewOnChildVisibilityChanging (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndLayerItem, MGUI::CTRL_TREE::CHILDVISIBILITY visibility);
02562 MGUI::CUSTOMDRAW::RETVALUE TreeViewOnCustomDraw (GRE::CTRL_TREEVIEW& TreeView, MGUI::CUSTOMDRAW_TREE& CustomDraw);
02563 void TreeViewOnGetItemInfo (GRE::CTRL_TREEVIEW&, MGUI::CTRL_TREE::ITEMVALUES, MGUI::CTRL_TREE::ITEMINFO&);
02564 bool TreeViewOnPointerButton (GRE::CTRL_TREEVIEW&, MGUI::CTRL_TREE::ITEMHND, MGUI::CTRL_TREE::HITRESULT, const LPOINT2D&, MGUI::POINTERBUTTON, MGUI::KEYSTATE);
02565 bool TreeViewOnToolTipRequest (GRE::CTRL_TREEVIEW&, MGUI::CTRL_TREE::ITEMHND, MGUI::CTRL_TREE::HITRESULT, const LPOINT2D&, MGUI::CTRL_TOOLTIP&);
02566 void TreeViewPopupMenu (GRE::CTRL_TREEVIEW&, const LPOINT2D& MousePoint);
02567 #endif
02568 void UpdateMapRegion ();
02569
02570
02571 virtual bool v_Destroy (bool NotifyParent);
02572 virtual MICONSTRUCT* v_GetIcon () const;
02573 virtual const char* v_GetTypeName () const;
02574
02575 #endif // GENERATING_DOXYGEN_OUTPUT
02576
02577
02578
02579 #ifdef X_NATIVE
02580 virtual void v_AppendPopupMenuItems (Widget widget, const DPOINT2D *point, MENUITEMARRAY& menuitems);
02581 #endif
02582 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
02583 virtual bool v_CanRender () const;
02584 virtual bool v_CanShowDetails () const;
02585 virtual void v_CloseObject ();
02586 virtual double v_ComputeDftMaxVisibleScale () const;
02587 virtual void v_ComputeMargins (double& tmargin, double& bmargin, double& lmargin, double& rmargin);
02588 #ifdef USE_MGUI
02589 virtual int v_ControlPanel (MDLGPARENT dlgparent, UINT32 flags = 0) = 0;
02590 #endif
02591 virtual GRE::LAYERSECTION* v_ConstructLayerSection (GRE::VIEW *view);
02592 virtual GRE::LAYERVIEW* v_ConstructLayerView (GRE::VIEW *view);
02593 virtual LAYER* v_Copy (GRE::GROUP *NewGroup) const = 0;
02594 virtual void v_DataTipGetDefaultPrefix (int component, DATATIPPARMS& DataTipParms) const;
02595 virtual void v_DataTipGetObjectNamesString (const DPOINT2D& point, MISTRING& string, int indent, GRE::VIEW *view) const;
02596 virtual const DATATIPPARMS* v_DataTipGetParms (int component) const;
02597 virtual int v_DataTipGetString (ELEMTYPE ElemType, ELEMNUM ElemNum, MISTRING& string, SPATMOD::IMAGE::STAGE_ARRAY& images);
02598 virtual int v_DataTipGetString (const DPOINT2D& point, MISTRING& string, SPATMOD::IMAGE::STAGE_ARRAY& images, GRE::VIEW* view);
02599 virtual bool v_DataTipHasAvailable () const;
02600 virtual bool v_DataTipHasEnabled () const;
02601 virtual void v_DataTipSetDefault (int component, bool force);
02602 virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
02603 virtual INT32 v_DbListElemNumToIndex (int component, ELEMNUM ElemNum);
02604 virtual ERRVALUE v_Draw (LAYERDC& layerdc) = 0;
02605 virtual ERRVALUE v_DrawElementLow (LAYERDC& layerdc, ELEMTYPE ElemType, ELEMNUM ElemNum, const void *style);
02606 virtual ERRVALUE v_DrawElementsLow (LAYERDC& layerdc, ELEMTYPE ElemType, const UNSIGNEDSET *pElemSet, const void *style);
02607 virtual ERRVALUE v_DrawElementSample (const GRE::ELEMSAMPLE_DC& sampledc, const RVC::ELEMENT& element, const LRECT2D& samplerect);
02608 virtual ERRVALUE v_DrawOverlay (LAYERDC& layerdc);
02609 virtual ERRVALUE v_EstimateRangeZ (const LAYERVIEW *pLayerView, DOUBLE_RANGE& range) const;
02610 virtual ELEMNUM v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UNSIGNEDSET *pSearchSet, GRE::FINDFLAGS findflags);
02611 virtual int v_GetComponent (ELEMTYPE ElemType) const;
02612 virtual MICONSTRUCT* v_GetComponentIcon (int component) const;
02613 virtual COMPINFO* v_GetComponentInfo (int component);
02614 virtual MISTRING v_GetComponentName (int component) const;
02615 virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
02616 virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
02617 virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
02618 virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, ELEMNUM ElemNum, DRECT3D& Extents);
02619 virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, UNSIGNEDSET& ElemSet);
02620 virtual ELEMTYPE v_GetElemType (int component) const;
02621 virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
02622 virtual bool v_GetLabelColor(LAYERDC& dc, const GRE::LABELPLACE& label, COLOR& color);
02623 virtual const GRE::LEGEND* v_GetLegend (ELEMTYPE ElemType);
02624 virtual INT64 v_GetNumElements (ELEMTYPE ElemType);
02625 virtual INT64 v_GetNumElementsDeleted (ELEMTYPE ElemType);
02626 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
02627 virtual double v_GetScaleMaxDetail (const DPOINT2D& point, const SPATREF::COORDREFSYS& crs, double DisplayPixelSizeMM) const;
02628 virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
02629 virtual bool v_HasDenseDetail () const;
02630 virtual bool v_HasDispParmSubObject () const;
02631 virtual bool v_HasHighlighted () const;
02632 virtual bool v_HasLegend () const;
02633 virtual bool v_HasNullImageCells () const;
02634 virtual int v_HighlightElementsByRegion (ELEMTYPE ElemType, const REGION2D& Region, TESTCRITERIA RegionTest, GRE::VIEW *firstview, GRE::DRAWFLAGS drawflags);
02635 virtual bool v_IsAntialiased () const;
02636 virtual bool v_IsLineWidthHinted () const;
02637 virtual bool v_IsProportionVariable (DIMENSION dimension) const;
02638 virtual bool v_IsTableUsableForComponent (int component, const RVC::DBTABLE& table) const;
02639 #ifdef USE_MGUI
02640 virtual void v_MenuAddRegionGenItems (MGUI::MENU& menu, ELEMTYPE ElemType);
02641 virtual void v_MenuAddViewPopupItems (MGUI::MENU& menu, const DPOINT2D *point, VIEW *view);
02642 #endif
02643
02644 virtual void v_OnNotifySurfaceChanged ();
02645 virtual int v_OpenObject (MDLGPARENT dlgparent);
02646 #ifdef USE_MGUI
02647 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
02648 #endif
02649 virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, ELEMNUM ElemNum);
02650 virtual ERRVALUE v_SaveDispParmSubObject (RVC::DISPPARMUSAGE usage);
02651 virtual const char* v_SerialGetTagName () const = 0;
02652 virtual ERRVALUE v_SerialRead (SERIALIZER& serializer);
02653 virtual ERRVALUE v_SerialWrite (SERIALIZER& serializer, const char *tagname) const;
02654 virtual void v_SetAntialiased (bool antialias);
02655 virtual void v_SetDftName (bool ReplaceExisting);
02656 virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
02657 virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
02658 virtual void v_SetHintThinLines (bool hint);
02659 virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
02660 virtual void v_SetObjectDescriptor (int component, const RVC::DESCRIPTOR& descriptor);
02661 virtual void v_SetRenderSize (DIMENSION dimension, double size);
02662 virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
02663 virtual int v_SnapPoint (DPOINT3D& ptObject, SNAPTO SnapTo, double MaxDistance, VIEW *view) const;
02664 virtual bool v_SnapPointIsAllowed (SNAPTO SnapTo) const;
02665 virtual ERRVALUE v_TemplateRead (SERIALIZER& serializer);
02666 virtual int v_TestElementByRegion (ELEMTYPE ElemType, ELEMNUM ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
02667 #ifdef USE_MGUI
02668 virtual MGUI::CTRL_TREE::ITEMHND v_TreeViewAddUpdateLegend (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
02669 virtual void v_TreeViewAddUpdateDetails (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
02670 #endif
02671 virtual int v_UpdateExtents (bool forceupdate);
02672 virtual bool v_UsesTransparency (const MGD::DEVICE *pDevice = 0) const;
02673
02674
02675 #ifndef GENERATING_DOXYGEN_OUTPUT
02676
02677 LAYER (const LAYER&);
02678 LAYER& operator= (const LAYER&);
02679
02680 #endif // GENERATING_DOXYGEN_OUTPUT
02681 };
02682
02683 #ifndef GENERATING_DOXYGEN_OUTPUT
02684 DEFINE_ENUM_OP_BITWISE(LAYER::CREATEFLAGS)
02685 DEFINE_ENUM_OP_BITWISE(LAYER::SETACTIVEFLAGS)
02686 DEFINE_ENUM_OP_INCREMENT(LAYER::TYPE)
02687 #endif
02688
02689
02690
02692 class LAYER::DISPPARM : public SERIALIZABLE {
02693 public:
02694
02695 UINT32 dispflags;
02696 UINT8 NumObjects;
02697 UINT8 NumComponents;
02698 UINT8 NoGeoreference;
02699 UINT8 DataTipSearchDist;
02700 double zinit;
02701 double zlast;
02702 double zscale;
02703 double zoffset;
02704 COLOR ActiveColor;
02705 COLOR HighlightColor;
02706 COLOR WireframeColor;
02707 COLOR BaseColor;
02708 double MinScaleVisible;
02709 double MaxScaleVisible;
02710 double m_MaxScaleRegion;
02711 POLYSTYLE m_RegionStyle;
02712 bool m_ShowRegionZoomedOut;
02713 bool m_bManageTextLabels;
02714 bool m_bManagePointSymbols;
02715
02717
02718 DISPPARM& operator= (const DISPPARM& rhs) {
02719 if (this != &rhs) Copy(rhs);
02720 return (*this);
02721 }
02722
02725 int LoadSubObject (
02726 const RVC::OBJECT& ParentObj,
02727 RVC::DISPPARMUSAGE usage = RVC::DISPPARMUSAGE_Unspecified
02728 );
02729
02731 void SetMayUseTransparency (
02732 ) { dispflags |= DISPFLAG_MayUseTransparency; dispflags &= ~DISPFLAG_UsesTransparency; }
02733
02735 ERRVALUE Validate ();
02736
02738 bool IsPedestalSet (
02739 ) { return (BaseColor.GetTransparency() != 255); }
02740
02742 void SetPedestal (
02743 const bool pedestal
02744 ) { BaseColor.SetTransparency(pedestal ? 0 : 255 ); }
02745
02746 protected:
02747
02749 DISPPARM ();
02750
02752 DISPPARM (const DISPPARM& rhs) : SERIALIZABLE(rhs) { Copy(rhs); }
02753
02754 virtual ~DISPPARM ();
02755
02756 private:
02757 #ifndef GENERATING_DOXYGEN_OUTPUT
02758
02759 void Copy (const DISPPARM& rhs);
02760
02762 virtual ERRVALUE SerialRead (SERIALIZER& serializer);
02763 virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
02764
02765 #endif // GENERATING_DOXYGEN_OUTPUT
02766
02768 virtual const SERIALIZERITEM* SerialGetItemDef (SERIALIZER& serializer) const = 0;
02769 virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
02770 virtual ERRVALUE v_Validate ();
02771
02772 };
02773
02774
02775
02778 class LAYER::COMMONPARM {
02779 public:
02780
02781 enum STATE {
02782 STATE_False = 0,
02783 STATE_True = 1,
02784 STATE_ByLayer = 2
02785 };
02786
02787 #ifdef USE_MGUI
02789 class FORM {
02790 public:
02791
02792 FORM ();
02793
02794 virtual ~FORM () = 0;
02795
02797 void Create (
02798 MGUI::LAYOUT_PANE& ParentPane,
02799 const COMMONPARM *pValues
02800 ) { v_Create(ParentPane,pValues); }
02801
02803 void GetValues (
02804 COMMONPARM *pValues
02805 ) { v_GetValues(pValues); }
02806
02807 void SetDelegateOnChanged (
02808 DELEGATE_VOID_NOPARMS delegate
02809 ) { m_DelegateOnChanged = delegate; }
02810
02812 void SetValues (
02813 const COMMONPARM *pValues
02814 ) { v_SetValues(pValues); }
02815
02816 protected:
02817
02819 void NotifyChanged (
02820 );
02821
02822 private:
02823 #ifndef GENERATING_DOXYGEN_OUTPUT
02824
02825 DELEGATE_VOID_NOPARMS m_DelegateOnChanged;
02826
02827 #endif
02828
02829
02830
02832 virtual void v_Create (
02833 MGUI::LAYOUT_PANE& ParentPane,
02834 const COMMONPARM *pValues
02835 ) = 0;
02836
02838 virtual void v_GetValues (
02839 COMMONPARM *pValues
02840 ) = 0;
02841
02843 virtual void v_SetValues (
02844 const COMMONPARM *pValues
02845 ) = 0;
02846
02847 };
02848 #endif
02849
02850 virtual ~COMMONPARM () = 0;
02851
02852 #ifdef USE_MGUI
02854 FORM* ConstructForm (
02855 ) const { return (v_ConstructForm()); }
02856 #endif
02857
02858 #ifdef USE_MGUI
02861 bool DlgEditValues (
02862 MDLGPARENT dlgparent
02863 ) { return (v_DlgEditValues(dlgparent)); }
02864 #endif
02865
02867 GROUP* GetGroup (
02868 ) const { return (m_group); }
02869
02871 LAYER::TYPE GetLayerType (
02872 ) const { return (m_LayerType); }
02873
02875 bool HasUI (
02876 ) const { return (m_HasUI); }
02877
02879 const SERIALIZERITEM* SerialGetItemDef (
02880 ) const { return (v_SerialGetItemDef()); }
02881
02883 const char* SerialGetTagName (
02884 ) const { return (v_SerialGetTagName()); }
02885
02887 ERRVALUE SerialRead (
02888 SERIALIZER& serializer
02889 ) { return (v_SerialRead(serializer)); }
02890
02892 ERRVALUE SerialWrite (
02893 SERIALIZER& serializer
02894 ) const { return (v_SerialWrite(serializer)); }
02895
02896 protected:
02897
02899 explicit COMMONPARM (
02900 GROUP *group,
02901 LAYER::TYPE layertype,
02902 bool HasUI = true
02903 );
02904
02905 private:
02906 #ifndef GENERATING_DOXYGEN_OUTPUT
02907
02908 GROUP *m_group;
02909 LAYER::TYPE m_LayerType;
02910 bool m_HasUI;
02911
02912
02913 COMMONPARM (const COMMONPARM& rhs);
02914 COMMONPARM& operator= (const COMMONPARM& rhs);
02915
02916 #endif // GENERATING_DOXYGEN_OUTPUT
02917
02918
02919
02920 #ifdef USE_MGUI
02922 virtual FORM* v_ConstructForm () const;
02923 #endif
02924
02925 #ifdef USE_MGUI
02929 virtual bool v_DlgEditValues (MDLGPARENT dlgparent);
02930 #endif
02931
02933 virtual const SERIALIZERITEM* v_SerialGetItemDef () const = 0;
02934
02936 virtual const char* v_SerialGetTagName () const = 0;
02937
02940 virtual ERRVALUE v_SerialRead (SERIALIZER& serializer);
02941
02944 virtual ERRVALUE v_SerialWrite (SERIALIZER& serializer) const;
02945
02946 };
02947
02948
02949
02951 class LAYER::TYPEDEFN {
02952 public:
02953
02954 enum FLAGS {
02955 FLAG_None = 0,
02956 FLAG_NotEditable = 0x0001,
02957 FLAG_OnePerGroup = 0x0002,
02958 FLAG_NoHighlightColors = 0x0010,
02959 FLAG_CanQuickAdd = 0x0020,
02960 FLAG_CanShowDataTip = 0x0040,
02961 FLAG_IsRemote = 0x0080,
02962 FLAG_CanShowRegionZoomedOut = 0x0100,
02963 FLAG_HasPossibleOverlay = 0x0200,
02964 };
02965
02967 void AddTypesToFilter (
02968 MGUI::DLG_GETOBJECT_FILTER& filter
02969 ) const;
02970
02971 bool CanQuickAdd (
02972 ) const { return ((m_flags & FLAG_CanQuickAdd)!=0); }
02973
02974 bool CanShowDataTip (
02975 ) const { return ((m_flags & FLAG_CanShowDataTip)!=0); }
02976
02977 bool CanShowRegionZoomedOut (
02978 ) const { return ((m_flags & FLAG_CanShowRegionZoomedOut)!=0); }
02979
02980 #ifdef USE_MGUI
02984 bool CreateMenuAdd (
02985 MGUI::MENU& menuret
02986 ) const { return (v_CreateMenuAdd(menuret)); }
02987 #endif
02988
02990 ERRVALUE Construct (
02991 GRE::GROUP *group,
02992 LAYER **retlayer = 0,
02993 CREATEFLAGS createflags = CREATEFLAG_None,
02994 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
02995 LAYER *reflayer = 0
02996 ) const;
02997
03000 const char* GetFileExtns (
03001 ) const { return (m_FileExtns); }
03002
03004 ICONID GetIconID (
03005 ) const { return (m_IconID); }
03006
03008 TYPE GetLayerType (
03009 ) const { return (m_LayerType); }
03010
03011 #if defined(X_NATIVE) && !defined(DEPRECATE_ALL)
03014 DEPRECATED MENUITEM* GetMenuItemCreate (
03015 ) const { return (v_GetMenuItemCreate()); }
03016 #endif
03017
03019 const RVC::OBJTYPESET& GetObjTypeSet (
03020 ) const { return (m_ObjTypeSet); }
03021
03023 const char* GetSerializeTagCommonParm (
03024 ) const { return (m_SerializeTagCommonParm); }
03025
03027 const char* GetSerializeTagLayer (
03028 ) const { return (m_SerializeTagLayer); }
03029
03031 const char* GetSerializeTagTemplate (
03032 ) const { return (m_SerializeTagTemplate); }
03033
03035 int GetTreeViewImageIdx (
03036 ) const { return (m_TreeViewImageIdx); }
03037
03039 int GetTreeViewImageIdxEdit (
03040 ) const { return (m_TreeViewImageIdxEdit); }
03041
03042 TEXTID GetTypeNameTextID (
03043 ) const { return (m_TypeNameTextID); }
03044
03045 bool HasPossibleOverlay () const
03046 { return ((m_flags & FLAG_HasPossibleOverlay) != 0); }
03047
03048 bool IsEditable (
03049 ) const { return (!(m_flags & FLAG_NotEditable)); }
03050
03053 int IsFileSelectable (
03054 const FILEPATH& filepath,
03055 MISTRING& msg,
03056 int position = -1
03057 ) const;
03058
03061 int IsObjectSelectable (
03062 const RVC::OBJITEM& objitem,
03063 MISTRING& msg,
03064 int position = -1
03065 ) const;
03066
03067 bool IsOnePerGroup (
03068 ) const { return ((m_flags & FLAG_OnePerGroup)!=0); }
03069
03070 bool IsRemote (
03071 ) const { return ((m_flags & FLAG_IsRemote)!=0); }
03072
03073 void SetupTreeViewShared (
03074 );
03075
03076 bool UsesHighlightColors (
03077 ) const { return (!(m_flags & FLAG_NoHighlightColors)); }
03078
03079 protected:
03080
03082 TYPEDEFN (
03083 TYPE LayerType,
03084 TEXTID TypeNameTextID,
03085 const char *SerializeTagLayer,
03086 const char *SerializeTagTemplate,
03087 ICONID IconID,
03088 FLAGS flags,
03089 const char *SerializeTagCommonParm = 0
03090 );
03091
03093 TYPEDEFN (
03094 TYPE LayerType,
03095 TEXTID TypeNameTextID,
03096 const RVC::OBJTYPESET& ObjTypeSet,
03097 const char *SerializeTagLayer,
03098 const char *SerializeTagTemplate,
03099 ICONID IconID,
03100 FLAGS flags,
03101 const char *SerializeTagCommonParm = 0
03102 );
03103
03105 TYPEDEFN (
03106 TYPE LayerType,
03107 TEXTID TypeNameTextID,
03108 const char *FileExtns,
03109 const char *SerializeTagLayer,
03110 const char *SerializeTagTemplate,
03111 ICONID IconID,
03112 FLAGS flags,
03113 const char *SerializeTagCommonParm = 0
03114 );
03115
03117 TYPEDEFN (
03118 TYPE LayerType,
03119 TEXTID TypeNameTextID,
03120 const RVC::OBJTYPESET& ObjTypeSet,
03121 const char *FileExtns,
03122 const char *SerializeTagLayer,
03123 const char *SerializeTagTemplate,
03124 ICONID IconID,
03125 FLAGS flags,
03126 const char *SerializeTagCommonParm = 0
03127 );
03128
03129 virtual ~TYPEDEFN () = 0;
03130
03131 void SetIconIdEdit (
03132 ICONID iconid
03133 ) { m_IconIdEdit = iconid; }
03134
03135 private:
03136 #ifndef GENERATING_DOXYGEN_OUTPUT
03137
03138 TYPE m_LayerType;
03139 TEXTID m_TypeNameTextID;
03140 FLAGS m_flags;
03141 RVC::OBJTYPESET m_ObjTypeSet;
03142 const char *m_FileExtns;
03143 const char *m_SerializeTagLayer;
03144 const char *m_SerializeTagTemplate;
03145 const char *m_SerializeTagCommonParm;
03146 ICONID m_IconID;
03147 int m_TreeViewImageIdx;
03148 ICONID m_IconIdEdit;
03149 int m_TreeViewImageIdxEdit;
03150
03151 virtual void v_Construct (
03152 GRE::GROUP *group,
03153 LAYER **retlayer,
03154 CREATEFLAGS createflags,
03155 GRE::LISTPOS listpos,
03156 LAYER *reflayer
03157 ) const = 0;
03158
03159 #ifdef USE_MGUI
03162 virtual bool v_CreateMenuAdd (
03163 MGUI::MENU& menuret
03164 ) const;
03165 #endif
03166
03167 #ifdef X_NATIVE
03168 virtual MENUITEM* v_GetMenuItemCreate () const;
03169 #endif
03170
03174 virtual int v_IsFileSelectable (
03175 const FILEPATH& filepath,
03176 MISTRING& msg,
03177 int position
03178 ) const;
03179
03184 virtual int v_IsObjectSelectable (
03185 const RVC::OBJITEM& objitem,
03186 MISTRING& msg,
03187 int position
03188 ) const;
03189
03190 #ifdef USE_MGUI
03192 virtual void v_SetupTreeViewShared ();
03193 #endif
03194
03195 #endif // GENERATING_DOXYGEN_OUTPUT
03196 };
03197 #ifndef GENERATING_DOXYGEN_OUTPUT
03198 DEFINE_ENUM_OP_BITWISE(LAYER::TYPEDEFN::FLAGS);
03199 #endif
03200
03201
03202
03204 class LAYER::COMPINFO {
03205 public:
03206
03207 #if defined(USE_MGUI)
03208 class TABLEINFO {
03209 public:
03210
03211 enum TYPE {
03212 TYPE_None = 0,
03213 TYPE_User = 1,
03214 TYPE_Form = 2,
03215 TYPE_System = 3
03216 };
03217
03219 TABLEINFO (
03220 COMPINFO& CompInfo
03221 );
03222
03224 TABLEINFO (
03225 const TABLEINFO& rhs
03226 );
03227
03229 ~TABLEINFO (
03230 );
03231
03232 ERRVALUE HideTable (
03233 );
03234
03235 bool IsForm (
03236 ) const { return (m_Type == TYPE_Form); }
03237
03238 bool IsSystemTable (
03239 ) const { return (m_Type == TYPE_System); }
03240
03241 bool IsOpen (
03242 ) const;
03243
03244 bool IsUser (
03245 ) const { return (m_Type == TYPE_User); }
03246
03247 const RVC::OBJITEM* GetObjItemForm (
03248 ) const { return (m_pObjItemForm); }
03249
03250 bool SetForm (
03251 const RVC::OBJITEM& ObjItemForm
03252 );
03253
03254 bool SetTable (
03255 INT32 TableNum
03256 );
03257
03258 ERRVALUE ShowTable (
03259 );
03260
03262 MGUI::CTRL_TREE::ITEMHND TreeViewAddItem (
03263 GRE::CTRL_TREEVIEW& TreeView,
03264 MGUI::CTRL_TREE::ITEMHND hndParent,
03265 MGUI::CTRL_TREE::ITEMHND hndInsertAfter
03266 );
03267
03268 private:
03269 #ifndef GENERATING_DOXYGEN_OUTPUT
03270
03271 COMPINFO& m_CompInfo;
03272 TYPE m_Type;
03273 INT32 m_TableNum;
03274 RVC::OBJITEM *m_pObjItemForm;
03275 bool m_IsTableViewable;
03276
03277 bool TreeViewOnPointerButton (GRE::CTRL_TREEVIEW&, MGUI::CTRL_TREE::ITEMHND, MGUI::CTRL_TREE::HITRESULT, const LPOINT2D&, MGUI::POINTERBUTTON, MGUI::KEYSTATE);
03278 bool TreeViewOnToolTipRequest (GRE::CTRL_TREEVIEW&, MGUI::CTRL_TREE::ITEMHND, MGUI::CTRL_TREE::HITRESULT, const LPOINT2D&, MGUI::CTRL_TOOLTIP&);
03279 void TreeViewPopupMenu (GRE::CTRL_TREEVIEW&, MGUI::CTRL_TREE::ITEMHND, const LPOINT2D& MousePoint);
03280
03281 TABLEINFO& operator= (const TABLEINFO& rhs);
03282
03283 friend class COMPINFO;
03284 #endif // GENERATING_DOXYGEN_OUTPUT
03285 };
03286
03287 typedef MILIST<TABLEINFO> TABLEINFOLIST;
03288
03289 #endif
03290
03291 class DLG_RECLASSIFY;
03292
03294 COMPINFO (
03295 );
03296
03298 COMPINFO (
03299 LAYER *layer,
03300 int component,
03301 ELEMTYPE ElemType,
03302 bool AllowDatabase = true,
03303 bool AllowQuery = true
03304 );
03305
03307 ~COMPINFO (
03308 );
03309
03310 #ifdef USE_MGUI
03312 void ActivateNextSelected (
03313 );
03314 #endif
03315
03316 #ifdef USE_MGUI
03318 void ActivatePrevSelected (
03319 );
03320 #endif
03321
03322 #ifdef USE_MGUI
03324 ERRVALUE ApplyReclassify (DLG_RECLASSIFY*);
03325 #endif
03326
03327 #ifdef USE_MGUI
03329 ERRVALUE CreateDbEdit (
03330 );
03331 #endif
03332
03334 void Destroy (
03335 );
03336
03337 #ifdef USE_MGUI
03339 ERRVALUE DlgHighlightByQuery ();
03340 #endif
03341
03342 #ifdef USE_MGUI
03344 void DropForm (
03345 const RVC::OBJITEM& ObjItemForm
03346 );
03347 #endif
03348
03349 #ifdef USE_MGUI
03351 void DropTable (
03352 INT32 TableNum
03353 );
03354 #endif
03355
03356 #ifdef USE_MGUI
03358 TABLEINFO* FindFormInfo (
03359 const RVC::OBJITEM& ObjItemForm
03360 );
03361 #endif
03362
03363 #ifdef USE_MGUI
03365 TABLEINFO* FindTableInfo (
03366 INT32 TableNum
03367 );
03368 #endif
03369
03371 ELEMNUM GetActiveElemNum (
03372 ) const { return (m_ActiveElemNum); }
03373
03375 bool GetAllowQuery () const
03376 { return (m_AllowQuery); }
03377
03379 INT32 GetBaseTableNum (
03380 ) const { return (m_BaseTableNum); }
03381
03383 int GetComponent (
03384 ) const { return (m_component); }
03385
03386 #ifdef USE_MGUI
03388 DBEDIT* GetDbEdit (
03389 );
03390 #endif
03391
03393 ELEMTYPE GetElemType (
03394 ) const { return (m_ElemType); }
03395
03397 const UNSIGNEDSET& GetHighlightSet (
03398 ) const { return (m_HighlightSet); }
03399
03401 UNSIGNEDSET& GetHighlightSet (
03402 ) { return (m_HighlightSet); }
03403
03405 LAYER* GetLayer (
03406 ) const { return (m_layer); }
03407
03408 bool GetShowSystemTables (
03409 ) const { return (m_ShowSystemTables); }
03410
03411 #ifdef USE_MGUI
03412 TABLEINFOLIST& GetTableInfoList (
03413 ) { return (m_TableInfoList); }
03414 #endif
03415
03416 #ifdef USE_MGUI
03418 bool HasDbEdit (
03419 ) const { return (m_pDbEdit != 0); }
03420 #endif
03421
03422 void Init (
03423 LAYER *layer,
03424 int component,
03425 ELEMTYPE ElemType,
03426 bool AllowDatabase,
03427 bool AllowQuery = true
03428 );
03429
03430 bool IsElemSelectable (
03431 ) const { return (m_ElemSelectable); }
03432
03434 void NotifyElementSelected (
03435 );
03436
03437 #ifdef USE_MGUI
03438 void OnMenuRegionGen (MGUI::ID, bool);
03439 #endif
03440
03441 #ifdef USE_MGUI
03444 ERRVALUE OpenDlgReclassify (
03445 INT32 TableNum,
03446 INT32 FieldNum,
03447 INT32 RelFieldDisplay = -1,
03448 INT32 RelFieldSortBy = -1
03449 );
03450 #endif
03451
03452 #ifdef USE_MGUI
03454 void SelectTableElements (
03455 MDLGPARENT dlgparent,
03456 INT32 TableNum,
03457 int mode
03458 );
03459 #endif
03460
03462 void SetActiveElemNum (
03463 ELEMNUM ElemNum
03464 ) { m_ActiveElemNum = ElemNum; }
03465
03467 void SetAllowShowDefaultTable (
03468 bool AllowShowDefaultTable
03469 ) { m_AllowShowDefaultTable = AllowShowDefaultTable; }
03470
03472 void SetBaseTableNum (
03473 INT32 BaseTableNum
03474 ) { m_BaseTableNum = BaseTableNum; }
03475
03476 #ifdef USE_MGUI
03477 void SetDbEditStyleObject (
03478 );
03479 #endif
03480
03481 void SetElemSelectable (
03482 bool ElemSelectable
03483 );
03484
03485 void SetElemType (
03486 ELEMTYPE ElemType
03487 ) { m_ElemType = ElemType; }
03488
03489 #ifdef USE_MGUI
03490 void ShowDefaultTable (
03491 );
03492 #endif
03493
03494 #ifdef USE_MGUI
03496 MGUI::CTRL_TREE::ITEMHND TreeViewAddUpdateItem (
03497 GRE::CTRL_TREEVIEW& TreeView,
03498 MGUI::CTRL_TREE::ITEMHND hndParent,
03499 MGUI::CTRL_TREE::ITEMHND hndInsertAfter,
03500 int ImageIdx
03501 );
03502 #endif
03503
03504 #ifdef USE_MGUI
03506 MGUI::CTRL_TREE::ITEMHND TreeViewAddUpdateItem (
03507 GRE::CTRL_TREEVIEW& TreeView,
03508 MGUI::CTRL_TREE::ITEMHND hndParent,
03509 MGUI::CTRL_TREE::ITEMHND hndInsertAfter,
03510 const MISTRING& label,
03511 int ImageIdx
03512 );
03513 #endif
03514
03515 #ifdef USE_MGUI
03517 void TreeViewAddTables (
03518 GRE::CTRL_TREEVIEW& TreeView,
03519 MGUI::CTRL_TREE::ITEMHND hndParent,
03520 MGUI::CTRL_TREE::ITEMHND hndInsertAfter
03521 );
03522 #endif
03523
03524 #ifdef USE_MGUI
03526 void TreeViewDeleteItem (
03527 GRE::CTRL_TREEVIEW& TreeView
03528 );
03529 #endif
03530
03531 #ifdef USE_MGUI
03532 void TreeViewShowTableList (
03533 bool show
03534 );
03535 #endif
03536
03537 private:
03538 #ifndef GENERATING_DOXYGEN_OUTPUT
03539
03540 enum SELGROUP {
03541 SELGROUP_Select,
03542 SELGROUP_Clear,
03543 SELGROUP_Invert
03544 };
03545
03546 class DBOBSERVER;
03547 friend class COMPINFO::DBOBSERVER;
03548
03549 LAYER *m_layer;
03550 int m_component;
03551 ELEMTYPE m_ElemType;
03552 UNSIGNEDSET m_HighlightSet;
03553 bool m_AllowDatabase;
03554 bool m_AllowQuery;
03555 bool m_AllowShowDefaultTable;
03556 #if defined(USE_MGUI)
03557 DBEDIT *m_pDbEdit;
03558 RVC::DBASE_ELEMENT *m_pObjDbElem;
03559 DBOBSERVER *m_pObsDbElem;
03560 TABLEINFOLIST m_TableInfoList;
03561 MGUI::DLGSHELL *m_pDlgMarkByQuery;
03562 SIMPLE_ARRAY<DLG_RECLASSIFY*> m_DlgReclassifyPtrs;
03563 #endif
03564 ELEMNUM m_ActiveElemNum;
03565 bool m_ElemSelectable;
03566 bool m_ShowSystemTables;
03567 INT32 m_BaseTableNum;
03568
03569 #ifdef X_NATIVE
03570 MXDHANDLE m_SelQueryDlgHandle;
03571 #endif
03572
03573 #ifdef USE_MGUI
03574 static void CB_NotifyDbEdit (const DBEDIT_MSG *cbs, void *vpCompInfo);
03575 TABLEINFO* AddTableInfo (const TABLEINFO& NewTableInfo);
03576 bool HasNonSystemTables ();
03577 ERRVALUE MarkAttachedElements (const DBEDIT_MSG *msg);
03578 void OnCmdAddTable ();
03579 void OnCmdEditRelations ();
03580 void OnCmdLinkToDataSource ();
03581 void OnCmdMakeForm ();
03582 void OnCmdMakeTable ();
03583 void OnNotifyDbEdit (const DBEDIT_MSG *cbs);
03584 void OnTableFormRemoved (TABLEINFO*);
03585 void OnTableNameChanged (INT32 TableNum);
03586 void ShowSelectedRecords (INT32 TableNum, bool force=false);
03587 bool TreeViewOnChildVisibilityChanging (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndCompItem, MGUI::CTRL_TREE::CHILDVISIBILITY visibility);
03588 bool TreeViewOnPointerButton (GRE::CTRL_TREEVIEW&, MGUI::CTRL_TREE::ITEMHND, MGUI::CTRL_TREE::HITRESULT, const LPOINT2D&, MGUI::POINTERBUTTON, MGUI::KEYSTATE);
03589 bool TreeViewOnToolTipRequest (GRE::CTRL_TREEVIEW&, MGUI::CTRL_TREE::ITEMHND, MGUI::CTRL_TREE::HITRESULT, const LPOINT2D&, MGUI::CTRL_TOOLTIP&);
03590 void TreeViewPopupMenu (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndItem, const LPOINT2D& MousePoint);
03591 #endif
03592
03593 COMPINFO (const COMPINFO&);
03594 COMPINFO& operator= (const COMPINFO&);
03595
03596 #endif // GENERATING_DOXYGEN_OUTPUT
03597 };
03598
03599
03601 #define SMLMEMBER_LAYERDISPFLAG(name,invert,flag,desc) {name, STYPE_Num, LAYER::SMLGET_LayerDispFlag, LAYER::SMLSET_LayerDispFlag, 0, 0, invert, flag, 0,0,0,0, desc}
03602
03603
03604
03605
03607 class LAYER::FILTER {
03608 public:
03610 bool Filter (
03611 const LAYER *layer
03612 ) { return (v_Filter(layer)); }
03613 private:
03616 virtual bool v_Filter (
03617 const LAYER *layer
03618 ) = 0;
03619 };
03620
03621
03622
03624 class LAYER::FILTER_EXCLUDE : public LAYER::FILTER {
03625 public:
03626
03628 FILTER_EXCLUDE (
03629 const LAYER *exlayer
03630 ) : m_exlayer(exlayer) { }
03631
03632 private:
03633 #ifndef GENERATING_DOXYGEN_OUTPUT
03634 const LAYER *m_exlayer;
03635 virtual bool v_Filter (const LAYER *layer);
03636 #endif // GENERATING_DOXYGEN_OUTPUT
03637 };
03638
03639
03640 }
03641
03642 #endif // INC_GRE_LAYER_H