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 return IntSize(); | 155 return IntSize(); |
156 | 156 |
157 // If a container size is available it has precedence. | 157 // If a container size is available it has precedence. |
158 IntSize containerSize = renderer->containerSize(); | 158 IntSize containerSize = renderer->containerSize(); |
159 if (!containerSize.isEmpty()) | 159 if (!containerSize.isEmpty()) |
160 return containerSize; | 160 return containerSize; |
161 | 161 |
162 // Assure that a container size is always given for a non-identity zoom leve l. | 162 // Assure that a container size is always given for a non-identity zoom leve l. |
163 ASSERT(renderer->style()->effectiveZoom() == 1); | 163 ASSERT(renderer->style()->effectiveZoom() == 1); |
164 | 164 |
165 FloatSize currentSize; | 165 FloatSize intrinsicSize; |
166 if (rootElement->hasIntrinsicWidth() && rootElement->hasIntrinsicHeight()) | 166 double intrinsicRatio = 0; |
167 currentSize = rootElement->currentViewportSize(); | 167 renderer->computeIntrinsicRatioInformation(intrinsicSize, intrinsicRatio); |
168 else | |
169 currentSize = rootElement->currentViewBoxRect().size(); | |
170 | 168 |
171 if (!currentSize.isEmpty()) | 169 if (intrinsicSize.isEmpty() && intrinsicRatio) { |
pdr.
2014/06/06 03:54:50
This logic seems correct but why isn't it needed e
davve
2014/06/06 20:26:26
AFAICT, private method computeAspectRatioInformati
| |
172 return IntSize(static_cast<int>(ceilf(currentSize.width())), static_cast <int>(ceilf(currentSize.height()))); | 170 if (!intrinsicSize.width() && intrinsicSize.height()) |
171 intrinsicSize.setWidth(intrinsicSize.height() * intrinsicRatio); | |
172 else if (intrinsicSize.width() && !intrinsicSize.height()) | |
173 intrinsicSize.setHeight(intrinsicSize.width() / intrinsicRatio); | |
174 } | |
173 | 175 |
174 // As last resort, use CSS default intrinsic size. | 176 if (!intrinsicSize.isEmpty()) |
177 return IntSize(static_cast<int>(ceilf(intrinsicSize.width())), static_ca st<int>(ceilf(intrinsicSize.height()))); | |
pdr.
2014/06/06 03:54:50
I think this is just expandedIntSize
davve
2014/06/06 20:26:27
Done.
| |
178 | |
179 // As last resort, use CSS replaced element fallback size. | |
175 return IntSize(300, 150); | 180 return IntSize(300, 150); |
176 } | 181 } |
177 | 182 |
178 void SVGImage::drawForContainer(GraphicsContext* context, const FloatSize contai nerSize, float zoom, const FloatRect& dstRect, | 183 void SVGImage::drawForContainer(GraphicsContext* context, const FloatSize contai nerSize, float zoom, const FloatRect& dstRect, |
179 const FloatRect& srcRect, CompositeOperator compositeOp, blink::WebBlendMode blendMode) | 184 const FloatRect& srcRect, CompositeOperator compositeOp, blink::WebBlendMode blendMode) |
180 { | 185 { |
181 if (!m_page) | 186 if (!m_page) |
182 return; | 187 return; |
183 | 188 |
184 // Temporarily disable the image observer to prevent changeInRect() calls du e re-laying out the image. | 189 // Temporarily disable the image observer to prevent changeInRect() calls du e re-laying out the image. |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
417 | 422 |
418 return m_page; | 423 return m_page; |
419 } | 424 } |
420 | 425 |
421 String SVGImage::filenameExtension() const | 426 String SVGImage::filenameExtension() const |
422 { | 427 { |
423 return "svg"; | 428 return "svg"; |
424 } | 429 } |
425 | 430 |
426 } | 431 } |
OLD | NEW |