From fd1d3422ab1707253e7887a8a7eb1ad3c60e86fe Mon Sep 17 00:00:00 2001 From: "vitalybuka@chromium.org" Date: Wed, 20 Nov 2013 21:59:28 +0000 Subject: [PATCH] Use gfx::Size in BitmapImage interface. BUG=318373 Review URL: https://codereview.chromium.org/77893002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236313 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/utility/cloud_print/bitmap_image.cc | 8 +++----- chrome/utility/cloud_print/bitmap_image.h | 11 ++++------- chrome/utility/cloud_print/pwg_encoder.cc | 17 +++++++++-------- chrome/utility/cloud_print/pwg_encoder_unittest.cc | 7 +++---- 4 files changed, 19 insertions(+), 24 deletions(-) diff --git a/chrome/utility/cloud_print/bitmap_image.cc b/chrome/utility/cloud_print/bitmap_image.cc index aa34aa041cd5..2a2cf9f33d97 100644 --- a/chrome/utility/cloud_print/bitmap_image.cc +++ b/chrome/utility/cloud_print/bitmap_image.cc @@ -10,13 +10,11 @@ namespace { const uint8 kCurrentlySupportedNumberOfChannels = 4; } -BitmapImage::BitmapImage(int32 width, - int32 height, +BitmapImage::BitmapImage(const gfx::Size& size, Colorspace colorspace) - : width_(width), - height_(height), + : size_(size), colorspace_(colorspace), - data_(new uint8[width * height * channels()]) { + data_(new uint8[size.GetArea() * channels()]) { } BitmapImage::~BitmapImage() { diff --git a/chrome/utility/cloud_print/bitmap_image.h b/chrome/utility/cloud_print/bitmap_image.h index 887160e01c5c..93af0cdd037f 100644 --- a/chrome/utility/cloud_print/bitmap_image.h +++ b/chrome/utility/cloud_print/bitmap_image.h @@ -6,6 +6,7 @@ #define CHROME_UTILITY_CLOUD_PRINT_BITMAP_IMAGE_H_ #include "base/memory/scoped_ptr.h" +#include "ui/gfx/size.h" namespace cloud_print { @@ -17,22 +18,18 @@ class BitmapImage { BGRA }; - BitmapImage(int32 width, - int32 height, - Colorspace colorspace); + BitmapImage(const gfx::Size& size, Colorspace colorspace); ~BitmapImage(); uint8 channels() const; - int32 width() const { return width_; } - int32 height() const { return height_; } + const gfx::Size& size() const { return size_; } Colorspace colorspace() const { return colorspace_; } const uint8* pixel_data() const { return data_.get(); } uint8* pixel_data() { return data_.get(); } private: - int32 width_; - int32 height_; + gfx::Size size_; Colorspace colorspace_; scoped_ptr data_; diff --git a/chrome/utility/cloud_print/pwg_encoder.cc b/chrome/utility/cloud_print/pwg_encoder.cc index eaf28f4897b7..48c4c9bd7f90 100644 --- a/chrome/utility/cloud_print/pwg_encoder.cc +++ b/chrome/utility/cloud_print/pwg_encoder.cc @@ -68,12 +68,13 @@ void PwgEncoder::EncodePageHeader(const BitmapImage& image, const uint32 dpi, memset(header, 0, kHeaderSize); net::WriteBigEndian(header + kHeaderHwResolutionHorizontal, dpi); net::WriteBigEndian(header + kHeaderHwResolutionVertical, dpi); - net::WriteBigEndian(header + kHeaderCupsWidth, image.width()); - net::WriteBigEndian(header + kHeaderCupsHeight, image.height()); + net::WriteBigEndian(header + kHeaderCupsWidth, image.size().width()); + net::WriteBigEndian(header + kHeaderCupsHeight, + image.size().height()); net::WriteBigEndian(header + kHeaderCupsBitsPerColor, kBitsPerColor); net::WriteBigEndian(header + kHeaderCupsBitsPerPixel, kBitsPerPixel); net::WriteBigEndian(header + kHeaderCupsBytesPerLine, - (kBitsPerPixel * image.width() + 7) / 8); + (kBitsPerPixel * image.size().width() + 7) / 8); net::WriteBigEndian(header + kHeaderCupsColorOrder, kColorOrder); net::WriteBigEndian(header + kHeaderCupsColorSpace, kColorSpace); net::WriteBigEndian(header + kHeaderCupsNumColors, kNumColors); @@ -148,7 +149,7 @@ bool PwgEncoder::EncodeRowFrom32Bit(const uint8* row, const int width, inline const uint8* PwgEncoder::GetRow(const BitmapImage& image, int row) const { - return image.pixel_data() + row * image.width() * image.channels(); + return image.pixel_data() + row * image.size().width() * image.channels(); } // Given a pointer to a struct Image, create a PWG of the image and @@ -166,15 +167,15 @@ bool PwgEncoder::EncodePage(const BitmapImage& image, EncodePageHeader(image, dpi, total_pages, output); - int row_size = image.width() * image.channels(); + int row_size = image.size().width() * image.channels(); int row_number = 0; - while (row_number < image.height()) { + while (row_number < image.size().height()) { const uint8* current_row = GetRow(image, row_number++); int num_identical_rows = 1; // We count how many times the current row is repeated. while (num_identical_rows < kPwgMaxPackedRows - && row_number < image.height() + && row_number < image.size().height() && !memcmp(current_row, GetRow(image, row_number), row_size)) { num_identical_rows++; row_number++; @@ -183,7 +184,7 @@ bool PwgEncoder::EncodePage(const BitmapImage& image, // Both supported colorspaces have a 32-bit pixels information. if (!EncodeRowFrom32Bit( - current_row, image.width(), image.colorspace(), output)) { + current_row, image.size().width(), image.colorspace(), output)) { return false; } } diff --git a/chrome/utility/cloud_print/pwg_encoder_unittest.cc b/chrome/utility/cloud_print/pwg_encoder_unittest.cc index c4ffc2b1ca8a..eafc6ba4818a 100644 --- a/chrome/utility/cloud_print/pwg_encoder_unittest.cc +++ b/chrome/utility/cloud_print/pwg_encoder_unittest.cc @@ -26,10 +26,9 @@ const int kRasterHeight = 792; const int kRasterDPI = 72; scoped_ptr MakeSampleBitmap() { - scoped_ptr bitmap_image(new BitmapImage( - kRasterWidth, - kRasterHeight, - BitmapImage::RGBA)); + scoped_ptr bitmap_image( + new BitmapImage(gfx::Size(kRasterWidth, kRasterHeight), + BitmapImage::RGBA)); uint32* bitmap_data = reinterpret_cast( bitmap_image->pixel_data()); -- 2.11.4.GIT