1 /* 2 Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann (at) kde.org> 3 2004, 2005 Rob Buis <buis (at) kde.org> 4 2005 Eric Seidel <eric (at) webkit.org> 5 6 This library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Library General Public 8 License as published by the Free Software Foundation; either 9 version 2 of the License, or (at your option) any later version. 10 11 This library is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 Library General Public License for more details. 15 16 You should have received a copy of the GNU Library General Public License 17 aint with this library; see the file COPYING.LIB. If not, write to 18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 Boston, MA 02110-1301, USA. 20 */ 21 22 #ifndef SVGFEComposite_h 23 #define SVGFEComposite_h 24 25 #if ENABLE(FILTERS) 26 #include "FilterEffect.h" 27 28 #include "PlatformString.h" 29 #include "Filter.h" 30 31 namespace WebCore { 32 33 enum CompositeOperationType { 34 FECOMPOSITE_OPERATOR_UNKNOWN = 0, 35 FECOMPOSITE_OPERATOR_OVER = 1, 36 FECOMPOSITE_OPERATOR_IN = 2, 37 FECOMPOSITE_OPERATOR_OUT = 3, 38 FECOMPOSITE_OPERATOR_ATOP = 4, 39 FECOMPOSITE_OPERATOR_XOR = 5, 40 FECOMPOSITE_OPERATOR_ARITHMETIC = 6 41 }; 42 43 class FEComposite : public FilterEffect { 44 public: 45 static PassRefPtr<FEComposite> create(FilterEffect*, FilterEffect*, const CompositeOperationType&, 46 const float&, const float&, const float&, const float&); 47 48 CompositeOperationType operation() const; 49 void setOperation(CompositeOperationType); 50 51 float k1() const; 52 void setK1(float); 53 54 float k2() const; 55 void setK2(float); 56 57 float k3() const; 58 void setK3(float); 59 60 float k4() const; 61 void setK4(float); 62 63 virtual FloatRect uniteChildEffectSubregions(Filter* filter) { return calculateUnionOfChildEffectSubregions(filter, m_in.get(), m_in2.get()); } 64 void apply(Filter*); 65 void dump(); 66 67 private: 68 FEComposite(FilterEffect*, FilterEffect*, const CompositeOperationType&, 69 const float&, const float&, const float&, const float&); 70 71 RefPtr<FilterEffect> m_in; 72 RefPtr<FilterEffect> m_in2; 73 CompositeOperationType m_type; 74 float m_k1; 75 float m_k2; 76 float m_k3; 77 float m_k4; 78 }; 79 80 } // namespace WebCore 81 82 #endif // ENABLE(FILTERS) 83 84 #endif // SVGFEComposite_h 85