00001 /********************************************************************** 00002 00003 FILE: IMtlBrowserFilter.h 00004 00005 DESCRIPTION: Public interface for filtering the contents of the 00006 material/map browser. 00007 00008 CREATED BY: Daniel Levesque, Discreet 00009 00010 HISTORY: Created 23 February 2003 00011 00012 *> Copyright (c) 2003, All Rights Reserved. 00013 **********************************************************************/ 00014 00015 #pragma once 00016 00017 #include "ifnpub.h" 00018 #include "baseinterface.h" 00019 #include "GetCOREInterface.h" 00020 // forward declarations 00021 class IMtlBrowserFilter; 00022 class MtlBase; 00023 class ClassDesc; 00024 00025 #define IMTLBROWSERFILTER_MANAGER_INTERFACEID Interface_ID(0x371b4b10, 0x6c715bbc) 00026 #define IMTLBROWSERFILTER_INTERFACEID Interface_ID(0x1d1f513b, 0x6f315a24) 00027 #define ISUBMTLMAP_BROWSERFILTER_INTERFACEID Interface_ID(0x17304fc3, 0x1ad25941) 00028 00029 //============================================================================== 00030 // class IMtlBrowserFilter_Manager 00035 //============================================================================== 00036 class IMtlBrowserFilter_Manager : public FPStaticInterface { 00037 00038 public: 00039 00043 virtual bool AddFilter(IMtlBrowserFilter& filter) = 0; 00044 00048 virtual bool RemoveFilter(IMtlBrowserFilter& filter) = 0; 00049 00052 virtual int GetNumberFilters() = 0; 00053 00057 virtual IMtlBrowserFilter* GetFilter(unsigned int i) = 0; 00058 00060 virtual bool FilterEnabled(unsigned int i) = 0; 00061 00063 virtual void EnableFilter(unsigned int i, bool enable) = 0; 00064 00066 virtual const MCHAR* GetFilterName(unsigned int i) = 0; 00067 00069 00073 virtual bool Include(MtlBase& mtlBase, DWORD flags) = 0; 00074 00075 00077 00081 virtual bool Include(ClassDesc& classDesc, DWORD flags) = 0; 00082 }; 00083 00084 inline IMtlBrowserFilter_Manager* Get_IMtlBrowserFilter_Manager() { 00085 00086 return static_cast<IMtlBrowserFilter_Manager*>(GetCOREInterface(IMTLBROWSERFILTER_MANAGER_INTERFACEID)); 00087 }; 00088 00089 //============================================================================== 00090 // class IMtlBrowserFilter 00109 //============================================================================== 00110 class IMtlBrowserFilter : public BaseInterface { 00111 00112 public: 00113 00115 virtual const MCHAR* FilterName() = 0; 00116 00119 virtual bool Enabled() = 0; 00120 00123 virtual void Enable(bool enable) = 0; 00124 00126 virtual void Registered() = 0; 00127 00129 virtual void Unregistered() = 0; 00130 00136 virtual bool Include(MtlBase& mtlBase, DWORD flags) = 0; 00137 00143 virtual bool Include(ClassDesc& classDesc, DWORD flags) = 0; 00144 00145 // -- from BaseInterface 00146 virtual Interface_ID GetID(); 00147 }; 00148 00149 //============================================================================== 00150 // class ISubMtlMap_BrowserFilter 00151 00158 //============================================================================== 00159 class ISubMtlMap_BrowserFilter : public BaseInterface { 00160 00161 public: 00162 00167 virtual IMtlBrowserFilter* GetSubMapFilter(unsigned int i) = 0; 00168 00170 00175 virtual IMtlBrowserFilter* GetSubMtlFilter(unsigned int i) = 0; 00176 00177 // -- from BaseInterface 00178 virtual Interface_ID GetID(); 00179 00180 }; 00181 00182 inline ISubMtlMap_BrowserFilter* Get_ISubMtlMap_BrowserFilter(InterfaceServer* iserver) { 00183 00184 return static_cast<ISubMtlMap_BrowserFilter*>(iserver->GetInterface(ISUBMTLMAP_BROWSERFILTER_INTERFACEID)); 00185 } 00186 00187 //============================================================================== 00188 // class IMtlBrowserFilter inlined methods 00189 //============================================================================== 00190 00191 inline Interface_ID IMtlBrowserFilter::GetID() { 00192 00193 return IMTLBROWSERFILTER_INTERFACEID; 00194 } 00195 00196 //============================================================================== 00197 // class ISubMapBrowserFilter inlined methods 00198 //============================================================================== 00199 00200 inline Interface_ID ISubMtlMap_BrowserFilter::GetID() { 00201 00202 return ISUBMTLMAP_BROWSERFILTER_INTERFACEID; 00203 } 00204