OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
7 * Copyright (C) 2010 Google Inc. All rights reserved. | 7 * Copyright (C) 2010 Google Inc. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 1867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1878 } | 1878 } |
1879 | 1879 |
1880 bool clipToOuterBorder = outerBorder.isRounded(); | 1880 bool clipToOuterBorder = outerBorder.isRounded(); |
1881 GraphicsContextStateSaver stateSaver(*graphicsContext, clipToOuterBorder); | 1881 GraphicsContextStateSaver stateSaver(*graphicsContext, clipToOuterBorder); |
1882 if (clipToOuterBorder) { | 1882 if (clipToOuterBorder) { |
1883 // Clip to the inner and outer radii rects. | 1883 // Clip to the inner and outer radii rects. |
1884 if (bleedAvoidance != BackgroundBleedUseTransparencyLayer) | 1884 if (bleedAvoidance != BackgroundBleedUseTransparencyLayer) |
1885 graphicsContext->clipRoundedRect(outerBorder); | 1885 graphicsContext->clipRoundedRect(outerBorder); |
1886 // isRenderable() check avoids issue described in https://bugs.webkit.or
g/show_bug.cgi?id=38787 | 1886 // isRenderable() check avoids issue described in https://bugs.webkit.or
g/show_bug.cgi?id=38787 |
1887 // The inside will be clipped out later (in clipBorderSideForComplexInne
rPath) | 1887 // The inside will be clipped out later (in clipBorderSideForComplexInne
rPath) |
1888 if (innerBorder.isRenderable()) | 1888 if (innerBorder.isRenderable() && !innerBorder.isEmpty()) |
1889 graphicsContext->clipOutRoundedRect(innerBorder); | 1889 graphicsContext->clipOutRoundedRect(innerBorder); |
1890 } | 1890 } |
1891 | 1891 |
1892 // If only one edge visible antialiasing doesn't create seams | 1892 // If only one edge visible antialiasing doesn't create seams |
1893 bool antialias = shouldAntialiasLines(graphicsContext) || numEdgesVisible ==
1; | 1893 bool antialias = shouldAntialiasLines(graphicsContext) || numEdgesVisible ==
1; |
1894 RoundedRect unadjustedInnerBorder = (bleedAvoidance == BackgroundBleedBackgr
oundOverBorder) ? style->getRoundedInnerBorderFor(rect, includeLogicalLeftEdge,
includeLogicalRightEdge) : innerBorder; | 1894 RoundedRect unadjustedInnerBorder = (bleedAvoidance == BackgroundBleedBackgr
oundOverBorder) ? style->getRoundedInnerBorderFor(rect, includeLogicalLeftEdge,
includeLogicalRightEdge) : innerBorder; |
1895 IntPoint innerBorderAdjustment(innerBorder.rect().x() - unadjustedInnerBorde
r.rect().x(), innerBorder.rect().y() - unadjustedInnerBorder.rect().y()); | 1895 IntPoint innerBorderAdjustment(innerBorder.rect().x() - unadjustedInnerBorde
r.rect().x(), innerBorder.rect().y() - unadjustedInnerBorder.rect().y()); |
1896 if (haveAlphaColor) | 1896 if (haveAlphaColor) |
1897 paintTranslucentBorderSides(graphicsContext, style, outerBorder, unadjus
tedInnerBorder, innerBorderAdjustment, edges, edgesToDraw, bleedAvoidance, inclu
deLogicalLeftEdge, includeLogicalRightEdge, antialias); | 1897 paintTranslucentBorderSides(graphicsContext, style, outerBorder, unadjus
tedInnerBorder, innerBorderAdjustment, edges, edgesToDraw, bleedAvoidance, inclu
deLogicalLeftEdge, includeLogicalRightEdge, antialias); |
1898 else | 1898 else |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2342 break; | 2342 break; |
2343 } | 2343 } |
2344 | 2344 |
2345 return RoundedRect(newRect, newRadii); | 2345 return RoundedRect(newRect, newRadii); |
2346 } | 2346 } |
2347 | 2347 |
2348 void RenderBoxModelObject::clipBorderSideForComplexInnerPath(GraphicsContext* gr
aphicsContext, const RoundedRect& outerBorder, const RoundedRect& innerBorder, | 2348 void RenderBoxModelObject::clipBorderSideForComplexInnerPath(GraphicsContext* gr
aphicsContext, const RoundedRect& outerBorder, const RoundedRect& innerBorder, |
2349 BoxSide side, const class BorderEdge edges[]) | 2349 BoxSide side, const class BorderEdge edges[]) |
2350 { | 2350 { |
2351 graphicsContext->clip(calculateSideRectIncludingInner(outerBorder, edges, si
de)); | 2351 graphicsContext->clip(calculateSideRectIncludingInner(outerBorder, edges, si
de)); |
2352 graphicsContext->clipOutRoundedRect(calculateAdjustedInnerBorder(innerBorder
, side)); | 2352 RoundedRect adjustedInnerRect = calculateAdjustedInnerBorder(innerBorder, si
de); |
| 2353 if (!adjustedInnerRect.isEmpty()) |
| 2354 graphicsContext->clipOutRoundedRect(adjustedInnerRect); |
2353 } | 2355 } |
2354 | 2356 |
2355 void RenderBoxModelObject::getBorderEdgeInfo(BorderEdge edges[], const RenderSty
le* style, bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const | 2357 void RenderBoxModelObject::getBorderEdgeInfo(BorderEdge edges[], const RenderSty
le* style, bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const |
2356 { | 2358 { |
2357 bool horizontal = style->isHorizontalWritingMode(); | 2359 bool horizontal = style->isHorizontalWritingMode(); |
2358 | 2360 |
2359 edges[BSTop] = BorderEdge(style->borderTopWidth(), | 2361 edges[BSTop] = BorderEdge(style->borderTopWidth(), |
2360 resolveColor(style, CSSPropertyBorderTopColor), | 2362 resolveColor(style, CSSPropertyBorderTopColor), |
2361 style->borderTopStyle(), | 2363 style->borderTopStyle(), |
2362 style->borderTopIsTransparent(), | 2364 style->borderTopIsTransparent(), |
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2828 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); | 2830 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); |
2829 for (RenderObject* child = startChild; child && child != endChild; ) { | 2831 for (RenderObject* child = startChild; child && child != endChild; ) { |
2830 // Save our next sibling as moveChildTo will clear it. | 2832 // Save our next sibling as moveChildTo will clear it. |
2831 RenderObject* nextSibling = child->nextSibling(); | 2833 RenderObject* nextSibling = child->nextSibling(); |
2832 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); | 2834 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); |
2833 child = nextSibling; | 2835 child = nextSibling; |
2834 } | 2836 } |
2835 } | 2837 } |
2836 | 2838 |
2837 } // namespace WebCore | 2839 } // namespace WebCore |
OLD | NEW |