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/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 , style(edgeStyle) |
| 14 , isTransparent(edgeIsTransparent) |
| 15 , isPresent(edgeIsPresent) |
| 16 { |
| 17 if (style == DOUBLE && edgeWidth < 3) |
| 18 style = SOLID; |
| 19 } |
| 20 |
| 21 BorderEdge::BorderEdge() |
| 22 : width(0) |
| 23 , style(BHIDDEN) |
| 24 , isTransparent(false) |
| 25 , isPresent(false) |
| 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 |