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 |