Index: ppapi/shared_impl/compositor_layer_data.h |
diff --git a/ppapi/shared_impl/compositor_layer_data.h b/ppapi/shared_impl/compositor_layer_data.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b51fcd787a96bd2cac1790127da86118879598fe |
--- /dev/null |
+++ b/ppapi/shared_impl/compositor_layer_data.h |
@@ -0,0 +1,119 @@ |
+// Copyright 2014 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 PPAPI_SHARED_IMPL_COMPOSITOR_LAYER_DATA_H_ |
+#define PPAPI_SHARED_IMPL_COMPOSITOR_LAYER_DATA_H_ |
+ |
+#include <string.h> |
+ |
+#include "base/logging.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "gpu/command_buffer/common/mailbox.h" |
+#include "ppapi/c/ppb_compositor_layer.h" |
+#include "ppapi/shared_impl/host_resource.h" |
+#include "ppapi/shared_impl/ppapi_shared_export.h" |
+ |
+namespace ppapi { |
+ |
+struct PPAPI_SHARED_EXPORT CompositorLayerData { |
+ |
+ struct Transform { |
+ Transform() { |
+ matrix[0] = 1.0f; |
+ matrix[1] = 0.0f; |
+ matrix[2] = 0.0f; |
+ matrix[3] = 0.0f; |
+ matrix[4] = 0.0f; |
+ matrix[5] = 1.0f; |
+ matrix[6] = 0.0f; |
+ matrix[7] = 0.0f; |
+ matrix[8] = 0.0f; |
+ matrix[9] = 0.0f; |
+ matrix[10] = 1.0f; |
+ matrix[11] = 0.0f; |
+ matrix[12] = 0.0f; |
+ matrix[13] = 0.0f; |
+ matrix[14] = 0.0f; |
+ matrix[15] = 1.0f; |
+ } |
+ |
+ float matrix[16]; |
+ }; |
+ |
+ struct LayerCommon { |
+ LayerCommon() |
+ : size(PP_MakeSize(0, 0)), |
+ clip_rect(PP_MakeRectFromXYWH(0, 0, 0, 0)), |
+ blend_mode(PP_BLENDMODE_SRC_OVER), |
+ opacity(1.0f), |
+ resource_id(0) { |
+ } |
+ |
+ PP_Size size; |
+ PP_Rect clip_rect; |
+ Transform transform; |
+ PP_BlendMode blend_mode; |
+ float opacity; |
+ uint32_t resource_id; |
+ }; |
+ |
+ struct ColorLayer { |
+ ColorLayer() : red(0.0f), green(0.0f), blue(0.0f), alpha(0.0f) {} |
+ |
+ float red; |
+ float green; |
+ float blue; |
+ float alpha; |
+ }; |
+ |
+ struct ImageLayer { |
+ ImageLayer() |
+ : resource(0), |
+ source_rect(PP_MakeFloatRectFromXYWH(0.0f, 0.0f, 0.0f, 0.0f)) {} |
+ |
+ PP_Resource resource; |
+ PP_FloatRect source_rect; |
+ }; |
+ |
+ struct TextureLayer { |
+ TextureLayer() |
+ : sync_point(0), |
+ source_rect(PP_MakeFloatRectFromXYWH(0.0f, 0.0f, 1.0f, 1.0f)), |
+ premult_alpha(true) {} |
+ |
+ gpu::Mailbox mailbox; |
+ uint32_t sync_point; |
+ PP_FloatRect source_rect; |
+ bool premult_alpha; |
+ }; |
+ |
+ CompositorLayerData() {} |
+ |
+ CompositorLayerData(const CompositorLayerData& other) { |
+ *this = other; |
+ } |
+ |
+ bool is_null() const { |
+ return !(color || texture || image); |
+ } |
+ |
+ bool is_valid() const { |
+ int i = 0; |
+ if (color) ++i; |
+ if (texture) ++i; |
+ if (image) ++i; |
+ return i == 1; |
+ } |
+ |
+ const CompositorLayerData& operator=(const CompositorLayerData& other); |
+ |
+ LayerCommon common; |
+ scoped_ptr<ColorLayer> color; |
+ scoped_ptr<TextureLayer> texture; |
+ scoped_ptr<ImageLayer> image; |
+}; |
+ |
+} // namespace ppapi |
+ |
+#endif // PPAPI_SHARED_IMPL_COMPOSITOR_LAYER_DATA_H_ |