OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef PPAPI_SHARED_IMPL_COMPOSITOR_LAYER_DATA_H_ |
| 6 #define PPAPI_SHARED_IMPL_COMPOSITOR_LAYER_DATA_H_ |
| 7 |
| 8 #include <string.h> |
| 9 |
| 10 #include "base/logging.h" |
| 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "gpu/command_buffer/common/mailbox.h" |
| 13 #include "ppapi/c/ppb_compositor_layer.h" |
| 14 #include "ppapi/shared_impl/host_resource.h" |
| 15 #include "ppapi/shared_impl/ppapi_shared_export.h" |
| 16 |
| 17 namespace ppapi { |
| 18 |
| 19 struct PPAPI_SHARED_EXPORT CompositorLayerData { |
| 20 |
| 21 struct Transform { |
| 22 Transform() { |
| 23 matrix[0] = 1.0f; |
| 24 matrix[1] = 0.0f; |
| 25 matrix[2] = 0.0f; |
| 26 matrix[3] = 0.0f; |
| 27 matrix[4] = 0.0f; |
| 28 matrix[5] = 1.0f; |
| 29 matrix[6] = 0.0f; |
| 30 matrix[7] = 0.0f; |
| 31 matrix[8] = 0.0f; |
| 32 matrix[9] = 0.0f; |
| 33 matrix[10] = 1.0f; |
| 34 matrix[11] = 0.0f; |
| 35 matrix[12] = 0.0f; |
| 36 matrix[13] = 0.0f; |
| 37 matrix[14] = 0.0f; |
| 38 matrix[15] = 1.0f; |
| 39 } |
| 40 |
| 41 float matrix[16]; |
| 42 }; |
| 43 |
| 44 struct LayerCommon { |
| 45 LayerCommon() |
| 46 : size(PP_MakeSize(0, 0)), |
| 47 clip_rect(PP_MakeRectFromXYWH(0, 0, 0, 0)), |
| 48 blend_mode(PP_BLENDMODE_SRC_OVER), |
| 49 opacity(1.0f), |
| 50 resource_id(0) { |
| 51 } |
| 52 |
| 53 PP_Size size; |
| 54 PP_Rect clip_rect; |
| 55 Transform transform; |
| 56 PP_BlendMode blend_mode; |
| 57 float opacity; |
| 58 uint32_t resource_id; |
| 59 }; |
| 60 |
| 61 struct ColorLayer { |
| 62 ColorLayer() : red(0.0f), green(0.0f), blue(0.0f), alpha(0.0f) {} |
| 63 |
| 64 float red; |
| 65 float green; |
| 66 float blue; |
| 67 float alpha; |
| 68 }; |
| 69 |
| 70 struct ImageLayer { |
| 71 ImageLayer() |
| 72 : resource(0), |
| 73 source_rect(PP_MakeFloatRectFromXYWH(0.0f, 0.0f, 0.0f, 0.0f)) {} |
| 74 |
| 75 PP_Resource resource; |
| 76 PP_FloatRect source_rect; |
| 77 }; |
| 78 |
| 79 struct TextureLayer { |
| 80 TextureLayer() |
| 81 : sync_point(0), |
| 82 source_rect(PP_MakeFloatRectFromXYWH(0.0f, 0.0f, 1.0f, 1.0f)), |
| 83 premult_alpha(true) {} |
| 84 |
| 85 gpu::Mailbox mailbox; |
| 86 uint32_t sync_point; |
| 87 PP_FloatRect source_rect; |
| 88 bool premult_alpha; |
| 89 }; |
| 90 |
| 91 CompositorLayerData() {} |
| 92 |
| 93 CompositorLayerData(const CompositorLayerData& other) { |
| 94 *this = other; |
| 95 } |
| 96 |
| 97 bool is_null() const { |
| 98 return !(color || texture || image); |
| 99 } |
| 100 |
| 101 bool is_valid() const { |
| 102 int i = 0; |
| 103 if (color) ++i; |
| 104 if (texture) ++i; |
| 105 if (image) ++i; |
| 106 return i == 1; |
| 107 } |
| 108 |
| 109 const CompositorLayerData& operator=(const CompositorLayerData& other); |
| 110 |
| 111 LayerCommon common; |
| 112 scoped_ptr<ColorLayer> color; |
| 113 scoped_ptr<TextureLayer> texture; |
| 114 scoped_ptr<ImageLayer> image; |
| 115 }; |
| 116 |
| 117 } // namespace ppapi |
| 118 |
| 119 #endif // PPAPI_SHARED_IMPL_COMPOSITOR_LAYER_DATA_H_ |
OLD | NEW |