| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CC_IPC_QUADS_STRUCT_TRAITS_H_ | 5 #ifndef CC_IPC_QUADS_STRUCT_TRAITS_H_ |
| 6 #define CC_IPC_QUADS_STRUCT_TRAITS_H_ | 6 #define CC_IPC_QUADS_STRUCT_TRAITS_H_ |
| 7 | 7 |
| 8 #include "cc/ipc/filter_operation_struct_traits.h" | 8 #include "cc/ipc/filter_operation_struct_traits.h" |
| 9 #include "cc/ipc/filter_operations_struct_traits.h" | 9 #include "cc/ipc/filter_operations_struct_traits.h" |
| 10 #include "cc/ipc/quads.mojom.h" | 10 #include "cc/ipc/quads.mojom.h" |
| 11 #include "cc/ipc/render_pass_id_struct_traits.h" | 11 #include "cc/ipc/render_pass_id_struct_traits.h" |
| 12 #include "cc/ipc/shared_quad_state_struct_traits.h" | 12 #include "cc/ipc/shared_quad_state_struct_traits.h" |
| 13 #include "cc/ipc/surface_id_struct_traits.h" | 13 #include "cc/ipc/surface_id_struct_traits.h" |
| 14 #include "cc/quads/debug_border_draw_quad.h" | 14 #include "cc/quads/debug_border_draw_quad.h" |
| 15 #include "cc/quads/picture_draw_quad.h" | 15 #include "cc/quads/picture_draw_quad.h" |
| 16 #include "cc/quads/render_pass_draw_quad.h" | 16 #include "cc/quads/render_pass_draw_quad.h" |
| 17 #include "cc/quads/solid_color_draw_quad.h" | 17 #include "cc/quads/solid_color_draw_quad.h" |
| 18 #include "cc/quads/stream_video_draw_quad.h" | 18 #include "cc/quads/stream_video_draw_quad.h" |
| 19 #include "cc/quads/surface_draw_quad.h" | 19 #include "cc/quads/surface_draw_quad.h" |
| 20 #include "cc/quads/texture_draw_quad.h" | 20 #include "cc/quads/texture_draw_quad.h" |
| 21 #include "cc/quads/tile_draw_quad.h" | 21 #include "cc/quads/tile_draw_quad.h" |
| 22 #include "cc/quads/yuv_video_draw_quad.h" | 22 #include "cc/quads/yuv_video_draw_quad.h" |
| 23 #include "ui/gfx/geometry/mojo/geometry_struct_traits.h" | 23 #include "ui/gfx/geometry/mojo/geometry_struct_traits.h" |
| 24 | 24 |
| 25 namespace mojo { | 25 namespace mojo { |
| 26 | 26 |
| 27 cc::DrawQuad* AllocateAndConstruct(cc::mojom::Material material, | 27 cc::DrawQuad* AllocateAndConstruct( |
| 28 cc::QuadList* list); | 28 cc::mojom::DrawQuadState::DataView::Tag material, |
| 29 cc::QuadList* list); |
| 30 |
| 29 template <> | 31 template <> |
| 30 struct EnumTraits<cc::mojom::Material, cc::DrawQuad::Material> { | 32 struct UnionTraits<cc::mojom::DrawQuadState, cc::DrawQuad> { |
| 31 static cc::mojom::Material ToMojom(cc::DrawQuad::Material material); | 33 static cc::mojom::DrawQuadState::DataView::Tag GetTag( |
| 32 static bool FromMojom(cc::mojom::Material input, cc::DrawQuad::Material* out); | 34 const cc::DrawQuad& quad) { |
| 35 switch (quad.material) { |
| 36 case cc::DrawQuad::INVALID: |
| 37 break; |
| 38 case cc::DrawQuad::DEBUG_BORDER: |
| 39 return cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE; |
| 40 case cc::DrawQuad::PICTURE_CONTENT: |
| 41 break; |
| 42 case cc::DrawQuad::RENDER_PASS: |
| 43 return cc::mojom::DrawQuadState::DataView::Tag::RENDER_PASS_QUAD_STATE; |
| 44 case cc::DrawQuad::SOLID_COLOR: |
| 45 return cc::mojom::DrawQuadState::DataView::Tag::SOLID_COLOR_QUAD_STATE; |
| 46 case cc::DrawQuad::STREAM_VIDEO_CONTENT: |
| 47 return cc::mojom::DrawQuadState::DataView::Tag::STREAM_VIDEO_QUAD_STATE; |
| 48 case cc::DrawQuad::SURFACE_CONTENT: |
| 49 return cc::mojom::DrawQuadState::DataView::Tag::SURFACE_QUAD_STATE; |
| 50 case cc::DrawQuad::TEXTURE_CONTENT: |
| 51 return cc::mojom::DrawQuadState::DataView::Tag::TEXTURE_QUAD_STATE; |
| 52 case cc::DrawQuad::TILED_CONTENT: |
| 53 return cc::mojom::DrawQuadState::DataView::Tag::TILE_QUAD_STATE; |
| 54 case cc::DrawQuad::YUV_VIDEO_CONTENT: |
| 55 return cc::mojom::DrawQuadState::DataView::Tag::YUV_VIDEO_QUAD_STATE; |
| 56 } |
| 57 NOTREACHED(); |
| 58 return cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE; |
| 59 } |
| 60 |
| 61 static const cc::DrawQuad& debug_border_quad_state(const cc::DrawQuad& quad) { |
| 62 return quad; |
| 63 } |
| 64 |
| 65 static const cc::DrawQuad& render_pass_quad_state(const cc::DrawQuad& quad) { |
| 66 return quad; |
| 67 } |
| 68 |
| 69 static const cc::DrawQuad& solid_color_quad_state(const cc::DrawQuad& quad) { |
| 70 return quad; |
| 71 } |
| 72 |
| 73 static const cc::DrawQuad& surface_quad_state(const cc::DrawQuad& quad) { |
| 74 return quad; |
| 75 } |
| 76 |
| 77 static const cc::DrawQuad& texture_quad_state(const cc::DrawQuad& quad) { |
| 78 return quad; |
| 79 } |
| 80 |
| 81 static const cc::DrawQuad& tile_quad_state(const cc::DrawQuad& quad) { |
| 82 return quad; |
| 83 } |
| 84 |
| 85 static const cc::DrawQuad& stream_video_quad_state(const cc::DrawQuad& quad) { |
| 86 return quad; |
| 87 } |
| 88 |
| 89 static const cc::DrawQuad& yuv_video_quad_state(const cc::DrawQuad& quad) { |
| 90 return quad; |
| 91 } |
| 92 |
| 93 static bool Read(cc::mojom::DrawQuadState::DataView data, cc::DrawQuad* out) { |
| 94 switch (data.tag()) { |
| 95 case cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE: |
| 96 return data.ReadDebugBorderQuadState(out); |
| 97 case cc::mojom::DrawQuadState::DataView::Tag::RENDER_PASS_QUAD_STATE: |
| 98 return data.ReadRenderPassQuadState(out); |
| 99 case cc::mojom::DrawQuadState::DataView::Tag::SOLID_COLOR_QUAD_STATE: |
| 100 return data.ReadSolidColorQuadState(out); |
| 101 case cc::mojom::DrawQuadState::DataView::Tag::SURFACE_QUAD_STATE: |
| 102 return data.ReadSurfaceQuadState(out); |
| 103 case cc::mojom::DrawQuadState::DataView::Tag::TEXTURE_QUAD_STATE: |
| 104 return data.ReadTextureQuadState(out); |
| 105 case cc::mojom::DrawQuadState::DataView::Tag::TILE_QUAD_STATE: |
| 106 return data.ReadTileQuadState(out); |
| 107 case cc::mojom::DrawQuadState::DataView::Tag::STREAM_VIDEO_QUAD_STATE: |
| 108 return data.ReadStreamVideoQuadState(out); |
| 109 case cc::mojom::DrawQuadState::DataView::Tag::YUV_VIDEO_QUAD_STATE: |
| 110 return data.ReadYuvVideoQuadState(out); |
| 111 } |
| 112 NOTREACHED(); |
| 113 return false; |
| 114 } |
| 33 }; | 115 }; |
| 34 | 116 |
| 35 template <> | 117 template <> |
| 36 struct StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad> { | 118 struct StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad> { |
| 37 static bool IsNull(const cc::DrawQuad& input) { | |
| 38 return input.material != cc::DrawQuad::DEBUG_BORDER; | |
| 39 } | |
| 40 | |
| 41 static void SetToNull(cc::DrawQuad* output) { | |
| 42 // There is nothing to deserialize here if the DrawQuad is not a | |
| 43 // DebugBorderDrawQuad. If it is, then this should not be called. | |
| 44 DCHECK_NE(cc::DrawQuad::DEBUG_BORDER, output->material); | |
| 45 } | |
| 46 | |
| 47 static uint32_t color(const cc::DrawQuad& input) { | 119 static uint32_t color(const cc::DrawQuad& input) { |
| 48 const cc::DebugBorderDrawQuad* quad = | 120 const cc::DebugBorderDrawQuad* quad = |
| 49 cc::DebugBorderDrawQuad::MaterialCast(&input); | 121 cc::DebugBorderDrawQuad::MaterialCast(&input); |
| 50 return quad->color; | 122 return quad->color; |
| 51 } | 123 } |
| 52 | 124 |
| 53 static int32_t width(const cc::DrawQuad& input) { | 125 static int32_t width(const cc::DrawQuad& input) { |
| 54 const cc::DebugBorderDrawQuad* quad = | 126 const cc::DebugBorderDrawQuad* quad = |
| 55 cc::DebugBorderDrawQuad::MaterialCast(&input); | 127 cc::DebugBorderDrawQuad::MaterialCast(&input); |
| 56 return quad->width; | 128 return quad->width; |
| 57 } | 129 } |
| 58 | 130 |
| 59 static bool Read(cc::mojom::DebugBorderQuadStateDataView data, | 131 static bool Read(cc::mojom::DebugBorderQuadStateDataView data, |
| 60 cc::DrawQuad* out); | 132 cc::DrawQuad* out); |
| 61 }; | 133 }; |
| 62 | 134 |
| 63 template <> | 135 template <> |
| 64 struct StructTraits<cc::mojom::RenderPassQuadState, cc::DrawQuad> { | 136 struct StructTraits<cc::mojom::RenderPassQuadState, cc::DrawQuad> { |
| 65 static bool IsNull(const cc::DrawQuad& quad) { | |
| 66 return quad.material != cc::DrawQuad::RENDER_PASS; | |
| 67 } | |
| 68 | |
| 69 static void SetToNull(cc::DrawQuad* output) { | |
| 70 // There is nothing to deserialize here if the DrawQuad is not a | |
| 71 // RenderPassDrawQuad. If it is, then this should not be called. | |
| 72 DCHECK_NE(cc::DrawQuad::RENDER_PASS, output->material); | |
| 73 } | |
| 74 | |
| 75 static const cc::RenderPassId& render_pass_id(const cc::DrawQuad& input) { | 137 static const cc::RenderPassId& render_pass_id(const cc::DrawQuad& input) { |
| 76 const cc::RenderPassDrawQuad* quad = | 138 const cc::RenderPassDrawQuad* quad = |
| 77 cc::RenderPassDrawQuad::MaterialCast(&input); | 139 cc::RenderPassDrawQuad::MaterialCast(&input); |
| 78 return quad->render_pass_id; | 140 return quad->render_pass_id; |
| 79 } | 141 } |
| 80 | 142 |
| 81 static uint32_t mask_resource_id(const cc::DrawQuad& input) { | 143 static uint32_t mask_resource_id(const cc::DrawQuad& input) { |
| 82 const cc::RenderPassDrawQuad* quad = | 144 const cc::RenderPassDrawQuad* quad = |
| 83 cc::RenderPassDrawQuad::MaterialCast(&input); | 145 cc::RenderPassDrawQuad::MaterialCast(&input); |
| 84 return quad->mask_resource_id(); | 146 return quad->mask_resource_id(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 114 cc::RenderPassDrawQuad::MaterialCast(&input); | 176 cc::RenderPassDrawQuad::MaterialCast(&input); |
| 115 return quad->background_filters; | 177 return quad->background_filters; |
| 116 } | 178 } |
| 117 | 179 |
| 118 static bool Read(cc::mojom::RenderPassQuadStateDataView data, | 180 static bool Read(cc::mojom::RenderPassQuadStateDataView data, |
| 119 cc::DrawQuad* out); | 181 cc::DrawQuad* out); |
| 120 }; | 182 }; |
| 121 | 183 |
| 122 template <> | 184 template <> |
| 123 struct StructTraits<cc::mojom::SolidColorQuadState, cc::DrawQuad> { | 185 struct StructTraits<cc::mojom::SolidColorQuadState, cc::DrawQuad> { |
| 124 static bool IsNull(const cc::DrawQuad& input) { | |
| 125 return input.material != cc::DrawQuad::SOLID_COLOR; | |
| 126 } | |
| 127 | |
| 128 static void SetToNull(cc::DrawQuad* output) { | |
| 129 // There is nothing to deserialize here if the DrawQuad is not a | |
| 130 // SolidColorDrawQuad. If it is, then this should not be called. | |
| 131 DCHECK_NE(cc::DrawQuad::SOLID_COLOR, output->material); | |
| 132 } | |
| 133 | |
| 134 static uint32_t color(const cc::DrawQuad& input) { | 186 static uint32_t color(const cc::DrawQuad& input) { |
| 135 const cc::SolidColorDrawQuad* quad = | 187 const cc::SolidColorDrawQuad* quad = |
| 136 cc::SolidColorDrawQuad::MaterialCast(&input); | 188 cc::SolidColorDrawQuad::MaterialCast(&input); |
| 137 return quad->color; | 189 return quad->color; |
| 138 } | 190 } |
| 139 | 191 |
| 140 static bool force_anti_aliasing_off(const cc::DrawQuad& input) { | 192 static bool force_anti_aliasing_off(const cc::DrawQuad& input) { |
| 141 const cc::SolidColorDrawQuad* quad = | 193 const cc::SolidColorDrawQuad* quad = |
| 142 cc::SolidColorDrawQuad::MaterialCast(&input); | 194 cc::SolidColorDrawQuad::MaterialCast(&input); |
| 143 return quad->force_anti_aliasing_off; | 195 return quad->force_anti_aliasing_off; |
| 144 } | 196 } |
| 145 | 197 |
| 146 static bool Read(cc::mojom::SolidColorQuadStateDataView data, | 198 static bool Read(cc::mojom::SolidColorQuadStateDataView data, |
| 147 cc::DrawQuad* out); | 199 cc::DrawQuad* out); |
| 148 }; | 200 }; |
| 149 | 201 |
| 150 template <> | 202 template <> |
| 151 struct StructTraits<cc::mojom::StreamVideoQuadState, cc::DrawQuad> { | 203 struct StructTraits<cc::mojom::StreamVideoQuadState, cc::DrawQuad> { |
| 152 static bool IsNull(const cc::DrawQuad& input) { | |
| 153 return input.material != cc::DrawQuad::STREAM_VIDEO_CONTENT; | |
| 154 } | |
| 155 | |
| 156 static void SetToNull(cc::DrawQuad* output) { | |
| 157 // There is nothing to deserialize here if the DrawQuad is not a | |
| 158 // StreamVideoDrawQuad. If it is, then this should not be called. | |
| 159 DCHECK_NE(cc::DrawQuad::STREAM_VIDEO_CONTENT, output->material); | |
| 160 } | |
| 161 | |
| 162 static uint32_t resource_id(const cc::DrawQuad& input) { | 204 static uint32_t resource_id(const cc::DrawQuad& input) { |
| 163 const cc::StreamVideoDrawQuad* quad = | 205 const cc::StreamVideoDrawQuad* quad = |
| 164 cc::StreamVideoDrawQuad::MaterialCast(&input); | 206 cc::StreamVideoDrawQuad::MaterialCast(&input); |
| 165 return quad->resources.ids[cc::StreamVideoDrawQuad::kResourceIdIndex]; | 207 return quad->resources.ids[cc::StreamVideoDrawQuad::kResourceIdIndex]; |
| 166 } | 208 } |
| 167 | 209 |
| 168 static const gfx::Size& resource_size_in_pixels(const cc::DrawQuad& input) { | 210 static const gfx::Size& resource_size_in_pixels(const cc::DrawQuad& input) { |
| 169 const cc::StreamVideoDrawQuad* quad = | 211 const cc::StreamVideoDrawQuad* quad = |
| 170 cc::StreamVideoDrawQuad::MaterialCast(&input); | 212 cc::StreamVideoDrawQuad::MaterialCast(&input); |
| 171 return quad->overlay_resources | 213 return quad->overlay_resources |
| 172 .size_in_pixels[cc::StreamVideoDrawQuad::kResourceIdIndex]; | 214 .size_in_pixels[cc::StreamVideoDrawQuad::kResourceIdIndex]; |
| 173 } | 215 } |
| 174 | 216 |
| 175 static const gfx::Transform& matrix(const cc::DrawQuad& input) { | 217 static const gfx::Transform& matrix(const cc::DrawQuad& input) { |
| 176 const cc::StreamVideoDrawQuad* quad = | 218 const cc::StreamVideoDrawQuad* quad = |
| 177 cc::StreamVideoDrawQuad::MaterialCast(&input); | 219 cc::StreamVideoDrawQuad::MaterialCast(&input); |
| 178 return quad->matrix; | 220 return quad->matrix; |
| 179 } | 221 } |
| 180 | 222 |
| 181 static bool Read(cc::mojom::StreamVideoQuadStateDataView data, | 223 static bool Read(cc::mojom::StreamVideoQuadStateDataView data, |
| 182 cc::DrawQuad* out); | 224 cc::DrawQuad* out); |
| 183 }; | 225 }; |
| 184 | 226 |
| 185 template <> | 227 template <> |
| 186 struct StructTraits<cc::mojom::SurfaceQuadState, cc::DrawQuad> { | 228 struct StructTraits<cc::mojom::SurfaceQuadState, cc::DrawQuad> { |
| 187 static bool IsNull(const cc::DrawQuad& input) { | |
| 188 return input.material != cc::DrawQuad::SURFACE_CONTENT; | |
| 189 } | |
| 190 | |
| 191 static void SetToNull(cc::DrawQuad* output) { | |
| 192 // There is nothing to deserialize here if the DrawQuad is not a | |
| 193 // SurfaceDrawQuad. If it is, then this should not be called. | |
| 194 DCHECK_NE(cc::DrawQuad::SURFACE_CONTENT, output->material); | |
| 195 } | |
| 196 | |
| 197 static const cc::SurfaceId& surface(const cc::DrawQuad& input) { | 229 static const cc::SurfaceId& surface(const cc::DrawQuad& input) { |
| 198 const cc::SurfaceDrawQuad* quad = cc::SurfaceDrawQuad::MaterialCast(&input); | 230 const cc::SurfaceDrawQuad* quad = cc::SurfaceDrawQuad::MaterialCast(&input); |
| 199 return quad->surface_id; | 231 return quad->surface_id; |
| 200 } | 232 } |
| 201 | 233 |
| 202 static bool Read(cc::mojom::SurfaceQuadStateDataView data, cc::DrawQuad* out); | 234 static bool Read(cc::mojom::SurfaceQuadStateDataView data, cc::DrawQuad* out); |
| 203 }; | 235 }; |
| 204 | 236 |
| 205 template <> | 237 template <> |
| 206 struct StructTraits<cc::mojom::TextureQuadState, cc::DrawQuad> { | 238 struct StructTraits<cc::mojom::TextureQuadState, cc::DrawQuad> { |
| 207 static bool IsNull(const cc::DrawQuad& input) { | |
| 208 return input.material != cc::DrawQuad::TEXTURE_CONTENT; | |
| 209 } | |
| 210 | |
| 211 static void SetToNull(cc::DrawQuad* output) { | |
| 212 // There is nothing to deserialize here if the DrawQuad is not a | |
| 213 // TextureContentDrawQuad. If it is, then this should not be called. | |
| 214 DCHECK_NE(cc::DrawQuad::TEXTURE_CONTENT, output->material); | |
| 215 } | |
| 216 | |
| 217 static uint32_t resource_id(const cc::DrawQuad& input) { | 239 static uint32_t resource_id(const cc::DrawQuad& input) { |
| 218 const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input); | 240 const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input); |
| 219 return quad->resource_id(); | 241 return quad->resource_id(); |
| 220 } | 242 } |
| 221 | 243 |
| 222 static bool premultiplied_alpha(const cc::DrawQuad& input) { | 244 static bool premultiplied_alpha(const cc::DrawQuad& input) { |
| 223 const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input); | 245 const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input); |
| 224 return quad->premultiplied_alpha; | 246 return quad->premultiplied_alpha; |
| 225 } | 247 } |
| 226 | 248 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 257 static bool secure_output_only(const cc::DrawQuad& input) { | 279 static bool secure_output_only(const cc::DrawQuad& input) { |
| 258 const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input); | 280 const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input); |
| 259 return quad->secure_output_only; | 281 return quad->secure_output_only; |
| 260 } | 282 } |
| 261 | 283 |
| 262 static bool Read(cc::mojom::TextureQuadStateDataView data, cc::DrawQuad* out); | 284 static bool Read(cc::mojom::TextureQuadStateDataView data, cc::DrawQuad* out); |
| 263 }; | 285 }; |
| 264 | 286 |
| 265 template <> | 287 template <> |
| 266 struct StructTraits<cc::mojom::TileQuadState, cc::DrawQuad> { | 288 struct StructTraits<cc::mojom::TileQuadState, cc::DrawQuad> { |
| 267 static bool IsNull(const cc::DrawQuad& input) { | |
| 268 return input.material != cc::DrawQuad::TILED_CONTENT; | |
| 269 } | |
| 270 | |
| 271 static void SetToNull(cc::DrawQuad* output) { | |
| 272 // There is nothing to deserialize here if the DrawQuad is not a | |
| 273 // TileDrawQuad. If it is, then this should not be called. | |
| 274 DCHECK_NE(cc::DrawQuad::TILED_CONTENT, output->material); | |
| 275 } | |
| 276 | |
| 277 static const gfx::RectF& tex_coord_rect(const cc::DrawQuad& input) { | 289 static const gfx::RectF& tex_coord_rect(const cc::DrawQuad& input) { |
| 278 const cc::TileDrawQuad* quad = cc::TileDrawQuad::MaterialCast(&input); | 290 const cc::TileDrawQuad* quad = cc::TileDrawQuad::MaterialCast(&input); |
| 279 return quad->tex_coord_rect; | 291 return quad->tex_coord_rect; |
| 280 } | 292 } |
| 281 | 293 |
| 282 static const gfx::Size& texture_size(const cc::DrawQuad& input) { | 294 static const gfx::Size& texture_size(const cc::DrawQuad& input) { |
| 283 const cc::TileDrawQuad* quad = cc::TileDrawQuad::MaterialCast(&input); | 295 const cc::TileDrawQuad* quad = cc::TileDrawQuad::MaterialCast(&input); |
| 284 return quad->texture_size; | 296 return quad->texture_size; |
| 285 } | 297 } |
| 286 | 298 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 305 template <> | 317 template <> |
| 306 struct EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace> { | 318 struct EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace> { |
| 307 static cc::mojom::YUVColorSpace ToMojom( | 319 static cc::mojom::YUVColorSpace ToMojom( |
| 308 cc::YUVVideoDrawQuad::ColorSpace color_space); | 320 cc::YUVVideoDrawQuad::ColorSpace color_space); |
| 309 static bool FromMojom(cc::mojom::YUVColorSpace input, | 321 static bool FromMojom(cc::mojom::YUVColorSpace input, |
| 310 cc::YUVVideoDrawQuad::ColorSpace* out); | 322 cc::YUVVideoDrawQuad::ColorSpace* out); |
| 311 }; | 323 }; |
| 312 | 324 |
| 313 template <> | 325 template <> |
| 314 struct StructTraits<cc::mojom::YUVVideoQuadState, cc::DrawQuad> { | 326 struct StructTraits<cc::mojom::YUVVideoQuadState, cc::DrawQuad> { |
| 315 static bool IsNull(const cc::DrawQuad& input) { | |
| 316 return input.material != cc::DrawQuad::YUV_VIDEO_CONTENT; | |
| 317 } | |
| 318 | |
| 319 static void SetToNull(cc::DrawQuad* output) { | |
| 320 // There is nothing to deserialize here if the DrawQuad is not a | |
| 321 // YUVVideoDrawQuad. If it is, then this should not be called. | |
| 322 DCHECK_NE(cc::DrawQuad::YUV_VIDEO_CONTENT, output->material); | |
| 323 } | |
| 324 | |
| 325 static const gfx::RectF& ya_tex_coord_rect(const cc::DrawQuad& input) { | 327 static const gfx::RectF& ya_tex_coord_rect(const cc::DrawQuad& input) { |
| 326 const cc::YUVVideoDrawQuad* quad = | 328 const cc::YUVVideoDrawQuad* quad = |
| 327 cc::YUVVideoDrawQuad::MaterialCast(&input); | 329 cc::YUVVideoDrawQuad::MaterialCast(&input); |
| 328 return quad->ya_tex_coord_rect; | 330 return quad->ya_tex_coord_rect; |
| 329 } | 331 } |
| 330 | 332 |
| 331 static const gfx::RectF& uv_tex_coord_rect(const cc::DrawQuad& input) { | 333 static const gfx::RectF& uv_tex_coord_rect(const cc::DrawQuad& input) { |
| 332 const cc::YUVVideoDrawQuad* quad = | 334 const cc::YUVVideoDrawQuad* quad = |
| 333 cc::YUVVideoDrawQuad::MaterialCast(&input); | 335 cc::YUVVideoDrawQuad::MaterialCast(&input); |
| 334 return quad->uv_tex_coord_rect; | 336 return quad->uv_tex_coord_rect; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 cc::DrawQuad* out); | 401 cc::DrawQuad* out); |
| 400 }; | 402 }; |
| 401 | 403 |
| 402 struct DrawQuadWithSharedQuadState { | 404 struct DrawQuadWithSharedQuadState { |
| 403 const cc::DrawQuad* quad; | 405 const cc::DrawQuad* quad; |
| 404 const cc::SharedQuadState* shared_quad_state; | 406 const cc::SharedQuadState* shared_quad_state; |
| 405 }; | 407 }; |
| 406 | 408 |
| 407 template <> | 409 template <> |
| 408 struct StructTraits<cc::mojom::DrawQuad, DrawQuadWithSharedQuadState> { | 410 struct StructTraits<cc::mojom::DrawQuad, DrawQuadWithSharedQuadState> { |
| 409 static cc::DrawQuad::Material material( | |
| 410 const DrawQuadWithSharedQuadState& input) { | |
| 411 return input.quad->material; | |
| 412 } | |
| 413 | |
| 414 static const gfx::Rect& rect(const DrawQuadWithSharedQuadState& input) { | 411 static const gfx::Rect& rect(const DrawQuadWithSharedQuadState& input) { |
| 415 return input.quad->rect; | 412 return input.quad->rect; |
| 416 } | 413 } |
| 417 | 414 |
| 418 static const gfx::Rect& opaque_rect( | 415 static const gfx::Rect& opaque_rect( |
| 419 const DrawQuadWithSharedQuadState& input) { | 416 const DrawQuadWithSharedQuadState& input) { |
| 420 return input.quad->opaque_rect; | 417 return input.quad->opaque_rect; |
| 421 } | 418 } |
| 422 | 419 |
| 423 static const gfx::Rect& visible_rect( | 420 static const gfx::Rect& visible_rect( |
| 424 const DrawQuadWithSharedQuadState& input) { | 421 const DrawQuadWithSharedQuadState& input) { |
| 425 return input.quad->visible_rect; | 422 return input.quad->visible_rect; |
| 426 } | 423 } |
| 427 | 424 |
| 428 static bool needs_blending(const DrawQuadWithSharedQuadState& input) { | 425 static bool needs_blending(const DrawQuadWithSharedQuadState& input) { |
| 429 return input.quad->needs_blending; | 426 return input.quad->needs_blending; |
| 430 } | 427 } |
| 431 | 428 |
| 432 static const cc::DrawQuad& debug_border_quad_state( | |
| 433 const DrawQuadWithSharedQuadState& input) { | |
| 434 return *input.quad; | |
| 435 } | |
| 436 | |
| 437 static const cc::DrawQuad& render_pass_quad_state( | |
| 438 const DrawQuadWithSharedQuadState& input) { | |
| 439 return *input.quad; | |
| 440 } | |
| 441 | |
| 442 static const cc::DrawQuad& solid_color_quad_state( | |
| 443 const DrawQuadWithSharedQuadState& input) { | |
| 444 return *input.quad; | |
| 445 } | |
| 446 | |
| 447 static const cc::DrawQuad& surface_quad_state( | |
| 448 const DrawQuadWithSharedQuadState& input) { | |
| 449 return *input.quad; | |
| 450 } | |
| 451 | |
| 452 static const cc::DrawQuad& texture_quad_state( | |
| 453 const DrawQuadWithSharedQuadState& input) { | |
| 454 return *input.quad; | |
| 455 } | |
| 456 | |
| 457 static const cc::DrawQuad& tile_quad_state( | |
| 458 const DrawQuadWithSharedQuadState& input) { | |
| 459 return *input.quad; | |
| 460 } | |
| 461 | |
| 462 static const cc::DrawQuad& stream_video_quad_state( | |
| 463 const DrawQuadWithSharedQuadState& input) { | |
| 464 return *input.quad; | |
| 465 } | |
| 466 | |
| 467 static const cc::DrawQuad& yuv_video_quad_state( | |
| 468 const DrawQuadWithSharedQuadState& input) { | |
| 469 return *input.quad; | |
| 470 } | |
| 471 | |
| 472 static OptSharedQuadState sqs(const DrawQuadWithSharedQuadState& input) { | 429 static OptSharedQuadState sqs(const DrawQuadWithSharedQuadState& input) { |
| 473 return {input.shared_quad_state}; | 430 return {input.shared_quad_state}; |
| 474 } | 431 } |
| 432 |
| 433 static const cc::DrawQuad& draw_quad_state( |
| 434 const DrawQuadWithSharedQuadState& input) { |
| 435 return *input.quad; |
| 436 } |
| 475 }; | 437 }; |
| 476 | 438 |
| 477 // This StructTraits is only used for deserialization within RenderPasses. | 439 // This StructTraits is only used for deserialization within RenderPasses. |
| 478 template <> | 440 template <> |
| 479 struct StructTraits<cc::mojom::DrawQuad, cc::DrawQuad> { | 441 struct StructTraits<cc::mojom::DrawQuad, cc::DrawQuad> { |
| 480 static bool Read(cc::mojom::DrawQuadDataView data, cc::DrawQuad* out); | 442 static bool Read(cc::mojom::DrawQuadDataView data, cc::DrawQuad* out); |
| 481 }; | 443 }; |
| 482 | 444 |
| 483 template <> | 445 template <> |
| 484 struct ArrayTraits<cc::QuadList> { | 446 struct ArrayTraits<cc::QuadList> { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 509 dq.shared_quad_state = current_sqs; | 471 dq.shared_quad_state = current_sqs; |
| 510 return dq; | 472 return dq; |
| 511 } | 473 } |
| 512 | 474 |
| 513 static size_t GetSize(const cc::QuadList& input) { return input.size(); } | 475 static size_t GetSize(const cc::QuadList& input) { return input.size(); } |
| 514 }; | 476 }; |
| 515 | 477 |
| 516 } // namespace mojo | 478 } // namespace mojo |
| 517 | 479 |
| 518 #endif // CC_IPC_QUADS_STRUCT_TRAITS_H_ | 480 #endif // CC_IPC_QUADS_STRUCT_TRAITS_H_ |
| OLD | NEW |