OLD | NEW |
1 /* | 1 /* |
2 * This file is part of the WebKit project. | 2 * This file is part of the WebKit project. |
3 * | 3 * |
4 * Copyright (C) 2006 Apple Computer, Inc. | 4 * Copyright (C) 2006 Apple Computer, Inc. |
5 * 2006 Alexander Kellett <lypanov@kde.org> | 5 * 2006 Alexander Kellett <lypanov@kde.org> |
6 * 2006 Oliver Hunt <ojh16@student.canterbury.ac.nz> | 6 * 2006 Oliver Hunt <ojh16@student.canterbury.ac.nz> |
7 * 2007 Nikolas Zimmermann <zimmermann@kde.org> | 7 * 2007 Nikolas Zimmermann <zimmermann@kde.org> |
8 * 2008 Rob Buis <buis@kde.org> | 8 * 2008 Rob Buis <buis@kde.org> |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 | 157 |
158 // Don't use relativeBBox here, as it's unites the selection rects. Makes it
hard | 158 // Don't use relativeBBox here, as it's unites the selection rects. Makes it
hard |
159 // to spot errors, if there are any using WebInspector. Individually feed th
em into 'rects'. | 159 // to spot errors, if there are any using WebInspector. Individually feed th
em into 'rects'. |
160 for (InlineRunBox* runBox = firstLineBox(); runBox; runBox = runBox->nextLin
eBox()) { | 160 for (InlineRunBox* runBox = firstLineBox(); runBox; runBox = runBox->nextLin
eBox()) { |
161 ASSERT(runBox->isInlineFlowBox()); | 161 ASSERT(runBox->isInlineFlowBox()); |
162 | 162 |
163 InlineFlowBox* flowBox = static_cast<InlineFlowBox*>(runBox); | 163 InlineFlowBox* flowBox = static_cast<InlineFlowBox*>(runBox); |
164 for (InlineBox* box = flowBox->firstChild(); box; box = box->nextOnLine(
)) { | 164 for (InlineBox* box = flowBox->firstChild(); box; box = box->nextOnLine(
)) { |
165 FloatRect boxRect(box->xPos(), box->yPos(), box->width(), box->heigh
t()); | 165 FloatRect boxRect(box->xPos(), box->yPos(), box->width(), box->heigh
t()); |
166 boxRect.move(narrowPrecisionToFloat(absPos.x() - htmlParentCtm.e()),
narrowPrecisionToFloat(absPos.y() - htmlParentCtm.f())); | 166 boxRect.move(narrowPrecisionToFloat(absPos.x() - htmlParentCtm.e()),
narrowPrecisionToFloat(absPos.y() - htmlParentCtm.f())); |
| 167 // FIXME: broken with CSS transforms |
167 rects.append(enclosingIntRect(absoluteTransform().mapRect(boxRect)))
; | 168 rects.append(enclosingIntRect(absoluteTransform().mapRect(boxRect)))
; |
168 } | 169 } |
169 } | 170 } |
170 } | 171 } |
171 | 172 |
| 173 void RenderSVGText::absoluteQuads(Vector<FloatQuad>& quads, bool topLevel) |
| 174 { |
| 175 RenderSVGRoot* root = findSVGRootObject(parent()); |
| 176 if (!root) |
| 177 return; |
| 178 |
| 179 FloatPoint absPos = localToAbsolute(); |
| 180 |
| 181 AffineTransform htmlParentCtm = root->RenderContainer::absoluteTransform(); |
| 182 |
| 183 // Don't use relativeBBox here, as it's unites the selection rects. Makes it
hard |
| 184 // to spot errors, if there are any using WebInspector. Individually feed th
em into 'rects'. |
| 185 for (InlineRunBox* runBox = firstLineBox(); runBox; runBox = runBox->nextLin
eBox()) { |
| 186 ASSERT(runBox->isInlineFlowBox()); |
| 187 |
| 188 InlineFlowBox* flowBox = static_cast<InlineFlowBox*>(runBox); |
| 189 for (InlineBox* box = flowBox->firstChild(); box; box = box->nextOnLine(
)) { |
| 190 FloatRect boxRect(box->xPos(), box->yPos(), box->width(), box->heigh
t()); |
| 191 boxRect.move(narrowPrecisionToFloat(absPos.x() - htmlParentCtm.e()),
narrowPrecisionToFloat(absPos.y() - htmlParentCtm.f())); |
| 192 // FIXME: broken with CSS transforms |
| 193 quads.append(absoluteTransform().mapRect(boxRect)); |
| 194 } |
| 195 } |
| 196 } |
| 197 |
172 void RenderSVGText::paint(PaintInfo& paintInfo, int, int) | 198 void RenderSVGText::paint(PaintInfo& paintInfo, int, int) |
173 { | 199 { |
174 RenderObject::PaintInfo pi(paintInfo); | 200 RenderObject::PaintInfo pi(paintInfo); |
175 pi.rect = absoluteTransform().inverse().mapRect(pi.rect); | 201 pi.rect = absoluteTransform().inverse().mapRect(pi.rect); |
176 RenderBlock::paint(pi, 0, 0); | 202 RenderBlock::paint(pi, 0, 0); |
177 } | 203 } |
178 | 204 |
179 FloatRect RenderSVGText::relativeBBox(bool includeStroke) const | 205 FloatRect RenderSVGText::relativeBBox(bool includeStroke) const |
180 { | 206 { |
181 FloatRect repaintRect; | 207 FloatRect repaintRect; |
(...skipping 25 matching lines...) Expand all Loading... |
207 | 233 |
208 repaintRect.move(xPos(), yPos()); | 234 repaintRect.move(xPos(), yPos()); |
209 return repaintRect; | 235 return repaintRect; |
210 } | 236 } |
211 | 237 |
212 } | 238 } |
213 | 239 |
214 #endif // ENABLE(SVG) | 240 #endif // ENABLE(SVG) |
215 | 241 |
216 // vim:ts=4:noet | 242 // vim:ts=4:noet |
OLD | NEW |