Changeset 85996 in webkit


Ignore:
Timestamp:
May 6, 2011, 8:45:09 PM (14 years ago)
Author:
cevans@google.com
Message:

Merge 85926
BUG=80608
Review URL: http://codereview.chromium.org/6949013

Location:
branches/chromium/742
Files:
11 edited
2 copied

Legend:

Unmodified
Added
Removed
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FEComposite.cpp

    r79856 r85996  
    188188        // Arithmetic may influnce the compele filter primitive region. So we can't
    189189        // optimize the paint region here.
    190         setAbsolutePaintRect(maxEffectRect());
     190        setAbsolutePaintRect(enclosingIntRect(maxEffectRect()));
    191191        return;
    192192    default:
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h

    r79866 r85996  
    7676    virtual void dump();
    7777
    78     virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(maxEffectRect()); }
     78    virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
    7979
    8080    virtual TextStream& externalRepresentation(TextStream&, int indention) const;
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FEDisplacementMap.h

    r80022 r85996  
    5454    virtual void dump();
    5555
    56     virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(maxEffectRect()); }
     56    virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
    5757
    5858    virtual TextStream& externalRepresentation(TextStream&, int indention) const;
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FEFlood.h

    r83821 r85996  
    4343    virtual void dump();
    4444
    45     virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(maxEffectRect()); }
     45    virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
    4646
    4747    virtual TextStream& externalRepresentation(TextStream&, int indention) const;
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FELighting.h

    r83835 r85996  
    4444    virtual void apply();
    4545
    46     virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(maxEffectRect()); }
     46    virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
    4747
    4848protected:
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FETile.h

    r72474 r85996  
    3636    virtual void dump();
    3737
    38     virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(maxEffectRect()); }
     38    virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
    3939
    4040    virtual FilterEffectType filterEffectType() const { return FilterEffectTypeTile; }
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FETurbulence.h

    r79851 r85996  
    6262    virtual void dump();
    6363   
    64     virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(maxEffectRect()); }
     64    virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
    6565
    6666    virtual TextStream& externalRepresentation(TextStream&, int indention) const;
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FilterEffect.cpp

    r85547 r85996  
    4747}
    4848
     49inline bool isFilterSizeValid(IntRect rect)
     50{
     51    if (rect.width() < 0 || rect.width() > kMaxFilterSize
     52        || rect.height() < 0 || rect.height() > kMaxFilterSize)
     53        return false;
     54    return true;
     55}
     56
    4957void FilterEffect::determineAbsolutePaintRect()
    5058{
     
    5563   
    5664    // SVG specification wants us to clip to primitive subregion.
    57     m_absolutePaintRect.intersect(m_maxEffectRect);
     65    m_absolutePaintRect.intersect(enclosingIntRect(m_maxEffectRect));
    5866}
    5967
     
    105113PassRefPtr<ByteArray> FilterEffect::asUnmultipliedImage(const IntRect& rect)
    106114{
     115    ASSERT(isFilterSizeValid(rect));
    107116    RefPtr<ByteArray> imageData = ByteArray::create(rect.width() * rect.height() * 4);
    108117    copyUnmultipliedImage(imageData.get(), rect);
     
    112121PassRefPtr<ByteArray> FilterEffect::asPremultipliedImage(const IntRect& rect)
    113122{
     123    ASSERT(isFilterSizeValid(rect));
    114124    RefPtr<ByteArray> imageData = ByteArray::create(rect.width() * rect.height() * 4);
    115125    copyPremultipliedImage(imageData.get(), rect);
     
    170180            m_unmultipliedImageResult = m_imageBufferResult->getUnmultipliedImageData(IntRect(IntPoint(), m_absolutePaintRect.size()));
    171181        else {
     182            ASSERT(isFilterSizeValid(m_absolutePaintRect));
    172183            m_unmultipliedImageResult = ByteArray::create(m_absolutePaintRect.width() * m_absolutePaintRect.height() * 4);
    173184            unsigned char* sourceComponent = m_premultipliedImageResult->data();
     
    203214            m_premultipliedImageResult = m_imageBufferResult->getPremultipliedImageData(IntRect(IntPoint(), m_absolutePaintRect.size()));
    204215        else {
     216            ASSERT(isFilterSizeValid(m_absolutePaintRect));
    205217            m_premultipliedImageResult = ByteArray::create(m_absolutePaintRect.width() * m_absolutePaintRect.height() * 4);
    206218            unsigned char* sourceComponent = m_unmultipliedImageResult->data();
     
    239251    // Only one result type is allowed.
    240252    ASSERT(!hasResult());
     253    ASSERT(isFilterSizeValid(m_absolutePaintRect));
     254
    241255    determineAbsolutePaintRect();
    242256    if (m_absolutePaintRect.isEmpty())
     
    250264    // Only one result type is allowed.
    251265    ASSERT(!hasResult());
     266    ASSERT(isFilterSizeValid(m_absolutePaintRect));
     267
    252268    determineAbsolutePaintRect();
    253269    if (m_absolutePaintRect.isEmpty())
  • branches/chromium/742/Source/WebCore/platform/graphics/filters/FilterEffect.h

    r76590 r85996  
    3232#include <wtf/RefPtr.h>
    3333#include <wtf/Vector.h>
     34
     35static const float kMaxFilterSize = 5000.0f;
    3436
    3537namespace WebCore {
     
    7577    void setAbsolutePaintRect(const IntRect& absolutePaintRect) { m_absolutePaintRect = absolutePaintRect; }
    7678
    77     IntRect maxEffectRect() const { return m_maxEffectRect; }
    78     void setMaxEffectRect(const IntRect& maxEffectRect) { m_maxEffectRect = maxEffectRect; }
     79    FloatRect maxEffectRect() const { return m_maxEffectRect; }
     80    void setMaxEffectRect(const FloatRect& maxEffectRect) { m_maxEffectRect = maxEffectRect; }
    7981
    8082    virtual void apply() = 0;
     
    129131    // The maximum size of a filter primitive. In SVG this is the primitive subregion in absolute coordinate space.
    130132    // The absolute paint rect should never be bigger than m_maxEffectRect.
    131     IntRect m_maxEffectRect;
     133    FloatRect m_maxEffectRect;
    132134    Filter* m_filter;
    133135
  • branches/chromium/742/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp

    r85544 r85996  
    2828
    2929#include "AffineTransform.h"
     30#include "FilterEffect.h"
    3031#include "FloatPoint.h"
    3132#include "FloatRect.h"
     
    4950#include <wtf/Vector.h>
    5051
    51 static const float kMaxFilterSize = 5000.0f;
    52 
    5352using namespace std;
    5453
  • branches/chromium/742/Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp

    r83821 r85996  
    129129    absoluteSubregion.intersect(absoluteScaledFilterRegion);
    130130
    131     effect->setMaxEffectRect(enclosingIntRect(absoluteSubregion));
     131    effect->setMaxEffectRect(absoluteSubregion);
    132132    return subregion;
    133133}
Note: See TracChangeset for help on using the changeset viewer.