00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _CIvfBlending_h_
00026 #define _CIvfBlending_h_
00027
00028 #include <ivf/IvfBase.h>
00029 #include <ivfdef/IvfSingletonDestroyer.h>
00030
00031 IvfSmartPointer(CIvfBlending);
00032
00049 class IVF_API CIvfBlending : public CIvfBase {
00050 public:
00051 enum TBlendFactor {
00052 BF_ZERO,
00053 BF_ONE,
00054 BF_DST_COLOR,
00055 BF_SRC_COLOR,
00056 BF_ONE_MINUS_DST_COLOR,
00057 BF_ONE_MINUS_SRC_COLOR,
00058 BF_SRC_ALPHA,
00059 BF_ONE_MINUS_SRC_ALPHA,
00060 BF_DST_ALPHA,
00061 BF_ONE_MINUS_DST_ALPHA,
00062 BF_SRC_ALPHA_SATURATE
00063 };
00064 private:
00065 static CIvfBlending* m_instance;
00066 static CIvfSingletonDestroyer<CIvfBlending> m_destroyer;
00067 public:
00069 static CIvfBlending* getInstance();
00070
00071 IvfClassInfo("CIvfBlending",CIvfBase);
00072
00074 void enable();
00075
00077 void disable();
00078
00080 bool isEnabled();
00081
00083 void setFunction(TBlendFactor src, TBlendFactor dst);
00084
00086 void saveState();
00087
00089 void restoreState();
00090
00091 void defineAlphaBlendFunction();
00092 void defineAddFunction();
00093
00094 protected:
00095
00097 CIvfBlending();
00098 friend class CIvfSingletonDestroyer<CIvfBlending>;
00099 };
00100
00101 #endif