Index: third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp |
diff --git a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp |
index d3a16e67edaafb55bf2a8f71821d943771008667..8b58dd9ccdf2df8eeddc86e1805723be2ad8bcf9 100644 |
--- a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp |
@@ -136,7 +136,7 @@ FloatRect calculateSideRect(const FloatRoundedRect& outerBorder, |
const BorderEdge& edge, |
int side) { |
FloatRect sideRect = outerBorder.rect(); |
- int width = edge.width; |
+ float width = edge.width(); |
if (side == BSTop) |
sideRect.setHeight(width); |
@@ -154,23 +154,23 @@ FloatRect calculateSideRectIncludingInner(const FloatRoundedRect& outerBorder, |
const BorderEdge edges[], |
BoxSide side) { |
FloatRect sideRect = outerBorder.rect(); |
- int width; |
+ float width; |
switch (side) { |
case BSTop: |
- width = sideRect.height() - edges[BSBottom].width; |
+ width = sideRect.height() - edges[BSBottom].width(); |
sideRect.setHeight(width); |
break; |
case BSBottom: |
- width = sideRect.height() - edges[BSTop].width; |
+ width = sideRect.height() - edges[BSTop].width(); |
sideRect.shiftYEdgeTo(sideRect.maxY() - width); |
break; |
case BSLeft: |
- width = sideRect.width() - edges[BSRight].width; |
+ width = sideRect.width() - edges[BSRight].width(); |
sideRect.setWidth(width); |
break; |
case BSRight: |
- width = sideRect.width() - edges[BSLeft].width; |
+ width = sideRect.width() - edges[BSLeft].width(); |
sideRect.shiftXEdgeTo(sideRect.maxX() - width); |
break; |
} |
@@ -280,6 +280,7 @@ void drawSolidBorderRect(GraphicsContext& context, |
float borderWidth, |
const Color& color) { |
FloatRect strokeRect(borderRect); |
+ borderWidth = roundf(borderWidth); |
strokeRect.inflate(-borderWidth / 2); |
bool wasAntialias = context.shouldAntialias(); |
@@ -513,7 +514,7 @@ bool BoxBorderPainter::paintBorderFastPath(GraphicsContext& context, |
if (firstEdge().borderStyle() == BorderStyleSolid) { |
if (m_isUniformWidth && !m_outer.isRounded()) { |
// 4-side, solid, uniform-width, rectangular border => one drawRect() |
- drawSolidBorderRect(context, m_outer.rect(), firstEdge().width, |
+ drawSolidBorderRect(context, m_outer.rect(), firstEdge().width(), |
firstEdge().color); |
} else { |
// 4-side, solid border => one drawDRRect() |
@@ -636,7 +637,7 @@ void BoxBorderPainter::computeBorderProperties() { |
m_isUniformStyle &= |
edge.borderStyle() == m_edges[m_firstVisibleEdge].borderStyle(); |
- m_isUniformWidth &= edge.width == m_edges[m_firstVisibleEdge].width; |
+ m_isUniformWidth &= edge.width() == m_edges[m_firstVisibleEdge].width(); |
m_isUniformColor &= edge.color == m_edges[m_firstVisibleEdge].color; |
} |
} |
@@ -797,7 +798,7 @@ void BoxBorderPainter::paintSide(GraphicsContext& context, |
if (usePath) |
path = &borderInfo.roundedBorderPath; |
else |
- sideRect.setHeight(edge.width); |
+ sideRect.setHeight(roundf(edge.width())); |
paintOneBorderSide(context, sideRect, BSTop, BSLeft, BSRight, path, |
borderInfo.antiAlias, color, completedEdges); |
@@ -811,7 +812,7 @@ void BoxBorderPainter::paintSide(GraphicsContext& context, |
if (usePath) |
path = &borderInfo.roundedBorderPath; |
else |
- sideRect.shiftYEdgeTo(sideRect.maxY() - edge.width); |
+ sideRect.shiftYEdgeTo(sideRect.maxY() - roundf(edge.width())); |
paintOneBorderSide(context, sideRect, BSBottom, BSLeft, BSRight, path, |
borderInfo.antiAlias, color, completedEdges); |
@@ -825,7 +826,7 @@ void BoxBorderPainter::paintSide(GraphicsContext& context, |
if (usePath) |
path = &borderInfo.roundedBorderPath; |
else |
- sideRect.setWidth(edge.width); |
+ sideRect.setWidth(roundf(edge.width())); |
paintOneBorderSide(context, sideRect, BSLeft, BSTop, BSBottom, path, |
borderInfo.antiAlias, color, completedEdges); |
@@ -839,7 +840,7 @@ void BoxBorderPainter::paintSide(GraphicsContext& context, |
if (usePath) |
path = &borderInfo.roundedBorderPath; |
else |
- sideRect.shiftXEdgeTo(sideRect.maxX() - edge.width); |
+ sideRect.shiftXEdgeTo(sideRect.maxX() - roundf(edge.width())); |
paintOneBorderSide(context, sideRect, BSRight, BSTop, BSBottom, path, |
borderInfo.antiAlias, color, completedEdges); |
@@ -908,7 +909,7 @@ void BoxBorderPainter::paintOneBorderSide( |
Color color, |
BorderEdgeFlags completedEdges) const { |
const BorderEdge& edgeToRender = m_edges[side]; |
- DCHECK(edgeToRender.width); |
+ DCHECK(edgeToRender.width()); |
const BorderEdge& adjacentEdge1 = m_edges[adjacentSide1]; |
const BorderEdge& adjacentEdge2 = m_edges[adjacentSide2]; |
@@ -925,10 +926,11 @@ void BoxBorderPainter::paintOneBorderSide( |
clipBorderSidePolygon(graphicsContext, side, miter1, miter2); |
else |
clipBorderSideForComplexInnerPath(graphicsContext, side); |
- float thickness = std::max( |
- std::max(edgeToRender.width, adjacentEdge1.width), adjacentEdge2.width); |
+ float thickness = |
+ std::max(std::max(edgeToRender.width(), adjacentEdge1.width()), |
+ adjacentEdge2.width()); |
drawBoxSideFromPath(graphicsContext, LayoutRect(m_outer.rect()), *path, |
- edgeToRender.width, thickness, side, color, |
+ edgeToRender.width(), thickness, side, color, |
edgeToRender.borderStyle()); |
} else { |
MiterType miter1 = |
@@ -949,8 +951,8 @@ void BoxBorderPainter::paintOneBorderSide( |
ObjectPainter::drawLineForBoxSide( |
graphicsContext, sideRect.x(), sideRect.y(), sideRect.maxX(), |
sideRect.maxY(), side, color, edgeToRender.borderStyle(), |
- miter1 != NoMiter ? adjacentEdge1.width : 0, |
- miter2 != NoMiter ? adjacentEdge2.width : 0, antialias); |
+ miter1 != NoMiter ? roundf(adjacentEdge1.width()) : 0, |
+ miter2 != NoMiter ? roundf(adjacentEdge2.width()) : 0, antialias); |
} |
} |
@@ -1074,10 +1076,10 @@ void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext& graphicsContext, |
// Paint inner only |
GraphicsContextStateSaver stateSaver(graphicsContext); |
- LayoutUnit topWidth(m_edges[BSTop].usedWidth() / 2); |
- LayoutUnit bottomWidth(m_edges[BSBottom].usedWidth() / 2); |
- LayoutUnit leftWidth(m_edges[BSLeft].usedWidth() / 2); |
- LayoutUnit rightWidth(m_edges[BSRight].usedWidth() / 2); |
+ int topWidth = m_edges[BSTop].usedWidth() / 2; |
+ int bottomWidth = m_edges[BSBottom].usedWidth() / 2; |
+ int leftWidth = m_edges[BSLeft].usedWidth() / 2; |
+ int rightWidth = m_edges[BSRight].usedWidth() / 2; |
FloatRoundedRect clipRect = m_style.getRoundedInnerBorderFor( |
borderRect, |