Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Side by Side Diff: Source/core/rendering/RenderLayer.cpp

Issue 16688004: Large canvas does not honor containing div's border radius (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 3783 matching lines...) Expand 10 before | Expand all | Expand 10 after
3794 } 3794 }
3795 3795
3796 // Make sure that we now use the original transparency context. 3796 // Make sure that we now use the original transparency context.
3797 ASSERT(transparencyLayerContext == context); 3797 ASSERT(transparencyLayerContext == context);
3798 3798
3799 if ((localPaintFlags & PaintLayerPaintingCompositingMaskPhase) && shouldPain tContent && renderer()->hasMask() && !selectionOnly) { 3799 if ((localPaintFlags & PaintLayerPaintingCompositingMaskPhase) && shouldPain tContent && renderer()->hasMask() && !selectionOnly) {
3800 // Paint the mask for the fragments. 3800 // Paint the mask for the fragments.
3801 paintMaskForFragments(layerFragments, context, localPaintingInfo, painti ngRootForRenderer); 3801 paintMaskForFragments(layerFragments, context, localPaintingInfo, painti ngRootForRenderer);
3802 } 3802 }
3803 3803
3804 if ((localPaintFlags & PaintLayerPaintingCompositingBorderRadiusMaskPhase) & & renderer()->style()->hasBorderRadius() && shouldPaintContent && !selectionOnly ) {
3805 // Paint the border radius mask for the fragments.
3806 paintMaskForFragments(layerFragments, context, localPaintingInfo, painti ngRootForRenderer, PaintPhaseBorderRadiusMask);
3807 }
3808
3804 // End our transparency layer 3809 // End our transparency layer
3805 if (haveTransparency && m_usedTransparency && !m_paintingInsideReflection) { 3810 if (haveTransparency && m_usedTransparency && !m_paintingInsideReflection) {
3806 context->endTransparencyLayer(); 3811 context->endTransparencyLayer();
3807 context->restore(); 3812 context->restore();
3808 m_usedTransparency = false; 3813 m_usedTransparency = false;
3809 } 3814 }
3810 3815
3811 if (hasClipPath) 3816 if (hasClipPath)
3812 context->restore(); 3817 context->restore();
3813 } 3818 }
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
4073 4078
4074 // Paint our own outline 4079 // Paint our own outline
4075 PaintInfo paintInfo(context, pixelSnappedIntRect(fragment.outlineRect.re ct()), PaintPhaseSelfOutline, paintBehavior, paintingRootForRenderer, localPaint ingInfo.region, 0, 0, localPaintingInfo.rootLayer->renderer()); 4080 PaintInfo paintInfo(context, pixelSnappedIntRect(fragment.outlineRect.re ct()), PaintPhaseSelfOutline, paintBehavior, paintingRootForRenderer, localPaint ingInfo.region, 0, 0, localPaintingInfo.rootLayer->renderer());
4076 clipToRect(localPaintingInfo.rootLayer, context, localPaintingInfo.paint DirtyRect, fragment.outlineRect, DoNotIncludeSelfForBorderRadius); 4081 clipToRect(localPaintingInfo.rootLayer, context, localPaintingInfo.paint DirtyRect, fragment.outlineRect, DoNotIncludeSelfForBorderRadius);
4077 renderer()->paint(paintInfo, toPoint(fragment.layerBounds.location() - r enderBoxLocation() + localPaintingInfo.subPixelAccumulation)); 4082 renderer()->paint(paintInfo, toPoint(fragment.layerBounds.location() - r enderBoxLocation() + localPaintingInfo.subPixelAccumulation));
4078 restoreClip(context, localPaintingInfo.paintDirtyRect, fragment.outlineR ect); 4083 restoreClip(context, localPaintingInfo.paintDirtyRect, fragment.outlineR ect);
4079 } 4084 }
4080 } 4085 }
4081 4086
4082 void RenderLayer::paintMaskForFragments(const LayerFragments& layerFragments, Gr aphicsContext* context, const LayerPaintingInfo& localPaintingInfo, 4087 void RenderLayer::paintMaskForFragments(const LayerFragments& layerFragments, Gr aphicsContext* context, const LayerPaintingInfo& localPaintingInfo,
4083 RenderObject* paintingRootForRenderer) 4088 RenderObject* paintingRootForRenderer, PaintPhase paintPhase)
4084 { 4089 {
4085 for (size_t i = 0; i < layerFragments.size(); ++i) { 4090 for (size_t i = 0; i < layerFragments.size(); ++i) {
4086 const LayerFragment& fragment = layerFragments.at(i); 4091 const LayerFragment& fragment = layerFragments.at(i);
4087 if (!fragment.shouldPaintContent) 4092 if (!fragment.shouldPaintContent)
4088 continue; 4093 continue;
4089 4094
4090 if (localPaintingInfo.clipToDirtyRect) 4095 if (localPaintingInfo.clipToDirtyRect)
4091 clipToRect(localPaintingInfo.rootLayer, context, localPaintingInfo.p aintDirtyRect, fragment.backgroundRect, DoNotIncludeSelfForBorderRadius); // Mas k painting will handle clipping to self. 4096 clipToRect(localPaintingInfo.rootLayer, context, localPaintingInfo.p aintDirtyRect, fragment.backgroundRect, DoNotIncludeSelfForBorderRadius); // Mas k painting will handle clipping to self.
4092 4097
4093 // Paint the mask. 4098 // Paint the mask.
4094 // FIXME: Eventually we will collect the region from the fragment itself instead of just from the paint info. 4099 // FIXME: Eventually we will collect the region from the fragment itself instead of just from the paint info.
4095 PaintInfo paintInfo(context, pixelSnappedIntRect(fragment.backgroundRect .rect()), PaintPhaseMask, PaintBehaviorNormal, paintingRootForRenderer, localPai ntingInfo.region, 0, 0, localPaintingInfo.rootLayer->renderer()); 4100 PaintInfo paintInfo(context, pixelSnappedIntRect(fragment.backgroundRect .rect()), paintPhase, PaintBehaviorNormal, paintingRootForRenderer, localPaintin gInfo.region, 0, 0, localPaintingInfo.rootLayer->renderer());
4096 renderer()->paint(paintInfo, toPoint(fragment.layerBounds.location() - r enderBoxLocation() + localPaintingInfo.subPixelAccumulation)); 4101 renderer()->paint(paintInfo, toPoint(fragment.layerBounds.location() - r enderBoxLocation() + localPaintingInfo.subPixelAccumulation));
4097 4102
4098 if (localPaintingInfo.clipToDirtyRect) 4103 if (localPaintingInfo.clipToDirtyRect)
4099 restoreClip(context, localPaintingInfo.paintDirtyRect, fragment.back groundRect); 4104 restoreClip(context, localPaintingInfo.paintDirtyRect, fragment.back groundRect);
4100 } 4105 }
4101 } 4106 }
4102 4107
4103 void RenderLayer::paintOverflowControlsForFragments(const LayerFragments& layerF ragments, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo) 4108 void RenderLayer::paintOverflowControlsForFragments(const LayerFragments& layerF ragments, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo)
4104 { 4109 {
4105 for (size_t i = 0; i < layerFragments.size(); ++i) { 4110 for (size_t i = 0; i < layerFragments.size(); ++i) {
(...skipping 1306 matching lines...) Expand 10 before | Expand all | Expand 10 after
5412 5417
5413 if (!layerBeingDestroyed) 5418 if (!layerBeingDestroyed)
5414 updateOrRemoveFilterEffectRenderer(); 5419 updateOrRemoveFilterEffectRenderer();
5415 } 5420 }
5416 5421
5417 bool RenderLayer::hasCompositedMask() const 5422 bool RenderLayer::hasCompositedMask() const
5418 { 5423 {
5419 return m_backing && m_backing->hasMaskLayer(); 5424 return m_backing && m_backing->hasMaskLayer();
5420 } 5425 }
5421 5426
5427 bool RenderLayer::hasCompositedBorderRadiusMask() const
5428 {
5429 return m_backing && m_backing->hasBorderRadiusLayer();
5430 }
5431
5422 GraphicsLayer* RenderLayer::layerForScrolling() const 5432 GraphicsLayer* RenderLayer::layerForScrolling() const
5423 { 5433 {
5424 return m_backing ? m_backing->scrollingContentsLayer() : 0; 5434 return m_backing ? m_backing->scrollingContentsLayer() : 0;
5425 } 5435 }
5426 5436
5427 GraphicsLayer* RenderLayer::layerForHorizontalScrollbar() const 5437 GraphicsLayer* RenderLayer::layerForHorizontalScrollbar() const
5428 { 5438 {
5429 return m_backing ? m_backing->layerForHorizontalScrollbar() : 0; 5439 return m_backing ? m_backing->layerForHorizontalScrollbar() : 0;
5430 } 5440 }
5431 5441
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
6408 } 6418 }
6409 } 6419 }
6410 6420
6411 void showLayerTree(const WebCore::RenderObject* renderer) 6421 void showLayerTree(const WebCore::RenderObject* renderer)
6412 { 6422 {
6413 if (!renderer) 6423 if (!renderer)
6414 return; 6424 return;
6415 showLayerTree(renderer->enclosingLayer()); 6425 showLayerTree(renderer->enclosingLayer());
6416 } 6426 }
6417 #endif 6427 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698