Index: src/codec/SkSampledCodec.cpp |
diff --git a/src/codec/SkSampledCodec.cpp b/src/codec/SkSampledCodec.cpp |
index 52e5648742ecea5a2c82f32f198dbd365a8f17be..b9fc4500fcec7c7de8cc5e8d8b812ca9aaf8ffd9 100644 |
--- a/src/codec/SkSampledCodec.cpp |
+++ b/src/codec/SkSampledCodec.cpp |
@@ -11,12 +11,11 @@ |
#include "SkSampledCodec.h" |
SkSampledCodec::SkSampledCodec(SkCodec* codec) |
- : INHERITED(codec->getInfo()) |
- , fCodec(codec) |
+ : INHERITED(codec) |
{} |
SkISize SkSampledCodec::accountForNativeScaling(int* sampleSizePtr, int* nativeSampleSize) const { |
- SkISize preSampledSize = fCodec->getInfo().dimensions(); |
+ SkISize preSampledSize = this->codec()->getInfo().dimensions(); |
int sampleSize = *sampleSizePtr; |
SkASSERT(sampleSize > 1); |
@@ -25,7 +24,7 @@ SkISize SkSampledCodec::accountForNativeScaling(int* sampleSizePtr, int* nativeS |
} |
// Only JPEG supports native downsampling. |
- if (fCodec->getEncodedFormat() == kJPEG_SkEncodedFormat) { |
+ if (this->codec()->getEncodedFormat() == kJPEG_SkEncodedFormat) { |
// See if libjpeg supports this scale directly |
switch (sampleSize) { |
case 2: |
@@ -33,7 +32,7 @@ SkISize SkSampledCodec::accountForNativeScaling(int* sampleSizePtr, int* nativeS |
case 8: |
// This class does not need to do any sampling. |
*sampleSizePtr = 1; |
- return fCodec->getScaledDimensions(get_scale_from_sample_size(sampleSize)); |
+ return this->codec()->getScaledDimensions(get_scale_from_sample_size(sampleSize)); |
default: |
break; |
} |
@@ -47,8 +46,8 @@ SkISize SkSampledCodec::accountForNativeScaling(int* sampleSizePtr, int* nativeS |
if (0 == remainder) { |
float scale = get_scale_from_sample_size(supportedSampleSize); |
- // fCodec will scale to this size. |
- preSampledSize = fCodec->getScaledDimensions(scale); |
+ // this->codec() will scale to this size. |
+ preSampledSize = this->codec()->getScaledDimensions(scale); |
// And then this class will sample it. |
*sampleSizePtr = actualSampleSize; |
@@ -76,10 +75,10 @@ SkCodec::Result SkSampledCodec::onGetAndroidPixels(const SkImageInfo& info, void |
codecOptions.fZeroInitialized = options.fZeroInitialized; |
SkIRect* subset = options.fSubset; |
- if (!subset || subset->size() == fCodec->getInfo().dimensions()) { |
- if (fCodec->dimensionsSupported(info.dimensions())) { |
- return fCodec->getPixels(info, pixels, rowBytes, &codecOptions, options.fColorPtr, |
- options.fColorCount); |
+ if (!subset || subset->size() == this->codec()->getInfo().dimensions()) { |
+ if (this->codec()->dimensionsSupported(info.dimensions())) { |
+ return this->codec()->getPixels(info, pixels, rowBytes, &codecOptions, |
+ options.fColorPtr, options.fColorCount); |
} |
// If the native codec does not support the requested scale, scale by sampling. |
@@ -89,7 +88,7 @@ SkCodec::Result SkSampledCodec::onGetAndroidPixels(const SkImageInfo& info, void |
// We are performing a subset decode. |
int sampleSize = options.fSampleSize; |
SkISize scaledSize = this->getSampledDimensions(sampleSize); |
- if (!fCodec->dimensionsSupported(scaledSize)) { |
+ if (!this->codec()->dimensionsSupported(scaledSize)) { |
// If the native codec does not support the requested scale, scale by sampling. |
return this->sampledDecode(info, pixels, rowBytes, options); |
} |
@@ -104,24 +103,24 @@ SkCodec::Result SkSampledCodec::onGetAndroidPixels(const SkImageInfo& info, void |
SkIRect scanlineSubset = SkIRect::MakeXYWH(scaledSubsetX, 0, scaledSubsetWidth, |
scaledSize.height()); |
codecOptions.fSubset = &scanlineSubset; |
- SkCodec::Result result = fCodec->startScanlineDecode(info.makeWH(scaledSize.width(), |
+ SkCodec::Result result = this->codec()->startScanlineDecode(info.makeWH(scaledSize.width(), |
scaledSize.height()), &codecOptions, options.fColorPtr, options.fColorCount); |
if (SkCodec::kSuccess != result) { |
return result; |
} |
// At this point, we are only concerned with subsetting. Either no scale was |
- // requested, or the fCodec is handling the scale. |
- switch (fCodec->getScanlineOrder()) { |
+ // requested, or the this->codec() is handling the scale. |
+ switch (this->codec()->getScanlineOrder()) { |
case SkCodec::kTopDown_SkScanlineOrder: |
case SkCodec::kNone_SkScanlineOrder: { |
- if (!fCodec->skipScanlines(scaledSubsetY)) { |
- fCodec->fillIncompleteImage(info, pixels, rowBytes, options.fZeroInitialized, |
+ if (!this->codec()->skipScanlines(scaledSubsetY)) { |
+ this->codec()->fillIncompleteImage(info, pixels, rowBytes, options.fZeroInitialized, |
scaledSubsetHeight, 0); |
return SkCodec::kIncompleteInput; |
} |
- int decodedLines = fCodec->getScanlines(pixels, scaledSubsetHeight, rowBytes); |
+ int decodedLines = this->codec()->getScanlines(pixels, scaledSubsetHeight, rowBytes); |
if (decodedLines != scaledSubsetHeight) { |
return SkCodec::kIncompleteInput; |
} |
@@ -156,7 +155,7 @@ SkCodec::Result SkSampledCodec::sampledDecode(const SkImageInfo& info, void* pix |
if (options.fSubset) { |
// We will need to know about subsetting in the y-dimension in order to use the |
// scanline decoder. |
- // Update the subset to account for scaling done by fCodec. |
+ // Update the subset to account for scaling done by this->codec(). |
SkIRect* subsetPtr = options.fSubset; |
// Do the divide ourselves, instead of calling get_scaled_dimension. If |
@@ -174,14 +173,14 @@ SkCodec::Result SkSampledCodec::sampledDecode(const SkImageInfo& info, void* pix |
} |
// Start the scanline decode. |
- SkCodec::Result result = fCodec->startScanlineDecode( |
+ SkCodec::Result result = this->codec()->startScanlineDecode( |
info.makeWH(nativeSize.width(), nativeSize.height()), &sampledOptions, |
options.fColorPtr, options.fColorCount); |
if (SkCodec::kSuccess != result) { |
return result; |
} |
- SkSampler* sampler = fCodec->getSampler(true); |
+ SkSampler* sampler = this->codec()->getSampler(true); |
if (!sampler) { |
return SkCodec::kUnimplemented; |
} |
@@ -201,23 +200,23 @@ SkCodec::Result SkSampledCodec::sampledDecode(const SkImageInfo& info, void* pix |
const int samplingOffsetY = get_start_coord(sampleY); |
const int startY = samplingOffsetY + subsetY; |
int dstHeight = info.height(); |
- switch(fCodec->getScanlineOrder()) { |
+ switch(this->codec()->getScanlineOrder()) { |
case SkCodec::kTopDown_SkScanlineOrder: { |
- if (!fCodec->skipScanlines(startY)) { |
- fCodec->fillIncompleteImage(info, pixels, rowBytes, options.fZeroInitialized, |
+ if (!this->codec()->skipScanlines(startY)) { |
+ this->codec()->fillIncompleteImage(info, pixels, rowBytes, options.fZeroInitialized, |
dstHeight, 0); |
return SkCodec::kIncompleteInput; |
} |
void* pixelPtr = pixels; |
for (int y = 0; y < dstHeight; y++) { |
- if (1 != fCodec->getScanlines(pixelPtr, 1, rowBytes)) { |
- fCodec->fillIncompleteImage(info, pixels, rowBytes, options.fZeroInitialized, |
- dstHeight, y + 1); |
+ if (1 != this->codec()->getScanlines(pixelPtr, 1, rowBytes)) { |
+ this->codec()->fillIncompleteImage(info, pixels, rowBytes, |
+ options.fZeroInitialized, dstHeight, y + 1); |
return SkCodec::kIncompleteInput; |
} |
if (y < dstHeight - 1) { |
- if (!fCodec->skipScanlines(sampleY - 1)) { |
- fCodec->fillIncompleteImage(info, pixels, rowBytes, |
+ if (!this->codec()->skipScanlines(sampleY - 1)) { |
+ this->codec()->fillIncompleteImage(info, pixels, rowBytes, |
options.fZeroInitialized, dstHeight, y + 1); |
return SkCodec::kIncompleteInput; |
} |
@@ -232,15 +231,15 @@ SkCodec::Result SkSampledCodec::sampledDecode(const SkImageInfo& info, void* pix |
SkASSERT(0 == subsetY && nativeSize.height() == subsetHeight); |
int y; |
for (y = 0; y < nativeSize.height(); y++) { |
- int srcY = fCodec->nextScanline(); |
+ int srcY = this->codec()->nextScanline(); |
if (is_coord_necessary(srcY, sampleY, dstHeight)) { |
void* pixelPtr = SkTAddOffset<void>(pixels, |
rowBytes * get_dst_coord(srcY, sampleY)); |
- if (1 != fCodec->getScanlines(pixelPtr, 1, rowBytes)) { |
+ if (1 != this->codec()->getScanlines(pixelPtr, 1, rowBytes)) { |
break; |
} |
} else { |
- if (!fCodec->skipScanlines(1)) { |
+ if (!this->codec()->skipScanlines(1)) { |
break; |
} |
} |
@@ -250,12 +249,13 @@ SkCodec::Result SkSampledCodec::sampledDecode(const SkImageInfo& info, void* pix |
return SkCodec::kSuccess; |
} |
- // We handle filling uninitialized memory here instead of using fCodec. |
- // fCodec does not know that we are sampling. |
- const uint32_t fillValue = fCodec->getFillValue(info.colorType(), info.alphaType()); |
+ // We handle filling uninitialized memory here instead of using this->codec(). |
+ // this->codec() does not know that we are sampling. |
+ const uint32_t fillValue = this->codec()->getFillValue(info.colorType(), |
+ info.alphaType()); |
const SkImageInfo fillInfo = info.makeWH(info.width(), 1); |
for (; y < nativeSize.height(); y++) { |
- int srcY = fCodec->outputScanline(y); |
+ int srcY = this->codec()->outputScanline(y); |
if (!is_coord_necessary(srcY, sampleY, dstHeight)) { |
continue; |
} |
@@ -270,12 +270,12 @@ SkCodec::Result SkSampledCodec::sampledDecode(const SkImageInfo& info, void* pix |
SkAutoMalloc storage(linesNeeded * rowBytes); |
uint8_t* storagePtr = static_cast<uint8_t*>(storage.get()); |
- if (!fCodec->skipScanlines(startY)) { |
- fCodec->fillIncompleteImage(info, pixels, rowBytes, options.fZeroInitialized, |
+ if (!this->codec()->skipScanlines(startY)) { |
+ this->codec()->fillIncompleteImage(info, pixels, rowBytes, options.fZeroInitialized, |
dstHeight, 0); |
return SkCodec::kIncompleteInput; |
} |
- int scanlines = fCodec->getScanlines(storagePtr, linesNeeded, rowBytes); |
+ int scanlines = this->codec()->getScanlines(storagePtr, linesNeeded, rowBytes); |
for (int y = 0; y < dstHeight; y++) { |
memcpy(pixels, storagePtr, info.minRowBytes()); |
@@ -284,7 +284,7 @@ SkCodec::Result SkSampledCodec::sampledDecode(const SkImageInfo& info, void* pix |
} |
if (scanlines < dstHeight) { |
- // fCodec has already handled filling uninitialized memory. |
+ // this->codec() has already handled filling uninitialized memory. |
return SkCodec::kIncompleteInput; |
} |
return SkCodec::kSuccess; |