IMtlBrowserFilter.h

Go to the documentation of this file.
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