OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006 Oliver Hunt <ojh16@student.canterbury.ac.nz> | 2 * Copyright (C) 2006 Oliver Hunt <ojh16@student.canterbury.ac.nz> |
3 * Copyright (C) 2006 Apple Computer Inc. | 3 * Copyright (C) 2006 Apple Computer Inc. |
4 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org> | 4 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org> |
5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
6 * Copyright (C) 2011 Torch Mobile (Beijing) CO. Ltd. All rights reserved. | 6 * Copyright (C) 2011 Torch Mobile (Beijing) CO. Ltd. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 reorderValueLists(); | 60 reorderValueLists(); |
61 | 61 |
62 // Perform SVG text layout phase two (see SVGTextLayoutEngine for details). | 62 // Perform SVG text layout phase two (see SVGTextLayoutEngine for details). |
63 SVGTextLayoutEngine characterLayout(descendantTextNodes); | 63 SVGTextLayoutEngine characterLayout(descendantTextNodes); |
64 characterLayout.layoutCharactersInTextBoxes(this); | 64 characterLayout.layoutCharactersInTextBoxes(this); |
65 | 65 |
66 // Perform SVG text layout phase three (see SVGTextChunkBuilder for details). | 66 // Perform SVG text layout phase three (see SVGTextChunkBuilder for details). |
67 characterLayout.finishLayout(); | 67 characterLayout.finishLayout(); |
68 | 68 |
69 // Perform SVG text layout phase four | 69 // Perform SVG text layout phase four |
70 // Position & resize all SVGInlineText/FlowBoxes in the inline box tree, resiz
e the root box as well as the LayoutSVGText parent block. | 70 // Position & resize all SVGInlineText/FlowBoxes in the inline box tree, |
| 71 // resize the root box as well as the LayoutSVGText parent block. |
71 LayoutRect childRect; | 72 LayoutRect childRect; |
72 layoutChildBoxes(this, &childRect); | 73 layoutChildBoxes(this, &childRect); |
73 layoutRootBox(childRect); | 74 layoutRootBox(childRect); |
74 } | 75 } |
75 | 76 |
76 void SVGRootInlineBox::layoutChildBoxes(InlineFlowBox* start, | 77 void SVGRootInlineBox::layoutChildBoxes(InlineFlowBox* start, |
77 LayoutRect* childRect) { | 78 LayoutRect* childRect) { |
78 for (InlineBox* child = start->firstChild(); child; | 79 for (InlineBox* child = start->firstChild(); child; |
79 child = child->nextOnLine()) { | 80 child = child->nextOnLine()) { |
80 LayoutRect boxRect; | 81 LayoutRect boxRect; |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 // that the metrics map within the layoutObjects belonging to the | 186 // that the metrics map within the layoutObjects belonging to the |
186 // InlineBoxes are reordered as well. | 187 // InlineBoxes are reordered as well. |
187 while (true) { | 188 while (true) { |
188 if (first == last || first == --last) | 189 if (first == last || first == --last) |
189 return; | 190 return; |
190 | 191 |
191 if ((*last)->isSVGInlineTextBox() && (*first)->isSVGInlineTextBox()) { | 192 if ((*last)->isSVGInlineTextBox() && (*first)->isSVGInlineTextBox()) { |
192 SVGInlineTextBox* firstTextBox = toSVGInlineTextBox(*first); | 193 SVGInlineTextBox* firstTextBox = toSVGInlineTextBox(*first); |
193 SVGInlineTextBox* lastTextBox = toSVGInlineTextBox(*last); | 194 SVGInlineTextBox* lastTextBox = toSVGInlineTextBox(*last); |
194 | 195 |
195 // Reordering is only necessary for BiDi text that is _absolutely_ positio
ned. | 196 // Reordering is only necessary for BiDi text that is _absolutely_ |
| 197 // positioned. |
196 if (firstTextBox->len() == 1 && firstTextBox->len() == lastTextBox->len()) | 198 if (firstTextBox->len() == 1 && firstTextBox->len() == lastTextBox->len()) |
197 swapPositioningValuesInTextBoxes(firstTextBox, lastTextBox); | 199 swapPositioningValuesInTextBoxes(firstTextBox, lastTextBox); |
198 } | 200 } |
199 | 201 |
200 InlineBox* temp = *first; | 202 InlineBox* temp = *first; |
201 *first = *last; | 203 *first = *last; |
202 *last = temp; | 204 *last = temp; |
203 ++first; | 205 ++first; |
204 } | 206 } |
205 } | 207 } |
(...skipping 14 matching lines...) Expand all Loading... |
220 continue; | 222 continue; |
221 if (leaf->nodeAtPoint(result, locationInContainer, accumulatedOffset, | 223 if (leaf->nodeAtPoint(result, locationInContainer, accumulatedOffset, |
222 lineTop, lineBottom)) | 224 lineTop, lineBottom)) |
223 return true; | 225 return true; |
224 } | 226 } |
225 | 227 |
226 return false; | 228 return false; |
227 } | 229 } |
228 | 230 |
229 } // namespace blink | 231 } // namespace blink |
OLD | NEW |