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

Side by Side Diff: src/codec/SkAndroidCodec.cpp

Issue 1513023002: Make BitmapRegionDecoder succeed on invalid requests (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkAndroidCodec.h" 8 #include "SkAndroidCodec.h"
9 #include "SkCodec.h" 9 #include "SkCodec.h"
10 #include "SkCodecPriv.h" 10 #include "SkCodecPriv.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 } 42 }
43 43
44 SkAndroidCodec* SkAndroidCodec::NewFromData(SkData* data, SkPngChunkReader* chun kReader) { 44 SkAndroidCodec* SkAndroidCodec::NewFromData(SkData* data, SkPngChunkReader* chun kReader) {
45 if (!data) { 45 if (!data) {
46 return nullptr; 46 return nullptr;
47 } 47 }
48 48
49 return NewFromStream(new SkMemoryStream(data), chunkReader); 49 return NewFromStream(new SkMemoryStream(data), chunkReader);
50 } 50 }
51 51
52 SkColorType SkAndroidCodec::FixRequestedColorType(SkColorType requestedColorType ,
53 SkColorType suggestedColorType, SkAlphaType suggestedAlphaType) {
54 switch (requestedColorType) {
55 case kIndex_8_SkColorType:
56 if (kIndex_8_SkColorType == suggestedColorType) {
57 return kIndex_8_SkColorType;
58 }
59 break;
60 case kAlpha_8_SkColorType:
61 // Fall through to kGray_8. Before kGray_8_SkColorType existed,
62 // we allowed clients to request kAlpha_8 when they wanted a
63 // grayscale decode.
64 case kGray_8_SkColorType:
65 if (kGray_8_SkColorType == suggestedColorType) {
66 return kGray_8_SkColorType;
67 }
68 break;
69 case kRGB_565_SkColorType:
70 if (kOpaque_SkAlphaType == suggestedAlphaType) {
71 return kRGB_565_SkColorType;
72 }
73 break;
74 default:
75 break;
76 }
77
78 return kN32_SkColorType;
79 }
80
81 SkAlphaType SkAndroidCodec::FixRequestedAlphaType(bool requestedUnpremul,
82 SkAlphaType suggestedAlphaType) {
83 if (kOpaque_SkAlphaType == suggestedAlphaType) {
84 return kOpaque_SkAlphaType;
85 }
86 return requestedUnpremul ? kUnpremul_SkAlphaType : kPremul_SkAlphaType;
87 }
88
52 SkISize SkAndroidCodec::getSampledDimensions(int sampleSize) const { 89 SkISize SkAndroidCodec::getSampledDimensions(int sampleSize) const {
53 if (!is_valid_sample_size(sampleSize)) { 90 if (!is_valid_sample_size(sampleSize)) {
54 return SkISize::Make(0, 0); 91 return SkISize::Make(0, 0);
55 } 92 }
56 93
57 // Fast path for when we are not scaling. 94 // Fast path for when we are not scaling.
58 if (1 == sampleSize) { 95 if (1 == sampleSize) {
59 return fInfo.dimensions(); 96 return fInfo.dimensions();
60 } 97 }
61 98
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 } 158 }
122 } 159 }
123 160
124 return this->onGetAndroidPixels(info, pixels, rowBytes, *options); 161 return this->onGetAndroidPixels(info, pixels, rowBytes, *options);
125 } 162 }
126 163
127 SkCodec::Result SkAndroidCodec::getAndroidPixels(const SkImageInfo& info, void* pixels, 164 SkCodec::Result SkAndroidCodec::getAndroidPixels(const SkImageInfo& info, void* pixels,
128 size_t rowBytes) { 165 size_t rowBytes) {
129 return this->getAndroidPixels(info, pixels, rowBytes, nullptr); 166 return this->getAndroidPixels(info, pixels, rowBytes, nullptr);
130 } 167 }
OLDNEW
« src/android/SkBitmapRegionCodec.cpp ('K') | « src/android/SkBitmapRegionCodec.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698