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