OLD | NEW |
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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 | 61 |
62 // JPEG | 62 // JPEG |
63 // Photoshop actually writes inverted CMYK data into JPEGs, where zero | 63 // Photoshop actually writes inverted CMYK data into JPEGs, where zero |
64 // represents 100% ink coverage. For this reason, we treat CMYK JPEGs | 64 // represents 100% ink coverage. For this reason, we treat CMYK JPEGs |
65 // as having inverted CMYK. libjpeg-turbo warns that this may break | 65 // as having inverted CMYK. libjpeg-turbo warns that this may break |
66 // other applications, but the CMYK JPEGs we see on the web expect to | 66 // other applications, but the CMYK JPEGs we see on the web expect to |
67 // be treated as inverted CMYK. | 67 // be treated as inverted CMYK. |
68 kInvertedCMYK_Color, | 68 kInvertedCMYK_Color, |
69 kYCCK_Color, | 69 kYCCK_Color, |
70 | 70 |
| 71 // Used internally to indicate that the decoding library has |
| 72 // pre-swizzled to the desired output format. |
| 73 kPreSwizzled_Color, |
| 74 |
71 // Allows us to have a default constructor. Should be treated as | 75 // Allows us to have a default constructor. Should be treated as |
72 // invalid. | 76 // invalid. |
73 kUnknown_Color, | 77 kUnknown_Color, |
74 }; | 78 }; |
75 | 79 |
76 static SkEncodedInfo Make(Color color, Alpha alpha, int bitsPerComponent) { | 80 static SkEncodedInfo Make(Color color, Alpha alpha, int bitsPerComponent) { |
77 SkASSERT(1 == bitsPerComponent || | 81 SkASSERT(1 == bitsPerComponent || |
78 2 == bitsPerComponent || | 82 2 == bitsPerComponent || |
79 4 == bitsPerComponent || | 83 4 == bitsPerComponent || |
80 8 == bitsPerComponent || | 84 8 == bitsPerComponent || |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 case kBGRA_Color: | 153 case kBGRA_Color: |
150 case kYUVA_Color: | 154 case kYUVA_Color: |
151 SkASSERT(kOpaque_Alpha != fAlpha); | 155 SkASSERT(kOpaque_Alpha != fAlpha); |
152 return SkImageInfo::Make(width, height, kN32_SkColorType, kUnpre
mul_SkAlphaType); | 156 return SkImageInfo::Make(width, height, kN32_SkColorType, kUnpre
mul_SkAlphaType); |
153 default: | 157 default: |
154 SkASSERT(false); | 158 SkASSERT(false); |
155 return SkImageInfo::MakeUnknown(); | 159 return SkImageInfo::MakeUnknown(); |
156 } | 160 } |
157 } | 161 } |
158 | 162 |
| 163 Color color() const { return fColor; } |
| 164 Alpha alpha() const { return fAlpha; } |
| 165 uint8_t bitsPerComponent() const { return fBitsPerComponent; } |
| 166 |
| 167 uint8_t bitsPerPixel() const { |
| 168 switch (fColor) { |
| 169 case kGray_Color: |
| 170 return fBitsPerComponent; |
| 171 case kGrayAlpha_Color: |
| 172 return 2 * fBitsPerComponent; |
| 173 case kPalette_Color: |
| 174 return fBitsPerComponent; |
| 175 case kRGB_Color: |
| 176 case kBGR_Color: |
| 177 case kYUV_Color: |
| 178 return 3 * fBitsPerComponent; |
| 179 case kRGBA_Color: |
| 180 case kBGRA_Color: |
| 181 case kBGRX_Color: |
| 182 case kYUVA_Color: |
| 183 case kInvertedCMYK_Color: |
| 184 case kYCCK_Color: |
| 185 return 4 * fBitsPerComponent; |
| 186 default: |
| 187 SkASSERT(false); |
| 188 return 0; |
| 189 } |
| 190 } |
| 191 |
159 SkEncodedInfo() | 192 SkEncodedInfo() |
160 : fColor(kUnknown_Color) | 193 : fColor(kUnknown_Color) |
161 , fAlpha(kUnknown_Alpha) | 194 , fAlpha(kUnknown_Alpha) |
162 , fBitsPerComponent(0) | 195 , fBitsPerComponent(0) |
163 {} | 196 {} |
164 | 197 |
165 private: | 198 private: |
166 | 199 |
167 SkEncodedInfo(Color color, Alpha alpha, uint8_t bitsPerComponent) | 200 SkEncodedInfo(Color color, Alpha alpha, uint8_t bitsPerComponent) |
168 : fColor(color) | 201 : fColor(color) |
169 , fAlpha(alpha) | 202 , fAlpha(alpha) |
170 , fBitsPerComponent(bitsPerComponent) | 203 , fBitsPerComponent(bitsPerComponent) |
171 {} | 204 {} |
172 | 205 |
| 206 void setColor(Color color) { |
| 207 fColor = color; |
| 208 } |
| 209 |
173 Color fColor; | 210 Color fColor; |
174 Alpha fAlpha; | 211 Alpha fAlpha; |
175 uint8_t fBitsPerComponent; | 212 uint8_t fBitsPerComponent; |
| 213 |
| 214 friend class SkJpegCodec; |
176 }; | 215 }; |
177 | 216 |
178 #endif | 217 #endif |
OLD | NEW |