OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2011. 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 21 matching lines...) Expand all Loading... |
32 #include "platform/graphics/Path.h" | 32 #include "platform/graphics/Path.h" |
33 #include "wtf/HashMap.h" | 33 #include "wtf/HashMap.h" |
34 | 34 |
35 namespace WebCore { | 35 namespace WebCore { |
36 | 36 |
37 static void updatePathFromCircleElement(SVGElement* element, Path& path) | 37 static void updatePathFromCircleElement(SVGElement* element, Path& path) |
38 { | 38 { |
39 SVGCircleElement* circle = toSVGCircleElement(element); | 39 SVGCircleElement* circle = toSVGCircleElement(element); |
40 | 40 |
41 SVGLengthContext lengthContext(element); | 41 SVGLengthContext lengthContext(element); |
42 float r = circle->rCurrentValue().value(lengthContext); | 42 float r = circle->r()->currentValue()->value(lengthContext); |
43 if (r > 0) | 43 if (r > 0) |
44 path.addEllipse(FloatRect(circle->cxCurrentValue().value(lengthContext)
- r, circle->cyCurrentValue().value(lengthContext) - r, r * 2, r * 2)); | 44 path.addEllipse(FloatRect(circle->cx()->currentValue()->value(lengthCont
ext) - r, circle->cy()->currentValue()->value(lengthContext) - r, r * 2, r * 2))
; |
45 } | 45 } |
46 | 46 |
47 static void updatePathFromEllipseElement(SVGElement* element, Path& path) | 47 static void updatePathFromEllipseElement(SVGElement* element, Path& path) |
48 { | 48 { |
49 SVGEllipseElement* ellipse = toSVGEllipseElement(element); | 49 SVGEllipseElement* ellipse = toSVGEllipseElement(element); |
50 | 50 |
51 SVGLengthContext lengthContext(element); | 51 SVGLengthContext lengthContext(element); |
52 float rx = ellipse->rxCurrentValue().value(lengthContext); | 52 float rx = ellipse->rx()->currentValue()->value(lengthContext); |
53 if (rx <= 0) | 53 if (rx <= 0) |
54 return; | 54 return; |
55 float ry = ellipse->ryCurrentValue().value(lengthContext); | 55 float ry = ellipse->ry()->currentValue()->value(lengthContext); |
56 if (ry <= 0) | 56 if (ry <= 0) |
57 return; | 57 return; |
58 path.addEllipse(FloatRect(ellipse->cxCurrentValue().value(lengthContext) - r
x, ellipse->cyCurrentValue().value(lengthContext) - ry, rx * 2, ry * 2)); | 58 path.addEllipse(FloatRect(ellipse->cx()->currentValue()->value(lengthContext
) - rx, ellipse->cy()->currentValue()->value(lengthContext) - ry, rx * 2, ry * 2
)); |
59 } | 59 } |
60 | 60 |
61 static void updatePathFromLineElement(SVGElement* element, Path& path) | 61 static void updatePathFromLineElement(SVGElement* element, Path& path) |
62 { | 62 { |
63 SVGLineElement* line = toSVGLineElement(element); | 63 SVGLineElement* line = toSVGLineElement(element); |
64 | 64 |
65 SVGLengthContext lengthContext(element); | 65 SVGLengthContext lengthContext(element); |
66 path.moveTo(FloatPoint(line->x1CurrentValue().value(lengthContext), line->y1
CurrentValue().value(lengthContext))); | 66 path.moveTo(FloatPoint(line->x1()->currentValue()->value(lengthContext), lin
e->y1()->currentValue()->value(lengthContext))); |
67 path.addLineTo(FloatPoint(line->x2CurrentValue().value(lengthContext), line-
>y2CurrentValue().value(lengthContext))); | 67 path.addLineTo(FloatPoint(line->x2()->currentValue()->value(lengthContext),
line->y2()->currentValue()->value(lengthContext))); |
68 } | 68 } |
69 | 69 |
70 static void updatePathFromPathElement(SVGElement* element, Path& path) | 70 static void updatePathFromPathElement(SVGElement* element, Path& path) |
71 { | 71 { |
72 buildPathFromByteStream(toSVGPathElement(element)->pathByteStream(), path); | 72 buildPathFromByteStream(toSVGPathElement(element)->pathByteStream(), path); |
73 } | 73 } |
74 | 74 |
75 static void updatePathFromPolygonElement(SVGElement* element, Path& path) | 75 static void updatePathFromPolygonElement(SVGElement* element, Path& path) |
76 { | 76 { |
77 SVGPointList& points = toSVGPolygonElement(element)->pointsCurrentValue(); | 77 SVGPointList& points = toSVGPolygonElement(element)->pointsCurrentValue(); |
(...skipping 20 matching lines...) Expand all Loading... |
98 unsigned size = points.size(); | 98 unsigned size = points.size(); |
99 for (unsigned i = 1; i < size; ++i) | 99 for (unsigned i = 1; i < size; ++i) |
100 path.addLineTo(points.at(i)); | 100 path.addLineTo(points.at(i)); |
101 } | 101 } |
102 | 102 |
103 static void updatePathFromRectElement(SVGElement* element, Path& path) | 103 static void updatePathFromRectElement(SVGElement* element, Path& path) |
104 { | 104 { |
105 SVGRectElement* rect = toSVGRectElement(element); | 105 SVGRectElement* rect = toSVGRectElement(element); |
106 | 106 |
107 SVGLengthContext lengthContext(element); | 107 SVGLengthContext lengthContext(element); |
108 float width = rect->widthCurrentValue().value(lengthContext); | 108 float width = rect->width()->currentValue()->value(lengthContext); |
109 if (width <= 0) | 109 if (width <= 0) |
110 return; | 110 return; |
111 float height = rect->heightCurrentValue().value(lengthContext); | 111 float height = rect->height()->currentValue()->value(lengthContext); |
112 if (height <= 0) | 112 if (height <= 0) |
113 return; | 113 return; |
114 float x = rect->xCurrentValue().value(lengthContext); | 114 float x = rect->x()->currentValue()->value(lengthContext); |
115 float y = rect->yCurrentValue().value(lengthContext); | 115 float y = rect->y()->currentValue()->value(lengthContext); |
116 bool hasRx = rect->rxCurrentValue().value(lengthContext) > 0; | 116 bool hasRx = rect->rx()->currentValue()->value(lengthContext) > 0; |
117 bool hasRy = rect->ryCurrentValue().value(lengthContext) > 0; | 117 bool hasRy = rect->ry()->currentValue()->value(lengthContext) > 0; |
118 if (hasRx || hasRy) { | 118 if (hasRx || hasRy) { |
119 float rx = rect->rxCurrentValue().value(lengthContext); | 119 float rx = rect->rx()->currentValue()->value(lengthContext); |
120 float ry = rect->ryCurrentValue().value(lengthContext); | 120 float ry = rect->ry()->currentValue()->value(lengthContext); |
121 if (!hasRx) | 121 if (!hasRx) |
122 rx = ry; | 122 rx = ry; |
123 else if (!hasRy) | 123 else if (!hasRy) |
124 ry = rx; | 124 ry = rx; |
125 | 125 |
126 path.addRoundedRect(FloatRect(x, y, width, height), FloatSize(rx, ry)); | 126 path.addRoundedRect(FloatRect(x, y, width, height), FloatSize(rx, ry)); |
127 return; | 127 return; |
128 } | 128 } |
129 | 129 |
130 path.addRect(FloatRect(x, y, width, height)); | 130 path.addRect(FloatRect(x, y, width, height)); |
(...skipping 15 matching lines...) Expand all Loading... |
146 map->set(SVGNames::polygonTag.localName().impl(), updatePathFromPolygonE
lement); | 146 map->set(SVGNames::polygonTag.localName().impl(), updatePathFromPolygonE
lement); |
147 map->set(SVGNames::polylineTag.localName().impl(), updatePathFromPolylin
eElement); | 147 map->set(SVGNames::polylineTag.localName().impl(), updatePathFromPolylin
eElement); |
148 map->set(SVGNames::rectTag.localName().impl(), updatePathFromRectElement
); | 148 map->set(SVGNames::rectTag.localName().impl(), updatePathFromRectElement
); |
149 } | 149 } |
150 | 150 |
151 if (PathUpdateFunction pathUpdateFunction = map->get(element->localName().im
pl())) | 151 if (PathUpdateFunction pathUpdateFunction = map->get(element->localName().im
pl())) |
152 (*pathUpdateFunction)(element, path); | 152 (*pathUpdateFunction)(element, path); |
153 } | 153 } |
154 | 154 |
155 } // namespace WebCore | 155 } // namespace WebCore |
OLD | NEW |