OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 SkImageInfo_DEFINED | 8 #ifndef SkImageInfo_DEFINED |
9 #define SkImageInfo_DEFINED | 9 #define SkImageInfo_DEFINED |
10 | 10 |
11 #include "SkMath.h" | 11 #include "SkMath.h" |
12 #include "SkRect.h" | 12 #include "SkRect.h" |
13 #include "SkSize.h" | 13 #include "SkSize.h" |
14 | 14 |
15 class SkReadBuffer; | 15 class SkReadBuffer; |
16 class SkWriteBuffer; | 16 class SkWriteBuffer; |
17 | 17 |
18 /** | 18 /** |
19 * Describes how to interpret the alpha compoent of a pixel. | 19 * Describes how to interpret the alpha compoent of a pixel. |
20 */ | 20 */ |
21 enum SkAlphaType { | 21 enum SkAlphaType { |
22 kUnknown_SkAlphaType, | 22 /** |
| 23 * All pixels should be treated as opaque, regardless of the value stored |
| 24 * in their alpha field. Used for legacy images that wrote 0 or garbarge |
| 25 * in their alpha field, but intended the RGB to be treated as opaque. |
| 26 */ |
| 27 kIgnore_SkAlphaType, |
23 | 28 |
24 /** | 29 /** |
25 * All pixels are stored as opaque. This differs slightly from kIgnore in | 30 * All pixels are stored as opaque. This differs slightly from kIgnore in |
26 * that kOpaque has correct "opaque" values stored in the pixels, while | 31 * that kOpaque has correct "opaque" values stored in the pixels, while |
27 * kIgnore may not, but in both cases the caller should treat the pixels | 32 * kIgnore may not, but in both cases the caller should treat the pixels |
28 * as opaque. | 33 * as opaque. |
29 */ | 34 */ |
30 kOpaque_SkAlphaType, | 35 kOpaque_SkAlphaType, |
31 | 36 |
32 /** | 37 /** |
33 * All pixels have their alpha premultiplied in their color components. | 38 * All pixels have their alpha premultiplied in their color components. |
34 * This is the natural format for the rendering target pixels. | 39 * This is the natural format for the rendering target pixels. |
35 */ | 40 */ |
36 kPremul_SkAlphaType, | 41 kPremul_SkAlphaType, |
37 | 42 |
38 /** | 43 /** |
39 * All pixels have their color components stored without any regard to the | 44 * All pixels have their color components stored without any regard to the |
40 * alpha. e.g. this is the default configuration for PNG images. | 45 * alpha. e.g. this is the default configuration for PNG images. |
41 * | 46 * |
42 * This alpha-type is ONLY supported for input images. Rendering cannot | 47 * This alpha-type is ONLY supported for input images. Rendering cannot |
43 * generate this on output. | 48 * generate this on output. |
44 */ | 49 */ |
45 kUnpremul_SkAlphaType, | 50 kUnpremul_SkAlphaType, |
46 | 51 |
47 kLastEnum_SkAlphaType = kUnpremul_SkAlphaType | 52 kLastEnum_SkAlphaType = kUnpremul_SkAlphaType |
48 }; | 53 }; |
49 | 54 |
50 static inline bool SkAlphaTypeIsOpaque(SkAlphaType at) { | 55 static inline bool SkAlphaTypeIsOpaque(SkAlphaType at) { |
51 return kOpaque_SkAlphaType == at; | 56 SK_COMPILE_ASSERT(kIgnore_SkAlphaType < kOpaque_SkAlphaType, bad_alphatype_o
rder); |
| 57 SK_COMPILE_ASSERT(kPremul_SkAlphaType > kOpaque_SkAlphaType, bad_alphatype_o
rder); |
| 58 SK_COMPILE_ASSERT(kUnpremul_SkAlphaType > kOpaque_SkAlphaType, bad_alphatype
_order); |
| 59 |
| 60 return (unsigned)at <= kOpaque_SkAlphaType; |
52 } | 61 } |
53 | 62 |
54 static inline bool SkAlphaTypeIsValid(unsigned value) { | 63 static inline bool SkAlphaTypeIsValid(unsigned value) { |
55 return value <= kLastEnum_SkAlphaType; | 64 return value <= kLastEnum_SkAlphaType; |
56 } | 65 } |
57 | 66 |
58 /////////////////////////////////////////////////////////////////////////////// | 67 /////////////////////////////////////////////////////////////////////////////// |
59 | 68 |
60 /** | 69 /** |
61 * Describes how to interpret the components of a pixel. | 70 * Describes how to interpret the components of a pixel. |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 /** | 154 /** |
146 * Describe an image's dimensions and pixel type. | 155 * Describe an image's dimensions and pixel type. |
147 * Used for both src images and render-targets (surfaces). | 156 * Used for both src images and render-targets (surfaces). |
148 */ | 157 */ |
149 struct SK_API SkImageInfo { | 158 struct SK_API SkImageInfo { |
150 public: | 159 public: |
151 SkImageInfo() | 160 SkImageInfo() |
152 : fWidth(0) | 161 : fWidth(0) |
153 , fHeight(0) | 162 , fHeight(0) |
154 , fColorType(kUnknown_SkColorType) | 163 , fColorType(kUnknown_SkColorType) |
155 , fAlphaType(kUnknown_SkAlphaType) | 164 , fAlphaType(kIgnore_SkAlphaType) |
156 , fProfileType(kLinear_SkColorProfileType) | 165 , fProfileType(kLinear_SkColorProfileType) |
157 {} | 166 {} |
158 | 167 |
159 static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType a
t, | 168 static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType a
t, |
160 SkColorProfileType pt = kLinear_SkColorProfileType)
{ | 169 SkColorProfileType pt = kLinear_SkColorProfileType)
{ |
161 return SkImageInfo(width, height, ct, at, pt); | 170 return SkImageInfo(width, height, ct, at, pt); |
162 } | 171 } |
163 | 172 |
164 /** | 173 /** |
165 * Sets colortype to the native ARGB32 type. | 174 * Sets colortype to the native ARGB32 type. |
(...skipping 18 matching lines...) Expand all Loading... |
184 SkColorProfileType pt = kLinear_SkColorProf
ileType) { | 193 SkColorProfileType pt = kLinear_SkColorProf
ileType) { |
185 return MakeN32Premul(size.width(), size.height(), pt); | 194 return MakeN32Premul(size.width(), size.height(), pt); |
186 } | 195 } |
187 | 196 |
188 static SkImageInfo MakeA8(int width, int height) { | 197 static SkImageInfo MakeA8(int width, int height) { |
189 return SkImageInfo(width, height, kAlpha_8_SkColorType, kPremul_SkAlphaT
ype, | 198 return SkImageInfo(width, height, kAlpha_8_SkColorType, kPremul_SkAlphaT
ype, |
190 kLinear_SkColorProfileType); | 199 kLinear_SkColorProfileType); |
191 } | 200 } |
192 | 201 |
193 static SkImageInfo MakeUnknown(int width, int height) { | 202 static SkImageInfo MakeUnknown(int width, int height) { |
194 return SkImageInfo(width, height, kUnknown_SkColorType, kUnknown_SkAlpha
Type, | 203 return SkImageInfo(width, height, kUnknown_SkColorType, kIgnore_SkAlphaT
ype, |
195 kLinear_SkColorProfileType); | 204 kLinear_SkColorProfileType); |
196 } | 205 } |
197 | 206 |
198 static SkImageInfo MakeUnknown() { | 207 static SkImageInfo MakeUnknown() { |
199 return SkImageInfo(); | 208 return SkImageInfo(); |
200 } | 209 } |
201 | 210 |
202 int width() const { return fWidth; } | 211 int width() const { return fWidth; } |
203 int height() const { return fHeight; } | 212 int height() const { return fHeight; } |
204 SkColorType colorType() const { return fColorType; } | 213 SkColorType colorType() const { return fColorType; } |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 , fHeight(height) | 298 , fHeight(height) |
290 , fColorType(ct) | 299 , fColorType(ct) |
291 , fAlphaType(at) | 300 , fAlphaType(at) |
292 , fProfileType(pt) | 301 , fProfileType(pt) |
293 {} | 302 {} |
294 | 303 |
295 SkColorProfileType fProfileType; | 304 SkColorProfileType fProfileType; |
296 }; | 305 }; |
297 | 306 |
298 #endif | 307 #endif |
OLD | NEW |