| 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 |