Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: cc/ipc/quads_struct_traits.cc

Issue 2229553004: cc: Implement UnionTraits for DrawQuads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup according to Yuzhu's suggestion Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "cc/ipc/quads_struct_traits.h" 5 #include "cc/ipc/quads_struct_traits.h"
6 #include "ui/gfx/mojo/transform_struct_traits.h" 6 #include "ui/gfx/mojo/transform_struct_traits.h"
7 7
8 namespace mojo { 8 namespace mojo {
9 9
10 cc::DrawQuad* AllocateAndConstruct(cc::mojom::Material material, 10 cc::DrawQuad* AllocateAndConstruct(
11 cc::QuadList* list) { 11 cc::mojom::DrawQuadState::DataView::Tag material,
12 cc::QuadList* list) {
12 cc::DrawQuad* quad = nullptr; 13 cc::DrawQuad* quad = nullptr;
13 switch (material) { 14 switch (material) {
14 case cc::mojom::Material::INVALID: 15 case cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE:
15 return nullptr;
16 case cc::mojom::Material::DEBUG_BORDER:
17 quad = list->AllocateAndConstruct<cc::DebugBorderDrawQuad>(); 16 quad = list->AllocateAndConstruct<cc::DebugBorderDrawQuad>();
18 quad->material = cc::DrawQuad::DEBUG_BORDER; 17 quad->material = cc::DrawQuad::DEBUG_BORDER;
19 return quad; 18 return quad;
20 case cc::mojom::Material::PICTURE_CONTENT: 19 case cc::mojom::DrawQuadState::DataView::Tag::RENDER_PASS_QUAD_STATE:
21 quad = list->AllocateAndConstruct<cc::PictureDrawQuad>();
22 quad->material = cc::DrawQuad::PICTURE_CONTENT;
23 return quad;
24 case cc::mojom::Material::RENDER_PASS:
25 quad = list->AllocateAndConstruct<cc::RenderPassDrawQuad>(); 20 quad = list->AllocateAndConstruct<cc::RenderPassDrawQuad>();
26 quad->material = cc::DrawQuad::RENDER_PASS; 21 quad->material = cc::DrawQuad::RENDER_PASS;
27 return quad; 22 return quad;
28 case cc::mojom::Material::SOLID_COLOR: 23 case cc::mojom::DrawQuadState::DataView::Tag::SOLID_COLOR_QUAD_STATE:
29 quad = list->AllocateAndConstruct<cc::SolidColorDrawQuad>(); 24 quad = list->AllocateAndConstruct<cc::SolidColorDrawQuad>();
30 quad->material = cc::DrawQuad::SOLID_COLOR; 25 quad->material = cc::DrawQuad::SOLID_COLOR;
31 return quad; 26 return quad;
32 case cc::mojom::Material::STREAM_VIDEO_CONTENT: 27 case cc::mojom::DrawQuadState::DataView::Tag::STREAM_VIDEO_QUAD_STATE:
33 quad = list->AllocateAndConstruct<cc::StreamVideoDrawQuad>(); 28 quad = list->AllocateAndConstruct<cc::StreamVideoDrawQuad>();
34 quad->material = cc::DrawQuad::STREAM_VIDEO_CONTENT; 29 quad->material = cc::DrawQuad::STREAM_VIDEO_CONTENT;
35 return quad; 30 return quad;
36 case cc::mojom::Material::SURFACE_CONTENT: 31 case cc::mojom::DrawQuadState::DataView::Tag::SURFACE_QUAD_STATE:
37 quad = list->AllocateAndConstruct<cc::SurfaceDrawQuad>(); 32 quad = list->AllocateAndConstruct<cc::SurfaceDrawQuad>();
38 quad->material = cc::DrawQuad::SURFACE_CONTENT; 33 quad->material = cc::DrawQuad::SURFACE_CONTENT;
39 return quad; 34 return quad;
40 case cc::mojom::Material::TEXTURE_CONTENT: 35 case cc::mojom::DrawQuadState::DataView::Tag::TEXTURE_QUAD_STATE:
41 quad = list->AllocateAndConstruct<cc::TextureDrawQuad>(); 36 quad = list->AllocateAndConstruct<cc::TextureDrawQuad>();
42 quad->material = cc::DrawQuad::TEXTURE_CONTENT; 37 quad->material = cc::DrawQuad::TEXTURE_CONTENT;
43 return quad; 38 return quad;
44 case cc::mojom::Material::TILED_CONTENT: 39 case cc::mojom::DrawQuadState::DataView::Tag::TILE_QUAD_STATE:
45 quad = list->AllocateAndConstruct<cc::TileDrawQuad>(); 40 quad = list->AllocateAndConstruct<cc::TileDrawQuad>();
46 quad->material = cc::DrawQuad::TILED_CONTENT; 41 quad->material = cc::DrawQuad::TILED_CONTENT;
47 return quad; 42 return quad;
48 case cc::mojom::Material::YUV_VIDEO_CONTENT: 43 case cc::mojom::DrawQuadState::DataView::Tag::YUV_VIDEO_QUAD_STATE:
49 quad = list->AllocateAndConstruct<cc::YUVVideoDrawQuad>(); 44 quad = list->AllocateAndConstruct<cc::YUVVideoDrawQuad>();
50 quad->material = cc::DrawQuad::YUV_VIDEO_CONTENT; 45 quad->material = cc::DrawQuad::YUV_VIDEO_CONTENT;
51 return quad; 46 return quad;
52 } 47 }
53 NOTREACHED(); 48 NOTREACHED();
54 return nullptr; 49 return nullptr;
55 } 50 }
51
56 namespace { 52 namespace {
57 53
58 bool ReadDrawQuad(cc::mojom::DrawQuadDataView data, cc::DrawQuad* quad) { 54 bool ReadDrawQuad(cc::mojom::DrawQuadDataView data, cc::DrawQuad* quad) {
59 cc::DrawQuad::Material material;
60 if (!data.ReadMaterial(&material) || material != quad->material) {
61 return false;
62 }
63 if (!data.ReadRect(&quad->rect) || !data.ReadOpaqueRect(&quad->opaque_rect) || 55 if (!data.ReadRect(&quad->rect) || !data.ReadOpaqueRect(&quad->opaque_rect) ||
64 !data.ReadVisibleRect(&quad->visible_rect)) { 56 !data.ReadVisibleRect(&quad->visible_rect)) {
65 return false; 57 return false;
66 } 58 }
67 quad->needs_blending = data.needs_blending(); 59 quad->needs_blending = data.needs_blending();
68 return true; 60 return true;
69 } 61 }
70 62
71 } // namespace 63 } // namespace
72 64
73 // static 65 // static
74 cc::mojom::Material
75 EnumTraits<cc::mojom::Material, cc::DrawQuad::Material>::ToMojom(
76 cc::DrawQuad::Material material) {
77 switch (material) {
78 case cc::DrawQuad::INVALID:
79 return cc::mojom::Material::INVALID;
80 case cc::DrawQuad::DEBUG_BORDER:
81 return cc::mojom::Material::DEBUG_BORDER;
82 case cc::DrawQuad::PICTURE_CONTENT:
83 return cc::mojom::Material::PICTURE_CONTENT;
84 case cc::DrawQuad::RENDER_PASS:
85 return cc::mojom::Material::RENDER_PASS;
86 case cc::DrawQuad::SOLID_COLOR:
87 return cc::mojom::Material::SOLID_COLOR;
88 case cc::DrawQuad::STREAM_VIDEO_CONTENT:
89 return cc::mojom::Material::STREAM_VIDEO_CONTENT;
90 case cc::DrawQuad::SURFACE_CONTENT:
91 return cc::mojom::Material::SURFACE_CONTENT;
92 case cc::DrawQuad::TEXTURE_CONTENT:
93 return cc::mojom::Material::TEXTURE_CONTENT;
94 case cc::DrawQuad::TILED_CONTENT:
95 return cc::mojom::Material::TILED_CONTENT;
96 case cc::DrawQuad::YUV_VIDEO_CONTENT:
97 return cc::mojom::Material::YUV_VIDEO_CONTENT;
98 }
99 return cc::mojom::Material::INVALID;
100 }
101
102 // static
103 bool EnumTraits<cc::mojom::Material, cc::DrawQuad::Material>::FromMojom(
104 cc::mojom::Material input,
105 cc::DrawQuad::Material* out) {
106 switch (input) {
107 case cc::mojom::Material::INVALID:
108 *out = cc::DrawQuad::INVALID;
109 return true;
110 case cc::mojom::Material::DEBUG_BORDER:
111 *out = cc::DrawQuad::DEBUG_BORDER;
112 return true;
113 case cc::mojom::Material::PICTURE_CONTENT:
114 *out = cc::DrawQuad::PICTURE_CONTENT;
115 return true;
116 case cc::mojom::Material::RENDER_PASS:
117 *out = cc::DrawQuad::RENDER_PASS;
118 return true;
119 case cc::mojom::Material::SOLID_COLOR:
120 *out = cc::DrawQuad::SOLID_COLOR;
121 return true;
122 case cc::mojom::Material::STREAM_VIDEO_CONTENT:
123 *out = cc::DrawQuad::STREAM_VIDEO_CONTENT;
124 return true;
125 case cc::mojom::Material::SURFACE_CONTENT:
126 *out = cc::DrawQuad::SURFACE_CONTENT;
127 return true;
128 case cc::mojom::Material::TEXTURE_CONTENT:
129 *out = cc::DrawQuad::TEXTURE_CONTENT;
130 return true;
131 case cc::mojom::Material::TILED_CONTENT:
132 *out = cc::DrawQuad::TILED_CONTENT;
133 return true;
134 case cc::mojom::Material::YUV_VIDEO_CONTENT:
135 *out = cc::DrawQuad::YUV_VIDEO_CONTENT;
136 return true;
137 }
138 return false;
139 }
140
141 // static
142 bool StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad>::Read( 66 bool StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad>::Read(
143 cc::mojom::DebugBorderQuadStateDataView data, 67 cc::mojom::DebugBorderQuadStateDataView data,
144 cc::DrawQuad* out) { 68 cc::DrawQuad* out) {
145 cc::DebugBorderDrawQuad* quad = static_cast<cc::DebugBorderDrawQuad*>(out); 69 cc::DebugBorderDrawQuad* quad = static_cast<cc::DebugBorderDrawQuad*>(out);
146 quad->color = data.color(); 70 quad->color = data.color();
147 quad->width = data.width(); 71 quad->width = data.width();
148 return true; 72 return true;
149 } 73 }
150 74
151 // static 75 // static
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 quad->bits_per_channel > cc::YUVVideoDrawQuad::kMaxBitsPerChannel) { 227 quad->bits_per_channel > cc::YUVVideoDrawQuad::kMaxBitsPerChannel) {
304 return false; 228 return false;
305 } 229 }
306 return true; 230 return true;
307 } 231 }
308 232
309 // static 233 // static
310 bool StructTraits<cc::mojom::DrawQuad, cc::DrawQuad>::Read( 234 bool StructTraits<cc::mojom::DrawQuad, cc::DrawQuad>::Read(
311 cc::mojom::DrawQuadDataView data, 235 cc::mojom::DrawQuadDataView data,
312 cc::DrawQuad* out) { 236 cc::DrawQuad* out) {
313 if (!ReadDrawQuad(data, out)) 237 if (!ReadDrawQuad(data, out))
yzshen1 2016/08/09 18:29:53 optional nit: it may make sense to merge ReadDrawQ
Fady Samuel 2016/08/09 18:42:50 Done.
314 return false; 238 return false;
315 switch (data.material()) { 239 return data.ReadDrawQuadState(out);
316 case cc::mojom::Material::INVALID:
317 break;
318 case cc::mojom::Material::DEBUG_BORDER:
319 return data.ReadDebugBorderQuadState(out);
320 case cc::mojom::Material::PICTURE_CONTENT:
321 // TODO(fsamuel): Implement PictureDrawQuad
322 // serialization/deserialization.
323 break;
324 case cc::mojom::Material::RENDER_PASS:
325 return data.ReadRenderPassQuadState(out);
326 case cc::mojom::Material::SOLID_COLOR:
327 return data.ReadSolidColorQuadState(out);
328 case cc::mojom::Material::STREAM_VIDEO_CONTENT:
329 return data.ReadStreamVideoQuadState(out);
330 case cc::mojom::Material::SURFACE_CONTENT:
331 return data.ReadSurfaceQuadState(out);
332 case cc::mojom::Material::TEXTURE_CONTENT:
333 return data.ReadTextureQuadState(out);
334 case cc::mojom::Material::TILED_CONTENT:
335 return data.ReadTileQuadState(out);
336 case cc::mojom::Material::YUV_VIDEO_CONTENT:
337 return data.ReadYuvVideoQuadState(out);
338 }
339 NOTREACHED();
340 return false;
341 } 240 }
342 241
343 } // namespace mojo 242 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698