OLD | NEW |
| (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/layout/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 | |
OLD | NEW |