| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "ui/gfx/codec/jpeg_codec.h" | 5 #include "ui/gfx/codec/jpeg_codec.h" |
| 6 | 6 |
| 7 #include <setjmp.h> | 7 #include <setjmp.h> |
| 8 | 8 |
| 9 #include <memory> |
| 10 |
| 9 #include "base/logging.h" | 11 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | |
| 11 #include "third_party/skia/include/core/SkBitmap.h" | 12 #include "third_party/skia/include/core/SkBitmap.h" |
| 12 #include "third_party/skia/include/core/SkColorPriv.h" | 13 #include "third_party/skia/include/core/SkColorPriv.h" |
| 13 | 14 |
| 14 extern "C" { | 15 extern "C" { |
| 15 #if defined(USE_SYSTEM_LIBJPEG) | 16 #if defined(USE_SYSTEM_LIBJPEG) |
| 16 #include <jpeglib.h> | 17 #include <jpeglib.h> |
| 17 #elif defined(USE_LIBJPEG_TURBO) | 18 #elif defined(USE_LIBJPEG_TURBO) |
| 18 #include "third_party/libjpeg_turbo/jpeglib.h" | 19 #include "third_party/libjpeg_turbo/jpeglib.h" |
| 19 #else | 20 #else |
| 20 #include "third_party/libjpeg/jpeglib.h" | 21 #include "third_party/libjpeg/jpeglib.h" |
| (...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 row_write_stride = cinfo.output_width * 4; | 581 row_write_stride = cinfo.output_width * 4; |
| 581 converter = RGBtoBGRA; | 582 converter = RGBtoBGRA; |
| 582 } else { | 583 } else { |
| 583 NOTREACHED() << "Invalid pixel format"; | 584 NOTREACHED() << "Invalid pixel format"; |
| 584 jpeg_destroy_decompress(&cinfo); | 585 jpeg_destroy_decompress(&cinfo); |
| 585 return false; | 586 return false; |
| 586 } | 587 } |
| 587 | 588 |
| 588 output->resize(row_write_stride * cinfo.output_height); | 589 output->resize(row_write_stride * cinfo.output_height); |
| 589 | 590 |
| 590 scoped_ptr<unsigned char[]> row_data(new unsigned char[row_read_stride]); | 591 std::unique_ptr<unsigned char[]> row_data( |
| 592 new unsigned char[row_read_stride]); |
| 591 unsigned char* rowptr = row_data.get(); | 593 unsigned char* rowptr = row_data.get(); |
| 592 for (int row = 0; row < static_cast<int>(cinfo.output_height); row++) { | 594 for (int row = 0; row < static_cast<int>(cinfo.output_height); row++) { |
| 593 if (!jpeg_read_scanlines(&cinfo, &rowptr, 1)) | 595 if (!jpeg_read_scanlines(&cinfo, &rowptr, 1)) |
| 594 return false; | 596 return false; |
| 595 converter(rowptr, *w, &(*output)[row * row_write_stride]); | 597 converter(rowptr, *w, &(*output)[row * row_write_stride]); |
| 596 } | 598 } |
| 597 } | 599 } |
| 598 #endif | 600 #endif |
| 599 | 601 |
| 600 jpeg_finish_decompress(&cinfo); | 602 jpeg_finish_decompress(&cinfo); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 614 int data_length = w * h * 4; | 616 int data_length = w * h * 4; |
| 615 | 617 |
| 616 std::unique_ptr<SkBitmap> bitmap(new SkBitmap()); | 618 std::unique_ptr<SkBitmap> bitmap(new SkBitmap()); |
| 617 bitmap->allocN32Pixels(w, h); | 619 bitmap->allocN32Pixels(w, h); |
| 618 memcpy(bitmap->getAddr32(0, 0), &data_vector[0], data_length); | 620 memcpy(bitmap->getAddr32(0, 0), &data_vector[0], data_length); |
| 619 | 621 |
| 620 return bitmap; | 622 return bitmap; |
| 621 } | 623 } |
| 622 | 624 |
| 623 } // namespace gfx | 625 } // namespace gfx |
| OLD | NEW |