Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(387)

Unified Diff: Source/core/fetch/ImageResource.cpp

Issue 136823005: Fix distorted image issue when open some images in a new browser window. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: not plumb knowledge to ImageResource Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/fetch/ImageResource.cpp
diff --git a/Source/core/fetch/ImageResource.cpp b/Source/core/fetch/ImageResource.cpp
index be73b8411561c903ef2be9f6350a61a1f6188fc0..9c07e4a1fc4818d7f7c6c1984b4ad07cadab523a 100644
--- a/Source/core/fetch/ImageResource.cpp
+++ b/Source/core/fetch/ImageResource.cpp
@@ -241,6 +241,32 @@ bool ImageResource::imageHasRelativeHeight() const
return false;
}
+void ImageResource::applyMultiplier(LayoutSize& imageSize, float multiplier) const
+{
+ if (multiplier == 1.0f)
+ return;
+
+ // Don't let images that have a width/height >= 1 shrink below 1 when zoomed.
+ float widthScale = m_image->hasRelativeWidth() ? 1.0f : multiplier;
+ float heightScale = m_image->hasRelativeHeight() ? 1.0f : multiplier;
+ LayoutSize minimumSize(imageSize.width() > 0 ? 1 : 0, imageSize.height() > 0 ? 1 : 0);
+ imageSize.scale(widthScale, heightScale);
+ imageSize.clampToMinimumSize(minimumSize);
+ ASSERT(multiplier != 1.0f || (imageSize.width().fraction() == 0.0f && imageSize.height().fraction() == 0.0f));
+}
+
+LayoutSize ImageResource::bitmapImageSizeRespectingOrientation(float multiplier) const
+{
+ ASSERT(!isPurgeable());
+
+ if (!m_image || !m_image->isBitmapImage())
+ return IntSize();
abarth-chromium 2014/02/15 18:58:33 So, this won't work for SVG images? Should this b
+
+ LayoutSize imageSize = toBitmapImage(m_image.get())->sizeRespectingOrientation();
+ applyMultiplier(imageSize, multiplier);
+ return imageSize;
+}
+
LayoutSize ImageResource::imageSizeForRenderer(const RenderObject* renderer, float multiplier, SizeType sizeType)
{
ASSERT(!isPurgeable());
@@ -257,16 +283,7 @@ LayoutSize ImageResource::imageSizeForRenderer(const RenderObject* renderer, flo
else
imageSize = m_image->size();
- if (multiplier == 1.0f)
- return imageSize;
-
- // Don't let images that have a width/height >= 1 shrink below 1 when zoomed.
- float widthScale = m_image->hasRelativeWidth() ? 1.0f : multiplier;
- float heightScale = m_image->hasRelativeHeight() ? 1.0f : multiplier;
- LayoutSize minimumSize(imageSize.width() > 0 ? 1 : 0, imageSize.height() > 0 ? 1 : 0);
- imageSize.scale(widthScale, heightScale);
- imageSize.clampToMinimumSize(minimumSize);
- ASSERT(multiplier != 1.0f || (imageSize.width().fraction() == 0.0f && imageSize.height().fraction() == 0.0f));
+ applyMultiplier(imageSize, multiplier);
return imageSize;
}

Powered by Google App Engine
This is Rietveld 408576698