OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ight reserved. | 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ight reserved. |
4 * Copyright (C) 2010 Google Inc. All rights reserved. | 4 * Copyright (C) 2010 Google 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 517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 } | 528 } |
529 expansionOpportunityCount -= opportunitiesInRun; | 529 expansionOpportunityCount -= opportunitiesInRun; |
530 if (!expansionOpportunityCount) | 530 if (!expansionOpportunityCount) |
531 break; | 531 break; |
532 } | 532 } |
533 } | 533 } |
534 } | 534 } |
535 | 535 |
536 void RenderBlockFlow::updateLogicalWidthForAlignment(const ETextAlign& textAlign
, const RootInlineBox* rootInlineBox, BidiRun* trailingSpaceRun, float& logicalL
eft, float& totalLogicalWidth, float& availableLogicalWidth, int expansionOpport
unityCount) | 536 void RenderBlockFlow::updateLogicalWidthForAlignment(const ETextAlign& textAlign
, const RootInlineBox* rootInlineBox, BidiRun* trailingSpaceRun, float& logicalL
eft, float& totalLogicalWidth, float& availableLogicalWidth, int expansionOpport
unityCount) |
537 { | 537 { |
| 538 TextDirection direction; |
| 539 if (rootInlineBox && rootInlineBox->renderer().style()->unicodeBidi() == Pla
intext) |
| 540 direction = rootInlineBox->direction(); |
| 541 else |
| 542 direction = style()->direction(); |
| 543 |
538 // Armed with the total width of the line (without justification), | 544 // Armed with the total width of the line (without justification), |
539 // we now examine our text-align property in order to determine where to pos
ition the | 545 // we now examine our text-align property in order to determine where to pos
ition the |
540 // objects horizontally. The total width of the line can be increased if we
end up | 546 // objects horizontally. The total width of the line can be increased if we
end up |
541 // justifying text. | 547 // justifying text. |
542 switch (simplifiedTextAlign(textAlign, rootInlineBox)) { | 548 switch (textAlign) { |
543 case LEFT: | 549 case LEFT: |
| 550 case WEBKIT_LEFT: |
544 updateLogicalWidthForLeftAlignedBlock(style()->isLeftToRightDirection(),
trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); | 551 updateLogicalWidthForLeftAlignedBlock(style()->isLeftToRightDirection(),
trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); |
545 break; | 552 break; |
546 case RIGHT: | 553 case RIGHT: |
| 554 case WEBKIT_RIGHT: |
547 updateLogicalWidthForRightAlignedBlock(style()->isLeftToRightDirection()
, trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); | 555 updateLogicalWidthForRightAlignedBlock(style()->isLeftToRightDirection()
, trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); |
548 break; | 556 break; |
549 case CENTER: | 557 case CENTER: |
| 558 case WEBKIT_CENTER: |
550 updateLogicalWidthForCenterAlignedBlock(style()->isLeftToRightDirection(
), trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); | 559 updateLogicalWidthForCenterAlignedBlock(style()->isLeftToRightDirection(
), trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); |
551 break; | 560 break; |
552 case JUSTIFY: | 561 case JUSTIFY: |
553 adjustInlineDirectionLineBounds(expansionOpportunityCount, logicalLeft,
availableLogicalWidth); | 562 adjustInlineDirectionLineBounds(expansionOpportunityCount, logicalLeft,
availableLogicalWidth); |
554 if (expansionOpportunityCount) { | 563 if (expansionOpportunityCount) { |
555 if (trailingSpaceRun) { | 564 if (trailingSpaceRun) { |
556 totalLogicalWidth -= trailingSpaceRun->m_box->logicalWidth(); | 565 totalLogicalWidth -= trailingSpaceRun->m_box->logicalWidth(); |
557 trailingSpaceRun->m_box->setLogicalWidth(0); | 566 trailingSpaceRun->m_box->setLogicalWidth(0); |
558 } | 567 } |
559 } else { | 568 break; |
560 ETextAlign adjustedTextAlign = style()->isLeftToRightDirection() ? L
EFT : RIGHT; | |
561 updateLogicalWidthForAlignment(adjustedTextAlign, rootInlineBox, tra
ilingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth, expansionO
pportunityCount); | |
562 } | 569 } |
| 570 // Fall through |
| 571 case TASTART: |
| 572 if (direction == LTR) |
| 573 updateLogicalWidthForLeftAlignedBlock(style()->isLeftToRightDirectio
n(), trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); |
| 574 else |
| 575 updateLogicalWidthForRightAlignedBlock(style()->isLeftToRightDirecti
on(), trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); |
563 break; | 576 break; |
564 default: | 577 case TAEND: |
565 ASSERT_NOT_REACHED(); | 578 if (direction == LTR) |
| 579 updateLogicalWidthForRightAlignedBlock(style()->isLeftToRightDirecti
on(), trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); |
| 580 else |
| 581 updateLogicalWidthForLeftAlignedBlock(style()->isLeftToRightDirectio
n(), trailingSpaceRun, logicalLeft, totalLogicalWidth, availableLogicalWidth); |
566 break; | 582 break; |
567 } | 583 } |
568 } | 584 } |
569 | 585 |
570 static void updateLogicalInlinePositions(RenderBlockFlow* block, float& lineLogi
calLeft, float& lineLogicalRight, float& availableLogicalWidth, bool firstLine,
IndentTextOrNot shouldIndentText, LayoutUnit boxLogicalHeight) | 586 static void updateLogicalInlinePositions(RenderBlockFlow* block, float& lineLogi
calLeft, float& lineLogicalRight, float& availableLogicalWidth, bool firstLine,
IndentTextOrNot shouldIndentText, LayoutUnit boxLogicalHeight) |
571 { | 587 { |
572 LayoutUnit lineLogicalHeight = block->minLineHeightForReplacedRenderer(first
Line, boxLogicalHeight); | 588 LayoutUnit lineLogicalHeight = block->minLineHeightForReplacedRenderer(first
Line, boxLogicalHeight); |
573 lineLogicalLeft = block->logicalLeftOffsetForLine(block->logicalHeight(), sh
ouldIndentText == IndentText, lineLogicalHeight); | 589 lineLogicalLeft = block->logicalLeftOffsetForLine(block->logicalHeight(), sh
ouldIndentText == IndentText, lineLogicalHeight); |
574 // FIXME: This shouldn't be pixel snapped once multicolumn layout has been u
pdated to correctly carry over subpixel values. | 590 // FIXME: This shouldn't be pixel snapped once multicolumn layout has been u
pdated to correctly carry over subpixel values. |
575 // https://bugs.webkit.org/show_bug.cgi?id=105461 | 591 // https://bugs.webkit.org/show_bug.cgi?id=105461 |
(...skipping 1858 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2434 float logicalLeft = logicalLeftOffsetForLine(logicalHeight(), false); | 2450 float logicalLeft = logicalLeftOffsetForLine(logicalHeight(), false); |
2435 float availableLogicalWidth = logicalRightOffsetForLine(logicalHeight(), fal
se) - logicalLeft; | 2451 float availableLogicalWidth = logicalRightOffsetForLine(logicalHeight(), fal
se) - logicalLeft; |
2436 updateLogicalWidthForAlignment(textAlign, 0, 0, logicalLeft, totalLogicalWid
th, availableLogicalWidth, 0); | 2452 updateLogicalWidthForAlignment(textAlign, 0, 0, logicalLeft, totalLogicalWid
th, availableLogicalWidth, 0); |
2437 | 2453 |
2438 if (!style()->isLeftToRightDirection()) | 2454 if (!style()->isLeftToRightDirection()) |
2439 return logicalWidth() - logicalLeft; | 2455 return logicalWidth() - logicalLeft; |
2440 return logicalLeft; | 2456 return logicalLeft; |
2441 } | 2457 } |
2442 | 2458 |
2443 } | 2459 } |
OLD | NEW |