Index: include/core/SkImageInfo.h |
diff --git a/include/core/SkImageInfo.h b/include/core/SkImageInfo.h |
index 6fbaf6bbce19b4039683e75f90d123176398d1ab..a9d5aeac988e9c63253e9f4338e14459793188e1 100644 |
--- a/include/core/SkImageInfo.h |
+++ b/include/core/SkImageInfo.h |
@@ -148,8 +148,16 @@ enum SkYUVColorSpace { |
/////////////////////////////////////////////////////////////////////////////// |
+enum SkColorProfileType { |
+ kLinear_SkColorProfileType, |
+ kSRGB_SkColorProfileType, |
+ |
+ kLastEnum_SkColorProfileType = kSRGB_SkColorProfileType |
+}; |
+ |
/** |
* Describe an image's dimensions and pixel type. |
+ * Used for both src images and render-targets (surfaces). |
*/ |
struct SkImageInfo { |
public: |
@@ -158,39 +166,46 @@ public: |
, fHeight(0) |
, fColorType(kUnknown_SkColorType) |
, fAlphaType(kIgnore_SkAlphaType) |
+ , fProfileType(kLinear_SkColorProfileType) |
{} |
- static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType at) { |
- return SkImageInfo(width, height, ct, at); |
+ static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType at, |
+ SkColorProfileType pt = kLinear_SkColorProfileType) { |
+ return SkImageInfo(width, height, ct, at, pt); |
} |
/** |
* Sets colortype to the native ARGB32 type. |
*/ |
- static SkImageInfo MakeN32(int width, int height, SkAlphaType at) { |
- return SkImageInfo(width, height, kN32_SkColorType, at); |
+ static SkImageInfo MakeN32(int width, int height, SkAlphaType at, |
+ SkColorProfileType pt = kLinear_SkColorProfileType) { |
+ return SkImageInfo(width, height, kN32_SkColorType, at, pt); |
} |
/** |
* Sets colortype to the native ARGB32 type, and the alphatype to premul. |
*/ |
- static SkImageInfo MakeN32Premul(int width, int height) { |
- return SkImageInfo(width, height, kN32_SkColorType, kPremul_SkAlphaType); |
+ static SkImageInfo MakeN32Premul(int width, int height, |
+ SkColorProfileType pt = kLinear_SkColorProfileType) { |
+ return SkImageInfo(width, height, kN32_SkColorType, kPremul_SkAlphaType, pt); |
} |
/** |
* Sets colortype to the native ARGB32 type, and the alphatype to premul. |
*/ |
- static SkImageInfo MakeN32Premul(const SkISize& size) { |
- return MakeN32Premul(size.width(), size.height()); |
+ static SkImageInfo MakeN32Premul(const SkISize& size, |
+ SkColorProfileType pt = kLinear_SkColorProfileType) { |
+ return MakeN32Premul(size.width(), size.height(), pt); |
} |
static SkImageInfo MakeA8(int width, int height) { |
- return SkImageInfo(width, height, kAlpha_8_SkColorType, kPremul_SkAlphaType); |
+ return SkImageInfo(width, height, kAlpha_8_SkColorType, kPremul_SkAlphaType, |
+ kLinear_SkColorProfileType); |
} |
static SkImageInfo MakeUnknown(int width, int height) { |
- return SkImageInfo(width, height, kUnknown_SkColorType, kIgnore_SkAlphaType); |
+ return SkImageInfo(width, height, kUnknown_SkColorType, kIgnore_SkAlphaType, |
+ kLinear_SkColorProfileType); |
} |
static SkImageInfo MakeUnknown() { |
@@ -201,6 +216,7 @@ public: |
int height() const { return fHeight; } |
SkColorType colorType() const { return fColorType; } |
SkAlphaType alphaType() const { return fAlphaType; } |
+ SkColorProfileType profileType() const { return fProfileType; } |
bool isEmpty() const { return fWidth <= 0 || fHeight <= 0; } |
@@ -208,25 +224,28 @@ public: |
return SkAlphaTypeIsOpaque(fAlphaType); |
} |
- SkIRect bounds() const { return SkIRect::MakeWH(fWidth, fHeight); } |
+ bool isLinear() const { return kLinear_SkColorProfileType == fProfileType; } |
+ bool isSRGB() const { return kSRGB_SkColorProfileType == fProfileType; } |
+ |
SkISize dimensions() const { return SkISize::Make(fWidth, fHeight); } |
+ SkIRect bounds() const { return SkIRect::MakeWH(fWidth, fHeight); } |
/** |
* Return a new ImageInfo with the same colortype and alphatype as this info, |
* but with the specified width and height. |
*/ |
SkImageInfo makeWH(int newWidth, int newHeight) const { |
- return SkImageInfo::Make(newWidth, newHeight, fColorType, fAlphaType); |
+ return SkImageInfo::Make(newWidth, newHeight, fColorType, fAlphaType, fProfileType); |
} |
SkImageInfo makeAlphaType(SkAlphaType newAlphaType) const { |
- return SkImageInfo::Make(fWidth, fHeight, fColorType, newAlphaType); |
+ return SkImageInfo::Make(fWidth, fHeight, fColorType, newAlphaType, fProfileType); |
} |
SkImageInfo makeColorType(SkColorType newColorType) const { |
- return SkImageInfo::Make(fWidth, fHeight, newColorType, fAlphaType); |
+ return SkImageInfo::Make(fWidth, fHeight, newColorType, fAlphaType, fProfileType); |
} |
- |
+ |
int bytesPerPixel() const { |
return SkColorTypeBytesPerPixel(fColorType); |
} |
@@ -272,18 +291,21 @@ public: |
#else |
private: |
#endif |
- int fWidth; |
- int fHeight; |
- SkColorType fColorType; |
- SkAlphaType fAlphaType; |
+ int fWidth; |
+ int fHeight; |
+ SkColorType fColorType; |
+ SkAlphaType fAlphaType; |
private: |
- SkImageInfo(int width, int height, SkColorType ct, SkAlphaType at) |
+ SkImageInfo(int width, int height, SkColorType ct, SkAlphaType at, SkColorProfileType pt) |
: fWidth(width) |
, fHeight(height) |
, fColorType(ct) |
, fAlphaType(at) |
+ , fProfileType(pt) |
{} |
+ |
+ SkColorProfileType fProfileType; |
}; |
#endif |