| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006 Eric Seidel <eric@webkit.org> | 2 * Copyright (C) 2006 Eric Seidel <eric@webkit.org> |
| 3 * Copyright (C) 2008, 2009 Apple Inc. All rights reserved. | 3 * Copyright (C) 2008, 2009 Apple Inc. All rights reserved. |
| 4 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 4 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 | 155 |
| 156 // If a container size is available it has precedence. | 156 // If a container size is available it has precedence. |
| 157 IntSize containerSize = renderer->containerSize(); | 157 IntSize containerSize = renderer->containerSize(); |
| 158 if (!containerSize.isEmpty()) | 158 if (!containerSize.isEmpty()) |
| 159 return containerSize; | 159 return containerSize; |
| 160 | 160 |
| 161 // Assure that a container size is always given for a non-identity zoom leve
l. | 161 // Assure that a container size is always given for a non-identity zoom leve
l. |
| 162 ASSERT(renderer->style()->effectiveZoom() == 1); | 162 ASSERT(renderer->style()->effectiveZoom() == 1); |
| 163 | 163 |
| 164 FloatSize currentSize; | 164 FloatSize currentSize; |
| 165 if (rootElement->intrinsicWidth().isFixed() && rootElement->intrinsicHeight(
).isFixed()) | 165 if (rootElement->hasIntrinsicWidth() && rootElement->hasIntrinsicHeight()) |
| 166 currentSize = rootElement->currentViewportSize(); | 166 currentSize = rootElement->currentViewportSize(); |
| 167 else | 167 else |
| 168 currentSize = rootElement->currentViewBoxRect().size(); | 168 currentSize = rootElement->currentViewBoxRect().size(); |
| 169 | 169 |
| 170 if (!currentSize.isEmpty()) | 170 if (!currentSize.isEmpty()) |
| 171 return IntSize(static_cast<int>(ceilf(currentSize.width())), static_cast
<int>(ceilf(currentSize.height()))); | 171 return IntSize(static_cast<int>(ceilf(currentSize.width())), static_cast
<int>(ceilf(currentSize.height()))); |
| 172 | 172 |
| 173 // As last resort, use CSS default intrinsic size. | 173 // As last resort, use CSS default intrinsic size. |
| 174 return IntSize(300, 150); | 174 return IntSize(300, 150); |
| 175 } | 175 } |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 } | 304 } |
| 305 | 305 |
| 306 FrameView* SVGImage::frameView() const | 306 FrameView* SVGImage::frameView() const |
| 307 { | 307 { |
| 308 if (!m_page) | 308 if (!m_page) |
| 309 return 0; | 309 return 0; |
| 310 | 310 |
| 311 return m_page->mainFrame()->view(); | 311 return m_page->mainFrame()->view(); |
| 312 } | 312 } |
| 313 | 313 |
| 314 bool SVGImage::hasRelativeWidth() const | |
| 315 { | |
| 316 SVGSVGElement* rootElement = svgRootElement(m_page.get()); | |
| 317 if (!rootElement) | |
| 318 return false; | |
| 319 return rootElement->intrinsicWidth().isPercent(); | |
| 320 } | |
| 321 | |
| 322 bool SVGImage::hasRelativeHeight() const | |
| 323 { | |
| 324 SVGSVGElement* rootElement = svgRootElement(m_page.get()); | |
| 325 if (!rootElement) | |
| 326 return false; | |
| 327 return rootElement->intrinsicHeight().isPercent(); | |
| 328 } | |
| 329 | |
| 330 void SVGImage::computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrin
sicHeight, FloatSize& intrinsicRatio) | 314 void SVGImage::computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrin
sicHeight, FloatSize& intrinsicRatio) |
| 331 { | 315 { |
| 332 SVGSVGElement* rootElement = svgRootElement(m_page.get()); | 316 SVGSVGElement* rootElement = svgRootElement(m_page.get()); |
| 333 if (!rootElement) | 317 if (!rootElement) |
| 334 return; | 318 return; |
| 335 | 319 |
| 336 intrinsicWidth = rootElement->intrinsicWidth(); | 320 intrinsicWidth = rootElement->intrinsicWidth(); |
| 337 intrinsicHeight = rootElement->intrinsicHeight(); | 321 intrinsicHeight = rootElement->intrinsicHeight(); |
| 338 if (rootElement->preserveAspectRatio()->currentValue()->align() == SVGPreser
veAspectRatio::SVG_PRESERVEASPECTRATIO_NONE) | 322 if (rootElement->preserveAspectRatio()->currentValue()->align() == SVGPreser
veAspectRatio::SVG_PRESERVEASPECTRATIO_NONE) |
| 339 return; | 323 return; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 | 407 |
| 424 return m_page; | 408 return m_page; |
| 425 } | 409 } |
| 426 | 410 |
| 427 String SVGImage::filenameExtension() const | 411 String SVGImage::filenameExtension() const |
| 428 { | 412 { |
| 429 return "svg"; | 413 return "svg"; |
| 430 } | 414 } |
| 431 | 415 |
| 432 } | 416 } |
| OLD | NEW |