OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/fonts/shaping/ShapeResultBuffer.h" | 5 #include "platform/fonts/shaping/ShapeResultBuffer.h" |
6 | 6 |
7 #include "platform/fonts/CharacterRange.h" | 7 #include "platform/fonts/CharacterRange.h" |
8 #include "platform/fonts/GlyphBuffer.h" | 8 #include "platform/fonts/GlyphBuffer.h" |
9 #include "platform/fonts/SimpleFontData.h" | 9 #include "platform/fonts/SimpleFontData.h" |
10 #include "platform/fonts/shaping/ShapeResultInlineHeaders.h" | 10 #include "platform/fonts/shaping/ShapeResultInlineHeaders.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 | 198 |
199 ASSERT(!glyphBuffer->hasVerticalOffsets()); | 199 ASSERT(!glyphBuffer->hasVerticalOffsets()); |
200 | 200 |
201 return advance; | 201 return advance; |
202 } | 202 } |
203 | 203 |
204 float ShapeResultBuffer::fillGlyphBuffer(GlyphBuffer* glyphBuffer, const TextRun
& textRun, | 204 float ShapeResultBuffer::fillGlyphBuffer(GlyphBuffer* glyphBuffer, const TextRun
& textRun, |
205 unsigned from, unsigned to) const | 205 unsigned from, unsigned to) const |
206 { | 206 { |
207 // Fast path: full run with no vertical offsets | 207 // Fast path: full run with no vertical offsets |
208 if (!from && to == static_cast<unsigned>(textRun.length()) && !hasVerticalOf
fsets()) | 208 if (!from && to == textRun.length() && !hasVerticalOffsets()) |
209 return fillFastHorizontalGlyphBuffer(glyphBuffer, textRun.direction()); | 209 return fillFastHorizontalGlyphBuffer(glyphBuffer, textRun.direction()); |
210 | 210 |
211 float advance = 0; | 211 float advance = 0; |
212 | 212 |
213 if (textRun.rtl()) { | 213 if (textRun.rtl()) { |
214 unsigned wordOffset = textRun.length(); | 214 unsigned wordOffset = textRun.length(); |
215 for (unsigned j = 0; j < m_results.size(); j++) { | 215 for (unsigned j = 0; j < m_results.size(); j++) { |
216 unsigned resolvedIndex = m_results.size() - 1 - j; | 216 unsigned resolvedIndex = m_results.size() - 1 - j; |
217 const RefPtr<const ShapeResult>& wordResult = m_results[resolvedInde
x]; | 217 const RefPtr<const ShapeResult>& wordResult = m_results[resolvedInde
x]; |
218 for (unsigned i = 0; i < wordResult->m_runs.size(); i++) { | 218 for (unsigned i = 0; i < wordResult->m_runs.size(); i++) { |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 totalOffset += offsetForWord; | 405 totalOffset += offsetForWord; |
406 if (targetX >= 0 && targetX <= wordResult->width()) | 406 if (targetX >= 0 && targetX <= wordResult->width()) |
407 return totalOffset; | 407 return totalOffset; |
408 targetX -= wordResult->width(); | 408 targetX -= wordResult->width(); |
409 } | 409 } |
410 } | 410 } |
411 return totalOffset; | 411 return totalOffset; |
412 } | 412 } |
413 | 413 |
414 } // namespace blink | 414 } // namespace blink |
OLD | NEW |