Changeset 85996 in webkit
- Timestamp:
- May 6, 2011, 8:45:09 PM (14 years ago)
- Location:
- branches/chromium/742
- Files:
-
- 11 edited
- 2 copied
-
LayoutTests/svg/filters/filter-after-transform-crash-expected.txt (copied) (copied from trunk/LayoutTests/svg/filters/filter-after-transform-crash-expected.txt )
-
LayoutTests/svg/filters/filter-after-transform-crash.svg (copied) (copied from trunk/LayoutTests/svg/filters/filter-after-transform-crash.svg )
-
Source/WebCore/platform/graphics/filters/FEComposite.cpp (modified) (1 diff)
-
Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h (modified) (1 diff)
-
Source/WebCore/platform/graphics/filters/FEDisplacementMap.h (modified) (1 diff)
-
Source/WebCore/platform/graphics/filters/FEFlood.h (modified) (1 diff)
-
Source/WebCore/platform/graphics/filters/FELighting.h (modified) (1 diff)
-
Source/WebCore/platform/graphics/filters/FETile.h (modified) (1 diff)
-
Source/WebCore/platform/graphics/filters/FETurbulence.h (modified) (1 diff)
-
Source/WebCore/platform/graphics/filters/FilterEffect.cpp (modified) (8 diffs)
-
Source/WebCore/platform/graphics/filters/FilterEffect.h (modified) (3 diffs)
-
Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (modified) (2 diffs)
-
Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/chromium/742/Source/WebCore/platform/graphics/filters/FEComposite.cpp
r79856 r85996 188 188 // Arithmetic may influnce the compele filter primitive region. So we can't 189 189 // optimize the paint region here. 190 setAbsolutePaintRect( maxEffectRect());190 setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); 191 191 return; 192 192 default: -
branches/chromium/742/Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h
r79866 r85996 76 76 virtual void dump(); 77 77 78 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect( maxEffectRect()); }78 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); } 79 79 80 80 virtual TextStream& externalRepresentation(TextStream&, int indention) const; -
branches/chromium/742/Source/WebCore/platform/graphics/filters/FEDisplacementMap.h
r80022 r85996 54 54 virtual void dump(); 55 55 56 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect( maxEffectRect()); }56 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); } 57 57 58 58 virtual TextStream& externalRepresentation(TextStream&, int indention) const; -
branches/chromium/742/Source/WebCore/platform/graphics/filters/FEFlood.h
r83821 r85996 43 43 virtual void dump(); 44 44 45 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect( maxEffectRect()); }45 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); } 46 46 47 47 virtual TextStream& externalRepresentation(TextStream&, int indention) const; -
branches/chromium/742/Source/WebCore/platform/graphics/filters/FELighting.h
r83835 r85996 44 44 virtual void apply(); 45 45 46 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect( maxEffectRect()); }46 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); } 47 47 48 48 protected: -
branches/chromium/742/Source/WebCore/platform/graphics/filters/FETile.h
r72474 r85996 36 36 virtual void dump(); 37 37 38 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect( maxEffectRect()); }38 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); } 39 39 40 40 virtual FilterEffectType filterEffectType() const { return FilterEffectTypeTile; } -
branches/chromium/742/Source/WebCore/platform/graphics/filters/FETurbulence.h
r79851 r85996 62 62 virtual void dump(); 63 63 64 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect( maxEffectRect()); }64 virtual void determineAbsolutePaintRect() { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); } 65 65 66 66 virtual TextStream& externalRepresentation(TextStream&, int indention) const; -
branches/chromium/742/Source/WebCore/platform/graphics/filters/FilterEffect.cpp
r85547 r85996 47 47 } 48 48 49 inline 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 49 57 void FilterEffect::determineAbsolutePaintRect() 50 58 { … … 55 63 56 64 // SVG specification wants us to clip to primitive subregion. 57 m_absolutePaintRect.intersect( m_maxEffectRect);65 m_absolutePaintRect.intersect(enclosingIntRect(m_maxEffectRect)); 58 66 } 59 67 … … 105 113 PassRefPtr<ByteArray> FilterEffect::asUnmultipliedImage(const IntRect& rect) 106 114 { 115 ASSERT(isFilterSizeValid(rect)); 107 116 RefPtr<ByteArray> imageData = ByteArray::create(rect.width() * rect.height() * 4); 108 117 copyUnmultipliedImage(imageData.get(), rect); … … 112 121 PassRefPtr<ByteArray> FilterEffect::asPremultipliedImage(const IntRect& rect) 113 122 { 123 ASSERT(isFilterSizeValid(rect)); 114 124 RefPtr<ByteArray> imageData = ByteArray::create(rect.width() * rect.height() * 4); 115 125 copyPremultipliedImage(imageData.get(), rect); … … 170 180 m_unmultipliedImageResult = m_imageBufferResult->getUnmultipliedImageData(IntRect(IntPoint(), m_absolutePaintRect.size())); 171 181 else { 182 ASSERT(isFilterSizeValid(m_absolutePaintRect)); 172 183 m_unmultipliedImageResult = ByteArray::create(m_absolutePaintRect.width() * m_absolutePaintRect.height() * 4); 173 184 unsigned char* sourceComponent = m_premultipliedImageResult->data(); … … 203 214 m_premultipliedImageResult = m_imageBufferResult->getPremultipliedImageData(IntRect(IntPoint(), m_absolutePaintRect.size())); 204 215 else { 216 ASSERT(isFilterSizeValid(m_absolutePaintRect)); 205 217 m_premultipliedImageResult = ByteArray::create(m_absolutePaintRect.width() * m_absolutePaintRect.height() * 4); 206 218 unsigned char* sourceComponent = m_unmultipliedImageResult->data(); … … 239 251 // Only one result type is allowed. 240 252 ASSERT(!hasResult()); 253 ASSERT(isFilterSizeValid(m_absolutePaintRect)); 254 241 255 determineAbsolutePaintRect(); 242 256 if (m_absolutePaintRect.isEmpty()) … … 250 264 // Only one result type is allowed. 251 265 ASSERT(!hasResult()); 266 ASSERT(isFilterSizeValid(m_absolutePaintRect)); 267 252 268 determineAbsolutePaintRect(); 253 269 if (m_absolutePaintRect.isEmpty()) -
branches/chromium/742/Source/WebCore/platform/graphics/filters/FilterEffect.h
r76590 r85996 32 32 #include <wtf/RefPtr.h> 33 33 #include <wtf/Vector.h> 34 35 static const float kMaxFilterSize = 5000.0f; 34 36 35 37 namespace WebCore { … … 75 77 void setAbsolutePaintRect(const IntRect& absolutePaintRect) { m_absolutePaintRect = absolutePaintRect; } 76 78 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; } 79 81 80 82 virtual void apply() = 0; … … 129 131 // The maximum size of a filter primitive. In SVG this is the primitive subregion in absolute coordinate space. 130 132 // The absolute paint rect should never be bigger than m_maxEffectRect. 131 IntRect m_maxEffectRect;133 FloatRect m_maxEffectRect; 132 134 Filter* m_filter; 133 135 -
branches/chromium/742/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
r85544 r85996 28 28 29 29 #include "AffineTransform.h" 30 #include "FilterEffect.h" 30 31 #include "FloatPoint.h" 31 32 #include "FloatRect.h" … … 49 50 #include <wtf/Vector.h> 50 51 51 static const float kMaxFilterSize = 5000.0f;52 53 52 using namespace std; 54 53 -
branches/chromium/742/Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp
r83821 r85996 129 129 absoluteSubregion.intersect(absoluteScaledFilterRegion); 130 130 131 effect->setMaxEffectRect( enclosingIntRect(absoluteSubregion));131 effect->setMaxEffectRect(absoluteSubregion); 132 132 return subregion; 133 133 }
Note:
See TracChangeset
for help on using the changeset viewer.