| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This is a duplicate of chromium's src/tools/imagediff/image_diff_png.cc | 5 // This is a duplicate of chromium's src/tools/imagediff/image_diff_png.cc |
| 6 // that has been modified to build in a pdfium environment, which itself | 6 // that has been modified to build in a pdfium environment, which itself |
| 7 // was duplicated as follows: | 7 // was duplicated as follows: |
| 8 | 8 |
| 9 // This is a duplicate of ui/gfx/codec/png_codec.cc, after removing code related | 9 // This is a duplicate of ui/gfx/codec/png_codec.cc, after removing code related |
| 10 // to Skia, that we can use when running layout tests with minimal dependencies. | 10 // to Skia, that we can use when running layout tests with minimal dependencies. |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 state->output_channels = 3; | 212 state->output_channels = 3; |
| 213 break; | 213 break; |
| 214 case FORMAT_RGBA: | 214 case FORMAT_RGBA: |
| 215 state->row_converter = &ConvertRGBtoRGBA; | 215 state->row_converter = &ConvertRGBtoRGBA; |
| 216 state->output_channels = 4; | 216 state->output_channels = 4; |
| 217 break; | 217 break; |
| 218 case FORMAT_BGRA: | 218 case FORMAT_BGRA: |
| 219 state->row_converter = &ConvertRGBtoBGRA; | 219 state->row_converter = &ConvertRGBtoBGRA; |
| 220 state->output_channels = 4; | 220 state->output_channels = 4; |
| 221 break; | 221 break; |
| 222 default: |
| 223 NOTREACHED(); |
| 224 break; |
| 222 } | 225 } |
| 223 } else if (channels == 4) { | 226 } else if (channels == 4) { |
| 224 switch (state->output_format) { | 227 switch (state->output_format) { |
| 225 case FORMAT_RGB: | 228 case FORMAT_RGB: |
| 226 state->row_converter = &ConvertRGBAtoRGB; | 229 state->row_converter = &ConvertRGBAtoRGB; |
| 227 state->output_channels = 3; | 230 state->output_channels = 3; |
| 228 break; | 231 break; |
| 229 case FORMAT_RGBA: | 232 case FORMAT_RGBA: |
| 230 state->row_converter = NULL; // no conversion necessary | 233 state->row_converter = NULL; // no conversion necessary |
| 231 state->output_channels = 4; | 234 state->output_channels = 4; |
| 232 break; | 235 break; |
| 233 case FORMAT_BGRA: | 236 case FORMAT_BGRA: |
| 234 state->row_converter = &ConvertBetweenBGRAandRGBA; | 237 state->row_converter = &ConvertBetweenBGRAandRGBA; |
| 235 state->output_channels = 4; | 238 state->output_channels = 4; |
| 236 break; | 239 break; |
| 240 default: |
| 241 NOTREACHED(); |
| 242 break; |
| 237 } | 243 } |
| 238 } else { | 244 } else { |
| 239 NOTREACHED(); | 245 NOTREACHED(); |
| 240 longjmp(png_jmpbuf(png_ptr), 1); | 246 longjmp(png_jmpbuf(png_ptr), 1); |
| 241 } | 247 } |
| 242 | 248 |
| 243 state->output->resize( | 249 state->output->resize( |
| 244 state->width * state->output_channels * state->height); | 250 state->width * state->output_channels * state->height); |
| 245 } | 251 } |
| 246 | 252 |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 if (discard_transparency) { | 561 if (discard_transparency) { |
| 556 output_color_components = 3; | 562 output_color_components = 3; |
| 557 png_output_color_type = PNG_COLOR_TYPE_RGB; | 563 png_output_color_type = PNG_COLOR_TYPE_RGB; |
| 558 converter = ConvertBGRAtoRGB; | 564 converter = ConvertBGRAtoRGB; |
| 559 } else { | 565 } else { |
| 560 output_color_components = 4; | 566 output_color_components = 4; |
| 561 png_output_color_type = PNG_COLOR_TYPE_RGB_ALPHA; | 567 png_output_color_type = PNG_COLOR_TYPE_RGB_ALPHA; |
| 562 converter = ConvertBetweenBGRAandRGBA; | 568 converter = ConvertBetweenBGRAandRGBA; |
| 563 } | 569 } |
| 564 break; | 570 break; |
| 571 |
| 572 default: |
| 573 NOTREACHED(); |
| 574 return false; |
| 565 } | 575 } |
| 566 | 576 |
| 567 // Row stride should be at least as long as the length of the data. | 577 // Row stride should be at least as long as the length of the data. |
| 568 if (input_color_components * width < row_byte_width) | 578 if (input_color_components * width < row_byte_width) |
| 569 return false; | 579 return false; |
| 570 | 580 |
| 571 png_struct* png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, | 581 png_struct* png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, |
| 572 NULL, NULL, NULL); | 582 NULL, NULL, NULL); |
| 573 if (!png_ptr) | 583 if (!png_ptr) |
| 574 return false; | 584 return false; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 int height, | 635 int height, |
| 626 int row_byte_width, | 636 int row_byte_width, |
| 627 bool discard_transparency, | 637 bool discard_transparency, |
| 628 std::vector<unsigned char>* output) { | 638 std::vector<unsigned char>* output) { |
| 629 return Encode(input, FORMAT_BGRA, | 639 return Encode(input, FORMAT_BGRA, |
| 630 width, height, row_byte_width, discard_transparency, | 640 width, height, row_byte_width, discard_transparency, |
| 631 std::vector<Comment>(), output); | 641 std::vector<Comment>(), output); |
| 632 } | 642 } |
| 633 | 643 |
| 634 } // image_diff_png | 644 } // image_diff_png |
| OLD | NEW |