Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: Source/core/layout/line/InlineFlowBox.cpp

Issue 1228633002: Remove unnecessary LayoutUnit -> float -> LayoutUnit conversions. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/layout/LayoutBlockFlowLine.cpp ('k') | Source/core/layout/line/InlineTextBox.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 continue; // Positioned placeholders don't affect calculations. 530 continue; // Positioned placeholders don't affect calculations.
531 531
532 InlineFlowBox* inlineFlowBox = curr->isInlineFlowBox() ? toInlineFlowBox (curr) : nullptr; 532 InlineFlowBox* inlineFlowBox = curr->isInlineFlowBox() ? toInlineFlowBox (curr) : nullptr;
533 533
534 bool affectsAscent = false; 534 bool affectsAscent = false;
535 bool affectsDescent = false; 535 bool affectsDescent = false;
536 536
537 // The verticalPositionForBox function returns the distance between the child box's baseline 537 // The verticalPositionForBox function returns the distance between the child box's baseline
538 // and the root box's baseline. The value is negative if the child box' s baseline is above the 538 // and the root box's baseline. The value is negative if the child box' s baseline is above the
539 // root box's baseline, and it is positive if the child box's baseline i s below the root box's baseline. 539 // root box's baseline, and it is positive if the child box's baseline i s below the root box's baseline.
540 curr->setLogicalTop(rootBox->verticalPositionForBox(curr, verticalPositi onCache).toFloat()); 540 curr->setLogicalTop(rootBox->verticalPositionForBox(curr, verticalPositi onCache));
541 541
542 int ascent = 0; 542 int ascent = 0;
543 int descent = 0; 543 int descent = 0;
544 rootBox->ascentAndDescentForBox(curr, textBoxDataMap, ascent, descent, a ffectsAscent, affectsDescent); 544 rootBox->ascentAndDescentForBox(curr, textBoxDataMap, ascent, descent, a ffectsAscent, affectsDescent);
545 545
546 LayoutUnit boxHeight = ascent + descent; 546 LayoutUnit boxHeight = ascent + descent;
547 if (curr->verticalAlign() == TOP) { 547 if (curr->verticalAlign() == TOP) {
548 if (maxPositionTop < boxHeight) 548 if (maxPositionTop < boxHeight)
549 maxPositionTop = boxHeight; 549 maxPositionTop = boxHeight;
550 } else if (curr->verticalAlign() == BOTTOM) { 550 } else if (curr->verticalAlign() == BOTTOM) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 adjustmentForChildrenWithSameLineHeightAndBaseline = logicalTop(); 590 adjustmentForChildrenWithSameLineHeightAndBaseline = logicalTop();
591 if (parent()) 591 if (parent())
592 adjustmentForChildrenWithSameLineHeightAndBaseline += (boxModelObjec t()->borderBefore() + boxModelObject()->paddingBefore()); 592 adjustmentForChildrenWithSameLineHeightAndBaseline += (boxModelObjec t()->borderBefore() + boxModelObject()->paddingBefore());
593 } 593 }
594 594
595 for (InlineBox* curr = firstChild(); curr; curr = curr->nextOnLine()) { 595 for (InlineBox* curr = firstChild(); curr; curr = curr->nextOnLine()) {
596 if (curr->layoutObject().isOutOfFlowPositioned()) 596 if (curr->layoutObject().isOutOfFlowPositioned())
597 continue; // Positioned placeholders don't affect calculations. 597 continue; // Positioned placeholders don't affect calculations.
598 598
599 if (descendantsHaveSameLineHeightAndBaseline()) { 599 if (descendantsHaveSameLineHeightAndBaseline()) {
600 curr->moveInBlockDirection(adjustmentForChildrenWithSameLineHeightAn dBaseline.toFloat()); 600 curr->moveInBlockDirection(adjustmentForChildrenWithSameLineHeightAn dBaseline);
601 continue; 601 continue;
602 } 602 }
603 603
604 InlineFlowBox* inlineFlowBox = curr->isInlineFlowBox() ? toInlineFlowBox (curr) : nullptr; 604 InlineFlowBox* inlineFlowBox = curr->isInlineFlowBox() ? toInlineFlowBox (curr) : nullptr;
605 bool childAffectsTopBottomPos = true; 605 bool childAffectsTopBottomPos = true;
606 if (curr->verticalAlign() == TOP) { 606 if (curr->verticalAlign() == TOP) {
607 curr->setLogicalTop(top.toFloat()); 607 curr->setLogicalTop(top);
608 } else if (curr->verticalAlign() == BOTTOM) { 608 } else if (curr->verticalAlign() == BOTTOM) {
609 curr->setLogicalTop((top + maxHeight - curr->lineHeight()).toFloat() ); 609 curr->setLogicalTop((top + maxHeight - curr->lineHeight()));
610 } else { 610 } else {
611 if (!strictMode && inlineFlowBox && !inlineFlowBox->hasTextChildren( ) && !curr->boxModelObject()->hasInlineDirectionBordersOrPadding() 611 if (!strictMode && inlineFlowBox && !inlineFlowBox->hasTextChildren( ) && !curr->boxModelObject()->hasInlineDirectionBordersOrPadding()
612 && !(inlineFlowBox->descendantsHaveSameLineHeightAndBaseline() & & inlineFlowBox->hasTextDescendants())) 612 && !(inlineFlowBox->descendantsHaveSameLineHeightAndBaseline() & & inlineFlowBox->hasTextDescendants()))
613 childAffectsTopBottomPos = false; 613 childAffectsTopBottomPos = false;
614 LayoutUnit posAdjust = maxAscent - curr->baselinePosition(baselineTy pe); 614 LayoutUnit posAdjust = maxAscent - curr->baselinePosition(baselineTy pe);
615 curr->setLogicalTop(curr->logicalTop() + top + posAdjust); 615 curr->setLogicalTop(curr->logicalTop() + top + posAdjust);
616 } 616 }
617 617
618 LayoutUnit newLogicalTop = curr->logicalTop(); 618 LayoutUnit newLogicalTop = curr->logicalTop();
619 LayoutUnit newLogicalTopIncludingMargins = newLogicalTop; 619 LayoutUnit newLogicalTopIncludingMargins = newLogicalTop;
(...skipping 12 matching lines...) Expand all
632 newLogicalTopIncludingMargins = newLogicalTop; 632 newLogicalTopIncludingMargins = newLogicalTop;
633 } else if (!curr->layoutObject().isBR()) { 633 } else if (!curr->layoutObject().isBR()) {
634 LayoutBox& box = toLayoutBox(curr->layoutObject()); 634 LayoutBox& box = toLayoutBox(curr->layoutObject());
635 newLogicalTopIncludingMargins = newLogicalTop; 635 newLogicalTopIncludingMargins = newLogicalTop;
636 LayoutUnit overSideMargin = curr->isHorizontal() ? box.marginTop() : box.marginRight(); 636 LayoutUnit overSideMargin = curr->isHorizontal() ? box.marginTop() : box.marginRight();
637 LayoutUnit underSideMargin = curr->isHorizontal() ? box.marginBottom () : box.marginLeft(); 637 LayoutUnit underSideMargin = curr->isHorizontal() ? box.marginBottom () : box.marginLeft();
638 newLogicalTop += overSideMargin; 638 newLogicalTop += overSideMargin;
639 boxHeightIncludingMargins += overSideMargin + underSideMargin; 639 boxHeightIncludingMargins += overSideMargin + underSideMargin;
640 } 640 }
641 641
642 curr->setLogicalTop(newLogicalTop.toFloat()); 642 curr->setLogicalTop(newLogicalTop);
643 643
644 if (childAffectsTopBottomPos) { 644 if (childAffectsTopBottomPos) {
645 if (curr->layoutObject().isRubyRun()) { 645 if (curr->layoutObject().isRubyRun()) {
646 // Treat the leading on the first and last lines of ruby runs as not being part of the overall lineTop/lineBottom. 646 // Treat the leading on the first and last lines of ruby runs as not being part of the overall lineTop/lineBottom.
647 // Really this is a workaround hack for the fact that ruby shoul d have been done as line layout and not done using 647 // Really this is a workaround hack for the fact that ruby shoul d have been done as line layout and not done using
648 // inline-block. 648 // inline-block.
649 if (layoutObject().style()->isFlippedLinesWritingMode() == (curr ->layoutObject().style()->rubyPosition() == RubyPositionAfter)) 649 if (layoutObject().style()->isFlippedLinesWritingMode() == (curr ->layoutObject().style()->rubyPosition() == RubyPositionAfter))
650 hasAnnotationsBefore = true; 650 hasAnnotationsBefore = true;
651 else 651 else
652 hasAnnotationsAfter = true; 652 hasAnnotationsAfter = true;
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
1309 ASSERT(child->prevOnLine() == prev); 1309 ASSERT(child->prevOnLine() == prev);
1310 prev = child; 1310 prev = child;
1311 } 1311 }
1312 ASSERT(prev == m_lastChild); 1312 ASSERT(prev == m_lastChild);
1313 #endif 1313 #endif
1314 } 1314 }
1315 1315
1316 #endif 1316 #endif
1317 1317
1318 } // namespace blink 1318 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutBlockFlowLine.cpp ('k') | Source/core/layout/line/InlineTextBox.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698