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. | 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. |
4 * All right reserved. | 4 * All right reserved. |
5 * Copyright (C) 2010 Google Inc. All rights reserved. | 5 * Copyright (C) 2010 Google Inc. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 availableLogicalWidth); | 693 availableLogicalWidth); |
694 if (expansionOpportunityCount) { | 694 if (expansionOpportunityCount) { |
695 if (trailingSpaceRun) { | 695 if (trailingSpaceRun) { |
696 totalLogicalWidth -= trailingSpaceRun->m_box->logicalWidth(); | 696 totalLogicalWidth -= trailingSpaceRun->m_box->logicalWidth(); |
697 trailingSpaceRun->m_box->setLogicalWidth(LayoutUnit()); | 697 trailingSpaceRun->m_box->setLogicalWidth(LayoutUnit()); |
698 } | 698 } |
699 break; | 699 break; |
700 } | 700 } |
701 // Fall through | 701 // Fall through |
702 case ETextAlign::Start: | 702 case ETextAlign::Start: |
703 if (direction == LTR) | 703 if (direction == TextDirection::Ltr) |
704 updateLogicalWidthForLeftAlignedBlock( | 704 updateLogicalWidthForLeftAlignedBlock( |
705 style()->isLeftToRightDirection(), trailingSpaceRun, logicalLeft, | 705 style()->isLeftToRightDirection(), trailingSpaceRun, logicalLeft, |
706 totalLogicalWidth, availableLogicalWidth); | 706 totalLogicalWidth, availableLogicalWidth); |
707 else | 707 else |
708 updateLogicalWidthForRightAlignedBlock( | 708 updateLogicalWidthForRightAlignedBlock( |
709 style()->isLeftToRightDirection(), trailingSpaceRun, logicalLeft, | 709 style()->isLeftToRightDirection(), trailingSpaceRun, logicalLeft, |
710 totalLogicalWidth, availableLogicalWidth); | 710 totalLogicalWidth, availableLogicalWidth); |
711 break; | 711 break; |
712 case ETextAlign::End: | 712 case ETextAlign::End: |
713 if (direction == LTR) | 713 if (direction == TextDirection::Ltr) |
714 updateLogicalWidthForRightAlignedBlock( | 714 updateLogicalWidthForRightAlignedBlock( |
715 style()->isLeftToRightDirection(), trailingSpaceRun, logicalLeft, | 715 style()->isLeftToRightDirection(), trailingSpaceRun, logicalLeft, |
716 totalLogicalWidth, availableLogicalWidth); | 716 totalLogicalWidth, availableLogicalWidth); |
717 else | 717 else |
718 updateLogicalWidthForLeftAlignedBlock( | 718 updateLogicalWidthForLeftAlignedBlock( |
719 style()->isLeftToRightDirection(), trailingSpaceRun, logicalLeft, | 719 style()->isLeftToRightDirection(), trailingSpaceRun, logicalLeft, |
720 totalLogicalWidth, availableLogicalWidth); | 720 totalLogicalWidth, availableLogicalWidth); |
721 break; | 721 break; |
722 } | 722 } |
723 if (shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) | 723 if (shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1134 // This is a short-cut for empty lines. | 1134 // This is a short-cut for empty lines. |
1135 if (layoutState.lineInfo().isEmpty()) { | 1135 if (layoutState.lineInfo().isEmpty()) { |
1136 ASSERT(!paginationStrutFromDeletedLine); | 1136 ASSERT(!paginationStrutFromDeletedLine); |
1137 if (lastRootBox()) | 1137 if (lastRootBox()) |
1138 lastRootBox()->setLineBreakInfo(endOfLine.getLineLayoutItem(), | 1138 lastRootBox()->setLineBreakInfo(endOfLine.getLineLayoutItem(), |
1139 endOfLine.offset(), resolver.status()); | 1139 endOfLine.offset(), resolver.status()); |
1140 resolver.runs().deleteRuns(); | 1140 resolver.runs().deleteRuns(); |
1141 } else { | 1141 } else { |
1142 VisualDirectionOverride override = | 1142 VisualDirectionOverride override = |
1143 (styleToUse.rtlOrdering() == EOrder::Visual | 1143 (styleToUse.rtlOrdering() == EOrder::Visual |
1144 ? (styleToUse.direction() == LTR ? VisualLeftToRightOverride | 1144 ? (styleToUse.direction() == TextDirection::Ltr |
1145 : VisualRightToLeftOverride) | 1145 ? VisualLeftToRightOverride |
| 1146 : VisualRightToLeftOverride) |
1146 : NoVisualOverride); | 1147 : NoVisualOverride); |
1147 if (isNewUBAParagraph && styleToUse.unicodeBidi() == Plaintext && | 1148 if (isNewUBAParagraph && styleToUse.unicodeBidi() == Plaintext && |
1148 !resolver.context()->parent()) { | 1149 !resolver.context()->parent()) { |
1149 TextDirection direction = determinePlaintextDirectionality( | 1150 TextDirection direction = determinePlaintextDirectionality( |
1150 resolver.position().root(), resolver.position().getLineLayoutItem(), | 1151 resolver.position().root(), resolver.position().getLineLayoutItem(), |
1151 resolver.position().offset()); | 1152 resolver.position().offset()); |
1152 resolver.setStatus( | 1153 resolver.setStatus( |
1153 BidiStatus(direction, isOverride(styleToUse.unicodeBidi()))); | 1154 BidiStatus(direction, isOverride(styleToUse.unicodeBidi()))); |
1154 } | 1155 } |
1155 // FIXME: This ownership is reversed. We should own the BidiRunList and | 1156 // FIXME: This ownership is reversed. We should own the BidiRunList and |
(...skipping 1194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2350 fullstopCharacter}; | 2351 fullstopCharacter}; |
2351 DEFINE_STATIC_LOCAL(AtomicString, fullstopCharacterStr, | 2352 DEFINE_STATIC_LOCAL(AtomicString, fullstopCharacterStr, |
2352 (fullStopString, fullStopStringLength)); | 2353 (fullStopString, fullStopStringLength)); |
2353 DEFINE_STATIC_LOCAL(AtomicString, ellipsisStr, | 2354 DEFINE_STATIC_LOCAL(AtomicString, ellipsisStr, |
2354 (&horizontalEllipsisCharacter, 1)); | 2355 (&horizontalEllipsisCharacter, 1)); |
2355 AtomicString& selectedEllipsisStr = ellipsisStr; | 2356 AtomicString& selectedEllipsisStr = ellipsisStr; |
2356 | 2357 |
2357 const Font& firstLineFont = firstLineStyle()->font(); | 2358 const Font& firstLineFont = firstLineStyle()->font(); |
2358 // FIXME: We should probably not hard-code the direction here. | 2359 // FIXME: We should probably not hard-code the direction here. |
2359 // https://crbug.com/333004 | 2360 // https://crbug.com/333004 |
2360 TextDirection ellipsisDirection = LTR; | 2361 TextDirection ellipsisDirection = TextDirection::Ltr; |
2361 float firstLineEllipsisWidth = 0; | 2362 float firstLineEllipsisWidth = 0; |
2362 float ellipsisWidth = 0; | 2363 float ellipsisWidth = 0; |
2363 | 2364 |
2364 // As per CSS3 http://www.w3.org/TR/2003/CR-css3-text-20030514/ sequence of | 2365 // As per CSS3 http://www.w3.org/TR/2003/CR-css3-text-20030514/ sequence of |
2365 // three Full Stops (002E) can be used. | 2366 // three Full Stops (002E) can be used. |
2366 const SimpleFontData* fontData = firstLineFont.primaryFont(); | 2367 const SimpleFontData* fontData = firstLineFont.primaryFont(); |
2367 DCHECK(fontData); | 2368 DCHECK(fontData); |
2368 if (fontData && fontData->glyphForCharacter(horizontalEllipsisCharacter)) { | 2369 if (fontData && fontData->glyphForCharacter(horizontalEllipsisCharacter)) { |
2369 firstLineEllipsisWidth = firstLineFont.width( | 2370 firstLineEllipsisWidth = firstLineFont.width( |
2370 constructTextRun(firstLineFont, &horizontalEllipsisCharacter, 1, | 2371 constructTextRun(firstLineFont, &horizontalEllipsisCharacter, 1, |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2511 | 2512 |
2512 bool LayoutBlockFlow::paintedOutputOfObjectHasNoEffectRegardlessOfSize() const { | 2513 bool LayoutBlockFlow::paintedOutputOfObjectHasNoEffectRegardlessOfSize() const { |
2513 // LayoutBlockFlow is in charge of paint invalidation of the first line. | 2514 // LayoutBlockFlow is in charge of paint invalidation of the first line. |
2514 if (firstLineBox()) | 2515 if (firstLineBox()) |
2515 return false; | 2516 return false; |
2516 | 2517 |
2517 return LayoutBlock::paintedOutputOfObjectHasNoEffectRegardlessOfSize(); | 2518 return LayoutBlock::paintedOutputOfObjectHasNoEffectRegardlessOfSize(); |
2518 } | 2519 } |
2519 | 2520 |
2520 } // namespace blink | 2521 } // namespace blink |
OLD | NEW |