Index: Source/core/platform/image-decoders/ImageDecoder.cpp |
diff --git a/Source/core/platform/image-decoders/ImageDecoder.cpp b/Source/core/platform/image-decoders/ImageDecoder.cpp |
index 37cd9327dd39379d68debb4ab690c28d772a5dd3..b98e45a3fa8f93c9a9ccfaba21d6749ce34e02fa 100644 |
--- a/Source/core/platform/image-decoders/ImageDecoder.cpp |
+++ b/Source/core/platform/image-decoders/ImageDecoder.cpp |
@@ -1,5 +1,4 @@ |
/* |
- * Copyright (C) 2008-2009 Torch Mobile, Inc. |
* Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. |
* |
* This library is free software; you can redistribute it and/or |
@@ -139,92 +138,6 @@ void ImageDecoder::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const |
MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Image); |
info.addMember(m_data, "data"); |
info.addMember(m_frameBufferCache, "frameBufferCache"); |
- info.addMember(m_scaledColumns, "scaledColumns"); |
- info.addMember(m_scaledRows, "scaledRows"); |
-} |
- |
-// FIXME: don't add any more code below this line: the code below is related to |
-// ENABLE(IMAGE_DECODER_DOWN_SAMPLING), a feature chrome does not use, and does |
-// test, and does not need. It is therefore earmarked for removal. |
- |
-enum MatchType { |
- Exact, |
- UpperBound, |
- LowerBound |
-}; |
- |
-inline void fillScaledValues(Vector<int>& scaledValues, double scaleRate, int length) |
-{ |
- double inflateRate = 1. / scaleRate; |
- scaledValues.reserveCapacity(static_cast<int>(length * scaleRate + 0.5)); |
- for (int scaledIndex = 0; ; ++scaledIndex) { |
- int index = static_cast<int>(scaledIndex * inflateRate + 0.5); |
- if (index >= length) |
- break; |
- scaledValues.append(index); |
- } |
-} |
- |
-template <MatchType type> static int getScaledValue(const Vector<int>& scaledValues, int valueToMatch, int searchStart) |
-{ |
- if (scaledValues.isEmpty()) |
- return valueToMatch; |
- |
- const int* dataStart = scaledValues.data(); |
- const int* dataEnd = dataStart + scaledValues.size(); |
- const int* matched = std::lower_bound(dataStart + searchStart, dataEnd, valueToMatch); |
- switch (type) { |
- case Exact: |
- return matched != dataEnd && *matched == valueToMatch ? matched - dataStart : -1; |
- case LowerBound: |
- return matched != dataEnd && *matched == valueToMatch ? matched - dataStart : matched - dataStart - 1; |
- case UpperBound: |
- default: |
- return matched != dataEnd ? matched - dataStart : -1; |
- } |
-} |
- |
-void ImageDecoder::prepareScaleDataIfNecessary() |
-{ |
- m_scaled = false; |
- m_scaledColumns.clear(); |
- m_scaledRows.clear(); |
- |
- int width = size().width(); |
- int height = size().height(); |
- int numPixels = height * width; |
- if (m_maxNumPixels <= 0 || numPixels <= m_maxNumPixels) |
- return; |
- |
- m_scaled = true; |
- double scale = sqrt(m_maxNumPixels / (double)numPixels); |
- fillScaledValues(m_scaledColumns, scale, width); |
- fillScaledValues(m_scaledRows, scale, height); |
-} |
- |
-int ImageDecoder::upperBoundScaledX(int origX, int searchStart) |
-{ |
- return getScaledValue<UpperBound>(m_scaledColumns, origX, searchStart); |
-} |
- |
-int ImageDecoder::lowerBoundScaledX(int origX, int searchStart) |
-{ |
- return getScaledValue<LowerBound>(m_scaledColumns, origX, searchStart); |
-} |
- |
-int ImageDecoder::upperBoundScaledY(int origY, int searchStart) |
-{ |
- return getScaledValue<UpperBound>(m_scaledRows, origY, searchStart); |
-} |
- |
-int ImageDecoder::lowerBoundScaledY(int origY, int searchStart) |
-{ |
- return getScaledValue<LowerBound>(m_scaledRows, origY, searchStart); |
-} |
- |
-int ImageDecoder::scaledY(int origY, int searchStart) |
-{ |
- return getScaledValue<Exact>(m_scaledRows, origY, searchStart); |
} |
} // namespace WebCore |