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 3// found in the LICENSE file. 4 5#ifndef CHROME_UTILITY_CLOUD_PRINT_BITMAP_IMAGE_H_ 6#define CHROME_UTILITY_CLOUD_PRINT_BITMAP_IMAGE_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "ui/gfx/point.h" 10#include "ui/gfx/size.h" 11 12namespace cloud_print { 13 14class BitmapImage { 15 public: 16 enum Colorspace { 17 // These are the only types PWGEncoder currently supports. 18 RGBA, 19 BGRA 20 }; 21 22 BitmapImage(const gfx::Size& size, Colorspace colorspace); 23 ~BitmapImage(); 24 25 uint8 channels() const; 26 const gfx::Size& size() const { return size_; } 27 Colorspace colorspace() const { return colorspace_; } 28 29 const uint8* pixel_data() const { return data_.get(); } 30 uint8* pixel_data() { return data_.get(); } 31 32 const uint8* GetPixel(const gfx::Point& point) const; 33 34 private: 35 gfx::Size size_; 36 Colorspace colorspace_; 37 scoped_ptr<uint8[]> data_; 38 39 DISALLOW_COPY_AND_ASSIGN(BitmapImage); 40}; 41 42} // namespace cloud_print 43 44#endif // CHROME_UTILITY_CLOUD_PRINT_BITMAP_IMAGE_H_ 45