OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2007, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2005, 2007, 2009 Apple Inc. All rights reserved. |
3 * (C) 2005 Rob Buis <buis@kde.org> | 3 * (C) 2005 Rob Buis <buis@kde.org> |
4 * (C) 2006 Alexander Kellett <lypanov@kde.org> | 4 * (C) 2006 Alexander Kellett <lypanov@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 * | 6 * |
7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
9 * are met: | 9 * are met: |
10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 #include "core/paint/PaintLayer.h" | 52 #include "core/paint/PaintLayer.h" |
53 #include "core/svg/LinearGradientAttributes.h" | 53 #include "core/svg/LinearGradientAttributes.h" |
54 #include "core/svg/PatternAttributes.h" | 54 #include "core/svg/PatternAttributes.h" |
55 #include "core/svg/RadialGradientAttributes.h" | 55 #include "core/svg/RadialGradientAttributes.h" |
56 #include "core/svg/SVGCircleElement.h" | 56 #include "core/svg/SVGCircleElement.h" |
57 #include "core/svg/SVGEllipseElement.h" | 57 #include "core/svg/SVGEllipseElement.h" |
58 #include "core/svg/SVGFilterElement.h" | 58 #include "core/svg/SVGFilterElement.h" |
59 #include "core/svg/SVGLineElement.h" | 59 #include "core/svg/SVGLineElement.h" |
60 #include "core/svg/SVGLinearGradientElement.h" | 60 #include "core/svg/SVGLinearGradientElement.h" |
61 #include "core/svg/SVGPathElement.h" | 61 #include "core/svg/SVGPathElement.h" |
| 62 #include "core/svg/SVGPathUtilities.h" |
62 #include "core/svg/SVGPatternElement.h" | 63 #include "core/svg/SVGPatternElement.h" |
63 #include "core/svg/SVGPointList.h" | 64 #include "core/svg/SVGPointList.h" |
64 #include "core/svg/SVGPolyElement.h" | 65 #include "core/svg/SVGPolyElement.h" |
65 #include "core/svg/SVGRadialGradientElement.h" | 66 #include "core/svg/SVGRadialGradientElement.h" |
66 #include "core/svg/SVGRectElement.h" | 67 #include "core/svg/SVGRectElement.h" |
67 #include "core/svg/SVGStopElement.h" | 68 #include "core/svg/SVGStopElement.h" |
68 #include "core/svg/graphics/filters/SVGFilterBuilder.h" | 69 #include "core/svg/graphics/filters/SVGFilterBuilder.h" |
69 #include "platform/graphics/DashArray.h" | 70 #include "platform/graphics/DashArray.h" |
70 #include "platform/graphics/GraphicsTypes.h" | 71 #include "platform/graphics/GraphicsTypes.h" |
71 #include "platform/graphics/filters/Filter.h" | 72 #include "platform/graphics/filters/Filter.h" |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 WriteStyle(ts, object); | 338 WriteStyle(ts, object); |
338 return ts; | 339 return ts; |
339 } | 340 } |
340 | 341 |
341 static TextStream& operator<<(TextStream& ts, const LayoutSVGShape& shape) { | 342 static TextStream& operator<<(TextStream& ts, const LayoutSVGShape& shape) { |
342 WritePositionAndStyle(ts, shape); | 343 WritePositionAndStyle(ts, shape); |
343 | 344 |
344 SVGElement* svg_element = shape.GetElement(); | 345 SVGElement* svg_element = shape.GetElement(); |
345 DCHECK(svg_element); | 346 DCHECK(svg_element); |
346 SVGLengthContext length_context(svg_element); | 347 SVGLengthContext length_context(svg_element); |
| 348 const ComputedStyle& style = shape.StyleRef(); |
| 349 const SVGComputedStyle& svg_style = style.SvgStyle(); |
347 | 350 |
348 if (isSVGRectElement(*svg_element)) { | 351 if (isSVGRectElement(*svg_element)) { |
349 SVGRectElement& element = toSVGRectElement(*svg_element); | |
350 WriteNameValuePair(ts, "x", | 352 WriteNameValuePair(ts, "x", |
351 element.x()->CurrentValue()->Value(length_context)); | 353 length_context.ValueForLength(svg_style.X(), style, |
| 354 SVGLengthMode::kWidth)); |
352 WriteNameValuePair(ts, "y", | 355 WriteNameValuePair(ts, "y", |
353 element.y()->CurrentValue()->Value(length_context)); | 356 length_context.ValueForLength(svg_style.Y(), style, |
| 357 SVGLengthMode::kHeight)); |
354 WriteNameValuePair(ts, "width", | 358 WriteNameValuePair(ts, "width", |
355 element.width()->CurrentValue()->Value(length_context)); | 359 length_context.ValueForLength(style.Width(), style, |
| 360 SVGLengthMode::kWidth)); |
356 WriteNameValuePair(ts, "height", | 361 WriteNameValuePair(ts, "height", |
357 element.height()->CurrentValue()->Value(length_context)); | 362 length_context.ValueForLength(style.Height(), style, |
| 363 SVGLengthMode::kHeight)); |
358 } else if (isSVGLineElement(*svg_element)) { | 364 } else if (isSVGLineElement(*svg_element)) { |
359 SVGLineElement& element = toSVGLineElement(*svg_element); | 365 SVGLineElement& element = toSVGLineElement(*svg_element); |
360 WriteNameValuePair(ts, "x1", | 366 WriteNameValuePair(ts, "x1", |
361 element.x1()->CurrentValue()->Value(length_context)); | 367 element.x1()->CurrentValue()->Value(length_context)); |
362 WriteNameValuePair(ts, "y1", | 368 WriteNameValuePair(ts, "y1", |
363 element.y1()->CurrentValue()->Value(length_context)); | 369 element.y1()->CurrentValue()->Value(length_context)); |
364 WriteNameValuePair(ts, "x2", | 370 WriteNameValuePair(ts, "x2", |
365 element.x2()->CurrentValue()->Value(length_context)); | 371 element.x2()->CurrentValue()->Value(length_context)); |
366 WriteNameValuePair(ts, "y2", | 372 WriteNameValuePair(ts, "y2", |
367 element.y2()->CurrentValue()->Value(length_context)); | 373 element.y2()->CurrentValue()->Value(length_context)); |
368 } else if (isSVGEllipseElement(*svg_element)) { | 374 } else if (isSVGEllipseElement(*svg_element)) { |
369 SVGEllipseElement& element = toSVGEllipseElement(*svg_element); | |
370 WriteNameValuePair(ts, "cx", | 375 WriteNameValuePair(ts, "cx", |
371 element.cx()->CurrentValue()->Value(length_context)); | 376 length_context.ValueForLength(svg_style.Cx(), style, |
| 377 SVGLengthMode::kWidth)); |
372 WriteNameValuePair(ts, "cy", | 378 WriteNameValuePair(ts, "cy", |
373 element.cy()->CurrentValue()->Value(length_context)); | 379 length_context.ValueForLength(svg_style.Cy(), style, |
| 380 SVGLengthMode::kHeight)); |
374 WriteNameValuePair(ts, "rx", | 381 WriteNameValuePair(ts, "rx", |
375 element.rx()->CurrentValue()->Value(length_context)); | 382 length_context.ValueForLength(svg_style.Rx(), style, |
| 383 SVGLengthMode::kWidth)); |
376 WriteNameValuePair(ts, "ry", | 384 WriteNameValuePair(ts, "ry", |
377 element.ry()->CurrentValue()->Value(length_context)); | 385 length_context.ValueForLength(svg_style.Ry(), style, |
| 386 SVGLengthMode::kHeight)); |
378 } else if (isSVGCircleElement(*svg_element)) { | 387 } else if (isSVGCircleElement(*svg_element)) { |
379 SVGCircleElement& element = toSVGCircleElement(*svg_element); | |
380 WriteNameValuePair(ts, "cx", | 388 WriteNameValuePair(ts, "cx", |
381 element.cx()->CurrentValue()->Value(length_context)); | 389 length_context.ValueForLength(svg_style.Cx(), style, |
| 390 SVGLengthMode::kWidth)); |
382 WriteNameValuePair(ts, "cy", | 391 WriteNameValuePair(ts, "cy", |
383 element.cy()->CurrentValue()->Value(length_context)); | 392 length_context.ValueForLength(svg_style.Cy(), style, |
| 393 SVGLengthMode::kHeight)); |
384 WriteNameValuePair(ts, "r", | 394 WriteNameValuePair(ts, "r", |
385 element.r()->CurrentValue()->Value(length_context)); | 395 length_context.ValueForLength(svg_style.R(), style, |
| 396 SVGLengthMode::kOther)); |
386 } else if (IsSVGPolyElement(*svg_element)) { | 397 } else if (IsSVGPolyElement(*svg_element)) { |
387 WriteNameAndQuotedValue(ts, "points", | 398 WriteNameAndQuotedValue(ts, "points", |
388 ToSVGPolyElement(*svg_element) | 399 ToSVGPolyElement(*svg_element) |
389 .Points() | 400 .Points() |
390 ->CurrentValue() | 401 ->CurrentValue() |
391 ->ValueAsString()); | 402 ->ValueAsString()); |
392 } else if (isSVGPathElement(*svg_element)) { | 403 } else if (isSVGPathElement(*svg_element)) { |
| 404 const StylePath& path = |
| 405 svg_style.D() ? *svg_style.D() : *StylePath::EmptyPath(); |
393 WriteNameAndQuotedValue(ts, "data", | 406 WriteNameAndQuotedValue(ts, "data", |
394 toSVGPathElement(*svg_element) | 407 BuildStringFromByteStream(path.ByteStream())); |
395 .GetPath() | |
396 ->CurrentValue() | |
397 ->ValueAsString()); | |
398 } else { | 408 } else { |
399 NOTREACHED(); | 409 NOTREACHED(); |
400 } | 410 } |
401 return ts; | 411 return ts; |
402 } | 412 } |
403 | 413 |
404 static TextStream& operator<<(TextStream& ts, const LayoutSVGRoot& root) { | 414 static TextStream& operator<<(TextStream& ts, const LayoutSVGRoot& root) { |
405 ts << " " << root.FrameRect(); | 415 ts << " " << root.FrameRect(); |
406 WriteStyle(ts, root); | 416 WriteStyle(ts, root); |
407 return ts; | 417 return ts; |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 WriteIndent(ts, indent); | 767 WriteIndent(ts, indent); |
758 ts << " "; | 768 ts << " "; |
759 WriteNameAndQuotedValue(ts, "filter", id); | 769 WriteNameAndQuotedValue(ts, "filter", id); |
760 ts << " "; | 770 ts << " "; |
761 WriteStandardPrefix(ts, *filter, 0); | 771 WriteStandardPrefix(ts, *filter, 0); |
762 ts << " " << filter->ResourceBoundingBox(&object) << "\n"; | 772 ts << " " << filter->ResourceBoundingBox(&object) << "\n"; |
763 } | 773 } |
764 } | 774 } |
765 | 775 |
766 } // namespace blink | 776 } // namespace blink |
OLD | NEW |