2008-07-01 Alex Mathews <possessedpenguinbob@gmail.com>
[WebKit-https.git] / WebCore / svg / FilterBuilder.h
1 /*
2     Copyright (C) 2008 Alex Mathews <possessedpenguinbob@gmail.com>
3     
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Library General Public
6     License as published by the Free Software Foundation; either
7     version 2 of the License, or (at your option) any later version.
8
9     This library is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12     Library General Public License for more details.
13
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18 */
19
20 #ifndef FilterBuilder_h
21 #define FilterBuilder_h
22
23 #include "config.h"
24
25 #if ENABLE(SVG) && ENABLE(SVG_FILTERS)
26 #include "PlatformString.h"
27 #include "FilterEffect.h"
28 #include "Filter.h"
29
30 #include <wtf/HashMap.h>
31 #include <wtf/PassRefPtr.h>
32
33 namespace WebCore {
34     
35     class FilterBuilder : public RefCounted<FilterBuilder> {
36     public:
37         void add(const String& id, PassRefPtr<FilterEffect> effect) { m_namedEffects.set(id.impl(), effect); }
38         FilterEffect* getEffectById(const String& id) const { return m_namedEffects.get(id.impl()).get(); }
39         
40         PassRefPtr<Filter> filter() const { return m_filter; }
41         
42     private:
43         HashMap<StringImpl*, RefPtr<FilterEffect> > m_namedEffects;
44         
45         RefPtr<Filter> m_filter;
46     };
47     
48 } //namespace WebCore
49
50 #endif // ENABLE(SVG) && ENABLE(SVG_FILTERS)
51 #endif