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 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) { | 580 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) { |
581 if (curr->isFloatingOrOutOfFlowPositioned()) | 581 if (curr->isFloatingOrOutOfFlowPositioned()) |
582 continue; | 582 continue; |
583 | 583 |
584 // We want to get the margin box in the inline direction, and then use o
ur font ascent/descent in the block | 584 // We want to get the margin box in the inline direction, and then use o
ur font ascent/descent in the block |
585 // direction (aligned to the root box's baseline). | 585 // direction (aligned to the root box's baseline). |
586 if (curr->isBox()) { | 586 if (curr->isBox()) { |
587 LayoutBox* currBox = toLayoutBox(curr); | 587 LayoutBox* currBox = toLayoutBox(curr); |
588 if (currBox->inlineBoxWrapper()) { | 588 if (currBox->inlineBoxWrapper()) { |
589 RootInlineBox& rootBox = currBox->inlineBoxWrapper()->root(); | 589 RootInlineBox& rootBox = currBox->inlineBoxWrapper()->root(); |
590 int logicalTop = rootBox.logicalTop() + (rootBox.renderer().styl
e(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(
rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); | 590 int logicalTop = rootBox.logicalTop() + (rootBox.layoutObject().
style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->st
yle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); |
591 int logicalHeight = container->style(rootBox.isFirstLineStyle())
->font().fontMetrics().height(); | 591 int logicalHeight = container->style(rootBox.isFirstLineStyle())
->font().fontMetrics().height(); |
592 if (isHorizontal) | 592 if (isHorizontal) |
593 yield(FloatRect(currBox->inlineBoxWrapper()->x() - currBox->
marginLeft(), logicalTop, (currBox->size().width() + currBox->marginWidth()).toF
loat(), logicalHeight)); | 593 yield(FloatRect(currBox->inlineBoxWrapper()->x() - currBox->
marginLeft(), logicalTop, (currBox->size().width() + currBox->marginWidth()).toF
loat(), logicalHeight)); |
594 else | 594 else |
595 yield(FloatRect(logicalTop, currBox->inlineBoxWrapper()->y()
- currBox->marginTop(), logicalHeight, (currBox->size().height() + currBox->mar
ginHeight()).toFloat())); | 595 yield(FloatRect(logicalTop, currBox->inlineBoxWrapper()->y()
- currBox->marginTop(), logicalHeight, (currBox->size().height() + currBox->mar
ginHeight()).toFloat())); |
596 } | 596 } |
597 } else if (curr->isLayoutInline()) { | 597 } else if (curr->isLayoutInline()) { |
598 // If the child doesn't need line boxes either, then we can recur. | 598 // If the child doesn't need line boxes either, then we can recur. |
599 LayoutInline* currInline = toLayoutInline(curr); | 599 LayoutInline* currInline = toLayoutInline(curr); |
600 if (!currInline->alwaysCreateLineBoxes()) { | 600 if (!currInline->alwaysCreateLineBoxes()) { |
601 currInline->generateCulledLineBoxRects(yield, container); | 601 currInline->generateCulledLineBoxRects(yield, container); |
602 } else { | 602 } else { |
603 for (InlineFlowBox* childLine = currInline->firstLineBox(); chil
dLine; childLine = childLine->nextLineBox()) { | 603 for (InlineFlowBox* childLine = currInline->firstLineBox(); chil
dLine; childLine = childLine->nextLineBox()) { |
604 RootInlineBox& rootBox = childLine->root(); | 604 RootInlineBox& rootBox = childLine->root(); |
605 int logicalTop = rootBox.logicalTop() + (rootBox.renderer().
style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->st
yle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); | 605 int logicalTop = rootBox.logicalTop() + (rootBox.layoutObjec
t().style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container
->style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); |
606 int logicalHeight = container->style(rootBox.isFirstLineStyl
e())->font().fontMetrics().height(); | 606 int logicalHeight = container->style(rootBox.isFirstLineStyl
e())->font().fontMetrics().height(); |
607 if (isHorizontal) { | 607 if (isHorizontal) { |
608 yield(FloatRect(childLine->x() - childLine->marginLogica
lLeft(), | 608 yield(FloatRect(childLine->x() - childLine->marginLogica
lLeft(), |
609 logicalTop, | 609 logicalTop, |
610 childLine->logicalWidth() + childLine->marginLogical
Left() + childLine->marginLogicalRight(), | 610 childLine->logicalWidth() + childLine->marginLogical
Left() + childLine->marginLogicalRight(), |
611 logicalHeight)); | 611 logicalHeight)); |
612 } else { | 612 } else { |
613 yield(FloatRect(logicalTop, | 613 yield(FloatRect(logicalTop, |
614 childLine->y() - childLine->marginLogicalLeft(), | 614 childLine->y() - childLine->marginLogicalLeft(), |
615 logicalHeight, | 615 logicalHeight, |
616 childLine->logicalWidth() + childLine->marginLogical
Left() + childLine->marginLogicalRight())); | 616 childLine->logicalWidth() + childLine->marginLogical
Left() + childLine->marginLogicalRight())); |
617 } | 617 } |
618 } | 618 } |
619 } | 619 } |
620 } else if (curr->isText()) { | 620 } else if (curr->isText()) { |
621 LayoutText* currText = toLayoutText(curr); | 621 LayoutText* currText = toLayoutText(curr); |
622 for (InlineTextBox* childText = currText->firstTextBox(); childText;
childText = childText->nextTextBox()) { | 622 for (InlineTextBox* childText = currText->firstTextBox(); childText;
childText = childText->nextTextBox()) { |
623 RootInlineBox& rootBox = childText->root(); | 623 RootInlineBox& rootBox = childText->root(); |
624 int logicalTop = rootBox.logicalTop() + (rootBox.renderer().styl
e(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(
rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); | 624 int logicalTop = rootBox.logicalTop() + (rootBox.layoutObject().
style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->st
yle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); |
625 int logicalHeight = container->style(rootBox.isFirstLineStyle())
->font().fontMetrics().height(); | 625 int logicalHeight = container->style(rootBox.isFirstLineStyle())
->font().fontMetrics().height(); |
626 if (isHorizontal) | 626 if (isHorizontal) |
627 yield(FloatRect(childText->x(), logicalTop, childText->logic
alWidth(), logicalHeight)); | 627 yield(FloatRect(childText->x(), logicalTop, childText->logic
alWidth(), logicalHeight)); |
628 else | 628 else |
629 yield(FloatRect(logicalTop, childText->y(), logicalHeight, c
hildText->logicalWidth())); | 629 yield(FloatRect(logicalTop, childText->y(), logicalHeight, c
hildText->logicalWidth())); |
630 } | 630 } |
631 } | 631 } |
632 } | 632 } |
633 } | 633 } |
634 | 634 |
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1244 { | 1244 { |
1245 if (result.innerNode()) | 1245 if (result.innerNode()) |
1246 return; | 1246 return; |
1247 | 1247 |
1248 Node* n = node(); | 1248 Node* n = node(); |
1249 LayoutPoint localPoint(point); | 1249 LayoutPoint localPoint(point); |
1250 if (n) { | 1250 if (n) { |
1251 if (isInlineElementContinuation()) { | 1251 if (isInlineElementContinuation()) { |
1252 // We're in the continuation of a split inline. Adjust our local po
int to be in the coordinate space | 1252 // We're in the continuation of a split inline. Adjust our local po
int to be in the coordinate space |
1253 // of the principal renderer's containing block. This will end up b
eing the innerNonSharedNode. | 1253 // of the principal renderer's containing block. This will end up b
eing the innerNonSharedNode. |
1254 LayoutBlock* firstBlock = n->renderer()->containingBlock(); | 1254 LayoutBlock* firstBlock = n->layoutObject()->containingBlock(); |
1255 | 1255 |
1256 // Get our containing block. | 1256 // Get our containing block. |
1257 LayoutBox* block = containingBlock(); | 1257 LayoutBox* block = containingBlock(); |
1258 localPoint.moveBy(block->location() - firstBlock->locationOffset()); | 1258 localPoint.moveBy(block->location() - firstBlock->locationOffset()); |
1259 } | 1259 } |
1260 | 1260 |
1261 result.setInnerNode(n); | 1261 result.setInnerNode(n); |
1262 if (!result.innerNonSharedNode()) | 1262 if (!result.innerNonSharedNode()) |
1263 result.setInnerNonSharedNode(n); | 1263 result.setInnerNonSharedNode(n); |
1264 result.setLocalPoint(localPoint); | 1264 result.setLocalPoint(localPoint); |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1455 } | 1455 } |
1456 | 1456 |
1457 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain
tInvalidationContainer) const | 1457 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain
tInvalidationContainer) const |
1458 { | 1458 { |
1459 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine
r); | 1459 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine
r); |
1460 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) | 1460 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) |
1461 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(box->dis
playItemClient()); | 1461 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(box->dis
playItemClient()); |
1462 } | 1462 } |
1463 | 1463 |
1464 } // namespace blink | 1464 } // namespace blink |
OLD | NEW |