Changeset 141637 in webkit
- Timestamp:
- Feb 1, 2013 1:31:00 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 45 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r141636 r141637 1 2013-02-01 Philip Rogers <pdr@google.com> 2 3 Change hasAlpha to isKnownToBeOpaque and correct the return value for SVG images. 4 https://bugs.webkit.org/show_bug.cgi?id=106966 5 6 Reviewed by Stephen White. 7 8 An SVG image has been added to this test to check for regressions. 9 10 * fast/box-shadow/image-box-shadow-expected.html: 11 * fast/box-shadow/image-box-shadow.html: 12 13 Add an SVG image and correct a small mistake in the test that used values of 256 14 instead of 255. 15 16 * fast/box-shadow/resources/green.svg: Added. 17 1 18 2013-02-01 Philippe Normand <pnormand@igalia.com> 2 19 -
trunk/LayoutTests/fast/box-shadow/image-box-shadow-expected.html
r121314 r141637 8 8 div { 9 9 display: inline-block; 10 background: rgb(0,25 6,0);10 background: rgb(0,255,0); 11 11 height: 50px; 12 12 } … … 15 15 <div><img src="resources/green.png"></div> 16 16 <div><img src="resources/green.jpg"></div> 17 <div><img src="resources/green.svg"></div> -
trunk/LayoutTests/fast/box-shadow/image-box-shadow.html
r121314 r141637 2 2 <style> 3 3 img { 4 background: rgb(0,25 6,0);4 background: rgb(0,255,0); 5 5 width: 50px; 6 6 height: 25px; 7 7 margin-bottom: 25px; 8 box-shadow: 0px 25px rgb(0,25 6,0);8 box-shadow: 0px 25px rgb(0,255,0); 9 9 } 10 10 div { … … 17 17 <div><img src="resources/green.png"></div> 18 18 <div><img src="resources/green.jpg"></div> 19 <div><img src="resources/green.svg"></div> -
trunk/Source/WebCore/ChangeLog
r141635 r141637 1 2013-02-01 Philip Rogers <pdr@google.com> 2 3 Change hasAlpha to isKnownToBeOpaque and correct the return value for SVG images. 4 https://bugs.webkit.org/show_bug.cgi?id=106966 5 6 Reviewed by Stephen White. 7 8 Previously, Image::currentFrameHasAlpha's default implementation returned false so SVG 9 images always returned false for currentFrameHasAlpha. Additionally, currentFrameHasAlpha 10 was treated as returning whether the frame had alpha when it would actually conservatively 11 return true. 12 13 This patch renames hasAlpha and currentFrameHasAlpha to isKnownToBeOpaque and 14 currentFrameIsKnownToBeOpaque, respectively. This rename better describes the actual 15 functionality. This patch also makes Image::isKnownToBeOpaque a pure virtual function and 16 correctly implements it for SVG images. 17 18 All users of isKnownToBeOpaque access SVG images using CachedImage::imageForRenderer which 19 currently returns a cached bitmap image. Therefore, this patch will not affect existing 20 functionality. A regression test has been added that will catch if this changes in the 21 future (e.g., WK106159 which proposes not returning cached bitmaps). The now unnecessary 22 isBitmapImage() calls have been removed in this patch. 23 24 image-box-shadow.html has been modified to test SVG images. 25 26 * css/CSSCrossfadeValue.cpp: 27 (WebCore::subimageKnownToBeOpaque): 28 (WebCore::CSSCrossfadeValue::knownToBeOpaque): 29 30 Mostly straightforward rename but note the logic has been slightly altered: AND -> OR. 31 32 * css/CSSCrossfadeValue.h: 33 (CSSCrossfadeValue): 34 * css/CSSGradientValue.cpp: 35 (WebCore::CSSGradientValue::knownToBeOpaque): 36 * css/CSSGradientValue.h: 37 (CSSGradientValue): 38 * css/CSSImageGeneratorValue.cpp: 39 (WebCore::CSSImageGeneratorValue::knownToBeOpaque): 40 * css/CSSImageGeneratorValue.h: 41 (CSSImageGeneratorValue): 42 * css/CSSImageValue.cpp: 43 (WebCore::CSSImageValue::knownToBeOpaque): 44 * css/CSSImageValue.h: 45 (CSSImageValue): 46 * loader/cache/CachedImage.cpp: 47 (WebCore::CachedImage::currentFrameKnownToBeOpaque): 48 * loader/cache/CachedImage.h: 49 (CachedImage): 50 * platform/graphics/BitmapImage.cpp: 51 (WebCore::BitmapImage::currentFrameKnownToBeOpaque): 52 * platform/graphics/BitmapImage.h: 53 (BitmapImage): 54 * platform/graphics/GeneratedImage.h: 55 (GeneratedImage): 56 * platform/graphics/Image.h: 57 58 Note: now a pure virtual function! 59 60 (Image): 61 * platform/graphics/blackberry/LayerTiler.cpp: 62 (WebCore::LayerTiler::updateTextureContentsIfNeeded): 63 64 Removed unnecessary isBitmapImage() checks. 65 66 * platform/graphics/cg/GraphicsContext3DCG.cpp: 67 (WebCore::GraphicsContext3D::ImageExtractor::extractImage): 68 69 Removed unnecessary isBitmapImage() checks. 70 71 * platform/graphics/cg/PDFDocumentImage.h: 72 (PDFDocumentImage): 73 * platform/graphics/chromium/GraphicsLayerChromium.cpp: 74 75 Removed unnecessary isBitmapImage() checks. 76 77 (WebCore::GraphicsLayerChromium::setContentsToImage): 78 * platform/graphics/qt/StillImageQt.cpp: 79 (WebCore::StillImage::currentFrameKnownToBeOpaque): 80 * platform/graphics/qt/StillImageQt.h: 81 (StillImage): 82 * platform/graphics/skia/BitmapImageSingleFrameSkia.cpp: 83 (WebCore::BitmapImageSingleFrameSkia::currentFrameKnownToBeOpaque): 84 * platform/graphics/skia/BitmapImageSingleFrameSkia.h: 85 (BitmapImageSingleFrameSkia): 86 * platform/graphics/texmap/TextureMapperBackingStore.cpp: 87 (WebCore::TextureMapperTile::updateContents): 88 (WebCore::TextureMapperTiledBackingStore::updateContents): 89 * platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp: 90 (WebCore::CoordinatedImageBacking::update): 91 * rendering/RenderImage.cpp: 92 (WebCore::RenderImage::backgroundIsObscured): 93 94 Removed unnecessary isBitmapImage() checks and slightly reworked the logic. 95 96 * rendering/style/FillLayer.cpp: 97 (WebCore::FillLayer::hasOpaqueImage): 98 * rendering/style/StyleCachedImage.cpp: 99 (WebCore::StyleCachedImage::knownToBeOpaque): 100 * rendering/style/StyleCachedImage.h: 101 (StyleCachedImage): 102 * rendering/style/StyleCachedImageSet.cpp: 103 (WebCore::StyleCachedImageSet::knownToBeOpaque): 104 * rendering/style/StyleCachedImageSet.h: 105 (StyleCachedImageSet): 106 * rendering/style/StyleGeneratedImage.cpp: 107 (WebCore::StyleGeneratedImage::knownToBeOpaque): 108 * rendering/style/StyleGeneratedImage.h: 109 (StyleGeneratedImage): 110 * rendering/style/StyleImage.h: 111 (StyleImage): 112 * rendering/style/StylePendingImage.h: 113 (WebCore::StylePendingImage::knownToBeOpaque): 114 * svg/graphics/SVGImage.h: 115 (SVGImage): 116 1 117 2013-02-01 Brady Eidson <beidson@apple.com> 2 118 -
trunk/Source/WebCore/css/CSSCrossfadeValue.cpp
r141570 r141637 53 53 } 54 54 55 static bool subimage HasAlpha(CSSValue* value, const RenderObject* renderer)55 static bool subimageKnownToBeOpaque(CSSValue* value, const RenderObject* renderer) 56 56 { 57 57 if (value->isImageValue()) 58 return static_cast<CSSImageValue*>(value)-> hasAlpha(renderer);58 return static_cast<CSSImageValue*>(value)->knownToBeOpaque(renderer); 59 59 60 60 if (value->isImageGeneratorValue()) 61 return static_cast<CSSImageGeneratorValue*>(value)-> hasAlpha(renderer);61 return static_cast<CSSImageGeneratorValue*>(value)->knownToBeOpaque(renderer); 62 62 63 63 ASSERT_NOT_REACHED(); 64 64 65 return true;65 return false; 66 66 } 67 67 … … 140 140 } 141 141 142 bool CSSCrossfadeValue:: hasAlpha(const RenderObject* renderer) const143 { 144 return subimage HasAlpha(m_fromValue.get(), renderer) || subimageHasAlpha(m_toValue.get(), renderer);142 bool CSSCrossfadeValue::knownToBeOpaque(const RenderObject* renderer) const 143 { 144 return subimageKnownToBeOpaque(m_fromValue.get(), renderer) && subimageKnownToBeOpaque(m_toValue.get(), renderer); 145 145 } 146 146 -
trunk/Source/WebCore/css/CSSCrossfadeValue.h
r135629 r141637 59 59 60 60 bool isPending() const; 61 bool hasAlpha(const RenderObject*) const;61 bool knownToBeOpaque(const RenderObject*) const; 62 62 63 63 void loadSubimages(CachedResourceLoader*); -
trunk/Source/WebCore/css/CSSGradientValue.cpp
r141570 r141637 463 463 } 464 464 465 bool CSSGradientValue:: hasAlpha(const RenderObject*) const465 bool CSSGradientValue::knownToBeOpaque(const RenderObject*) const 466 466 { 467 467 for (size_t i = 0; i < m_stops.size(); ++i) { 468 468 if (m_stops[i].m_resolvedColor.hasAlpha()) 469 return true;470 } 471 return false;469 return false; 470 } 471 return true; 472 472 } 473 473 -
trunk/Source/WebCore/css/CSSGradientValue.h
r139836 r141637 82 82 83 83 bool isPending() const { return false; } 84 bool hasAlpha(const RenderObject*) const;84 bool knownToBeOpaque(const RenderObject*) const; 85 85 86 86 void loadSubimages(CachedResourceLoader*) { } -
trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp
r141570 r141637 197 197 } 198 198 199 bool CSSImageGeneratorValue:: hasAlpha(const RenderObject* renderer) const200 { 201 switch (classType()) { 202 case CrossfadeClass: 203 return static_cast<const CSSCrossfadeValue*>(this)-> hasAlpha(renderer);204 case CanvasClass: 205 return true;206 case LinearGradientClass: 207 return static_cast<const CSSLinearGradientValue*>(this)-> hasAlpha(renderer);208 case RadialGradientClass: 209 return static_cast<const CSSRadialGradientValue*>(this)-> hasAlpha(renderer);210 default: 211 ASSERT_NOT_REACHED(); 212 } 213 return true;199 bool CSSImageGeneratorValue::knownToBeOpaque(const RenderObject* renderer) const 200 { 201 switch (classType()) { 202 case CrossfadeClass: 203 return static_cast<const CSSCrossfadeValue*>(this)->knownToBeOpaque(renderer); 204 case CanvasClass: 205 return false; 206 case LinearGradientClass: 207 return static_cast<const CSSLinearGradientValue*>(this)->knownToBeOpaque(renderer); 208 case RadialGradientClass: 209 return static_cast<const CSSRadialGradientValue*>(this)->knownToBeOpaque(renderer); 210 default: 211 ASSERT_NOT_REACHED(); 212 } 213 return false; 214 214 } 215 215 -
trunk/Source/WebCore/css/CSSImageGeneratorValue.h
r135629 r141637 64 64 65 65 bool isPending() const; 66 bool hasAlpha(const RenderObject*) const;66 bool knownToBeOpaque(const RenderObject*) const; 67 67 68 68 void loadSubimages(CachedResourceLoader*); -
trunk/Source/WebCore/css/CSSImageValue.cpp
r141570 r141637 114 114 } 115 115 116 bool CSSImageValue:: hasAlpha(const RenderObject* renderer) const116 bool CSSImageValue::knownToBeOpaque(const RenderObject* renderer) const 117 117 { 118 return m_image ? m_image-> hasAlpha(renderer) : true;118 return m_image ? m_image->knownToBeOpaque(renderer) : false; 119 119 } 120 120 -
trunk/Source/WebCore/css/CSSImageValue.h
r136919 r141637 53 53 void reportDescendantMemoryUsage(MemoryObjectInfo*) const; 54 54 55 bool hasAlpha(const RenderObject*) const;55 bool knownToBeOpaque(const RenderObject*) const; 56 56 57 57 void setInitiator(const AtomicString& name) { m_initiatorName = name; } -
trunk/Source/WebCore/loader/cache/CachedImage.cpp
r141570 r141637 507 507 } 508 508 509 bool CachedImage::currentFrame HasAlpha(const RenderObject* renderer)509 bool CachedImage::currentFrameKnownToBeOpaque(const RenderObject* renderer) 510 510 { 511 511 Image* image = imageForRenderer(renderer); 512 512 if (image->isBitmapImage()) 513 513 image->nativeImageForCurrentFrame(); // force decode 514 return image->currentFrame HasAlpha();514 return image->currentFrameKnownToBeOpaque(); 515 515 } 516 516 -
trunk/Source/WebCore/loader/cache/CachedImage.h
r140722 r141637 55 55 Image* imageForRenderer(const RenderObject*); // Returns the nullImage() if the image is not available yet. 56 56 bool hasImage() const { return m_image.get(); } 57 bool currentFrame HasAlpha(const RenderObject*); // Side effect: ensures decoded image is in cache, therefore should only be called when about to draw the image.57 bool currentFrameKnownToBeOpaque(const RenderObject*); // Side effect: ensures decoded image is in cache, therefore should only be called when about to draw the image. 58 58 59 59 std::pair<Image*, float> brokenImage(float deviceScaleFactor) const; // Returns an image and the image's resolution scale factor. -
trunk/Source/WebCore/platform/graphics/BitmapImage.cpp
r141570 r141637 337 337 } 338 338 339 bool BitmapImage::currentFrame HasAlpha()340 { 341 return frameHasAlphaAtIndex(currentFrame());339 bool BitmapImage::currentFrameKnownToBeOpaque() 340 { 341 return !frameHasAlphaAtIndex(currentFrame()); 342 342 } 343 343 -
trunk/Source/WebCore/platform/graphics/BitmapImage.h
r137011 r141637 179 179 180 180 virtual NativeImagePtr nativeImageForCurrentFrame(); 181 virtual bool currentFrame HasAlpha();181 virtual bool currentFrameKnownToBeOpaque() OVERRIDE; 182 182 183 183 ImageOrientation currentFrameOrientation(); -
trunk/Source/WebCore/platform/graphics/GeneratedImage.h
r137011 r141637 58 58 const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& destRect) = 0; 59 59 60 // FIXME: Implement this to be less conservative. 61 virtual bool currentFrameKnownToBeOpaque() OVERRIDE { return false; } 62 60 63 GeneratedImage() { } 61 64 -
trunk/Source/WebCore/platform/graphics/Image.h
r138326 r141637 100 100 virtual bool isSVGImage() const { return false; } 101 101 virtual bool isBitmapImage() const { return false; } 102 virtual bool currentFrame HasAlpha() { return false; }102 virtual bool currentFrameKnownToBeOpaque() = 0; 103 103 104 104 // Derived classes should override this if they can assure that -
trunk/Source/WebCore/platform/graphics/blackberry/LayerTiler.cpp
r130612 r141637 185 185 if (!renderJobs.isEmpty()) { 186 186 if (Image* image = m_layer->contents()) { 187 bool isOpaque = false; 188 if (image->isBitmapImage()) 189 isOpaque = !static_cast<BitmapImage*>(image)->currentFrameHasAlpha(); 187 bool isOpaque = image->currentFrameKnownToBeOpaque(); 190 188 if (NativeImagePtr nativeImage = image->nativeImageForCurrentFrame()) { 191 189 SkBitmap bitmap = SkBitmap(nativeImage->bitmap()); … … 238 236 239 237 if (Image* image = m_layer->contents()) { 240 bool isOpaque = false; 241 if (image->isBitmapImage()) 242 isOpaque = !static_cast<BitmapImage*>(image)->currentFrameHasAlpha(); 238 bool isOpaque = image->currentFrameKnownToBeOpaque(); 243 239 // No point in tiling an image layer, the image is already stored as an SkBitmap 244 240 NativeImagePtr nativeImage = m_layer->contents()->nativeImageForCurrentFrame(); -
trunk/Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp
r141288 r141637 98 98 if (!m_image) 99 99 return false; 100 bool hasAlpha = m_image->isBitmapImage() ? m_image->currentFrameHasAlpha() : true;100 bool hasAlpha = !m_image->currentFrameKnownToBeOpaque(); 101 101 if ((ignoreGammaAndColorProfile || (hasAlpha && !premultiplyAlpha)) && m_image->data()) { 102 102 ImageSource decoder(ImageSource::AlphaNotPremultiplied, -
trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.h
r137011 r141637 65 65 PDFDocumentImage(); 66 66 virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode); 67 67 68 // FIXME: Implement this to be less conservative. 69 virtual bool currentFrameKnownToBeOpaque() OVERRIDE { return false; } 70 68 71 void setCurrentPage(int); 69 72 int pageCount() const; -
trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp
r141570 r141637 497 497 } 498 498 m_imageLayer->setBitmap(nativeImage->bitmap()); 499 m_imageLayer->layer()->setOpaque(image-> isBitmapImage() && !image->currentFrameHasAlpha());499 m_imageLayer->layer()->setOpaque(image->currentFrameKnownToBeOpaque()); 500 500 updateContentsRect(); 501 501 } else { -
trunk/Source/WebCore/platform/graphics/qt/StillImageQt.cpp
r137011 r141637 53 53 } 54 54 55 bool StillImage::currentFrame HasAlpha()55 bool StillImage::currentFrameKnownToBeOpaque() 56 56 { 57 return m_pixmap->hasAlpha();57 return !m_pixmap->hasAlpha(); 58 58 } 59 59 -
trunk/Source/WebCore/platform/graphics/qt/StillImageQt.h
r137011 r141637 45 45 } 46 46 47 virtual bool currentFrame HasAlpha();47 virtual bool currentFrameKnownToBeOpaque(); 48 48 49 49 // FIXME: StillImages are underreporting decoded sizes and will be unable -
trunk/Source/WebCore/platform/graphics/skia/BitmapImageSingleFrameSkia.cpp
r111572 r141637 10 10 } 11 11 12 bool BitmapImageSingleFrameSkia::currentFrame HasAlpha()12 bool BitmapImageSingleFrameSkia::currentFrameKnownToBeOpaque() 13 13 { 14 return !m_nativeImage.bitmap().isOpaque();14 return m_nativeImage.bitmap().isOpaque(); 15 15 } 16 16 -
trunk/Source/WebCore/platform/graphics/skia/BitmapImageSingleFrameSkia.h
r137011 r141637 54 54 virtual bool isBitmapImage() const; 55 55 56 virtual bool currentFrame HasAlpha();56 virtual bool currentFrameKnownToBeOpaque() OVERRIDE; 57 57 58 58 virtual IntSize size() const; -
trunk/Source/WebCore/platform/graphics/texmap/TextureMapperBackingStore.cpp
r140821 r141637 75 75 if (!m_texture) { 76 76 m_texture = textureMapper->createTexture(); 77 m_texture->reset(targetRect.size(), image->currentFrame HasAlpha() ? BitmapTexture::SupportsAlpha : 0);77 m_texture->reset(targetRect.size(), image->currentFrameKnownToBeOpaque() ? 0 : BitmapTexture::SupportsAlpha); 78 78 } 79 79 … … 226 226 void TextureMapperTiledBackingStore::updateContents(TextureMapper* textureMapper, Image* image, const FloatSize& totalSize, const IntRect& dirtyRect, BitmapTexture::UpdateContentsFlag updateContentsFlag) 227 227 { 228 createOrDestroyTilesIfNeeded(totalSize, textureMapper->maxTextureSize(), image->currentFrameHasAlpha());228 createOrDestroyTilesIfNeeded(totalSize, textureMapper->maxTextureSize(), !image->currentFrameKnownToBeOpaque()); 229 229 for (size_t i = 0; i < m_tiles.size(); ++i) 230 230 m_tiles[i].updateContents(textureMapper, image, dirtyRect, updateContentsFlag); -
trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp
r141543 r141637 102 102 } 103 103 104 m_surface = CoordinatedSurface::create(m_image->size(), m_image->currentFrameHasAlpha() ? CoordinatedSurface::SupportsAlpha : CoordinatedSurface::NoFlags);104 m_surface = CoordinatedSurface::create(m_image->size(), !m_image->currentFrameKnownToBeOpaque() ? CoordinatedSurface::SupportsAlpha : CoordinatedSurface::NoFlags); 105 105 if (!m_surface) { 106 106 m_isDirty = false; -
trunk/Source/WebCore/rendering/RenderImage.cpp
r140244 r141637 500 500 return false; 501 501 502 // Check for bitmapimage with alpha.502 // Check for image with alpha. 503 503 Image* image = m_imageResource->image().get(); 504 if (!image || !image->isBitmapImage() || image->currentFrameHasAlpha()) 505 return false; 506 507 return true; 504 if (!image) 505 return false; 506 return image->currentFrameKnownToBeOpaque(); 508 507 } 509 508 -
trunk/Source/WebCore/rendering/style/FillLayer.cpp
r137166 r141637 336 336 337 337 if (m_composite == CompositeSourceOver) 338 return !m_image->hasAlpha(renderer);338 return m_image->knownToBeOpaque(renderer); 339 339 340 340 return false; -
trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp
r135629 r141637 107 107 } 108 108 109 bool StyleCachedImage:: hasAlpha(const RenderObject* renderer) const109 bool StyleCachedImage::knownToBeOpaque(const RenderObject* renderer) const 110 110 { 111 return m_image->currentFrame HasAlpha(renderer);111 return m_image->currentFrameKnownToBeOpaque(renderer); 112 112 } 113 113 -
trunk/Source/WebCore/rendering/style/StyleCachedImage.h
r136919 r141637 55 55 virtual void removeClient(RenderObject*); 56 56 virtual PassRefPtr<Image> image(RenderObject*, const IntSize&) const; 57 virtual bool hasAlpha(const RenderObject*) const OVERRIDE;57 virtual bool knownToBeOpaque(const RenderObject*) const OVERRIDE; 58 58 virtual CachedImage* cachedImage() const OVERRIDE { return m_image.get(); } 59 59 -
trunk/Source/WebCore/rendering/style/StyleCachedImageSet.cpp
r135629 r141637 117 117 } 118 118 119 bool StyleCachedImageSet:: hasAlpha(const RenderObject* renderer) const119 bool StyleCachedImageSet::knownToBeOpaque(const RenderObject* renderer) const 120 120 { 121 return m_bestFitImage->currentFrame HasAlpha(renderer);121 return m_bestFitImage->currentFrameKnownToBeOpaque(renderer); 122 122 } 123 123 -
trunk/Source/WebCore/rendering/style/StyleCachedImageSet.h
r136919 r141637 72 72 virtual PassRefPtr<Image> image(RenderObject*, const IntSize&) const; 73 73 virtual float imageScaleFactor() const { return m_imageScaleFactor; } 74 virtual bool hasAlpha(const RenderObject*) const OVERRIDE;74 virtual bool knownToBeOpaque(const RenderObject*) const OVERRIDE; 75 75 virtual CachedImage* cachedImage() const OVERRIDE { return m_bestFitImage.get(); } 76 76 -
trunk/Source/WebCore/rendering/style/StyleGeneratedImage.cpp
r135629 r141637 90 90 } 91 91 92 bool StyleGeneratedImage:: hasAlpha(const RenderObject* renderer) const92 bool StyleGeneratedImage::knownToBeOpaque(const RenderObject* renderer) const 93 93 { 94 return m_imageGeneratorValue-> hasAlpha(renderer);94 return m_imageGeneratorValue->knownToBeOpaque(renderer); 95 95 } 96 96 -
trunk/Source/WebCore/rendering/style/StyleGeneratedImage.h
r135629 r141637 52 52 virtual void removeClient(RenderObject*); 53 53 virtual PassRefPtr<Image> image(RenderObject*, const IntSize&) const; 54 virtual bool hasAlpha(const RenderObject*) const OVERRIDE;54 virtual bool knownToBeOpaque(const RenderObject*) const OVERRIDE; 55 55 56 56 private: -
trunk/Source/WebCore/rendering/style/StyleImage.h
r136919 r141637 66 66 virtual WrappedImagePtr data() const = 0; 67 67 virtual float imageScaleFactor() const { return 1; } 68 virtual bool hasAlpha(const RenderObject*) const = 0;68 virtual bool knownToBeOpaque(const RenderObject*) const = 0; 69 69 virtual CachedImage* cachedImage() const { return 0; } 70 70 -
trunk/Source/WebCore/rendering/style/StylePendingImage.h
r136919 r141637 69 69 return 0; 70 70 } 71 virtual bool hasAlpha(const RenderObject*) const { return true; }71 virtual bool knownToBeOpaque(const RenderObject*) const { return false; } 72 72 73 73 private: -
trunk/Source/WebCore/svg/graphics/SVGImage.h
r141303 r141637 83 83 virtual NativeImagePtr frameAtIndex(size_t) { return 0; } 84 84 85 // FIXME: Implement this to be less conservative. 86 virtual bool currentFrameKnownToBeOpaque() OVERRIDE { return false; } 87 85 88 SVGImage(ImageObserver*); 86 89 virtual void draw(GraphicsContext*, const FloatRect& fromRect, const FloatRect& toRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode); -
trunk/Source/WebKit/chromium/ChangeLog
r141614 r141637 1 2013-02-01 Philip Rogers <pdr@google.com> 2 3 Change hasAlpha to isKnownToBeOpaque and correct the return value for SVG images. 4 https://bugs.webkit.org/show_bug.cgi?id=106966 5 6 Reviewed by Stephen White. 7 8 * tests/DragImageTest.cpp: 9 (WebCore::TestImage::currentFrameKnownToBeOpaque): 10 (TestImage): 11 * tests/ImageLayerChromiumTest.cpp: 12 (WebCore::TestImage::currentFrameKnownToBeOpaque): 13 * tests/PlatformContextSkiaTest.cpp: 14 (WebCore::TEST): 15 1 16 2013-02-01 Nico Weber <thakis@chromium.org> 2 17 -
trunk/Source/WebKit/chromium/tests/DragImageTest.cpp
r137011 r141637 83 83 } 84 84 85 virtual bool currentFrameKnownToBeOpaque() 86 { 87 return false; 88 } 89 85 90 virtual void draw(WebCore::GraphicsContext*, const WebCore::FloatRect&, 86 91 const WebCore::FloatRect&, WebCore::ColorSpace, -
trunk/Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp
r139829 r141637 67 67 } 68 68 69 virtual bool currentFrame HasAlpha()69 virtual bool currentFrameKnownToBeOpaque() 70 70 { 71 return !m_nativeImage->bitmap().isOpaque();71 return m_nativeImage->bitmap().isOpaque(); 72 72 } 73 73 -
trunk/Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp
r139745 r141637 551 551 *drawBitmap.getAddr32(x, y) = 0xFFFFFFFF; 552 552 RefPtr<BitmapImageSingleFrameSkia> opaqueImage = BitmapImageSingleFrameSkia::create(drawBitmap, true); 553 EXPECT_ FALSE(opaqueImage->currentFrameHasAlpha());553 EXPECT_TRUE(opaqueImage->currentFrameKnownToBeOpaque()); 554 554 555 555 drawBitmap.setIsOpaque(false); … … 558 558 *drawBitmap.getAddr32(x, y) = 0x00000000; 559 559 RefPtr<BitmapImageSingleFrameSkia> alphaImage = BitmapImageSingleFrameSkia::create(drawBitmap, true); 560 EXPECT_ TRUE(alphaImage->currentFrameHasAlpha());560 EXPECT_FALSE(alphaImage->currentFrameKnownToBeOpaque()); 561 561 562 562 context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, CompositeSourceOver); -
trunk/Source/WebKit/win/ChangeLog
r141545 r141637 1 2013-02-01 Philip Rogers <pdr@google.com> 2 3 Change hasAlpha to isKnownToBeOpaque and correct the return value for SVG images. 4 https://bugs.webkit.org/show_bug.cgi?id=106966 5 6 Reviewed by Stephen White. 7 8 * WebKit.vcproj/WebKitExports.def.in: 9 1 10 2013-01-31 Aurimas Liutikas <aurimas@chromium.org> 2 11 -
trunk/Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in
r141196 r141637 339 339 ??0BitmapImage@WebCore@@IAE@PAVImageObserver@1@@Z 340 340 ?isBitmapImage@BitmapImage@WebCore@@UBE_NXZ 341 ?currentFrame HasAlpha@BitmapImage@WebCore@@UAE_NXZ341 ?currentFrameKnownToBeOpaque@BitmapImage@WebCore@@UAE_NXZ 342 342 ?hasSingleSecurityOrigin@BitmapImage@WebCore@@UBE_NXZ 343 343 #if !ASSERT_DISABLED … … 726 726 ??0BitmapImage@WebCore@@IAE@PAVImageObserver@1@@Z 727 727 ?isBitmapImage@BitmapImage@WebCore@@UBE_NXZ 728 ?currentFrame HasAlpha@BitmapImage@WebCore@@UAE_NXZ728 ?currentFrameKnownToBeOpaque@BitmapImage@WebCore@@UAE_NXZ 729 729 ?hasSingleSecurityOrigin@BitmapImage@WebCore@@UBE_NXZ 730 730 #if !ASSERT_DISABLED … … 1112 1112 ??0BitmapImage@WebCore@@IAE@PAVImageObserver@1@@Z 1113 1113 ?isBitmapImage@BitmapImage@WebCore@@UBE_NXZ 1114 ?currentFrame HasAlpha@BitmapImage@WebCore@@UAE_NXZ1114 ?currentFrameKnownToBeOpaque@BitmapImage@WebCore@@UAE_NXZ 1115 1115 ?hasSingleSecurityOrigin@BitmapImage@WebCore@@UBE_NXZ 1116 1116 #if !ASSERT_DISABLED … … 1504 1504 ??0BitmapImage@WebCore@@IAE@PAVImageObserver@1@@Z 1505 1505 ?isBitmapImage@BitmapImage@WebCore@@UBE_NXZ 1506 ?currentFrame HasAlpha@BitmapImage@WebCore@@UAE_NXZ1506 ?currentFrameKnownToBeOpaque@BitmapImage@WebCore@@UAE_NXZ 1507 1507 ?hasSingleSecurityOrigin@BitmapImage@WebCore@@UBE_NXZ 1508 1508 #if !ASSERT_DISABLED
Note: See TracChangeset
for help on using the changeset viewer.