Chromium Code Reviews| 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 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1043 return clippedOverflowRect(paintInvalidationContainer); | 1043 return clippedOverflowRect(paintInvalidationContainer); |
| 1044 } | 1044 } |
| 1045 | 1045 |
| 1046 LayoutRect LayoutInline::clippedOverflowRect(const LayoutBoxModelObject* paintIn validationContainer, const PaintInvalidationState* paintInvalidationState) const | 1046 LayoutRect LayoutInline::clippedOverflowRect(const LayoutBoxModelObject* paintIn validationContainer, const PaintInvalidationState* paintInvalidationState) const |
| 1047 { | 1047 { |
| 1048 const LayoutBoxModelObject* continuation = this->continuation(); | 1048 const LayoutBoxModelObject* continuation = this->continuation(); |
| 1049 if ((!firstLineBoxIncludingCulling() && !continuation) || style()->visibilit y() != VISIBLE) | 1049 if ((!firstLineBoxIncludingCulling() && !continuation) || style()->visibilit y() != VISIBLE) |
| 1050 return LayoutRect(); | 1050 return LayoutRect(); |
| 1051 | 1051 |
| 1052 LayoutRect overflowRect(linesVisualOverflowBoundingBox()); | 1052 LayoutRect overflowRect(linesVisualOverflowBoundingBox()); |
| 1053 mapRectToPaintInvalidationBacking(paintInvalidationContainer, overflowRect, paintInvalidationState); | |
| 1054 | 1053 |
| 1055 LayoutUnit outlineOutset = style()->outlineOutsetExtent(); | 1054 LayoutUnit outlineOutset = style()->outlineOutsetExtent(); |
| 1056 if (outlineOutset) { | 1055 if (outlineOutset) { |
| 1057 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling() ) { | 1056 Vector<LayoutRect> rects; |
| 1058 if (!curr->isText()) | 1057 addOutlineRectsForChildrenAndContinuations(rects, LayoutPoint()); |
| 1059 overflowRect.unite(curr->rectWithOutlineForPaintInvalidation(pai ntInvalidationContainer, outlineOutset)); | 1058 LayoutRect outlineRect = unionRect(rects); |
| 1059 if (!outlineRect.isEmpty()) { | |
| 1060 outlineRect.inflate(outlineOutset); | |
| 1061 overflowRect.unite(outlineRect); | |
| 1060 } | 1062 } |
| 1061 | |
| 1062 if (continuation && !continuation->isInline() && continuation->parent()) | |
| 1063 overflowRect.unite(continuation->rectWithOutlineForPaintInvalidation (paintInvalidationContainer, outlineOutset)); | |
| 1064 } | 1063 } |
| 1065 | 1064 |
| 1065 mapRectToPaintInvalidationBacking(paintInvalidationContainer, overflowRect, paintInvalidationState); | |
| 1066 return overflowRect; | 1066 return overflowRect; |
| 1067 } | 1067 } |
| 1068 | 1068 |
| 1069 LayoutRect LayoutInline::rectWithOutlineForPaintInvalidation(const LayoutBoxMode lObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInvalid ationState* paintInvalidationState) const | |
| 1070 { | |
| 1071 LayoutRect r(LayoutBoxModelObject::rectWithOutlineForPaintInvalidation(paint InvalidationContainer, outlineWidth, paintInvalidationState)); | |
| 1072 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) { | |
| 1073 if (!curr->isText()) | |
| 1074 r.unite(curr->rectWithOutlineForPaintInvalidation(paintInvalidationC ontainer, outlineWidth, paintInvalidationState)); | |
| 1075 } | |
| 1076 return r; | |
| 1077 } | |
| 1078 | |
| 1079 void LayoutInline::mapRectToPaintInvalidationBacking(const LayoutBoxModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* pai ntInvalidationState) const | 1069 void LayoutInline::mapRectToPaintInvalidationBacking(const LayoutBoxModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* pai ntInvalidationState) const |
| 1080 { | 1070 { |
| 1081 if (paintInvalidationState && paintInvalidationState->canMapToContainer(pain tInvalidationContainer)) { | 1071 if (paintInvalidationState && paintInvalidationState->canMapToContainer(pain tInvalidationContainer)) { |
| 1082 if (style()->hasInFlowPosition() && layer()) | 1072 if (style()->hasInFlowPosition() && layer()) |
| 1083 rect.move(layer()->offsetForInFlowPosition()); | 1073 rect.move(layer()->offsetForInFlowPosition()); |
| 1084 rect.move(paintInvalidationState->paintOffset()); | 1074 rect.move(paintInvalidationState->paintOffset()); |
| 1085 if (paintInvalidationState->isClipped()) | 1075 if (paintInvalidationState->isClipped()) |
| 1086 rect.intersect(paintInvalidationState->clipRect()); | 1076 rect.intersect(paintInvalidationState->clipRect()); |
| 1087 return; | 1077 return; |
| 1088 } | 1078 } |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1375 }; | 1365 }; |
| 1376 | 1366 |
| 1377 } // unnamed namespace | 1367 } // unnamed namespace |
| 1378 | 1368 |
| 1379 void LayoutInline::addOutlineRects(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset) const | 1369 void LayoutInline::addOutlineRects(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset) const |
| 1380 { | 1370 { |
| 1381 AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext context(rects, additio nalOffset); | 1371 AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext context(rects, additio nalOffset); |
| 1382 generateLineBoxRects(context); | 1372 generateLineBoxRects(context); |
| 1383 addOutlineRectsForChildrenAndContinuations(rects, additionalOffset); | 1373 addOutlineRectsForChildrenAndContinuations(rects, additionalOffset); |
| 1384 } | 1374 } |
| 1375 | |
|
chrishtr
2015/08/27 18:20:59
spurious
Xianzhu
2015/08/27 19:23:13
Done.
| |
| 1385 void LayoutInline::addOutlineRectsForChildrenAndContinuations(Vector<LayoutRect> & rects, const LayoutPoint& additionalOffset) const | 1376 void LayoutInline::addOutlineRectsForChildrenAndContinuations(Vector<LayoutRect> & rects, const LayoutPoint& additionalOffset) const |
| 1386 { | 1377 { |
| 1387 addOutlineRectsForNormalChildren(rects, additionalOffset); | 1378 addOutlineRectsForNormalChildren(rects, additionalOffset); |
| 1388 addOutlineRectsForContinuations(rects, additionalOffset); | 1379 addOutlineRectsForContinuations(rects, additionalOffset); |
| 1389 } | 1380 } |
| 1390 | 1381 |
| 1391 void LayoutInline::addOutlineRectsForContinuations(Vector<LayoutRect>& rects, co nst LayoutPoint& additionalOffset) const | 1382 void LayoutInline::addOutlineRectsForContinuations(Vector<LayoutRect>& rects, co nst LayoutPoint& additionalOffset) const |
| 1392 { | 1383 { |
| 1393 if (LayoutBoxModelObject* continuation = this->continuation()) { | 1384 if (LayoutBoxModelObject* continuation = this->continuation()) { |
| 1394 if (continuation->isInline()) | 1385 if (continuation->isInline()) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1429 } | 1420 } |
| 1430 | 1421 |
| 1431 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain tInvalidationContainer) const | 1422 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain tInvalidationContainer) const |
| 1432 { | 1423 { |
| 1433 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine r); | 1424 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine r); |
| 1434 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) | 1425 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) |
| 1435 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box); | 1426 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box); |
| 1436 } | 1427 } |
| 1437 | 1428 |
| 1438 } // namespace blink | 1429 } // namespace blink |
| OLD | NEW |