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

Unified Diff: src/core/SkBitmapScaler.cpp

Issue 1711683002: remove legacy bitmap filter (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 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
« src/core/SkBitmapFilter.h ('K') | « src/core/SkBitmapFilter.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkBitmapScaler.cpp
diff --git a/src/core/SkBitmapScaler.cpp b/src/core/SkBitmapScaler.cpp
index dc04691c79b6bcef1ae7d8deb909966823bc7db9..c69ac2a950b7ca736b834a8330c8bb2e2131cbfb 100644
--- a/src/core/SkBitmapScaler.cpp
+++ b/src/core/SkBitmapScaler.cpp
@@ -144,42 +144,20 @@ void SkResizeFilter::computeFilters(int srcSize,
// downscale should "cover" the pixels around the pixel with *its center*
// at coordinates (2.5, 2.5) in the source, not those around (0, 0).
// Hence we need to scale coordinates (0.5, 0.5), not (0, 0).
-#ifdef SK_SUPPORT_LEGACY_BITMAP_FILTER
- int destLimit = SkScalarTruncToInt(SkScalarCeilToScalar(destSubsetHi)
- - SkScalarFloorToScalar(destSubsetLo));
-#else
destSubsetLo = SkScalarFloorToScalar(destSubsetLo);
destSubsetHi = SkScalarCeilToScalar(destSubsetHi);
float srcPixel = (destSubsetLo + 0.5f) * invScale;
int destLimit = SkScalarTruncToInt(destSubsetHi - destSubsetLo);
-#endif
output->reserveAdditional(destLimit, SkScalarCeilToInt(destLimit * srcSupport * 2));
-#ifdef SK_SUPPORT_LEGACY_BITMAP_FILTER
- for (int destSubsetI = SkScalarFloorToInt(destSubsetLo); destSubsetI < SkScalarCeilToInt(destSubsetHi);
- destSubsetI++)
-#else
for (int destI = 0; destI < destLimit; srcPixel += invScale, destI++)
-#endif
{
// Compute the (inclusive) range of source pixels the filter covers.
-#ifdef SK_SUPPORT_LEGACY_BITMAP_FILTER
- float srcPixel = (static_cast<float>(destSubsetI) + 0.5f) * invScale;
- int srcBegin = SkTMax(0, SkScalarFloorToInt(srcPixel - srcSupport));
- int srcEnd = SkTMin(srcSize - 1, SkScalarCeilToInt(srcPixel + srcSupport));
-#else
float srcBegin = SkTMax(0.f, SkScalarFloorToScalar(srcPixel - srcSupport));
float srcEnd = SkTMin(srcSize - 1.f, SkScalarCeilToScalar(srcPixel + srcSupport));
-#endif
// Compute the unnormalized filter value at each location of the source
// it covers.
-#ifdef SK_SUPPORT_LEGACY_BITMAP_FILTER
- float filterSum = 0.0f; // Sub of the filter values for normalizing.
- int filterCount = srcEnd - srcBegin + 1;
- filterValuesArray.reset(filterCount);
- for (int curFilterPixel = srcBegin; curFilterPixel <= srcEnd;
- curFilterPixel++) {
-#endif
+
// Sum of the filter values for normalizing.
// Distance from the center of the filter, this is the filter coordinate
// in source space. We also need to consider the center of the pixel
@@ -187,42 +165,22 @@ void SkResizeFilter::computeFilters(int srcSize,
// example used above the distance from the center of the filter to
// the pixel with coordinates (2, 2) should be 0, because its center
// is at (2.5, 2.5).
-#ifdef SK_SUPPORT_LEGACY_BITMAP_FILTER
- float srcFilterDist =
- ((static_cast<float>(curFilterPixel) + 0.5f) - srcPixel);
-
- // Since the filter really exists in dest space, map it there.
- float destFilterDist = srcFilterDist * clampedScale;
-
- // Compute the filter value at that location.
- float filterValue = fBitmapFilter->evaluate(destFilterDist);
- filterValuesArray[curFilterPixel - srcBegin] = filterValue;
-
- filterSum += filterValue;
- }
-#else
float destFilterDist = (srcBegin + 0.5f - srcPixel) * clampedScale;
int filterCount = SkScalarTruncToInt(srcEnd - srcBegin) + 1;
SkASSERT(filterCount > 0);
filterValuesArray.reset(filterCount);
float filterSum = fBitmapFilter->evaluate_n(destFilterDist, clampedScale, filterCount,
filterValuesArray.begin());
-#endif
+
// The filter must be normalized so that we don't affect the brightness of
// the image. Convert to normalized fixed point.
int fixedSum = 0;
fixedFilterValuesArray.reset(filterCount);
const float* filterValues = filterValuesArray.begin();
SkConvolutionFilter1D::ConvolutionFixed* fixedFilterValues = fixedFilterValuesArray.begin();
-#ifndef SK_SUPPORT_LEGACY_BITMAP_FILTER
float invFilterSum = 1 / filterSum;
-#endif
for (int fixedI = 0; fixedI < filterCount; fixedI++) {
-#ifdef SK_SUPPORT_LEGACY_BITMAP_FILTER
- int curFixed = SkConvolutionFilter1D::FloatToFixed(filterValues[fixedI] / filterSum);
-#else
int curFixed = SkConvolutionFilter1D::FloatToFixed(filterValues[fixedI] * invFilterSum);
-#endif
fixedSum += curFixed;
fixedFilterValues[fixedI] = SkToS16(curFixed);
}
@@ -237,11 +195,7 @@ void SkResizeFilter::computeFilters(int srcSize,
fixedFilterValues[filterCount / 2] += leftovers;
// Now it's ready to go.
-#ifdef SK_SUPPORT_LEGACY_BITMAP_FILTER
- output->AddFilter(srcBegin, fixedFilterValues, filterCount);
-#else
output->AddFilter(SkScalarFloorToInt(srcBegin), fixedFilterValues, filterCount);
-#endif
}
if (convolveProcs.fApplySIMDPadding) {
« src/core/SkBitmapFilter.h ('K') | « src/core/SkBitmapFilter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698