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

Side by Side Diff: include/codec/SkEncodedInfo.h

Issue 2212563003: Modify SkPngCodec to recognize 565 images from the sBIT chunk (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Clean up test Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « no previous file | src/codec/SkPngCodec.cpp » ('j') | tests/CodecTest.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 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 #ifndef SkEncodedInfo_DEFINED 8 #ifndef SkEncodedInfo_DEFINED
9 #define SkEncodedInfo_DEFINED 9 #define SkEncodedInfo_DEFINED
10 10
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 kYUVA_Color, 58 kYUVA_Color,
59 59
60 // JPEG 60 // JPEG
61 // Photoshop actually writes inverted CMYK data into JPEGs, where zero 61 // Photoshop actually writes inverted CMYK data into JPEGs, where zero
62 // represents 100% ink coverage. For this reason, we treat CMYK JPEGs 62 // represents 100% ink coverage. For this reason, we treat CMYK JPEGs
63 // as having inverted CMYK. libjpeg-turbo warns that this may break 63 // as having inverted CMYK. libjpeg-turbo warns that this may break
64 // other applications, but the CMYK JPEGs we see on the web expect to 64 // other applications, but the CMYK JPEGs we see on the web expect to
65 // be treated as inverted CMYK. 65 // be treated as inverted CMYK.
66 kInvertedCMYK_Color, 66 kInvertedCMYK_Color,
67 kYCCK_Color, 67 kYCCK_Color,
68
69 // PNG
70 // 565 images may be encoded to PNG by specifying the number of
71 // significant bits for each channel. This is a strange 565
72 // representation because the image is still encoded with 8 bits per
73 // component.
74 k565_Color,
68 }; 75 };
69 76
70 static SkEncodedInfo Make(Color color, Alpha alpha, int bitsPerComponent) { 77 static SkEncodedInfo Make(Color color, Alpha alpha, int bitsPerComponent) {
71 SkASSERT(1 == bitsPerComponent || 78 SkASSERT(1 == bitsPerComponent ||
72 2 == bitsPerComponent || 79 2 == bitsPerComponent ||
73 4 == bitsPerComponent || 80 4 == bitsPerComponent ||
74 8 == bitsPerComponent || 81 8 == bitsPerComponent ||
75 16 == bitsPerComponent); 82 16 == bitsPerComponent);
76 83
77 switch (color) { 84 switch (color) {
(...skipping 20 matching lines...) Expand all
98 break; 105 break;
99 case kRGBA_Color: 106 case kRGBA_Color:
100 SkASSERT(kOpaque_Alpha != alpha); 107 SkASSERT(kOpaque_Alpha != alpha);
101 SkASSERT(bitsPerComponent >= 8); 108 SkASSERT(bitsPerComponent >= 8);
102 break; 109 break;
103 case kBGRA_Color: 110 case kBGRA_Color:
104 case kYUVA_Color: 111 case kYUVA_Color:
105 SkASSERT(kOpaque_Alpha != alpha); 112 SkASSERT(kOpaque_Alpha != alpha);
106 SkASSERT(8 == bitsPerComponent); 113 SkASSERT(8 == bitsPerComponent);
107 break; 114 break;
108 default: 115 case k565_Color:
mtklein 2016/08/04 17:52:51 No need for defaults anymore?
msarett 2016/08/04 19:04:10 Yeah, all values of the enum are handled. This us
109 SkASSERT(false); 116 SkASSERT(kOpaque_Alpha == alpha);
110 break; 117 break;
111 } 118 }
112 119
113 return SkEncodedInfo(color, alpha, bitsPerComponent); 120 return SkEncodedInfo(color, alpha, bitsPerComponent);
114 } 121 }
115 122
116 /* 123 /*
117 * Returns an SkImageInfo with Skia color and alpha types that are the 124 * Returns an SkImageInfo with Skia color and alpha types that are the
118 * closest possible match to the encoded info. 125 * closest possible match to the encoded info.
119 */ 126 */
(...skipping 21 matching lines...) Expand all
141 case kYCCK_Color: 148 case kYCCK_Color:
142 SkASSERT(kOpaque_Alpha == fAlpha); 149 SkASSERT(kOpaque_Alpha == fAlpha);
143 return SkImageInfo::Make(width, height, kN32_SkColorType, 150 return SkImageInfo::Make(width, height, kN32_SkColorType,
144 kOpaque_SkAlphaType, colorSpace); 151 kOpaque_SkAlphaType, colorSpace);
145 case kRGBA_Color: 152 case kRGBA_Color:
146 case kBGRA_Color: 153 case kBGRA_Color:
147 case kYUVA_Color: 154 case kYUVA_Color:
148 SkASSERT(kOpaque_Alpha != fAlpha); 155 SkASSERT(kOpaque_Alpha != fAlpha);
149 return SkImageInfo::Make(width, height, kN32_SkColorType, 156 return SkImageInfo::Make(width, height, kN32_SkColorType,
150 kUnpremul_SkAlphaType, std::move(colorS pace)); 157 kUnpremul_SkAlphaType, std::move(colorS pace));
151 default: 158 case k565_Color:
152 SkASSERT(false); 159 SkASSERT(kOpaque_Alpha == fAlpha);
153 return SkImageInfo::MakeUnknown(); 160 return SkImageInfo::Make(width, height, kRGB_565_SkColorType,
161 kOpaque_SkAlphaType, std::move(colorSpa ce));
154 } 162 }
155 } 163 }
156 164
157 Color color() const { return fColor; } 165 Color color() const { return fColor; }
158 Alpha alpha() const { return fAlpha; } 166 Alpha alpha() const { return fAlpha; }
159 uint8_t bitsPerComponent() const { return fBitsPerComponent; } 167 uint8_t bitsPerComponent() const { return fBitsPerComponent; }
160 168
161 uint8_t bitsPerPixel() const { 169 uint8_t bitsPerPixel() const {
162 switch (fColor) { 170 switch (fColor) {
163 case kGray_Color: 171 case kGray_Color:
164 return fBitsPerComponent; 172 return fBitsPerComponent;
165 case kGrayAlpha_Color: 173 case kGrayAlpha_Color:
166 return 2 * fBitsPerComponent; 174 return 2 * fBitsPerComponent;
167 case kPalette_Color: 175 case kPalette_Color:
168 return fBitsPerComponent; 176 return fBitsPerComponent;
169 case kRGB_Color: 177 case kRGB_Color:
170 case kBGR_Color: 178 case kBGR_Color:
171 case kYUV_Color: 179 case kYUV_Color:
180 case k565_Color:
172 return 3 * fBitsPerComponent; 181 return 3 * fBitsPerComponent;
173 case kRGBA_Color: 182 case kRGBA_Color:
174 case kBGRA_Color: 183 case kBGRA_Color:
175 case kBGRX_Color: 184 case kBGRX_Color:
176 case kYUVA_Color: 185 case kYUVA_Color:
177 case kInvertedCMYK_Color: 186 case kInvertedCMYK_Color:
178 case kYCCK_Color: 187 case kYCCK_Color:
179 return 4 * fBitsPerComponent; 188 return 4 * fBitsPerComponent;
180 default: 189 default:
181 SkASSERT(false); 190 SkASSERT(false);
182 return 0; 191 return 0;
183 } 192 }
184 } 193 }
185 194
186 private: 195 private:
187 196
188 SkEncodedInfo(Color color, Alpha alpha, uint8_t bitsPerComponent) 197 SkEncodedInfo(Color color, Alpha alpha, uint8_t bitsPerComponent)
189 : fColor(color) 198 : fColor(color)
190 , fAlpha(alpha) 199 , fAlpha(alpha)
191 , fBitsPerComponent(bitsPerComponent) 200 , fBitsPerComponent(bitsPerComponent)
192 {} 201 {}
193 202
194 Color fColor; 203 Color fColor;
195 Alpha fAlpha; 204 Alpha fAlpha;
196 uint8_t fBitsPerComponent; 205 uint8_t fBitsPerComponent;
197 }; 206 };
198 207
199 #endif 208 #endif
OLDNEW
« no previous file with comments | « no previous file | src/codec/SkPngCodec.cpp » ('j') | tests/CodecTest.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698