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 1357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1368 { | 1368 { |
1369 if (!parent()) | 1369 if (!parent()) |
1370 return; | 1370 return; |
1371 | 1371 |
1372 // FIXME: We can do better. | 1372 // FIXME: We can do better. |
1373 setShouldDoFullPaintInvalidation(true); | 1373 setShouldDoFullPaintInvalidation(true); |
1374 } | 1374 } |
1375 | 1375 |
1376 namespace { | 1376 namespace { |
1377 | 1377 |
1378 class AbsoluteRectsIgnoringEmptyRectsGeneratorContext : public AbsoluteRectsGene
ratorContext { | 1378 class AbsoluteLayoutRectsGeneratorContext { |
1379 public: | 1379 public: |
1380 AbsoluteRectsIgnoringEmptyRectsGeneratorContext(Vector<IntRect>& rects, cons
t LayoutPoint& accumulatedOffset) | 1380 AbsoluteLayoutRectsGeneratorContext(Vector<LayoutRect>& rects, const LayoutP
oint& accumulatedOffset) |
1381 : AbsoluteRectsGeneratorContext(rects, accumulatedOffset) { } | 1381 : m_rects(rects) |
| 1382 , m_accumulatedOffset(accumulatedOffset) { } |
| 1383 |
| 1384 void operator()(const FloatRect& rect) |
| 1385 { |
| 1386 LayoutRect layoutRect(rect); |
| 1387 layoutRect.move(m_accumulatedOffset.x(), m_accumulatedOffset.y()); |
| 1388 m_rects.append(layoutRect); |
| 1389 } |
| 1390 private: |
| 1391 Vector<LayoutRect>& m_rects; |
| 1392 const LayoutPoint& m_accumulatedOffset; |
| 1393 }; |
| 1394 |
| 1395 class AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext : public AbsoluteLay
outRectsGeneratorContext { |
| 1396 public: |
| 1397 AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext(Vector<LayoutRect>& re
cts, const LayoutPoint& accumulatedOffset) |
| 1398 : AbsoluteLayoutRectsGeneratorContext(rects, accumulatedOffset) { } |
1382 | 1399 |
1383 void operator()(const FloatRect& rect) | 1400 void operator()(const FloatRect& rect) |
1384 { | 1401 { |
1385 if (!rect.isEmpty()) | 1402 if (!rect.isEmpty()) |
1386 AbsoluteRectsGeneratorContext::operator()(rect); | 1403 AbsoluteLayoutRectsGeneratorContext::operator()(rect); |
1387 } | 1404 } |
1388 }; | 1405 }; |
1389 | 1406 |
1390 } // unnamed namespace | 1407 } // unnamed namespace |
1391 | 1408 |
1392 void RenderInline::addFocusRingRects(Vector<IntRect>& rects, const LayoutPoint&
additionalOffset, const RenderLayerModelObject* paintContainer) const | 1409 void RenderInline::addFocusRingRects(Vector<LayoutRect>& rects, const LayoutPoin
t& additionalOffset, const RenderLayerModelObject* paintContainer) const |
1393 { | 1410 { |
1394 AbsoluteRectsIgnoringEmptyRectsGeneratorContext context(rects, additionalOff
set); | 1411 AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext context(rects, additio
nalOffset); |
1395 generateLineBoxRects(context); | 1412 generateLineBoxRects(context); |
1396 | 1413 |
1397 addChildFocusRingRects(rects, additionalOffset, paintContainer); | 1414 addChildFocusRingRects(rects, additionalOffset, paintContainer); |
1398 | 1415 |
1399 if (continuation()) { | 1416 if (continuation()) { |
1400 // If the continuation doesn't paint into the same container, let its pa
int invalidation container handle it. | 1417 // If the continuation doesn't paint into the same container, let its pa
int invalidation container handle it. |
1401 if (paintContainer != continuation()->containerForPaintInvalidation()) | 1418 if (paintContainer != continuation()->containerForPaintInvalidation()) |
1402 return; | 1419 return; |
1403 if (continuation()->isInline()) | 1420 if (continuation()->isInline()) |
1404 continuation()->addFocusRingRects(rects, flooredLayoutPoint(addition
alOffset + continuation()->containingBlock()->location() - containingBlock()->lo
cation()), paintContainer); | 1421 continuation()->addFocusRingRects(rects, additionalOffset + (continu
ation()->containingBlock()->location() - containingBlock()->location()), paintCo
ntainer); |
1405 else | 1422 else |
1406 continuation()->addFocusRingRects(rects, flooredLayoutPoint(addition
alOffset + toRenderBox(continuation())->location() - containingBlock()->location
()), paintContainer); | 1423 continuation()->addFocusRingRects(rects, additionalOffset + (toRende
rBox(continuation())->location() - containingBlock()->location()), paintContaine
r); |
1407 } | 1424 } |
1408 } | 1425 } |
1409 | 1426 |
1410 namespace { | |
1411 | |
1412 class AbsoluteLayoutRectsGeneratorContext { | |
1413 public: | |
1414 AbsoluteLayoutRectsGeneratorContext(Vector<LayoutRect>& rects, const LayoutP
oint& accumulatedOffset) | |
1415 : m_rects(rects) | |
1416 , m_accumulatedOffset(accumulatedOffset) { } | |
1417 | |
1418 void operator()(const FloatRect& rect) | |
1419 { | |
1420 LayoutRect layoutRect(rect); | |
1421 layoutRect.move(m_accumulatedOffset.x(), m_accumulatedOffset.y()); | |
1422 m_rects.append(layoutRect); | |
1423 } | |
1424 private: | |
1425 Vector<LayoutRect>& m_rects; | |
1426 const LayoutPoint& m_accumulatedOffset; | |
1427 }; | |
1428 | |
1429 } | |
1430 | |
1431 void RenderInline::computeSelfHitTestRects(Vector<LayoutRect>& rects, const Layo
utPoint& layerOffset) const | 1427 void RenderInline::computeSelfHitTestRects(Vector<LayoutRect>& rects, const Layo
utPoint& layerOffset) const |
1432 { | 1428 { |
1433 AbsoluteLayoutRectsGeneratorContext context(rects, layerOffset); | 1429 AbsoluteLayoutRectsGeneratorContext context(rects, layerOffset); |
1434 generateLineBoxRects(context); | 1430 generateLineBoxRects(context); |
1435 } | 1431 } |
1436 | 1432 |
1437 void RenderInline::paintOutline(PaintInfo& paintInfo, const LayoutPoint& paintOf
fset) | 1433 void RenderInline::paintOutline(PaintInfo& paintInfo, const LayoutPoint& paintOf
fset) |
1438 { | 1434 { |
1439 RenderStyle* styleToUse = style(); | 1435 RenderStyle* styleToUse = style(); |
1440 if (!styleToUse->hasOutline()) | 1436 if (!styleToUse->hasOutline()) |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1607 container = this; | 1603 container = this; |
1608 | 1604 |
1609 FloatPoint absPos = container->localToAbsolute(); | 1605 FloatPoint absPos = container->localToAbsolute(); |
1610 region.bounds.setX(absPos.x() + region.bounds.x()); | 1606 region.bounds.setX(absPos.x() + region.bounds.x()); |
1611 region.bounds.setY(absPos.y() + region.bounds.y()); | 1607 region.bounds.setY(absPos.y() + region.bounds.y()); |
1612 | 1608 |
1613 regions.append(region); | 1609 regions.append(region); |
1614 } | 1610 } |
1615 | 1611 |
1616 } // namespace blink | 1612 } // namespace blink |
OLD | NEW |