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 1069 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1080 LayoutTextInfo layoutTextInfo; | 1080 LayoutTextInfo layoutTextInfo; |
1081 VerticalPositionCache verticalPositionCache; | 1081 VerticalPositionCache verticalPositionCache; |
1082 | 1082 |
1083 // Pagination may require us to delete and re-create a line due to floats. | 1083 // Pagination may require us to delete and re-create a line due to floats. |
1084 // When this happens, | 1084 // When this happens, |
1085 // we need to store the pagination strut in the meantime. | 1085 // we need to store the pagination strut in the meantime. |
1086 LayoutUnit paginationStrutFromDeletedLine; | 1086 LayoutUnit paginationStrutFromDeletedLine; |
1087 | 1087 |
1088 LineBreaker lineBreaker(LineLayoutBlockFlow(this)); | 1088 LineBreaker lineBreaker(LineLayoutBlockFlow(this)); |
1089 | 1089 |
| 1090 // We avoid inline capacity to save the stack space. |
| 1091 WordMeasurements wordMeasurements; |
| 1092 wordMeasurements.reserveInitialCapacity(64); |
| 1093 |
1090 while (!endOfLine.atEnd()) { | 1094 while (!endOfLine.atEnd()) { |
1091 // The runs from the previous line should have been cleaned up. | 1095 // The runs from the previous line should have been cleaned up. |
1092 ASSERT(!resolver.runs().runCount()); | 1096 ASSERT(!resolver.runs().runCount()); |
1093 | 1097 |
1094 // FIXME: Is this check necessary before the first iteration or can it be | 1098 // FIXME: Is this check necessary before the first iteration or can it be |
1095 // moved to the end? | 1099 // moved to the end? |
1096 if (layoutState.endLine()) { | 1100 if (layoutState.endLine()) { |
1097 layoutState.setEndLineMatched(layoutState.endLineMatched() || | 1101 layoutState.setEndLineMatched(layoutState.endLineMatched() || |
1098 matchedEndLine(layoutState, resolver, | 1102 matchedEndLine(layoutState, resolver, |
1099 cleanLineStart, | 1103 cleanLineStart, |
1100 cleanLineBidiStatus)); | 1104 cleanLineBidiStatus)); |
1101 if (layoutState.endLineMatched()) { | 1105 if (layoutState.endLineMatched()) { |
1102 resolver.setPosition(InlineIterator(resolver.position().root(), 0, 0), | 1106 resolver.setPosition(InlineIterator(resolver.position().root(), 0, 0), |
1103 0); | 1107 0); |
1104 break; | 1108 break; |
1105 } | 1109 } |
1106 } | 1110 } |
1107 | 1111 |
1108 lineMidpointState.reset(); | 1112 lineMidpointState.reset(); |
1109 | 1113 |
1110 layoutState.lineInfo().setEmpty(true); | 1114 layoutState.lineInfo().setEmpty(true); |
1111 layoutState.lineInfo().resetRunsFromLeadingWhitespace(); | 1115 layoutState.lineInfo().resetRunsFromLeadingWhitespace(); |
1112 | 1116 |
1113 const InlineIterator previousEndofLine = endOfLine; | 1117 const InlineIterator previousEndofLine = endOfLine; |
1114 bool isNewUBAParagraph = layoutState.lineInfo().previousLineBrokeCleanly(); | 1118 bool isNewUBAParagraph = layoutState.lineInfo().previousLineBrokeCleanly(); |
1115 FloatingObject* lastFloatFromPreviousLine = | 1119 FloatingObject* lastFloatFromPreviousLine = |
1116 (containsFloats()) ? m_floatingObjects->set().back().get() : 0; | 1120 (containsFloats()) ? m_floatingObjects->set().back().get() : 0; |
1117 | 1121 |
1118 WordMeasurements wordMeasurements; | 1122 wordMeasurements.clear(); |
1119 endOfLine = lineBreaker.nextLineBreak(resolver, layoutState.lineInfo(), | 1123 endOfLine = lineBreaker.nextLineBreak(resolver, layoutState.lineInfo(), |
1120 layoutTextInfo, wordMeasurements); | 1124 layoutTextInfo, wordMeasurements); |
1121 layoutTextInfo.m_lineBreakIterator.resetPriorContext(); | 1125 layoutTextInfo.m_lineBreakIterator.resetPriorContext(); |
1122 if (resolver.position().atEnd()) { | 1126 if (resolver.position().atEnd()) { |
1123 // FIXME: We shouldn't be creating any runs in nextLineBreak to begin | 1127 // FIXME: We shouldn't be creating any runs in nextLineBreak to begin |
1124 // with! Once BidiRunList is separated from BidiResolver this will not be | 1128 // with! Once BidiRunList is separated from BidiResolver this will not be |
1125 // needed. | 1129 // needed. |
1126 resolver.runs().deleteRuns(); | 1130 resolver.runs().deleteRuns(); |
1127 resolver.markCurrentRunEmpty(); // FIXME: This can probably be replaced | 1131 resolver.markCurrentRunEmpty(); // FIXME: This can probably be replaced |
1128 // by an ASSERT (or just removed). | 1132 // by an ASSERT (or just removed). |
(...skipping 1458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2587 | 2591 |
2588 bool LayoutBlockFlow::paintedOutputOfObjectHasNoEffectRegardlessOfSize() const { | 2592 bool LayoutBlockFlow::paintedOutputOfObjectHasNoEffectRegardlessOfSize() const { |
2589 // LayoutBlockFlow is in charge of paint invalidation of the first line. | 2593 // LayoutBlockFlow is in charge of paint invalidation of the first line. |
2590 if (firstLineBox()) | 2594 if (firstLineBox()) |
2591 return false; | 2595 return false; |
2592 | 2596 |
2593 return LayoutBlock::paintedOutputOfObjectHasNoEffectRegardlessOfSize(); | 2597 return LayoutBlock::paintedOutputOfObjectHasNoEffectRegardlessOfSize(); |
2594 } | 2598 } |
2595 | 2599 |
2596 } // namespace blink | 2600 } // namespace blink |
OLD | NEW |