OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved. |
3 * | 3 * |
4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
8 * | 8 * |
9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 GlyphBuffer glyphBuffer; | 60 GlyphBuffer glyphBuffer; |
61 unsigned metricsLength = m_simpleWidthIterator->advance(m_textPosition + 1,
&glyphBuffer); | 61 unsigned metricsLength = m_simpleWidthIterator->advance(m_textPosition + 1,
&glyphBuffer); |
62 if (!metricsLength) { | 62 if (!metricsLength) { |
63 m_currentMetrics = SVGTextMetrics(); | 63 m_currentMetrics = SVGTextMetrics(); |
64 return; | 64 return; |
65 } | 65 } |
66 | 66 |
67 float currentWidth = m_simpleWidthIterator->runWidthSoFar() - m_totalWidth; | 67 float currentWidth = m_simpleWidthIterator->runWidthSoFar() - m_totalWidth; |
68 m_totalWidth = m_simpleWidthIterator->runWidthSoFar(); | 68 m_totalWidth = m_simpleWidthIterator->runWidthSoFar(); |
69 | 69 |
70 #if ENABLE(SVG_FONTS) | 70 Glyph glyphId = glyphBuffer.glyphAt(0); |
71 m_currentMetrics = SVGTextMetrics(m_text, m_textPosition, metricsLength, cur
rentWidth, m_simpleWidthIterator->lastGlyphName()); | 71 m_currentMetrics = SVGTextMetrics(m_text, m_textPosition, metricsLength, cur
rentWidth, glyphId); |
72 #else | |
73 m_currentMetrics = SVGTextMetrics(m_text, m_textPosition, metricsLength, cur
rentWidth, emptyString()); | |
74 #endif | |
75 } | 72 } |
76 | 73 |
77 void SVGTextMetricsBuilder::advanceComplexText() | 74 void SVGTextMetricsBuilder::advanceComplexText() |
78 { | 75 { |
79 unsigned metricsLength = currentCharacterStartsSurrogatePair() ? 2 : 1; | 76 unsigned metricsLength = currentCharacterStartsSurrogatePair() ? 2 : 1; |
80 m_currentMetrics = SVGTextMetrics::measureCharacterRange(m_text, m_textPosit
ion, metricsLength); | 77 m_currentMetrics = SVGTextMetrics::measureCharacterRange(m_text, m_textPosit
ion, metricsLength); |
81 m_complexStartToCurrentMetrics = SVGTextMetrics::measureCharacterRange(m_tex
t, 0, m_textPosition + metricsLength); | 78 m_complexStartToCurrentMetrics = SVGTextMetrics::measureCharacterRange(m_tex
t, 0, m_textPosition + metricsLength); |
82 ASSERT(m_currentMetrics.length() == metricsLength); | 79 ASSERT(m_currentMetrics.length() == metricsLength); |
83 | 80 |
84 // Frequent case for Arabic text: when measuring a single character the arab
ic isolated form is taken | 81 // Frequent case for Arabic text: when measuring a single character the arab
ic isolated form is taken |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 } | 217 } |
221 | 218 |
222 void SVGTextMetricsBuilder::buildMetricsAndLayoutAttributes(RenderSVGText* textR
oot, RenderSVGInlineText* stopAtLeaf, SVGCharacterDataMap& allCharactersMap) | 219 void SVGTextMetricsBuilder::buildMetricsAndLayoutAttributes(RenderSVGText* textR
oot, RenderSVGInlineText* stopAtLeaf, SVGCharacterDataMap& allCharactersMap) |
223 { | 220 { |
224 ASSERT(textRoot); | 221 ASSERT(textRoot); |
225 MeasureTextData data(&allCharactersMap); | 222 MeasureTextData data(&allCharactersMap); |
226 walkTree(textRoot, stopAtLeaf, &data); | 223 walkTree(textRoot, stopAtLeaf, &data); |
227 } | 224 } |
228 | 225 |
229 } | 226 } |
OLD | NEW |