aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkMipMap.cpp
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2016-01-22 11:45:39 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-01-22 11:45:39 -0800
commit921d7ac75206740e69fc6bc9893971249a909fe1 (patch)
tree8eda0568a70f8035e6b37ace6fd43c830f93b3b3 /src/core/SkMipMap.cpp
parent7f6a1e078641c1acd135da6ad04b9be53b29cf0d (diff)
Anisotropic mipmap fixes
1) when selecting a level scale, use max(scaleX, scaleY) instead of current sqrt(scaleX * scaleY) 2) track and apply non-uniform fixup scales R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1617183004 Review URL: https://codereview.chromium.org/1617183004
Diffstat (limited to 'src/core/SkMipMap.cpp')
-rw-r--r--src/core/SkMipMap.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/core/SkMipMap.cpp b/src/core/SkMipMap.cpp
index 14e87a33a3..c037865fd4 100644
--- a/src/core/SkMipMap.cpp
+++ b/src/core/SkMipMap.cpp
@@ -297,7 +297,13 @@ SkMipMap* SkMipMap::Build(const SkPixmap& src, SkDiscardableFactoryProc fact) {
rowBytes = SkToU32(SkColorTypeMinRowBytes(ct, width));
levels[i].fPixmap = SkPixmap(SkImageInfo::Make(width, height, ct, at), addr, rowBytes);
- levels[i].fScale = (float)width / src.width();
+#ifdef SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAPS
+ levels[i].fScale = SkSize::Make(SkIntToScalar(width) / src.width(),
+ SkIntToScalar(width) / src.width());
+#else
+ levels[i].fScale = SkSize::Make(SkIntToScalar(width) / src.width(),
+ SkIntToScalar(height) / src.height());
+#endif
const SkPixmap& dstPM = levels[i].fPixmap;
const void* srcBasePtr = srcPM.addr();