| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 bool isPrinting = renderer()->document()->printing(); | 44 bool isPrinting = renderer()->document()->printing(); |
| 45 bool hasSelection = !isPrinting && selectionState() != RenderObject::Selecti
onNone; | 45 bool hasSelection = !isPrinting && selectionState() != RenderObject::Selecti
onNone; |
| 46 | 46 |
| 47 PaintInfo childPaintInfo(paintInfo); | 47 PaintInfo childPaintInfo(paintInfo); |
| 48 if (hasSelection) { | 48 if (hasSelection) { |
| 49 for (InlineBox* child = firstChild(); child; child = child->nextOnLine()
) { | 49 for (InlineBox* child = firstChild(); child; child = child->nextOnLine()
) { |
| 50 if (child->isSVGInlineTextBox()) | 50 if (child->isSVGInlineTextBox()) |
| 51 toSVGInlineTextBox(child)->paintSelectionBackground(childPaintIn
fo); | 51 toSVGInlineTextBox(child)->paintSelectionBackground(childPaintIn
fo); |
| 52 else if (child->isSVGInlineFlowBox()) | 52 else if (child->isSVGInlineFlowBox()) |
| 53 static_cast<SVGInlineFlowBox*>(child)->paintSelectionBackground(
childPaintInfo); | 53 toSVGInlineFlowBox(child)->paintSelectionBackground(childPaintIn
fo); |
| 54 } | 54 } |
| 55 } | 55 } |
| 56 | 56 |
| 57 SVGRenderingContext renderingContext(boxRenderer, paintInfo, SVGRenderingCon
text::SaveGraphicsContext); | 57 SVGRenderingContext renderingContext(boxRenderer, paintInfo, SVGRenderingCon
text::SaveGraphicsContext); |
| 58 if (renderingContext.isRenderingPrepared()) { | 58 if (renderingContext.isRenderingPrepared()) { |
| 59 for (InlineBox* child = firstChild(); child; child = child->nextOnLine()
) { | 59 for (InlineBox* child = firstChild(); child; child = child->nextOnLine()
) { |
| 60 if (child->isSVGInlineTextBox()) | 60 if (child->isSVGInlineTextBox()) |
| 61 SVGInlineFlowBox::computeTextMatchMarkerRectForRenderer(toRender
SVGInlineText(toSVGInlineTextBox(child)->textRenderer())); | 61 SVGInlineFlowBox::computeTextMatchMarkerRectForRenderer(toRender
SVGInlineText(toSVGInlineTextBox(child)->textRenderer())); |
| 62 | 62 |
| 63 child->paint(paintInfo, LayoutPoint(), 0, 0); | 63 child->paint(paintInfo, LayoutPoint(), 0, 0); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 if (child->isSVGInlineTextBox()) { | 105 if (child->isSVGInlineTextBox()) { |
| 106 ASSERT(child->renderer()); | 106 ASSERT(child->renderer()); |
| 107 ASSERT(child->renderer()->isSVGInlineText()); | 107 ASSERT(child->renderer()->isSVGInlineText()); |
| 108 characterLayout.layoutInlineTextBox(toSVGInlineTextBox(child)); | 108 characterLayout.layoutInlineTextBox(toSVGInlineTextBox(child)); |
| 109 } else { | 109 } else { |
| 110 // Skip generated content. | 110 // Skip generated content. |
| 111 Node* node = child->renderer()->node(); | 111 Node* node = child->renderer()->node(); |
| 112 if (!node) | 112 if (!node) |
| 113 continue; | 113 continue; |
| 114 | 114 |
| 115 ASSERT_WITH_SECURITY_IMPLICATION(child->isInlineFlowBox()); | 115 SVGInlineFlowBox* flowBox = toSVGInlineFlowBox(child); |
| 116 | |
| 117 SVGInlineFlowBox* flowBox = static_cast<SVGInlineFlowBox*>(child); | |
| 118 bool isTextPath = node->hasTagName(SVGNames::textPathTag); | 116 bool isTextPath = node->hasTagName(SVGNames::textPathTag); |
| 119 if (isTextPath) { | 117 if (isTextPath) { |
| 120 // Build text chunks for all <textPath> children, using the line
layout algorithm. | 118 // Build text chunks for all <textPath> children, using the line
layout algorithm. |
| 121 // This is needeed as text-anchor is just an additional startOff
set for text paths. | 119 // This is needeed as text-anchor is just an additional startOff
set for text paths. |
| 122 SVGTextLayoutEngine lineLayout(characterLayout.layoutAttributes(
)); | 120 SVGTextLayoutEngine lineLayout(characterLayout.layoutAttributes(
)); |
| 123 layoutCharactersInTextBoxes(flowBox, lineLayout); | 121 layoutCharactersInTextBoxes(flowBox, lineLayout); |
| 124 | 122 |
| 125 characterLayout.beginTextPathLayout(child->renderer(), lineLayou
t); | 123 characterLayout.beginTextPathLayout(child->renderer(), lineLayou
t); |
| 126 } | 124 } |
| 127 | 125 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 145 boxRect = textBox->calculateBoundaries(); | 143 boxRect = textBox->calculateBoundaries(); |
| 146 textBox->setX(boxRect.x()); | 144 textBox->setX(boxRect.x()); |
| 147 textBox->setY(boxRect.y()); | 145 textBox->setY(boxRect.y()); |
| 148 textBox->setLogicalWidth(boxRect.width()); | 146 textBox->setLogicalWidth(boxRect.width()); |
| 149 textBox->setLogicalHeight(boxRect.height()); | 147 textBox->setLogicalHeight(boxRect.height()); |
| 150 } else { | 148 } else { |
| 151 // Skip generated content. | 149 // Skip generated content. |
| 152 if (!child->renderer()->node()) | 150 if (!child->renderer()->node()) |
| 153 continue; | 151 continue; |
| 154 | 152 |
| 155 ASSERT_WITH_SECURITY_IMPLICATION(child->isInlineFlowBox()); | 153 SVGInlineFlowBox* flowBox = toSVGInlineFlowBox(child); |
| 156 | |
| 157 SVGInlineFlowBox* flowBox = static_cast<SVGInlineFlowBox*>(child); | |
| 158 layoutChildBoxes(flowBox); | 154 layoutChildBoxes(flowBox); |
| 159 | 155 |
| 160 boxRect = flowBox->calculateBoundaries(); | 156 boxRect = flowBox->calculateBoundaries(); |
| 161 flowBox->setX(boxRect.x()); | 157 flowBox->setX(boxRect.x()); |
| 162 flowBox->setY(boxRect.y()); | 158 flowBox->setY(boxRect.y()); |
| 163 flowBox->setLogicalWidth(boxRect.width()); | 159 flowBox->setLogicalWidth(boxRect.width()); |
| 164 flowBox->setLogicalHeight(boxRect.height()); | 160 flowBox->setLogicalHeight(boxRect.height()); |
| 165 } | 161 } |
| 166 if (childRect) | 162 if (childRect) |
| 167 childRect->unite(boxRect); | 163 childRect->unite(boxRect); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 } | 299 } |
| 304 } | 300 } |
| 305 | 301 |
| 306 void SVGRootInlineBox::reorderValueLists(Vector<SVGTextLayoutAttributes*>& attri
butes) | 302 void SVGRootInlineBox::reorderValueLists(Vector<SVGTextLayoutAttributes*>& attri
butes) |
| 307 { | 303 { |
| 308 Vector<InlineBox*> leafBoxesInLogicalOrder; | 304 Vector<InlineBox*> leafBoxesInLogicalOrder; |
| 309 collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder, reverseInlineBoxRang
eAndValueListsIfNeeded, &attributes); | 305 collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder, reverseInlineBoxRang
eAndValueListsIfNeeded, &attributes); |
| 310 } | 306 } |
| 311 | 307 |
| 312 } // namespace WebCore | 308 } // namespace WebCore |
| OLD | NEW |