// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_PWG_ENCODER_BITMAP_IMAGE_H_
#define COMPONENTS_PWG_ENCODER_BITMAP_IMAGE_H_

#include <stdint.h>

#include <memory>

#include "base/macros.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/size.h"

namespace pwg_encoder {

class BitmapImage {
 public:
  enum Colorspace {
    // These are the only types PWGEncoder currently supports.
    RGBA,
    BGRA
  };

  BitmapImage(const gfx::Size& size, Colorspace colorspace);
  ~BitmapImage();

  uint8_t channels() const;
  const gfx::Size& size() const { return size_; }
  Colorspace colorspace() const { return colorspace_; }

  const uint8_t* pixel_data() const { return data_.get(); }
  uint8_t* pixel_data() { return data_.get(); }

  const uint8_t* GetPixel(const gfx::Point& point) const;

 private:
  gfx::Size size_;
  Colorspace colorspace_;
  std::unique_ptr<uint8_t[]> data_;

  DISALLOW_COPY_AND_ASSIGN(BitmapImage);
};

}  // namespace pwg_encoder

#endif  // COMPONENTS_PWG_ENCODER_BITMAP_IMAGE_H_
