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 #include "config.h"
     23 
     24 #if ENABLE(SVG) && ENABLE(FILTERS)
     25 #include "SVGFETurbulence.h"
     26 #include "SVGRenderTreeAsText.h"
     27 #include "Filter.h"
     28 
     29 namespace WebCore {
     30 
     31 FETurbulence::FETurbulence(TurbulanceType type, const float& baseFrequencyX, const float& baseFrequencyY,
     32     const int& numOctaves, const float& seed, bool stitchTiles)
     33     : FilterEffect()
     34     , m_type(type)
     35     , m_baseFrequencyX(baseFrequencyX)
     36     , m_baseFrequencyY(baseFrequencyY)
     37     , m_numOctaves(numOctaves)
     38     , m_seed(seed)
     39     , m_stitchTiles(stitchTiles)
     40 {
     41 }
     42 
     43 PassRefPtr<FETurbulence> FETurbulence::create(TurbulanceType type, const float& baseFrequencyX, const float& baseFrequencyY,
     44     const int& numOctaves, const float& seed, bool stitchTiles)
     45 {
     46     return adoptRef(new FETurbulence(type, baseFrequencyX, baseFrequencyY, numOctaves, seed, stitchTiles));
     47 }
     48 
     49 TurbulanceType FETurbulence::type() const
     50 {
     51     return m_type;
     52 }
     53 
     54 void FETurbulence::setType(TurbulanceType type)
     55 {
     56     m_type = type;
     57 }
     58 
     59 float FETurbulence::baseFrequencyY() const
     60 {
     61     return m_baseFrequencyY;
     62 }
     63 
     64 void FETurbulence::setBaseFrequencyY(float baseFrequencyY)
     65 {
     66     m_baseFrequencyY = baseFrequencyY;
     67 }
     68 
     69 float FETurbulence::baseFrequencyX() const
     70 {
     71     return m_baseFrequencyX;
     72 }
     73 
     74 void FETurbulence::setBaseFrequencyX(float baseFrequencyX)
     75 {
     76        m_baseFrequencyX = baseFrequencyX;
     77 }
     78 
     79 float FETurbulence::seed() const
     80 {
     81     return m_seed;
     82 }
     83 
     84 void FETurbulence::setSeed(float seed)
     85 {
     86     m_seed = seed;
     87 }
     88 
     89 int FETurbulence::numOctaves() const
     90 {
     91     return m_numOctaves;
     92 }
     93 
     94 void FETurbulence::setNumOctaves(bool numOctaves)
     95 {
     96     m_numOctaves = numOctaves;
     97 }
     98 
     99 bool FETurbulence::stitchTiles() const
    100 {
    101     return m_stitchTiles;
    102 }
    103 
    104 void FETurbulence::setStitchTiles(bool stitch)
    105 {
    106     m_stitchTiles = stitch;
    107 }
    108 
    109 void FETurbulence::apply(Filter*)
    110 {
    111 }
    112 
    113 void FETurbulence::dump()
    114 {
    115 }
    116 
    117 static TextStream& operator<<(TextStream& ts, TurbulanceType t)
    118 {
    119     switch (t)
    120     {
    121         case FETURBULENCE_TYPE_UNKNOWN:
    122             ts << "UNKNOWN"; break;
    123         case FETURBULENCE_TYPE_TURBULENCE:
    124             ts << "TURBULANCE"; break;
    125         case FETURBULENCE_TYPE_FRACTALNOISE:
    126             ts << "NOISE"; break;
    127     }
    128     return ts;
    129 }
    130 
    131 TextStream& FETurbulence::externalRepresentation(TextStream& ts) const
    132 {
    133     ts << "[type=TURBULENCE] ";
    134     FilterEffect::externalRepresentation(ts);
    135     ts << " [turbulence type=" << type() << "]"
    136         << " [base frequency x=" << baseFrequencyX() << " y=" << baseFrequencyY() << "]"
    137         << " [seed=" << seed() << "]"
    138         << " [num octaves=" << numOctaves() << "]"
    139         << " [stitch tiles=" << stitchTiles() << "]";
    140 
    141     return ts;
    142 }
    143 
    144 } // namespace WebCore
    145 
    146 #endif // ENABLE(SVG) && ENABLE(FILTERS)
    147