Home | History | Annotate | Download | only in filters
      1 /*
      2  *  Copyright (C) 2009 Dirk Schulze <krit (at) webkit.org>
      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  *  aint 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 #include "config.h"
     21 
     22 #if ENABLE(FILTERS)
     23 #include "SourceGraphic.h"
     24 
     25 #include "GraphicsContext.h"
     26 #include "PlatformString.h"
     27 #include "Filter.h"
     28 
     29 #include <wtf/StdLibExtras.h>
     30 
     31 namespace WebCore {
     32 
     33 PassRefPtr<SourceGraphic> SourceGraphic::create()
     34 {
     35     return adoptRef(new SourceGraphic);
     36 }
     37 
     38 const AtomicString& SourceGraphic::effectName()
     39 {
     40     DEFINE_STATIC_LOCAL(const AtomicString, s_effectName, ("SourceGraphic"));
     41     return s_effectName;
     42 }
     43 
     44 FloatRect SourceGraphic::calculateEffectRect(Filter* filter)
     45 {
     46     FloatRect clippedSourceRect = filter->sourceImageRect();
     47     if (filter->sourceImageRect().x() < filter->filterRegion().x())
     48         clippedSourceRect.setX(filter->filterRegion().x());
     49     if (filter->sourceImageRect().y() < filter->filterRegion().y())
     50         clippedSourceRect.setY(filter->filterRegion().y());
     51     setSubRegion(clippedSourceRect);
     52     clippedSourceRect.scale(filter->filterResolution().width(), filter->filterResolution().height());
     53     setScaledSubRegion(clippedSourceRect);
     54     return filter->filterRegion();
     55 }
     56 
     57 void SourceGraphic::apply(Filter* filter)
     58 {
     59     GraphicsContext* filterContext = getEffectContext();
     60     if (!filterContext)
     61         return;
     62 
     63     filterContext->drawImage(filter->sourceImage()->image(), DeviceColorSpace, IntPoint());
     64 }
     65 
     66 void SourceGraphic::dump()
     67 {
     68 }
     69 
     70 } // namespace WebCore
     71 
     72 #endif // ENABLE(FILTERS)
     73