OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 } | 200 } |
201 } | 201 } |
202 | 202 |
203 // Now that we have a buffer full of characters, we want to get back
an array | 203 // Now that we have a buffer full of characters, we want to get back
an array |
204 // of glyph indices. This part involves calling into the platform-s
pecific | 204 // of glyph indices. This part involves calling into the platform-s
pecific |
205 // routine of our glyph map for actually filling in the page with th
e glyphs. | 205 // routine of our glyph map for actually filling in the page with th
e glyphs. |
206 // Success is not guaranteed. For example, Times fails to fill page
260, giving glyph data | 206 // Success is not guaranteed. For example, Times fails to fill page
260, giving glyph data |
207 // for only 128 out of 256 characters. | 207 // for only 128 out of 256 characters. |
208 bool haveGlyphs; | 208 bool haveGlyphs; |
209 if (!fontData->isSegmented()) { | 209 if (!fontData->isSegmented()) { |
210 m_page = GlyphPage::createForSingleFontData(this, static_cast<co
nst SimpleFontData*>(fontData)); | 210 m_page = GlyphPage::createForSingleFontData(this, toSimpleFontDa
ta(fontData)); |
211 haveGlyphs = fill(m_page.get(), 0, GlyphPage::size, buffer, buff
erLength, static_cast<const SimpleFontData*>(fontData)); | 211 haveGlyphs = fill(m_page.get(), 0, GlyphPage::size, buffer, buff
erLength, toSimpleFontData(fontData)); |
212 } else { | 212 } else { |
213 m_page = GlyphPage::createForMixedFontData(this); | 213 m_page = GlyphPage::createForMixedFontData(this); |
214 haveGlyphs = false; | 214 haveGlyphs = false; |
215 | 215 |
216 const SegmentedFontData* segmentedFontData = static_cast<const S
egmentedFontData*>(fontData); | 216 const SegmentedFontData* segmentedFontData = toSegmentedFontData
(fontData); |
217 for (int i = segmentedFontData->numRanges() - 1; i >= 0; i--) { | 217 for (int i = segmentedFontData->numRanges() - 1; i >= 0; i--) { |
218 const FontDataRange& range = segmentedFontData->rangeAt(i); | 218 const FontDataRange& range = segmentedFontData->rangeAt(i); |
219 // all this casting is to ensure all the parameters to min a
nd max have the same type, | 219 // all this casting is to ensure all the parameters to min a
nd max have the same type, |
220 // to avoid ambiguous template parameter errors on Windows | 220 // to avoid ambiguous template parameter errors on Windows |
221 int from = max(0, static_cast<int>(range.from()) - static_ca
st<int>(start)); | 221 int from = max(0, static_cast<int>(range.from()) - static_ca
st<int>(start)); |
222 int to = 1 + min(static_cast<int>(range.to()) - static_cast<
int>(start), static_cast<int>(GlyphPage::size) - 1); | 222 int to = 1 + min(static_cast<int>(range.to()) - static_cast<
int>(start), static_cast<int>(GlyphPage::size) - 1); |
223 if (from >= static_cast<int>(GlyphPage::size) || to <= 0) | 223 if (from >= static_cast<int>(GlyphPage::size) || to <= 0) |
224 continue; | 224 continue; |
225 | 225 |
226 // If this is a custom font needs to be loaded, do not fill | 226 // If this is a custom font needs to be loaded, do not fill |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 printf("\nPage %d:\n", it->key); | 414 printf("\nPage %d:\n", it->key); |
415 showGlyphPageTree(it->key); | 415 showGlyphPageTree(it->key); |
416 } | 416 } |
417 } | 417 } |
418 | 418 |
419 void showGlyphPageTree(unsigned pageNumber) | 419 void showGlyphPageTree(unsigned pageNumber) |
420 { | 420 { |
421 WebCore::GlyphPageTreeNode::getRoot(pageNumber)->showSubtree(); | 421 WebCore::GlyphPageTreeNode::getRoot(pageNumber)->showSubtree(); |
422 } | 422 } |
423 #endif | 423 #endif |
OLD | NEW |