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

Side by Side Diff: Source/core/paint/BoxDecorationData.cpp

Issue 926193003: Move rendering/RenderBox to layout/LayoutBox. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/paint/BoxDecorationData.h ('k') | Source/core/paint/BoxPainter.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/paint/BoxDecorationData.h" 6 #include "core/paint/BoxDecorationData.h"
7 7
8 #include "core/layout/LayoutBox.h"
8 #include "core/layout/style/BorderEdge.h" 9 #include "core/layout/style/BorderEdge.h"
9 #include "core/layout/style/LayoutStyle.h" 10 #include "core/layout/style/LayoutStyle.h"
10 #include "core/rendering/RenderBox.h"
11 #include "platform/RuntimeEnabledFeatures.h" 11 #include "platform/RuntimeEnabledFeatures.h"
12 #include "platform/graphics/GraphicsContext.h" 12 #include "platform/graphics/GraphicsContext.h"
13 13
14 namespace blink { 14 namespace blink {
15 15
16 BoxDecorationData::BoxDecorationData(const RenderBox& renderBox, GraphicsContext * context) 16 BoxDecorationData::BoxDecorationData(const LayoutBox& layoutBox, GraphicsContext * context)
17 { 17 {
18 backgroundColor = renderBox.style()->visitedDependentColor(CSSPropertyBackgr oundColor); 18 backgroundColor = layoutBox.style()->visitedDependentColor(CSSPropertyBackgr oundColor);
19 hasBackground = backgroundColor.alpha() || renderBox.style()->hasBackgroundI mage(); 19 hasBackground = backgroundColor.alpha() || layoutBox.style()->hasBackgroundI mage();
20 ASSERT(hasBackground == renderBox.style()->hasBackground()); 20 ASSERT(hasBackground == layoutBox.style()->hasBackground());
21 hasBorder = renderBox.style()->hasBorder(); 21 hasBorder = layoutBox.style()->hasBorder();
22 hasAppearance = renderBox.style()->hasAppearance(); 22 hasAppearance = layoutBox.style()->hasAppearance();
23 23
24 m_bleedAvoidance = determineBackgroundBleedAvoidance(renderBox, context); 24 m_bleedAvoidance = determineBackgroundBleedAvoidance(layoutBox, context);
25 } 25 }
26 26
27 BackgroundBleedAvoidance BoxDecorationData::determineBackgroundBleedAvoidance(co nst RenderBox& renderBox, GraphicsContext* context) 27 BackgroundBleedAvoidance BoxDecorationData::determineBackgroundBleedAvoidance(co nst LayoutBox& layoutBox, GraphicsContext* context)
28 { 28 {
29 if (renderBox.isDocumentElement()) 29 if (layoutBox.isDocumentElement())
30 return BackgroundBleedNone; 30 return BackgroundBleedNone;
31 31
32 if (!hasBackground) 32 if (!hasBackground)
33 return BackgroundBleedNone; 33 return BackgroundBleedNone;
34 34
35 if (!hasBorder || !renderBox.style()->hasBorderRadius() || renderBox.canRend erBorderImage()) { 35 if (!hasBorder || !layoutBox.style()->hasBorderRadius() || layoutBox.canRend erBorderImage()) {
36 if (renderBox.backgroundShouldAlwaysBeClipped()) 36 if (layoutBox.backgroundShouldAlwaysBeClipped())
37 return BackgroundBleedClipBackground; 37 return BackgroundBleedClipBackground;
38 return BackgroundBleedNone; 38 return BackgroundBleedNone;
39 } 39 }
40 40
41 // If display lists are enabled (via Slimming Paint), then simply clip the b ackground and do not 41 // If display lists are enabled (via Slimming Paint), then simply clip the b ackground and do not
42 // perform advanced bleed-avoidance heuristics. These heuristics are not cor rect in the presence 42 // perform advanced bleed-avoidance heuristics. These heuristics are not cor rect in the presence
43 // of impl-side rasterization or layerization, since the actual pixel-relati ve scaling and rotation 43 // of impl-side rasterization or layerization, since the actual pixel-relati ve scaling and rotation
44 // of the content is not known to Blink. 44 // of the content is not known to Blink.
45 if (RuntimeEnabledFeatures::slimmingPaintEnabled()) 45 if (RuntimeEnabledFeatures::slimmingPaintEnabled())
46 return BackgroundBleedClipBackground; 46 return BackgroundBleedClipBackground;
(...skipping 10 matching lines...) Expand all
57 // that borderObscuresBackgroundEdge can only return true if the border 57 // that borderObscuresBackgroundEdge can only return true if the border
58 // widths are greater than 2 in both layout coordinates and screen 58 // widths are greater than 2 in both layout coordinates and screen
59 // coordinates. 59 // coordinates.
60 // This precaution will become obsolete if RoundedRect is ever promoted to 60 // This precaution will become obsolete if RoundedRect is ever promoted to
61 // a sub-pixel representation. 61 // a sub-pixel representation.
62 if (contextScaling.width() > 1) 62 if (contextScaling.width() > 1)
63 contextScaling.setWidth(1); 63 contextScaling.setWidth(1);
64 if (contextScaling.height() > 1) 64 if (contextScaling.height() > 1)
65 contextScaling.setHeight(1); 65 contextScaling.setHeight(1);
66 66
67 if (borderObscuresBackgroundEdge(*renderBox.style(), contextScaling)) 67 if (borderObscuresBackgroundEdge(*layoutBox.style(), contextScaling))
68 return BackgroundBleedShrinkBackground; 68 return BackgroundBleedShrinkBackground;
69 if (!hasAppearance && renderBox.style()->borderObscuresBackground() && rende rBox.backgroundHasOpaqueTopLayer()) 69 if (!hasAppearance && layoutBox.style()->borderObscuresBackground() && layou tBox.backgroundHasOpaqueTopLayer())
70 return BackgroundBleedBackgroundOverBorder; 70 return BackgroundBleedBackgroundOverBorder;
71 71
72 return BackgroundBleedClipBackground; 72 return BackgroundBleedClipBackground;
73 } 73 }
74 74
75 bool BoxDecorationData::borderObscuresBackgroundEdge(const LayoutStyle& style, c onst FloatSize& contextScale) const 75 bool BoxDecorationData::borderObscuresBackgroundEdge(const LayoutStyle& style, c onst FloatSize& contextScale) const
76 { 76 {
77 BorderEdge edges[4]; 77 BorderEdge edges[4];
78 style.getBorderEdgeInfo(edges); 78 style.getBorderEdgeInfo(edges);
79 79
80 for (int i = BSTop; i <= BSLeft; ++i) { 80 for (int i = BSTop; i <= BSLeft; ++i) {
81 const BorderEdge& currEdge = edges[i]; 81 const BorderEdge& currEdge = edges[i];
82 // FIXME: for vertical text 82 // FIXME: for vertical text
83 float axisScale = (i == BSTop || i == BSBottom) ? contextScale.height() : contextScale.width(); 83 float axisScale = (i == BSTop || i == BSBottom) ? contextScale.height() : contextScale.width();
84 if (!currEdge.obscuresBackgroundEdge(axisScale)) 84 if (!currEdge.obscuresBackgroundEdge(axisScale))
85 return false; 85 return false;
86 } 86 }
87 87
88 return true; 88 return true;
89 } 89 }
90 90
91 } // namespace blink 91 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/paint/BoxDecorationData.h ('k') | Source/core/paint/BoxPainter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698