// Copyright 2016 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.

module mojo.gfx;

import "geometry/interfaces/geometry.mojom";

// This should probably be a system wide list (maybe in exists already?) since
// this is undoubtably not the only interface that will care about color formats
enum PixelLayout {
  BGRA_8888 = 0,
};

enum ColorSpace {
  SRGB = 0,
};

struct ColorFormat {
  PixelLayout layout;
  ColorSpace color_space;
};

// ImageBuffer is a thin wrapper around a handle for a platform memory handle
// which includes some basic metadata about the image. This may eventually be
// provided by some other, more general purpose system This should probably be
// where we put flags/properties about the buffer that are not image specific
// (Like whether it is CPU or GPU memory, what the layout is like, etc.)
struct ImageBuffer {
  uint64 size;
  handle data;
};

// Image wraps ImageBuffer and provides image-specific metadata for the buffer
struct Image {
  mojo.Size size;  // width and height of image in pixels
  uint32 stride;  // bytes per row
  uint32 pitch;  // pixels per row
  ColorFormat format;  // pixel format
  ImageBuffer buffer;
};

struct SupportedImageProperties {
  array<ColorFormat> formats;
  mojo.Size size;
};
