Changeset 49153 in webkit


Ignore:
Timestamp:
Oct 5, 2009 10:58:44 PM (15 years ago)
Author:
krit@webkit.org
Message:

2009-10-05 Dirk Schulze <krit@webkit.org>

Reviewed by Nikolas Zimmermann.

SVG Filters do not support source images besides "sourceGraphic"
https://bugs.webkit.org/show_bug.cgi?id=6022

Add support for SourceAlpha to SVG filters.

Test: svg/filters/sourceAlpha.svg

  • platform/graphics/filters/SourceAlpha.cpp: (WebCore::SourceAlpha::calculateEffectRect): (WebCore::SourceAlpha::apply):
  • platform/graphics/filters/SourceAlpha.h:

Test for SVG's SourceAlpha support for Filters.

  • platform/mac/svg/filters/sourceAlpha-expected.checksum: Added.
  • platform/mac/svg/filters/sourceAlpha-expected.png: Added.
  • platform/mac/svg/filters/sourceAlpha-expected.txt: Added.
  • svg/filters/sourceAlpha.svg: Added.
Location:
trunk
Files:
4 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r49150 r49153  
     12009-10-05  Dirk Schulze  <krit@webkit.org>
     2
     3        Reviewed by Nikolas Zimmermann.
     4
     5        Test for SVG's SourceAlpha support for Filters.
     6
     7        * platform/mac/svg/filters/sourceAlpha-expected.checksum: Added.
     8        * platform/mac/svg/filters/sourceAlpha-expected.png: Added.
     9        * platform/mac/svg/filters/sourceAlpha-expected.txt: Added.
     10        * svg/filters/sourceAlpha.svg: Added.
     11
    1122009-10-05  Simon Fraser  <simon.fraser@apple.com>
    213
  • trunk/WebCore/ChangeLog

    r49148 r49153  
     12009-10-05  Dirk Schulze  <krit@webkit.org>
     2
     3        Reviewed by Nikolas Zimmermann.
     4
     5        SVG Filters do not support source images besides "sourceGraphic"
     6        [https://bugs.webkit.org/show_bug.cgi?id=6022]
     7
     8        Add support for SourceAlpha to SVG filters.
     9
     10        Test: svg/filters/sourceAlpha.svg
     11
     12        * platform/graphics/filters/SourceAlpha.cpp:
     13        (WebCore::SourceAlpha::calculateEffectRect):
     14        (WebCore::SourceAlpha::apply):
     15        * platform/graphics/filters/SourceAlpha.h:
     16
    1172009-10-05  John Abd-El-Malek  <jam@chromium.org>
    218
  • trunk/WebCore/platform/graphics/filters/SourceAlpha.cpp

    r44296 r49153  
    2323#include "SourceAlpha.h"
    2424
     25#include "Color.h"
    2526#include "GraphicsContext.h"
    2627#include "PlatformString.h"
     
    4243}
    4344
    44 void SourceAlpha::apply(Filter*)
     45FloatRect SourceAlpha::calculateEffectRect(Filter* filter)
    4546{
     47    FloatRect clippedSourceRect = filter->sourceImageRect();
     48    if (filter->sourceImageRect().x() < filter->filterRegion().x())
     49        clippedSourceRect.setX(filter->filterRegion().x());
     50    if (filter->sourceImageRect().y() < filter->filterRegion().y())
     51        clippedSourceRect.setY(filter->filterRegion().y());
     52    setSubRegion(clippedSourceRect);
     53    return filter->filterRegion();
     54}
     55
     56void SourceAlpha::apply(Filter* filter)
     57{
     58    GraphicsContext* filterContext = getEffectContext();
     59    if (!filterContext)
     60        return;
     61
     62    FloatRect imageRect(FloatPoint(), filter->sourceImage()->image()->size());
     63    filterContext->save();
     64    filterContext->clipToImageBuffer(imageRect, filter->sourceImage());
     65    filterContext->fillRect(imageRect, Color::black);
     66    filterContext->restore();
    4667}
    4768
  • trunk/WebCore/platform/graphics/filters/SourceAlpha.h

    r44840 r49153  
    3636
    3737        virtual bool isSourceInput() { return true; }
    38         virtual FloatRect calculateEffectRect(Filter* filter) { return filter->sourceImageRect(); }
     38        virtual FloatRect calculateEffectRect(Filter*);
    3939        void apply(Filter*);
    4040        void dump();
Note: See TracChangeset for help on using the changeset viewer.