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 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) { | 552 for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) { |
553 if (curr->isFloatingOrOutOfFlowPositioned()) | 553 if (curr->isFloatingOrOutOfFlowPositioned()) |
554 continue; | 554 continue; |
555 | 555 |
556 // We want to get the margin box in the inline direction, and then use o
ur font ascent/descent in the block | 556 // We want to get the margin box in the inline direction, and then use o
ur font ascent/descent in the block |
557 // direction (aligned to the root box's baseline). | 557 // direction (aligned to the root box's baseline). |
558 if (curr->isBox()) { | 558 if (curr->isBox()) { |
559 RenderBox* currBox = toRenderBox(curr); | 559 RenderBox* currBox = toRenderBox(curr); |
560 if (currBox->inlineBoxWrapper()) { | 560 if (currBox->inlineBoxWrapper()) { |
561 RootInlineBox* rootBox = currBox->inlineBoxWrapper()->root(); | 561 RootInlineBox* rootBox = currBox->inlineBoxWrapper()->root(); |
562 int logicalTop = rootBox->logicalTop() + (rootBox->renderer()->s
tyle(rootBox->isFirstLineStyle())->font().fontMetrics().ascent() - container->st
yle(rootBox->isFirstLineStyle())->font().fontMetrics().ascent()); | 562 int logicalTop = rootBox->logicalTop() + (rootBox->renderer().st
yle(rootBox->isFirstLineStyle())->font().fontMetrics().ascent() - container->sty
le(rootBox->isFirstLineStyle())->font().fontMetrics().ascent()); |
563 int logicalHeight = container->style(rootBox->isFirstLineStyle()
)->font().fontMetrics().height(); | 563 int logicalHeight = container->style(rootBox->isFirstLineStyle()
)->font().fontMetrics().height(); |
564 if (isHorizontal) | 564 if (isHorizontal) |
565 yield(FloatRect(currBox->inlineBoxWrapper()->x() - currBox->
marginLeft(), logicalTop, currBox->width() + currBox->marginWidth(), logicalHeig
ht)); | 565 yield(FloatRect(currBox->inlineBoxWrapper()->x() - currBox->
marginLeft(), logicalTop, currBox->width() + currBox->marginWidth(), logicalHeig
ht)); |
566 else | 566 else |
567 yield(FloatRect(logicalTop, currBox->inlineBoxWrapper()->y()
- currBox->marginTop(), logicalHeight, currBox->height() + currBox->marginHeigh
t())); | 567 yield(FloatRect(logicalTop, currBox->inlineBoxWrapper()->y()
- currBox->marginTop(), logicalHeight, currBox->height() + currBox->marginHeigh
t())); |
568 } | 568 } |
569 } else if (curr->isRenderInline()) { | 569 } else if (curr->isRenderInline()) { |
570 // If the child doesn't need line boxes either, then we can recur. | 570 // If the child doesn't need line boxes either, then we can recur. |
571 RenderInline* currInline = toRenderInline(curr); | 571 RenderInline* currInline = toRenderInline(curr); |
572 if (!currInline->alwaysCreateLineBoxes()) | 572 if (!currInline->alwaysCreateLineBoxes()) |
573 currInline->generateCulledLineBoxRects(yield, container); | 573 currInline->generateCulledLineBoxRects(yield, container); |
574 else { | 574 else { |
575 for (InlineFlowBox* childLine = currInline->firstLineBox(); chil
dLine; childLine = childLine->nextLineBox()) { | 575 for (InlineFlowBox* childLine = currInline->firstLineBox(); chil
dLine; childLine = childLine->nextLineBox()) { |
576 RootInlineBox* rootBox = childLine->root(); | 576 RootInlineBox* rootBox = childLine->root(); |
577 int logicalTop = rootBox->logicalTop() + (rootBox->renderer(
)->style(rootBox->isFirstLineStyle())->font().fontMetrics().ascent() - container
->style(rootBox->isFirstLineStyle())->font().fontMetrics().ascent()); | 577 int logicalTop = rootBox->logicalTop() + (rootBox->renderer(
).style(rootBox->isFirstLineStyle())->font().fontMetrics().ascent() - container-
>style(rootBox->isFirstLineStyle())->font().fontMetrics().ascent()); |
578 int logicalHeight = container->style(rootBox->isFirstLineSty
le())->font().fontMetrics().height(); | 578 int logicalHeight = container->style(rootBox->isFirstLineSty
le())->font().fontMetrics().height(); |
579 if (isHorizontal) | 579 if (isHorizontal) |
580 yield(FloatRect(childLine->x() - childLine->marginLogica
lLeft(), | 580 yield(FloatRect(childLine->x() - childLine->marginLogica
lLeft(), |
581 logicalTop, | 581 logicalTop, |
582 childLine->logicalWidth() + childLine->marginLogical
Left() + childLine->marginLogicalRight(), | 582 childLine->logicalWidth() + childLine->marginLogical
Left() + childLine->marginLogicalRight(), |
583 logicalHeight)); | 583 logicalHeight)); |
584 else | 584 else |
585 yield(FloatRect(logicalTop, | 585 yield(FloatRect(logicalTop, |
586 childLine->y() - childLine->marginLogicalLeft(), | 586 childLine->y() - childLine->marginLogicalLeft(), |
587 logicalHeight, | 587 logicalHeight, |
588 childLine->logicalWidth() + childLine->marginLogical
Left() + childLine->marginLogicalRight())); | 588 childLine->logicalWidth() + childLine->marginLogical
Left() + childLine->marginLogicalRight())); |
589 } | 589 } |
590 } | 590 } |
591 } else if (curr->isText()) { | 591 } else if (curr->isText()) { |
592 RenderText* currText = toRenderText(curr); | 592 RenderText* currText = toRenderText(curr); |
593 for (InlineTextBox* childText = currText->firstTextBox(); childText;
childText = childText->nextTextBox()) { | 593 for (InlineTextBox* childText = currText->firstTextBox(); childText;
childText = childText->nextTextBox()) { |
594 RootInlineBox* rootBox = childText->root(); | 594 RootInlineBox* rootBox = childText->root(); |
595 int logicalTop = rootBox->logicalTop() + (rootBox->renderer()->s
tyle(rootBox->isFirstLineStyle())->font().fontMetrics().ascent() - container->st
yle(rootBox->isFirstLineStyle())->font().fontMetrics().ascent()); | 595 int logicalTop = rootBox->logicalTop() + (rootBox->renderer().st
yle(rootBox->isFirstLineStyle())->font().fontMetrics().ascent() - container->sty
le(rootBox->isFirstLineStyle())->font().fontMetrics().ascent()); |
596 int logicalHeight = container->style(rootBox->isFirstLineStyle()
)->font().fontMetrics().height(); | 596 int logicalHeight = container->style(rootBox->isFirstLineStyle()
)->font().fontMetrics().height(); |
597 if (isHorizontal) | 597 if (isHorizontal) |
598 yield(FloatRect(childText->x(), logicalTop, childText->logic
alWidth(), logicalHeight)); | 598 yield(FloatRect(childText->x(), logicalTop, childText->logic
alWidth(), logicalHeight)); |
599 else | 599 else |
600 yield(FloatRect(logicalTop, childText->y(), logicalHeight, c
hildText->logicalWidth())); | 600 yield(FloatRect(logicalTop, childText->y(), logicalHeight, c
hildText->logicalWidth())); |
601 } | 601 } |
602 } | 602 } |
603 } | 603 } |
604 } | 604 } |
605 | 605 |
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1263 m_lineBoxes.dirtyLineBoxes(); | 1263 m_lineBoxes.dirtyLineBoxes(); |
1264 } | 1264 } |
1265 | 1265 |
1266 void RenderInline::deleteLineBoxTree() | 1266 void RenderInline::deleteLineBoxTree() |
1267 { | 1267 { |
1268 m_lineBoxes.deleteLineBoxTree(); | 1268 m_lineBoxes.deleteLineBoxTree(); |
1269 } | 1269 } |
1270 | 1270 |
1271 InlineFlowBox* RenderInline::createInlineFlowBox() | 1271 InlineFlowBox* RenderInline::createInlineFlowBox() |
1272 { | 1272 { |
1273 return new InlineFlowBox(this); | 1273 return new InlineFlowBox(*this); |
1274 } | 1274 } |
1275 | 1275 |
1276 InlineFlowBox* RenderInline::createAndAppendInlineFlowBox() | 1276 InlineFlowBox* RenderInline::createAndAppendInlineFlowBox() |
1277 { | 1277 { |
1278 setAlwaysCreateLineBoxes(); | 1278 setAlwaysCreateLineBoxes(); |
1279 InlineFlowBox* flowBox = createInlineFlowBox(); | 1279 InlineFlowBox* flowBox = createInlineFlowBox(); |
1280 m_lineBoxes.appendLineBox(flowBox); | 1280 m_lineBoxes.appendLineBox(flowBox); |
1281 return flowBox; | 1281 return flowBox; |
1282 } | 1282 } |
1283 | 1283 |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1572 container = this; | 1572 container = this; |
1573 | 1573 |
1574 FloatPoint absPos = container->localToAbsolute(); | 1574 FloatPoint absPos = container->localToAbsolute(); |
1575 region.bounds.setX(absPos.x() + region.bounds.x()); | 1575 region.bounds.setX(absPos.x() + region.bounds.x()); |
1576 region.bounds.setY(absPos.y() + region.bounds.y()); | 1576 region.bounds.setY(absPos.y() + region.bounds.y()); |
1577 | 1577 |
1578 regions.append(region); | 1578 regions.append(region); |
1579 } | 1579 } |
1580 | 1580 |
1581 } // namespace WebCore | 1581 } // namespace WebCore |
OLD | NEW |