OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 } | 182 } |
183 } | 183 } |
184 | 184 |
185 LayoutBlock* cb = o.containingBlock(); | 185 LayoutBlock* cb = o.containingBlock(); |
186 bool adjustForTableCells = cb ? cb->isTableCell() : false; | 186 bool adjustForTableCells = cb ? cb->isTableCell() : false; |
187 | 187 |
188 LayoutRect r; | 188 LayoutRect r; |
189 if (o.isText()) { | 189 if (o.isText()) { |
190 // FIXME: Would be better to dump the bounding box x and y rather than t
he first run's x and y, but that would involve updating | 190 // FIXME: Would be better to dump the bounding box x and y rather than t
he first run's x and y, but that would involve updating |
191 // many test results. | 191 // many test results. |
192 const RenderText& text = toRenderText(o); | 192 const LayoutText& text = toLayoutText(o); |
193 IntRect linesBox = text.linesBoundingBox(); | 193 IntRect linesBox = text.linesBoundingBox(); |
194 r = LayoutRect(IntRect(text.firstRunX(), text.firstRunY(), linesBox.widt
h(), linesBox.height())); | 194 r = LayoutRect(IntRect(text.firstRunX(), text.firstRunY(), linesBox.widt
h(), linesBox.height())); |
195 if (adjustForTableCells && !text.firstTextBox()) | 195 if (adjustForTableCells && !text.firstTextBox()) |
196 adjustForTableCells = false; | 196 adjustForTableCells = false; |
197 } else if (o.isLayoutInline()) { | 197 } else if (o.isLayoutInline()) { |
198 // FIXME: Would be better not to just dump 0, 0 as the x and y here. | 198 // FIXME: Would be better not to just dump 0, 0 as the x and y here. |
199 const LayoutInline& inlineFlow = toLayoutInline(o); | 199 const LayoutInline& inlineFlow = toLayoutInline(o); |
200 r = LayoutRect(IntRect(0, 0, inlineFlow.linesBoundingBox().width(), inli
neFlow.linesBoundingBox().height())); | 200 r = LayoutRect(IntRect(0, 0, inlineFlow.linesBoundingBox().width(), inli
neFlow.linesBoundingBox().height())); |
201 adjustForTableCells = false; | 201 adjustForTableCells = false; |
202 } else if (o.isTableCell()) { | 202 } else if (o.isTableCell()) { |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 if (havePrevious) | 397 if (havePrevious) |
398 ts << ","; | 398 ts << ","; |
399 ts << " positioned child"; | 399 ts << " positioned child"; |
400 } | 400 } |
401 | 401 |
402 if (needsLayout) | 402 if (needsLayout) |
403 ts << ")"; | 403 ts << ")"; |
404 } | 404 } |
405 } | 405 } |
406 | 406 |
407 static void writeTextRun(TextStream& ts, const RenderText& o, const InlineTextBo
x& run) | 407 static void writeTextRun(TextStream& ts, const LayoutText& o, const InlineTextBo
x& run) |
408 { | 408 { |
409 // FIXME: For now use an "enclosingIntRect" model for x, y and logicalWidth,
although this makes it harder | 409 // FIXME: For now use an "enclosingIntRect" model for x, y and logicalWidth,
although this makes it harder |
410 // to detect any changes caused by the conversion to floating point. :( | 410 // to detect any changes caused by the conversion to floating point. :( |
411 int x = run.x(); | 411 int x = run.x(); |
412 int y = run.y(); | 412 int y = run.y(); |
413 int logicalWidth = ceilf(run.left() + run.logicalWidth()) - x; | 413 int logicalWidth = ceilf(run.left() + run.logicalWidth()) - x; |
414 | 414 |
415 // FIXME: Table cell adjustment is temporary until results can be updated. | 415 // FIXME: Table cell adjustment is temporary until results can be updated. |
416 if (o.containingBlock()->isTableCell()) | 416 if (o.containingBlock()->isTableCell()) |
417 y -= toLayoutTableCell(o.containingBlock())->intrinsicPaddingBefore(); | 417 y -= toLayoutTableCell(o.containingBlock())->intrinsicPaddingBefore(); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 writeSVGImage(ts, toLayoutSVGImage(o), indent); | 463 writeSVGImage(ts, toLayoutSVGImage(o), indent); |
464 return; | 464 return; |
465 } | 465 } |
466 | 466 |
467 writeIndent(ts, indent); | 467 writeIndent(ts, indent); |
468 | 468 |
469 LayoutTreeAsText::writeLayoutObject(ts, o, behavior); | 469 LayoutTreeAsText::writeLayoutObject(ts, o, behavior); |
470 ts << "\n"; | 470 ts << "\n"; |
471 | 471 |
472 if (o.isText() && !o.isBR()) { | 472 if (o.isText() && !o.isBR()) { |
473 const RenderText& text = toRenderText(o); | 473 const LayoutText& text = toLayoutText(o); |
474 for (InlineTextBox* box = text.firstTextBox(); box; box = box->nextTextB
ox()) { | 474 for (InlineTextBox* box = text.firstTextBox(); box; box = box->nextTextB
ox()) { |
475 writeIndent(ts, indent + 1); | 475 writeIndent(ts, indent + 1); |
476 writeTextRun(ts, text, *box); | 476 writeTextRun(ts, text, *box); |
477 } | 477 } |
478 } | 478 } |
479 | 479 |
480 for (LayoutObject* child = o.slowFirstChild(); child; child = child->nextSib
ling()) { | 480 for (LayoutObject* child = o.slowFirstChild(); child; child = child->nextSib
ling()) { |
481 if (child->hasLayer()) | 481 if (child->hasLayer()) |
482 continue; | 482 continue; |
483 write(ts, *child, indent + 1, behavior); | 483 write(ts, *child, indent + 1, behavior); |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
745 return externalRepresentation(toLayoutBox(renderer), behavior | LayoutAsText
ShowAllLayers); | 745 return externalRepresentation(toLayoutBox(renderer), behavior | LayoutAsText
ShowAllLayers); |
746 } | 746 } |
747 | 747 |
748 static void writeCounterValuesFromChildren(TextStream& stream, LayoutObject* par
ent, bool& isFirstCounter) | 748 static void writeCounterValuesFromChildren(TextStream& stream, LayoutObject* par
ent, bool& isFirstCounter) |
749 { | 749 { |
750 for (LayoutObject* child = parent->slowFirstChild(); child; child = child->n
extSibling()) { | 750 for (LayoutObject* child = parent->slowFirstChild(); child; child = child->n
extSibling()) { |
751 if (child->isCounter()) { | 751 if (child->isCounter()) { |
752 if (!isFirstCounter) | 752 if (!isFirstCounter) |
753 stream << " "; | 753 stream << " "; |
754 isFirstCounter = false; | 754 isFirstCounter = false; |
755 String str(toRenderText(child)->text()); | 755 String str(toLayoutText(child)->text()); |
756 stream << str; | 756 stream << str; |
757 } | 757 } |
758 } | 758 } |
759 } | 759 } |
760 | 760 |
761 String counterValueForElement(Element* element) | 761 String counterValueForElement(Element* element) |
762 { | 762 { |
763 // Make sure the element is not freed during the layout. | 763 // Make sure the element is not freed during the layout. |
764 RefPtrWillBeRawPtr<Element> protector(element); | 764 RefPtrWillBeRawPtr<Element> protector(element); |
765 element->document().updateLayout(); | 765 element->document().updateLayout(); |
(...skipping 14 matching lines...) Expand all Loading... |
780 element->document().updateLayout(); | 780 element->document().updateLayout(); |
781 | 781 |
782 LayoutObject* renderer = element->renderer(); | 782 LayoutObject* renderer = element->renderer(); |
783 if (!renderer || !renderer->isListItem()) | 783 if (!renderer || !renderer->isListItem()) |
784 return String(); | 784 return String(); |
785 | 785 |
786 return toLayoutListItem(renderer)->markerText(); | 786 return toLayoutListItem(renderer)->markerText(); |
787 } | 787 } |
788 | 788 |
789 } // namespace blink | 789 } // namespace blink |
OLD | NEW |