blob: 98c2f303b55ad63022ae0373203df8c8df627b5c [file] [log] [blame]
// 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;
};