OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 #include "SkBitmap.h" | 8 #include "SkBitmap.h" |
9 #include "SkCodecPriv.h" | 9 #include "SkCodecPriv.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
11 #include "SkColorSpace_Base.h" | 11 #include "SkColorSpace.h" |
12 #include "SkColorTable.h" | 12 #include "SkColorTable.h" |
13 #include "SkMath.h" | 13 #include "SkMath.h" |
14 #include "SkOpts.h" | 14 #include "SkOpts.h" |
15 #include "SkPngCodec.h" | 15 #include "SkPngCodec.h" |
16 #include "SkPoint3.h" | 16 #include "SkPoint3.h" |
17 #include "SkSize.h" | 17 #include "SkSize.h" |
18 #include "SkStream.h" | 18 #include "SkStream.h" |
19 #include "SkSwizzler.h" | 19 #include "SkSwizzler.h" |
20 #include "SkTemplates.h" | 20 #include "SkTemplates.h" |
21 #include "SkUtils.h" | 21 #include "SkUtils.h" |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 if (!primaries.toXYZD50(&toXYZD50)) { | 380 if (!primaries.toXYZD50(&toXYZD50)) { |
381 toXYZD50.set3x3RowMajorf(gSRGB_toXYZD50); | 381 toXYZD50.set3x3RowMajorf(gSRGB_toXYZD50); |
382 } | 382 } |
383 | 383 |
384 if (PNG_INFO_gAMA == png_get_gAMA_fixed(png_ptr, info_ptr, &gamma)) { | 384 if (PNG_INFO_gAMA == png_get_gAMA_fixed(png_ptr, info_ptr, &gamma)) { |
385 float value = png_inverted_fixed_point_to_float(gamma); | 385 float value = png_inverted_fixed_point_to_float(gamma); |
386 gammas[0] = value; | 386 gammas[0] = value; |
387 gammas[1] = value; | 387 gammas[1] = value; |
388 gammas[2] = value; | 388 gammas[2] = value; |
389 | 389 |
390 return SkColorSpace_Base::NewRGB(gammas, toXYZD50); | 390 return SkColorSpace::NewRGB(gammas, toXYZD50); |
391 } | 391 } |
392 | 392 |
393 // Default to sRGB gamma if the image has color space information, | 393 // Default to sRGB gamma if the image has color space information, |
394 // but does not specify gamma. | 394 // but does not specify gamma. |
395 return SkColorSpace::NewRGB(SkColorSpace::kSRGB_RenderTargetGamma, toXYZ
D50); | 395 return SkColorSpace::NewRGB(SkColorSpace::kSRGB_RenderTargetGamma, toXYZ
D50); |
396 } | 396 } |
397 | 397 |
398 // Last, check for gamma. | 398 // Last, check for gamma. |
399 if (PNG_INFO_gAMA == png_get_gAMA_fixed(png_ptr, info_ptr, &gamma)) { | 399 if (PNG_INFO_gAMA == png_get_gAMA_fixed(png_ptr, info_ptr, &gamma)) { |
400 | 400 |
401 // Set the gammas. | 401 // Set the gammas. |
402 float value = png_inverted_fixed_point_to_float(gamma); | 402 float value = png_inverted_fixed_point_to_float(gamma); |
403 gammas[0] = value; | 403 gammas[0] = value; |
404 gammas[1] = value; | 404 gammas[1] = value; |
405 gammas[2] = value; | 405 gammas[2] = value; |
406 | 406 |
407 // Since there is no cHRM, we will guess sRGB gamut. | 407 // Since there is no cHRM, we will guess sRGB gamut. |
408 SkMatrix44 toXYZD50(SkMatrix44::kUninitialized_Constructor); | 408 SkMatrix44 toXYZD50(SkMatrix44::kUninitialized_Constructor); |
409 toXYZD50.set3x3RowMajorf(gSRGB_toXYZD50); | 409 toXYZD50.set3x3RowMajorf(gSRGB_toXYZD50); |
410 | 410 |
411 return SkColorSpace_Base::NewRGB(gammas, toXYZD50); | 411 return SkColorSpace::NewRGB(gammas, toXYZD50); |
412 } | 412 } |
413 | 413 |
414 #endif // LIBPNG >= 1.6 | 414 #endif // LIBPNG >= 1.6 |
415 | 415 |
416 // Report that there is no color space information in the PNG. SkPngCodec i
s currently | 416 // Report that there is no color space information in the PNG. SkPngCodec i
s currently |
417 // implemented to guess sRGB in this case. | 417 // implemented to guess sRGB in this case. |
418 return nullptr; | 418 return nullptr; |
419 } | 419 } |
420 | 420 |
421 void SkPngCodec::allocateStorage(const SkImageInfo& dstInfo) { | 421 void SkPngCodec::allocateStorage(const SkImageInfo& dstInfo) { |
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1259 SkCodec* outCodec = nullptr; | 1259 SkCodec* outCodec = nullptr; |
1260 if (read_header(streamDeleter.get(), chunkReader, &outCodec, nullptr, nullpt
r)) { | 1260 if (read_header(streamDeleter.get(), chunkReader, &outCodec, nullptr, nullpt
r)) { |
1261 // Codec has taken ownership of the stream. | 1261 // Codec has taken ownership of the stream. |
1262 SkASSERT(outCodec); | 1262 SkASSERT(outCodec); |
1263 streamDeleter.release(); | 1263 streamDeleter.release(); |
1264 return outCodec; | 1264 return outCodec; |
1265 } | 1265 } |
1266 | 1266 |
1267 return nullptr; | 1267 return nullptr; |
1268 } | 1268 } |
OLD | NEW |