OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 Google Inc. All rights reserved. | 2 * Copyright (c) 2012 Google Inc. All rights reserved. |
3 * Copyright (C) 2013 BlackBerry Limited. All rights reserved. | 3 * Copyright (C) 2013 BlackBerry Limited. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 template <typename T> | 65 template <typename T> |
66 class HarfBuzzScopedPtr { | 66 class HarfBuzzScopedPtr { |
67 STACK_ALLOCATED(); | 67 STACK_ALLOCATED(); |
68 WTF_MAKE_NONCOPYABLE(HarfBuzzScopedPtr); | 68 WTF_MAKE_NONCOPYABLE(HarfBuzzScopedPtr); |
69 | 69 |
70 public: | 70 public: |
71 typedef void (*DestroyFunction)(T*); | 71 typedef void (*DestroyFunction)(T*); |
72 | 72 |
73 HarfBuzzScopedPtr(T* ptr, DestroyFunction destroy) | 73 HarfBuzzScopedPtr(T* ptr, DestroyFunction destroy) |
74 : m_ptr(ptr), m_destroy(destroy) { | 74 : m_ptr(ptr), m_destroy(destroy) { |
75 ASSERT(m_destroy); | 75 DCHECK(m_destroy); |
76 } | 76 } |
77 ~HarfBuzzScopedPtr() { | 77 ~HarfBuzzScopedPtr() { |
78 if (m_ptr) | 78 if (m_ptr) |
79 (*m_destroy)(m_ptr); | 79 (*m_destroy)(m_ptr); |
80 } | 80 } |
81 | 81 |
82 T* get() { return m_ptr; } | 82 T* get() { return m_ptr; } |
83 void set(T* ptr) { m_ptr = ptr; } | 83 void set(T* ptr) { m_ptr = ptr; } |
84 | 84 |
85 private: | 85 private: |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 | 249 |
250 if (currentClusterResult == Shaped && !isLastResort) { | 250 if (currentClusterResult == Shaped && !isLastResort) { |
251 // Now it's clear that we need to continue processing. | 251 // Now it's clear that we need to continue processing. |
252 if (!fontCycleQueued) { | 252 if (!fontCycleQueued) { |
253 rangeData->holesQueue.push_back( | 253 rangeData->holesQueue.push_back( |
254 HolesQueueItem(HolesQueueNextFont, 0, 0)); | 254 HolesQueueItem(HolesQueueNextFont, 0, 0)); |
255 fontCycleQueued = true; | 255 fontCycleQueued = true; |
256 } | 256 } |
257 | 257 |
258 // Here we need to put character positions. | 258 // Here we need to put character positions. |
259 ASSERT(numCharacters); | 259 DCHECK(numCharacters); |
260 rangeData->holesQueue.push_back( | 260 rangeData->holesQueue.push_back( |
261 HolesQueueItem(HolesQueueRange, startIndex, numCharacters)); | 261 HolesQueueItem(HolesQueueRange, startIndex, numCharacters)); |
262 } | 262 } |
263 | 263 |
264 // If numCharacters is 0, that means we hit a NotDef before shaping the | 264 // If numCharacters is 0, that means we hit a NotDef before shaping the |
265 // whole grapheme. We do not append it here. For the next glyph we | 265 // whole grapheme. We do not append it here. For the next glyph we |
266 // encounter, atChange will be true, and the characters corresponding to | 266 // encounter, atChange will be true, and the characters corresponding to |
267 // the grapheme will be added to the TODO queue again, attempting to | 267 // the grapheme will be added to the TODO queue again, attempting to |
268 // shape the whole grapheme with the next font. | 268 // shape the whole grapheme with the next font. |
269 // When we're getting here with the last resort font, we have no other | 269 // When we're getting here with the last resort font, we have no other |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 return false; | 304 return false; |
305 | 305 |
306 hint.clear(); | 306 hint.clear(); |
307 | 307 |
308 size_t numCharsAdded = 0; | 308 size_t numCharsAdded = 0; |
309 for (auto it = holesQueue.begin(); it != holesQueue.end(); ++it) { | 309 for (auto it = holesQueue.begin(); it != holesQueue.end(); ++it) { |
310 if (it->m_action == HolesQueueNextFont) | 310 if (it->m_action == HolesQueueNextFont) |
311 break; | 311 break; |
312 | 312 |
313 UChar32 hintChar; | 313 UChar32 hintChar; |
314 RELEASE_ASSERT(it->m_startIndex + it->m_numCharacters <= m_textLength); | 314 CHECK_LE(it->m_startIndex + it->m_numCharacters, m_textLength); |
315 UTF16TextIterator iterator(m_text + it->m_startIndex, it->m_numCharacters); | 315 UTF16TextIterator iterator(m_text + it->m_startIndex, it->m_numCharacters); |
316 while (iterator.consume(hintChar)) { | 316 while (iterator.consume(hintChar)) { |
317 hint.push_back(hintChar); | 317 hint.push_back(hintChar); |
318 numCharsAdded++; | 318 numCharsAdded++; |
319 iterator.advance(); | 319 iterator.advance(); |
320 } | 320 } |
321 } | 321 } |
322 return numCharsAdded > 0; | 322 return numCharsAdded > 0; |
323 } | 323 } |
324 | 324 |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
701 } | 701 } |
702 return result.release(); | 702 return result.release(); |
703 } | 703 } |
704 | 704 |
705 PassRefPtr<ShapeResult> HarfBuzzShaper::shape(const Font* font, | 705 PassRefPtr<ShapeResult> HarfBuzzShaper::shape(const Font* font, |
706 TextDirection direction) const { | 706 TextDirection direction) const { |
707 return shape(font, direction, 0, m_textLength); | 707 return shape(font, direction, 0, m_textLength); |
708 } | 708 } |
709 | 709 |
710 } // namespace blink | 710 } // namespace blink |
OLD | NEW |