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

Side by Side Diff: Source/core/rendering/style/BorderEdge.cpp

Issue 550363004: Factor painting code out of RenderBox into a new class called BoxPainter. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fix Created 6 years, 3 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/rendering/style/BorderEdge.h ('k') | Source/core/rendering/style/RenderStyle.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "core/rendering/style/BorderEdge.h"
7
8 namespace blink {
9
10 BorderEdge::BorderEdge(int edgeWidth, const Color& edgeColor, EBorderStyle edgeS tyle, bool edgeIsTransparent, bool edgeIsPresent)
11 : width(edgeWidth)
12 , color(edgeColor)
13 , isTransparent(edgeIsTransparent)
14 , isPresent(edgeIsPresent)
15 , style(edgeStyle)
16 {
17 if (style == DOUBLE && edgeWidth < 3)
18 style = SOLID;
19 }
20
21 BorderEdge::BorderEdge()
22 : width(0)
23 , isTransparent(false)
24 , isPresent(false)
25 , style(BHIDDEN)
26 {
27 }
28
29 bool BorderEdge::hasVisibleColorAndStyle() const
30 {
31 return style > BHIDDEN && !isTransparent;
32 }
33
34 bool BorderEdge::shouldRender() const { return isPresent && width && hasVisibleC olorAndStyle(); }
35 bool BorderEdge::presentButInvisible() const { return usedWidth() && !hasVisible ColorAndStyle(); }
36 bool BorderEdge::obscuresBackgroundEdge(float scale) const
37 {
38 if (!isPresent || isTransparent || (width * scale) < 2 || color.hasAlpha() | | style == BHIDDEN)
39 return false;
40
41 if (style == DOTTED || style == DASHED)
42 return false;
43
44 if (style == DOUBLE)
45 return width >= 5 * scale; // The outer band needs to be >= 2px wide at unit scale.
46
47 return true;
48 }
49 bool BorderEdge::obscuresBackground() const
50 {
51 if (!isPresent || isTransparent || color.hasAlpha() || style == BHIDDEN)
52 return false;
53
54 if (style == DOTTED || style == DASHED || style == DOUBLE)
55 return false;
56
57 return true;
58 }
59
60 int BorderEdge::usedWidth() const
61 {
62 return isPresent ? width : 0;
63 }
64
65 void BorderEdge::getDoubleBorderStripeWidths(int& outerWidth, int& innerWidth) c onst
66 {
67 int fullWidth = usedWidth();
68 outerWidth = fullWidth / 3;
69 innerWidth = fullWidth * 2 / 3;
70
71 // We need certain integer rounding results
72 if (fullWidth % 3 == 2)
73 outerWidth += 1;
74
75 if (fullWidth % 3 == 1)
76 innerWidth += 1;
77 }
78
79 bool BorderEdge::sharesColorWith(const BorderEdge& other) const
80 {
81 return color == other.color;
82 }
83
84 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/style/BorderEdge.h ('k') | Source/core/rendering/style/RenderStyle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698