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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 textBox->setIsText(isOnlyRun || text->document().inNoQuirksMode()); | 76 textBox->setIsText(isOnlyRun || text->document().inNoQuirksMode()); |
77 textBox->setDirOverride(run.dirOverride(text->style()->rtlOrdering() == Visu
alOrder)); | 77 textBox->setDirOverride(run.dirOverride(text->style()->rtlOrdering() == Visu
alOrder)); |
78 if (run.m_hasHyphen) | 78 if (run.m_hasHyphen) |
79 textBox->setHasHyphen(true); | 79 textBox->setHasHyphen(true); |
80 return textBox; | 80 return textBox; |
81 } | 81 } |
82 | 82 |
83 static inline void dirtyLineBoxesForRenderer(LayoutObject* o, bool fullLayout) | 83 static inline void dirtyLineBoxesForRenderer(LayoutObject* o, bool fullLayout) |
84 { | 84 { |
85 if (o->isText()) { | 85 if (o->isText()) { |
86 LayoutText* renderText = toLayoutText(o); | 86 LayoutText* layoutText = toLayoutText(o); |
87 renderText->dirtyOrDeleteLineBoxesIfNeeded(fullLayout); | 87 layoutText->dirtyOrDeleteLineBoxesIfNeeded(fullLayout); |
88 } else { | 88 } else { |
89 toLayoutInline(o)->dirtyLineBoxes(fullLayout); | 89 toLayoutInline(o)->dirtyLineBoxes(fullLayout); |
90 } | 90 } |
91 } | 91 } |
92 | 92 |
93 static bool parentIsConstructedOrHaveNext(InlineFlowBox* parentBox) | 93 static bool parentIsConstructedOrHaveNext(InlineFlowBox* parentBox) |
94 { | 94 { |
95 do { | 95 do { |
96 if (parentBox->isConstructed() || parentBox->nextOnLine()) | 96 if (parentBox->isConstructed() || parentBox->nextOnLine()) |
97 return true; | 97 return true; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 | 175 |
176 static bool reachedEndOfTextRenderer(const BidiRunList<BidiRun>& bidiRuns) | 176 static bool reachedEndOfTextRenderer(const BidiRunList<BidiRun>& bidiRuns) |
177 { | 177 { |
178 BidiRun* run = bidiRuns.logicallyLastRun(); | 178 BidiRun* run = bidiRuns.logicallyLastRun(); |
179 if (!run) | 179 if (!run) |
180 return true; | 180 return true; |
181 unsigned pos = run->stop(); | 181 unsigned pos = run->stop(); |
182 LayoutObject* r = run->m_object; | 182 LayoutObject* r = run->m_object; |
183 if (!r->isText() || r->isBR()) | 183 if (!r->isText() || r->isBR()) |
184 return false; | 184 return false; |
185 LayoutText* renderText = toLayoutText(r); | 185 LayoutText* layoutText = toLayoutText(r); |
186 unsigned length = renderText->textLength(); | 186 unsigned length = layoutText->textLength(); |
187 if (pos >= length) | 187 if (pos >= length) |
188 return true; | 188 return true; |
189 | 189 |
190 if (renderText->is8Bit()) | 190 if (layoutText->is8Bit()) |
191 return endsWithASCIISpaces(renderText->characters8(), pos, length); | 191 return endsWithASCIISpaces(layoutText->characters8(), pos, length); |
192 return endsWithASCIISpaces(renderText->characters16(), pos, length); | 192 return endsWithASCIISpaces(layoutText->characters16(), pos, length); |
193 } | 193 } |
194 | 194 |
195 RootInlineBox* LayoutBlockFlow::constructLine(BidiRunList<BidiRun>& bidiRuns, co
nst LineInfo& lineInfo) | 195 RootInlineBox* LayoutBlockFlow::constructLine(BidiRunList<BidiRun>& bidiRuns, co
nst LineInfo& lineInfo) |
196 { | 196 { |
197 ASSERT(bidiRuns.firstRun()); | 197 ASSERT(bidiRuns.firstRun()); |
198 | 198 |
199 bool rootHasSelectedChildren = false; | 199 bool rootHasSelectedChildren = false; |
200 InlineFlowBox* parentBox = 0; | 200 InlineFlowBox* parentBox = 0; |
201 int runCount = bidiRuns.runCount() - lineInfo.runsFromLeadingWhitespace(); | 201 int runCount = bidiRuns.runCount() - lineInfo.runsFromLeadingWhitespace(); |
202 for (BidiRun* r = bidiRuns.firstRun(); r; r = r->next()) { | 202 for (BidiRun* r = bidiRuns.firstRun(); r; r = r->next()) { |
(...skipping 1849 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2052 float logicalLeft = logicalLeftOffsetForLine(logicalHeight(), false).toFloat
(); | 2052 float logicalLeft = logicalLeftOffsetForLine(logicalHeight(), false).toFloat
(); |
2053 float availableLogicalWidth = logicalRightOffsetForLine(logicalHeight(), fal
se) - logicalLeft; | 2053 float availableLogicalWidth = logicalRightOffsetForLine(logicalHeight(), fal
se) - logicalLeft; |
2054 updateLogicalWidthForAlignment(textAlign, 0, 0, logicalLeft, totalLogicalWid
th, availableLogicalWidth, 0); | 2054 updateLogicalWidthForAlignment(textAlign, 0, 0, logicalLeft, totalLogicalWid
th, availableLogicalWidth, 0); |
2055 | 2055 |
2056 if (!style()->isLeftToRightDirection()) | 2056 if (!style()->isLeftToRightDirection()) |
2057 return logicalWidth() - logicalLeft; | 2057 return logicalWidth() - logicalLeft; |
2058 return logicalLeft; | 2058 return logicalLeft; |
2059 } | 2059 } |
2060 | 2060 |
2061 } | 2061 } |
OLD | NEW |