Home | History | Annotate | Download | only in filters
      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 SVGFETurbulence_h
     23 #define SVGFETurbulence_h
     24 
     25 #if ENABLE(SVG) && ENABLE(FILTERS)
     26 #include "FilterEffect.h"
     27 #include "Filter.h"
     28 
     29 namespace WebCore {
     30 
     31     enum TurbulanceType {
     32         FETURBULENCE_TYPE_UNKNOWN      = 0,
     33         FETURBULENCE_TYPE_FRACTALNOISE = 1,
     34         FETURBULENCE_TYPE_TURBULENCE   = 2
     35     };
     36 
     37     class FETurbulence : public FilterEffect {
     38     public:
     39         static PassRefPtr<FETurbulence> create(TurbulanceType, const float&, const float&, const int&, const float&,
     40                 bool);
     41 
     42         TurbulanceType type() const;
     43         void setType(TurbulanceType);
     44 
     45         float baseFrequencyY() const;
     46         void setBaseFrequencyY(float);
     47 
     48         float baseFrequencyX() const;
     49         void setBaseFrequencyX(float);
     50 
     51         float seed() const;
     52         void setSeed(float);
     53 
     54         int numOctaves() const;
     55         void setNumOctaves(bool);
     56 
     57         bool stitchTiles() const;
     58         void setStitchTiles(bool);
     59 
     60         void apply(Filter*);
     61         void dump();
     62         TextStream& externalRepresentation(TextStream& ts) const;
     63 
     64     private:
     65         FETurbulence(TurbulanceType, const float&, const float&, const int&, const float&,
     66                 bool);
     67 
     68         TurbulanceType m_type;
     69         float m_baseFrequencyX;
     70         float m_baseFrequencyY;
     71         int m_numOctaves;
     72         float m_seed;
     73         bool m_stitchTiles;
     74     };
     75 
     76 } // namespace WebCore
     77 
     78 #endif // ENABLE(SVG) && ENABLE(FILTERS)
     79 
     80 #endif // SVGFETurbulence_h
     81