Index: mojo/services/gfx/images/interfaces/image.mojom |
diff --git a/mojo/services/gfx/images/interfaces/image.mojom b/mojo/services/gfx/images/interfaces/image.mojom |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3009222ac79d07140df0a43b89a871ba9cc21169 |
--- /dev/null |
+++ b/mojo/services/gfx/images/interfaces/image.mojom |
@@ -0,0 +1,48 @@ |
+// Copyright 2015 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. |
+ |
+[DartPackage="mojo_services"] |
+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 { |
+ RGBA_8888 = 0, |
+ BGRA_8888 = 1, |
+}; |
+ |
+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; |
+}; |