| OLD | NEW |
| 1 | 1 |
| 2 /* pngrtran.c - transforms the data in a row for PNG readers | 2 /* pngrtran.c - transforms the data in a row for PNG readers |
| 3 * | 3 * |
| 4 * Last changed in libpng 1.2.51 [February 6, 2014] | 4 * Last changed in libpng 1.2.53 [February 26, 2015] |
| 5 * Copyright (c) 1998-2014 Glenn Randers-Pehrson | 5 * Copyright (c) 1998-2015 Glenn Randers-Pehrson |
| 6 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) | 6 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) |
| 7 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) | 7 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) |
| 8 * | 8 * |
| 9 * This code is released under the libpng license. | 9 * This code is released under the libpng license. |
| 10 * For conditions of distribution and use, see the disclaimer | 10 * For conditions of distribution and use, see the disclaimer |
| 11 * and license in png.h | 11 * and license in png.h |
| 12 * | 12 * |
| 13 * This file contains functions optionally called by an application | 13 * This file contains functions optionally called by an application |
| 14 * in order to tell libpng how to handle data when reading a PNG. | 14 * in order to tell libpng how to handle data when reading a PNG. |
| 15 * Transformations that are used in both reading and writing are | 15 * Transformations that are used in both reading and writing are |
| (...skipping 2387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2403 { | 2403 { |
| 2404 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) | 2404 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) |
| 2405 if (png_ptr->gamma_16_to_1 != NULL && | 2405 if (png_ptr->gamma_16_to_1 != NULL && |
| 2406 png_ptr->gamma_16_from_1 != NULL) | 2406 png_ptr->gamma_16_from_1 != NULL) |
| 2407 { | 2407 { |
| 2408 png_bytep sp = row; | 2408 png_bytep sp = row; |
| 2409 png_bytep dp = row; | 2409 png_bytep dp = row; |
| 2410 for (i = 0; i < row_width; i++) | 2410 for (i = 0; i < row_width; i++) |
| 2411 { | 2411 { |
| 2412 png_uint_16 red, green, blue, w; | 2412 png_uint_16 red, green, blue, w; |
| 2413 png_byte hi,lo; |
| 2413 | 2414 |
| 2414 red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2415 hi=*(sp)++; lo=*(sp)++; |
| 2415 green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2416 red = (png_uint_16)((hi << 8) | (lo)); |
| 2416 blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2417 hi=*(sp)++; lo=*(sp)++; |
| 2418 green = (png_uint_16)((hi << 8) | (lo)); |
| 2419 hi=*(sp)++; lo=*(sp)++; |
| 2420 blue = (png_uint_16)((hi << 8) | (lo)); |
| 2417 | 2421 |
| 2418 if (red == green && red == blue) | 2422 if (red == green && red == blue) |
| 2419 w = red; | 2423 w = red; |
| 2420 else | 2424 else |
| 2421 { | 2425 { |
| 2422 png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >> | 2426 png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >> |
| 2423 png_ptr->gamma_shift][red>>8]; | 2427 png_ptr->gamma_shift][red>>8]; |
| 2424 png_uint_16 green_1 = | 2428 png_uint_16 green_1 = |
| 2425 png_ptr->gamma_16_to_1[(green&0xff) >> | 2429 png_ptr->gamma_16_to_1[(green&0xff) >> |
| 2426 png_ptr->gamma_shift][green>>8]; | 2430 png_ptr->gamma_shift][green>>8]; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2438 } | 2442 } |
| 2439 } | 2443 } |
| 2440 else | 2444 else |
| 2441 #endif | 2445 #endif |
| 2442 { | 2446 { |
| 2443 png_bytep sp = row; | 2447 png_bytep sp = row; |
| 2444 png_bytep dp = row; | 2448 png_bytep dp = row; |
| 2445 for (i = 0; i < row_width; i++) | 2449 for (i = 0; i < row_width; i++) |
| 2446 { | 2450 { |
| 2447 png_uint_16 red, green, blue, gray16; | 2451 png_uint_16 red, green, blue, gray16; |
| 2452 png_byte hi,lo; |
| 2448 | 2453 |
| 2449 red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2454 hi=*(sp)++; lo=*(sp)++; |
| 2450 green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2455 red = (png_uint_16)((hi << 8) | (lo)); |
| 2451 blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2456 hi=*(sp)++; lo=*(sp)++; |
| 2457 green = (png_uint_16)((hi << 8) | (lo)); |
| 2458 hi=*(sp)++; lo=*(sp)++; |
| 2459 blue = (png_uint_16)((hi << 8) | (lo)); |
| 2452 | 2460 |
| 2453 if (red != green || red != blue) | 2461 if (red != green || red != blue) |
| 2454 rgb_error |= 1; | 2462 rgb_error |= 1; |
| 2455 gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15); | 2463 gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15); |
| 2456 *(dp++) = (png_byte)((gray16>>8) & 0xff); | 2464 *(dp++) = (png_byte)((gray16>>8) & 0xff); |
| 2457 *(dp++) = (png_byte)(gray16 & 0xff); | 2465 *(dp++) = (png_byte)(gray16 & 0xff); |
| 2458 } | 2466 } |
| 2459 } | 2467 } |
| 2460 } | 2468 } |
| 2461 } | 2469 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2501 { | 2509 { |
| 2502 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) | 2510 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) |
| 2503 if (png_ptr->gamma_16_to_1 != NULL && | 2511 if (png_ptr->gamma_16_to_1 != NULL && |
| 2504 png_ptr->gamma_16_from_1 != NULL) | 2512 png_ptr->gamma_16_from_1 != NULL) |
| 2505 { | 2513 { |
| 2506 png_bytep sp = row; | 2514 png_bytep sp = row; |
| 2507 png_bytep dp = row; | 2515 png_bytep dp = row; |
| 2508 for (i = 0; i < row_width; i++) | 2516 for (i = 0; i < row_width; i++) |
| 2509 { | 2517 { |
| 2510 png_uint_16 red, green, blue, w; | 2518 png_uint_16 red, green, blue, w; |
| 2519 png_byte hi,lo; |
| 2511 | 2520 |
| 2512 red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2521 hi=*(sp)++; lo=*(sp)++; |
| 2513 green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2522 red = (png_uint_16)((hi << 8) | (lo)); |
| 2514 blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; | 2523 hi=*(sp)++; lo=*(sp)++; |
| 2524 green = (png_uint_16)((hi << 8) | (lo)); |
| 2525 hi=*(sp)++; lo=*(sp)++; |
| 2526 blue = (png_uint_16)((hi << 8) | (lo)); |
| 2515 | 2527 |
| 2516 if (red == green && red == blue) | 2528 if (red == green && red == blue) |
| 2517 w = red; | 2529 w = red; |
| 2518 else | 2530 else |
| 2519 { | 2531 { |
| 2520 png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >> | 2532 png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >> |
| 2521 png_ptr->gamma_shift][red>>8]; | 2533 png_ptr->gamma_shift][red>>8]; |
| 2522 png_uint_16 green_1 = | 2534 png_uint_16 green_1 = |
| 2523 png_ptr->gamma_16_to_1[(green&0xff) >> | 2535 png_ptr->gamma_16_to_1[(green&0xff) >> |
| 2524 png_ptr->gamma_shift][green>>8]; | 2536 png_ptr->gamma_shift][green>>8]; |
| (...skipping 1942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4467 *(rp ) = (png_byte)((red >> 8) & 0xff); | 4479 *(rp ) = (png_byte)((red >> 8) & 0xff); |
| 4468 *(rp+1) = (png_byte)(red & 0xff); | 4480 *(rp+1) = (png_byte)(red & 0xff); |
| 4469 *(rp+4) = (png_byte)((blue >> 8) & 0xff); | 4481 *(rp+4) = (png_byte)((blue >> 8) & 0xff); |
| 4470 *(rp+5) = (png_byte)(blue & 0xff); | 4482 *(rp+5) = (png_byte)(blue & 0xff); |
| 4471 } | 4483 } |
| 4472 } | 4484 } |
| 4473 } | 4485 } |
| 4474 } | 4486 } |
| 4475 #endif /* PNG_MNG_FEATURES_SUPPORTED */ | 4487 #endif /* PNG_MNG_FEATURES_SUPPORTED */ |
| 4476 #endif /* PNG_READ_SUPPORTED */ | 4488 #endif /* PNG_READ_SUPPORTED */ |
| OLD | NEW |