| 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 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1042 for (LayoutObject* curr = currBlock->firstChild(); curr; curr = curr->ne
xtSibling()) { | 1042 for (LayoutObject* curr = currBlock->firstChild(); curr; curr = curr->ne
xtSibling()) { |
| 1043 LayoutRect rect = curr->clippedOverflowRectForPaintInvalidation(view
()); | 1043 LayoutRect rect = curr->clippedOverflowRectForPaintInvalidation(view
()); |
| 1044 context(rect); | 1044 context(rect); |
| 1045 if (curr == endContinuation) | 1045 if (curr == endContinuation) |
| 1046 return enclosingIntRect(floatResult); | 1046 return enclosingIntRect(floatResult); |
| 1047 } | 1047 } |
| 1048 } | 1048 } |
| 1049 return LayoutRect(); | 1049 return LayoutRect(); |
| 1050 } | 1050 } |
| 1051 | 1051 |
| 1052 LayoutRect RenderInline::clippedOverflowRectForPaintInvalidation(const LayoutLay
erModelObject* paintInvalidationContainer, const PaintInvalidationState* paintIn
validationState) const | 1052 LayoutRect RenderInline::clippedOverflowRectForPaintInvalidation(const LayoutBox
ModelObject* paintInvalidationContainer, const PaintInvalidationState* paintInva
lidationState) const |
| 1053 { | 1053 { |
| 1054 // If we don't create line boxes, we don't have any invalidations to do. | 1054 // If we don't create line boxes, we don't have any invalidations to do. |
| 1055 if (!alwaysCreateLineBoxes()) | 1055 if (!alwaysCreateLineBoxes()) |
| 1056 return LayoutRect(); | 1056 return LayoutRect(); |
| 1057 return clippedOverflowRect(paintInvalidationContainer); | 1057 return clippedOverflowRect(paintInvalidationContainer); |
| 1058 } | 1058 } |
| 1059 | 1059 |
| 1060 LayoutRect RenderInline::clippedOverflowRect(const LayoutLayerModelObject* paint
InvalidationContainer, const PaintInvalidationState* paintInvalidationState) con
st | 1060 LayoutRect RenderInline::clippedOverflowRect(const LayoutBoxModelObject* paintIn
validationContainer, const PaintInvalidationState* paintInvalidationState) const |
| 1061 { | 1061 { |
| 1062 if ((!firstLineBoxIncludingCulling() && !continuation()) || style()->visibil
ity() != VISIBLE) | 1062 if ((!firstLineBoxIncludingCulling() && !continuation()) || style()->visibil
ity() != VISIBLE) |
| 1063 return LayoutRect(); | 1063 return LayoutRect(); |
| 1064 | 1064 |
| 1065 LayoutRect overflowRect(linesVisualOverflowBoundingBox()); | 1065 LayoutRect overflowRect(linesVisualOverflowBoundingBox()); |
| 1066 | 1066 |
| 1067 LayoutUnit outlineSize = style()->outlineSize(); | 1067 LayoutUnit outlineSize = style()->outlineSize(); |
| 1068 overflowRect.inflate(outlineSize); | 1068 overflowRect.inflate(outlineSize); |
| 1069 | 1069 |
| 1070 mapRectToPaintInvalidationBacking(paintInvalidationContainer, overflowRect,
paintInvalidationState); | 1070 mapRectToPaintInvalidationBacking(paintInvalidationContainer, overflowRect,
paintInvalidationState); |
| 1071 | 1071 |
| 1072 if (outlineSize) { | 1072 if (outlineSize) { |
| 1073 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()
) { | 1073 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()
) { |
| 1074 if (!curr->isText()) | 1074 if (!curr->isText()) |
| 1075 overflowRect.unite(curr->rectWithOutlineForPaintInvalidation(pai
ntInvalidationContainer, outlineSize)); | 1075 overflowRect.unite(curr->rectWithOutlineForPaintInvalidation(pai
ntInvalidationContainer, outlineSize)); |
| 1076 } | 1076 } |
| 1077 | 1077 |
| 1078 if (continuation() && !continuation()->isInline() && continuation()->par
ent()) | 1078 if (continuation() && !continuation()->isInline() && continuation()->par
ent()) |
| 1079 overflowRect.unite(continuation()->rectWithOutlineForPaintInvalidati
on(paintInvalidationContainer, outlineSize)); | 1079 overflowRect.unite(continuation()->rectWithOutlineForPaintInvalidati
on(paintInvalidationContainer, outlineSize)); |
| 1080 } | 1080 } |
| 1081 | 1081 |
| 1082 return overflowRect; | 1082 return overflowRect; |
| 1083 } | 1083 } |
| 1084 | 1084 |
| 1085 LayoutRect RenderInline::rectWithOutlineForPaintInvalidation(const LayoutLayerMo
delObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInval
idationState* paintInvalidationState) const | 1085 LayoutRect RenderInline::rectWithOutlineForPaintInvalidation(const LayoutBoxMode
lObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInvalid
ationState* paintInvalidationState) const |
| 1086 { | 1086 { |
| 1087 LayoutRect r(LayoutBoxModelObject::rectWithOutlineForPaintInvalidation(paint
InvalidationContainer, outlineWidth, paintInvalidationState)); | 1087 LayoutRect r(LayoutBoxModelObject::rectWithOutlineForPaintInvalidation(paint
InvalidationContainer, outlineWidth, paintInvalidationState)); |
| 1088 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) { | 1088 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) { |
| 1089 if (!curr->isText()) | 1089 if (!curr->isText()) |
| 1090 r.unite(curr->rectWithOutlineForPaintInvalidation(paintInvalidationC
ontainer, outlineWidth, paintInvalidationState)); | 1090 r.unite(curr->rectWithOutlineForPaintInvalidation(paintInvalidationC
ontainer, outlineWidth, paintInvalidationState)); |
| 1091 } | 1091 } |
| 1092 return r; | 1092 return r; |
| 1093 } | 1093 } |
| 1094 | 1094 |
| 1095 void RenderInline::mapRectToPaintInvalidationBacking(const LayoutLayerModelObjec
t* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* p
aintInvalidationState) const | 1095 void RenderInline::mapRectToPaintInvalidationBacking(const LayoutBoxModelObject*
paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* pai
ntInvalidationState) const |
| 1096 { | 1096 { |
| 1097 if (paintInvalidationState && paintInvalidationState->canMapToContainer(pain
tInvalidationContainer)) { | 1097 if (paintInvalidationState && paintInvalidationState->canMapToContainer(pain
tInvalidationContainer)) { |
| 1098 if (style()->hasInFlowPosition() && layer()) | 1098 if (style()->hasInFlowPosition() && layer()) |
| 1099 rect.move(layer()->offsetForInFlowPosition()); | 1099 rect.move(layer()->offsetForInFlowPosition()); |
| 1100 rect.move(paintInvalidationState->paintOffset()); | 1100 rect.move(paintInvalidationState->paintOffset()); |
| 1101 if (paintInvalidationState->isClipped()) | 1101 if (paintInvalidationState->isClipped()) |
| 1102 rect.intersect(paintInvalidationState->clipRect()); | 1102 rect.intersect(paintInvalidationState->clipRect()); |
| 1103 return; | 1103 return; |
| 1104 } | 1104 } |
| 1105 | 1105 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1166 | 1166 |
| 1167 if (offsetDependsOnPoint) { | 1167 if (offsetDependsOnPoint) { |
| 1168 *offsetDependsOnPoint = container->hasColumns() | 1168 *offsetDependsOnPoint = container->hasColumns() |
| 1169 || (container->isBox() && container->style()->isFlippedBlocksWriting
Mode()) | 1169 || (container->isBox() && container->style()->isFlippedBlocksWriting
Mode()) |
| 1170 || container->isLayoutFlowThread(); | 1170 || container->isLayoutFlowThread(); |
| 1171 } | 1171 } |
| 1172 | 1172 |
| 1173 return offset; | 1173 return offset; |
| 1174 } | 1174 } |
| 1175 | 1175 |
| 1176 void RenderInline::mapLocalToContainer(const LayoutLayerModelObject* paintInvali
dationContainer, TransformState& transformState, MapCoordinatesFlags mode, bool*
wasFixed, const PaintInvalidationState* paintInvalidationState) const | 1176 void RenderInline::mapLocalToContainer(const LayoutBoxModelObject* paintInvalida
tionContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* w
asFixed, const PaintInvalidationState* paintInvalidationState) const |
| 1177 { | 1177 { |
| 1178 if (paintInvalidationContainer == this) | 1178 if (paintInvalidationContainer == this) |
| 1179 return; | 1179 return; |
| 1180 | 1180 |
| 1181 if (paintInvalidationState && paintInvalidationState->canMapToContainer(pain
tInvalidationContainer)) { | 1181 if (paintInvalidationState && paintInvalidationState->canMapToContainer(pain
tInvalidationContainer)) { |
| 1182 LayoutSize offset = paintInvalidationState->paintOffset(); | 1182 LayoutSize offset = paintInvalidationState->paintOffset(); |
| 1183 if (style()->hasInFlowPosition() && layer()) | 1183 if (style()->hasInFlowPosition() && layer()) |
| 1184 offset += layer()->offsetForInFlowPosition(); | 1184 offset += layer()->offsetForInFlowPosition(); |
| 1185 transformState.move(offset); | 1185 transformState.move(offset); |
| 1186 return; | 1186 return; |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1452 } | 1452 } |
| 1453 | 1453 |
| 1454 void RenderInline::invalidateDisplayItemClients(DisplayItemList* displayItemList
) const | 1454 void RenderInline::invalidateDisplayItemClients(DisplayItemList* displayItemList
) const |
| 1455 { | 1455 { |
| 1456 LayoutBoxModelObject::invalidateDisplayItemClients(displayItemList); | 1456 LayoutBoxModelObject::invalidateDisplayItemClients(displayItemList); |
| 1457 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) | 1457 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) |
| 1458 displayItemList->invalidate(box->displayItemClient()); | 1458 displayItemList->invalidate(box->displayItemClient()); |
| 1459 } | 1459 } |
| 1460 | 1460 |
| 1461 } // namespace blink | 1461 } // namespace blink |
| OLD | NEW |