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

Side by Side Diff: include/core/SkImageInfo.h

Issue 676883003: flag imageinfo as srgb (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix copy/paste error in loop limits Created 6 years, 1 month 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/core/SkImageInfo.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 kJPEG_SkYUVColorSpace, 141 kJPEG_SkYUVColorSpace,
142 /** SDTV standard Rec. 601 color space. Uses "studio swing" [16, 235] color 142 /** SDTV standard Rec. 601 color space. Uses "studio swing" [16, 235] color
143 range. See http://en.wikipedia.org/wiki/Rec._601 for details. */ 143 range. See http://en.wikipedia.org/wiki/Rec._601 for details. */
144 kRec601_SkYUVColorSpace, 144 kRec601_SkYUVColorSpace,
145 145
146 kLastEnum_SkYUVColorSpace = kRec601_SkYUVColorSpace 146 kLastEnum_SkYUVColorSpace = kRec601_SkYUVColorSpace
147 }; 147 };
148 148
149 /////////////////////////////////////////////////////////////////////////////// 149 ///////////////////////////////////////////////////////////////////////////////
150 150
151 enum SkColorProfileType {
152 kLinear_SkColorProfileType,
153 kSRGB_SkColorProfileType,
154
155 kLastEnum_SkColorProfileType = kSRGB_SkColorProfileType
156 };
157
151 /** 158 /**
152 * Describe an image's dimensions and pixel type. 159 * Describe an image's dimensions and pixel type.
160 * Used for both src images and render-targets (surfaces).
153 */ 161 */
154 struct SkImageInfo { 162 struct SkImageInfo {
155 public: 163 public:
156 SkImageInfo() 164 SkImageInfo()
157 : fWidth(0) 165 : fWidth(0)
158 , fHeight(0) 166 , fHeight(0)
159 , fColorType(kUnknown_SkColorType) 167 , fColorType(kUnknown_SkColorType)
160 , fAlphaType(kIgnore_SkAlphaType) 168 , fAlphaType(kIgnore_SkAlphaType)
169 , fProfileType(kLinear_SkColorProfileType)
161 {} 170 {}
162 171
163 static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType a t) { 172 static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType a t,
164 return SkImageInfo(width, height, ct, at); 173 SkColorProfileType pt = kLinear_SkColorProfileType) {
174 return SkImageInfo(width, height, ct, at, pt);
165 } 175 }
166 176
167 /** 177 /**
168 * Sets colortype to the native ARGB32 type. 178 * Sets colortype to the native ARGB32 type.
169 */ 179 */
170 static SkImageInfo MakeN32(int width, int height, SkAlphaType at) { 180 static SkImageInfo MakeN32(int width, int height, SkAlphaType at,
171 return SkImageInfo(width, height, kN32_SkColorType, at); 181 SkColorProfileType pt = kLinear_SkColorProfileTyp e) {
182 return SkImageInfo(width, height, kN32_SkColorType, at, pt);
172 } 183 }
173 184
174 /** 185 /**
175 * Sets colortype to the native ARGB32 type, and the alphatype to premul. 186 * Sets colortype to the native ARGB32 type, and the alphatype to premul.
176 */ 187 */
177 static SkImageInfo MakeN32Premul(int width, int height) { 188 static SkImageInfo MakeN32Premul(int width, int height,
178 return SkImageInfo(width, height, kN32_SkColorType, kPremul_SkAlphaType) ; 189 SkColorProfileType pt = kLinear_SkColorProf ileType) {
190 return SkImageInfo(width, height, kN32_SkColorType, kPremul_SkAlphaType, pt);
179 } 191 }
180 192
181 /** 193 /**
182 * Sets colortype to the native ARGB32 type, and the alphatype to premul. 194 * Sets colortype to the native ARGB32 type, and the alphatype to premul.
183 */ 195 */
184 static SkImageInfo MakeN32Premul(const SkISize& size) { 196 static SkImageInfo MakeN32Premul(const SkISize& size,
185 return MakeN32Premul(size.width(), size.height()); 197 SkColorProfileType pt = kLinear_SkColorProf ileType) {
198 return MakeN32Premul(size.width(), size.height(), pt);
186 } 199 }
187 200
188 static SkImageInfo MakeA8(int width, int height) { 201 static SkImageInfo MakeA8(int width, int height) {
189 return SkImageInfo(width, height, kAlpha_8_SkColorType, kPremul_SkAlphaT ype); 202 return SkImageInfo(width, height, kAlpha_8_SkColorType, kPremul_SkAlphaT ype,
203 kLinear_SkColorProfileType);
190 } 204 }
191 205
192 static SkImageInfo MakeUnknown(int width, int height) { 206 static SkImageInfo MakeUnknown(int width, int height) {
193 return SkImageInfo(width, height, kUnknown_SkColorType, kIgnore_SkAlphaT ype); 207 return SkImageInfo(width, height, kUnknown_SkColorType, kIgnore_SkAlphaT ype,
208 kLinear_SkColorProfileType);
194 } 209 }
195 210
196 static SkImageInfo MakeUnknown() { 211 static SkImageInfo MakeUnknown() {
197 return SkImageInfo(); 212 return SkImageInfo();
198 } 213 }
199 214
200 int width() const { return fWidth; } 215 int width() const { return fWidth; }
201 int height() const { return fHeight; } 216 int height() const { return fHeight; }
202 SkColorType colorType() const { return fColorType; } 217 SkColorType colorType() const { return fColorType; }
203 SkAlphaType alphaType() const { return fAlphaType; } 218 SkAlphaType alphaType() const { return fAlphaType; }
219 SkColorProfileType profileType() const { return fProfileType; }
204 220
205 bool isEmpty() const { return fWidth <= 0 || fHeight <= 0; } 221 bool isEmpty() const { return fWidth <= 0 || fHeight <= 0; }
206 222
207 bool isOpaque() const { 223 bool isOpaque() const {
208 return SkAlphaTypeIsOpaque(fAlphaType); 224 return SkAlphaTypeIsOpaque(fAlphaType);
209 } 225 }
210 226
227 bool isLinear() const { return kLinear_SkColorProfileType == fProfileType; }
228 bool isSRGB() const { return kSRGB_SkColorProfileType == fProfileType; }
229
230 SkISize dimensions() const { return SkISize::Make(fWidth, fHeight); }
211 SkIRect bounds() const { return SkIRect::MakeWH(fWidth, fHeight); } 231 SkIRect bounds() const { return SkIRect::MakeWH(fWidth, fHeight); }
212 SkISize dimensions() const { return SkISize::Make(fWidth, fHeight); }
213 232
214 /** 233 /**
215 * Return a new ImageInfo with the same colortype and alphatype as this inf o, 234 * Return a new ImageInfo with the same colortype and alphatype as this inf o,
216 * but with the specified width and height. 235 * but with the specified width and height.
217 */ 236 */
218 SkImageInfo makeWH(int newWidth, int newHeight) const { 237 SkImageInfo makeWH(int newWidth, int newHeight) const {
219 return SkImageInfo::Make(newWidth, newHeight, fColorType, fAlphaType); 238 return SkImageInfo::Make(newWidth, newHeight, fColorType, fAlphaType, fP rofileType);
220 } 239 }
221 240
222 SkImageInfo makeAlphaType(SkAlphaType newAlphaType) const { 241 SkImageInfo makeAlphaType(SkAlphaType newAlphaType) const {
223 return SkImageInfo::Make(fWidth, fHeight, fColorType, newAlphaType); 242 return SkImageInfo::Make(fWidth, fHeight, fColorType, newAlphaType, fPro fileType);
224 } 243 }
225 244
226 SkImageInfo makeColorType(SkColorType newColorType) const { 245 SkImageInfo makeColorType(SkColorType newColorType) const {
227 return SkImageInfo::Make(fWidth, fHeight, newColorType, fAlphaType); 246 return SkImageInfo::Make(fWidth, fHeight, newColorType, fAlphaType, fPro fileType);
228 } 247 }
229 248
230 int bytesPerPixel() const { 249 int bytesPerPixel() const {
231 return SkColorTypeBytesPerPixel(fColorType); 250 return SkColorTypeBytesPerPixel(fColorType);
232 } 251 }
233 252
234 uint64_t minRowBytes64() const { 253 uint64_t minRowBytes64() const {
235 return sk_64_mul(fWidth, this->bytesPerPixel()); 254 return sk_64_mul(fWidth, this->bytesPerPixel());
236 } 255 }
237 256
238 size_t minRowBytes() const { 257 size_t minRowBytes() const {
239 return (size_t)this->minRowBytes64(); 258 return (size_t)this->minRowBytes64();
(...skipping 25 matching lines...) Expand all
265 return rowBytes >= rb; 284 return rowBytes >= rb;
266 } 285 }
267 286
268 SkDEBUGCODE(void validate() const;) 287 SkDEBUGCODE(void validate() const;)
269 288
270 #ifdef SK_SUPPORT_LEGACY_PUBLIC_IMAGEINFO_FIELDS 289 #ifdef SK_SUPPORT_LEGACY_PUBLIC_IMAGEINFO_FIELDS
271 public: 290 public:
272 #else 291 #else
273 private: 292 private:
274 #endif 293 #endif
275 int fWidth; 294 int fWidth;
276 int fHeight; 295 int fHeight;
277 SkColorType fColorType; 296 SkColorType fColorType;
278 SkAlphaType fAlphaType; 297 SkAlphaType fAlphaType;
279 298
280 private: 299 private:
281 SkImageInfo(int width, int height, SkColorType ct, SkAlphaType at) 300 SkImageInfo(int width, int height, SkColorType ct, SkAlphaType at, SkColorPr ofileType pt)
282 : fWidth(width) 301 : fWidth(width)
283 , fHeight(height) 302 , fHeight(height)
284 , fColorType(ct) 303 , fColorType(ct)
285 , fAlphaType(at) 304 , fAlphaType(at)
305 , fProfileType(pt)
286 {} 306 {}
307
308 SkColorProfileType fProfileType;
287 }; 309 };
288 310
289 #endif 311 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkImageInfo.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698