| 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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 SVGTextPathChunkBuilder textPathChunkLayoutBuilder; | 184 SVGTextPathChunkBuilder textPathChunkLayoutBuilder; |
| 185 textPathChunkLayoutBuilder.processTextChunks(lineLayout.m_lineLayoutBoxes); | 185 textPathChunkLayoutBuilder.processTextChunks(lineLayout.m_lineLayoutBoxes); |
| 186 | 186 |
| 187 m_textPathStartOffset += textPathChunkLayoutBuilder.totalTextAnchorShift(); | 187 m_textPathStartOffset += textPathChunkLayoutBuilder.totalTextAnchorShift(); |
| 188 m_textPathCurrentOffset = m_textPathStartOffset; | 188 m_textPathCurrentOffset = m_textPathStartOffset; |
| 189 | 189 |
| 190 // Eventually handle textLength adjustments. | 190 // Eventually handle textLength adjustments. |
| 191 SVGLengthAdjustType lengthAdjust = SVGLengthAdjustUnknown; | 191 SVGLengthAdjustType lengthAdjust = SVGLengthAdjustUnknown; |
| 192 float desiredTextLength = 0; | 192 float desiredTextLength = 0; |
| 193 | 193 |
| 194 if (SVGTextContentElement* textContentElement = SVGTextContentElement::eleme
ntFromLayoutObject(LineLayoutAPIShim::layoutObjectFrom(textPath))) { | 194 if (SVGTextContentElement* textContentElement = SVGTextContentElement::eleme
ntFromLineLayoutItem(textPath)) { |
| 195 SVGLengthContext lengthContext(textContentElement); | 195 SVGLengthContext lengthContext(textContentElement); |
| 196 lengthAdjust = textContentElement->lengthAdjust()->currentValue()->enumV
alue(); | 196 lengthAdjust = textContentElement->lengthAdjust()->currentValue()->enumV
alue(); |
| 197 if (textContentElement->textLengthIsSpecifiedByUser()) | 197 if (textContentElement->textLengthIsSpecifiedByUser()) |
| 198 desiredTextLength = textContentElement->textLength()->currentValue()
->value(lengthContext); | 198 desiredTextLength = textContentElement->textLength()->currentValue()
->value(lengthContext); |
| 199 else | 199 else |
| 200 desiredTextLength = 0; | 200 desiredTextLength = 0; |
| 201 } | 201 } |
| 202 | 202 |
| 203 if (!desiredTextLength) | 203 if (!desiredTextLength) |
| 204 return; | 204 return; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 layoutTextOnLineOrPath(textBox, textLineLayout, style); | 238 layoutTextOnLineOrPath(textBox, textLineLayout, style); |
| 239 | 239 |
| 240 if (m_inPathLayout) | 240 if (m_inPathLayout) |
| 241 return; | 241 return; |
| 242 | 242 |
| 243 m_lineLayoutBoxes.append(textBox); | 243 m_lineLayoutBoxes.append(textBox); |
| 244 } | 244 } |
| 245 | 245 |
| 246 static bool definesTextLengthWithSpacing(const InlineFlowBox* start) | 246 static bool definesTextLengthWithSpacing(const InlineFlowBox* start) |
| 247 { | 247 { |
| 248 SVGTextContentElement* textContentElement = SVGTextContentElement::elementFr
omLayoutObject(&start->layoutObject()); | 248 SVGTextContentElement* textContentElement = SVGTextContentElement::elementFr
omLineLayoutItem(start->lineLayoutItem()); |
| 249 return textContentElement | 249 return textContentElement |
| 250 && textContentElement->lengthAdjust()->currentValue()->enumValue() == SV
GLengthAdjustSpacing | 250 && textContentElement->lengthAdjust()->currentValue()->enumValue() == SV
GLengthAdjustSpacing |
| 251 && textContentElement->textLengthIsSpecifiedByUser(); | 251 && textContentElement->textLengthIsSpecifiedByUser(); |
| 252 } | 252 } |
| 253 | 253 |
| 254 void SVGTextLayoutEngine::layoutCharactersInTextBoxes(InlineFlowBox* start) | 254 void SVGTextLayoutEngine::layoutCharactersInTextBoxes(InlineFlowBox* start) |
| 255 { | 255 { |
| 256 bool textLengthSpacingInEffect = m_textLengthSpacingInEffect || definesTextL
engthWithSpacing(start); | 256 bool textLengthSpacingInEffect = m_textLengthSpacingInEffect || definesTextL
engthWithSpacing(start); |
| 257 TemporaryChange<bool> textLengthSpacingScope(m_textLengthSpacingInEffect, te
xtLengthSpacingInEffect); | 257 TemporaryChange<bool> textLengthSpacingScope(m_textLengthSpacingInEffect, te
xtLengthSpacingInEffect); |
| 258 | 258 |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 } | 551 } |
| 552 | 552 |
| 553 if (!didStartTextFragment) | 553 if (!didStartTextFragment) |
| 554 return; | 554 return; |
| 555 | 555 |
| 556 // Close last open fragment, if needed. | 556 // Close last open fragment, if needed. |
| 557 recordTextFragment(textBox); | 557 recordTextFragment(textBox); |
| 558 } | 558 } |
| 559 | 559 |
| 560 } // namespace blink | 560 } // namespace blink |
| OLD | NEW |