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

Side by Side Diff: services/gfx/compositor/graph/scene_def.cc

Issue 1781993002: Mozart: Compute hits using 4x4 matrix. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-10
Patch Set: Created 4 years, 9 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
« no previous file with comments | « services/gfx/compositor/graph/scene_def.h ('k') | services/gfx/compositor/graph/snapshot.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "services/gfx/compositor/graph/scene_def.h" 5 #include "services/gfx/compositor/graph/scene_def.h"
6 6
7 #include <ostream> 7 #include <ostream>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "mojo/services/gfx/composition/cpp/formatting.h" 13 #include "mojo/services/gfx/composition/cpp/formatting.h"
14 #include "mojo/skia/type_converters.h"
14 #include "services/gfx/compositor/graph/scene_content.h" 15 #include "services/gfx/compositor/graph/scene_content.h"
16 #include "services/gfx/compositor/graph/transform_pair.h"
15 #include "services/gfx/compositor/render/render_image.h" 17 #include "services/gfx/compositor/render/render_image.h"
16 18
17 namespace compositor { 19 namespace compositor {
18 20
19 namespace { 21 namespace {
20 // TODO(jeffbrown): Determine and document a more appropriate size limit 22 // TODO(jeffbrown): Determine and document a more appropriate size limit
21 // for transferred images as part of the image pipe abstraction instead. 23 // for transferred images as part of the image pipe abstraction instead.
22 const int32_t kMaxTextureWidth = 65536; 24 const int32_t kMaxTextureWidth = 65536;
23 const int32_t kMaxTextureHeight = 65536; 25 const int32_t kMaxTextureHeight = 65536;
24 26
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 err << "Unsupported resource type: resource_id=" << resource_id; 216 err << "Unsupported resource type: resource_id=" << resource_id;
215 return nullptr; 217 return nullptr;
216 } 218 }
217 219
218 scoped_refptr<const NodeDef> SceneDef::CreateNode( 220 scoped_refptr<const NodeDef> SceneDef::CreateNode(
219 uint32_t node_id, 221 uint32_t node_id,
220 mojo::gfx::composition::NodePtr node_decl, 222 mojo::gfx::composition::NodePtr node_decl,
221 std::ostream& err) { 223 std::ostream& err) {
222 DCHECK(node_decl); 224 DCHECK(node_decl);
223 225
224 mojo::TransformPtr content_transform = node_decl->content_transform.Pass(); 226 std::unique_ptr<TransformPair> content_transform;
227 if (node_decl->content_transform) {
228 content_transform.reset(
229 new TransformPair(node_decl->content_transform.To<SkMatrix44>()));
230 }
225 mojo::RectFPtr content_clip = node_decl->content_clip.Pass(); 231 mojo::RectFPtr content_clip = node_decl->content_clip.Pass();
226 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior = 232 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior =
227 node_decl->hit_test_behavior.Pass(); 233 node_decl->hit_test_behavior.Pass();
228 const mojo::gfx::composition::Node::Combinator combinator = 234 const mojo::gfx::composition::Node::Combinator combinator =
229 node_decl->combinator; 235 node_decl->combinator;
230 const std::vector<uint32_t>& child_node_ids = 236 const std::vector<uint32_t>& child_node_ids =
231 node_decl->child_node_ids.storage(); 237 node_decl->child_node_ids.storage();
232 238
233 if (!node_decl->op) { 239 if (!node_decl->op) {
234 return new NodeDef(node_id, content_transform.Pass(), content_clip.Pass(), 240 return new NodeDef(node_id, std::move(content_transform),
235 hit_test_behavior.Pass(), combinator, child_node_ids); 241 content_clip.Pass(), hit_test_behavior.Pass(),
242 combinator, child_node_ids);
236 } 243 }
237 244
238 if (node_decl->op->is_rect()) { 245 if (node_decl->op->is_rect()) {
239 auto& rect_node_decl = node_decl->op->get_rect(); 246 auto& rect_node_decl = node_decl->op->get_rect();
240 DCHECK(rect_node_decl->content_rect); 247 DCHECK(rect_node_decl->content_rect);
241 DCHECK(rect_node_decl->color); 248 DCHECK(rect_node_decl->color);
242 249
243 const mojo::RectF& content_rect = *rect_node_decl->content_rect; 250 const mojo::RectF& content_rect = *rect_node_decl->content_rect;
244 const mojo::gfx::composition::Color& color = *rect_node_decl->color; 251 const mojo::gfx::composition::Color& color = *rect_node_decl->color;
245 return new RectNodeDef(node_id, content_transform.Pass(), 252 return new RectNodeDef(node_id, std::move(content_transform),
246 content_clip.Pass(), hit_test_behavior.Pass(), 253 content_clip.Pass(), hit_test_behavior.Pass(),
247 combinator, child_node_ids, content_rect, color); 254 combinator, child_node_ids, content_rect, color);
248 } 255 }
249 256
250 if (node_decl->op->is_image()) { 257 if (node_decl->op->is_image()) {
251 auto& image_node_decl = node_decl->op->get_image(); 258 auto& image_node_decl = node_decl->op->get_image();
252 DCHECK(image_node_decl->content_rect); 259 DCHECK(image_node_decl->content_rect);
253 260
254 const mojo::RectF& content_rect = *image_node_decl->content_rect; 261 const mojo::RectF& content_rect = *image_node_decl->content_rect;
255 mojo::RectFPtr image_rect = image_node_decl->image_rect.Pass(); 262 mojo::RectFPtr image_rect = image_node_decl->image_rect.Pass();
256 const uint32 image_resource_id = image_node_decl->image_resource_id; 263 const uint32 image_resource_id = image_node_decl->image_resource_id;
257 mojo::gfx::composition::BlendPtr blend = image_node_decl->blend.Pass(); 264 mojo::gfx::composition::BlendPtr blend = image_node_decl->blend.Pass();
258 return new ImageNodeDef(node_id, content_transform.Pass(), 265 return new ImageNodeDef(node_id, std::move(content_transform),
259 content_clip.Pass(), hit_test_behavior.Pass(), 266 content_clip.Pass(), hit_test_behavior.Pass(),
260 combinator, child_node_ids, content_rect, 267 combinator, child_node_ids, content_rect,
261 image_rect.Pass(), image_resource_id, blend.Pass()); 268 image_rect.Pass(), image_resource_id, blend.Pass());
262 } 269 }
263 270
264 if (node_decl->op->is_scene()) { 271 if (node_decl->op->is_scene()) {
265 auto& scene_node_decl = node_decl->op->get_scene(); 272 auto& scene_node_decl = node_decl->op->get_scene();
266 273
267 const uint32_t scene_resource_id = scene_node_decl->scene_resource_id; 274 const uint32_t scene_resource_id = scene_node_decl->scene_resource_id;
268 const uint32_t scene_version = scene_node_decl->scene_version; 275 const uint32_t scene_version = scene_node_decl->scene_version;
269 return new SceneNodeDef(node_id, content_transform.Pass(), 276 return new SceneNodeDef(node_id, std::move(content_transform),
270 content_clip.Pass(), hit_test_behavior.Pass(), 277 content_clip.Pass(), hit_test_behavior.Pass(),
271 combinator, child_node_ids, scene_resource_id, 278 combinator, child_node_ids, scene_resource_id,
272 scene_version); 279 scene_version);
273 } 280 }
274 281
275 if (node_decl->op->is_layer()) { 282 if (node_decl->op->is_layer()) {
276 auto& layer_node_decl = node_decl->op->get_layer(); 283 auto& layer_node_decl = node_decl->op->get_layer();
277 DCHECK(layer_node_decl->layer_rect); 284 DCHECK(layer_node_decl->layer_rect);
278 285
279 const mojo::RectF& layer_rect = *layer_node_decl->layer_rect; 286 const mojo::RectF& layer_rect = *layer_node_decl->layer_rect;
280 mojo::gfx::composition::BlendPtr blend = layer_node_decl->blend.Pass(); 287 mojo::gfx::composition::BlendPtr blend = layer_node_decl->blend.Pass();
281 return new LayerNodeDef(node_id, content_transform.Pass(), 288 return new LayerNodeDef(node_id, std::move(content_transform),
282 content_clip.Pass(), hit_test_behavior.Pass(), 289 content_clip.Pass(), hit_test_behavior.Pass(),
283 combinator, child_node_ids, layer_rect, 290 combinator, child_node_ids, layer_rect,
284 blend.Pass()); 291 blend.Pass());
285 } 292 }
286 293
287 err << "Unsupported node op type: node_id=" << node_id 294 err << "Unsupported node op type: node_id=" << node_id
288 << ", node_op=" << node_decl->op; 295 << ", node_op=" << node_decl->op;
289 return nullptr; 296 return nullptr;
290 } 297 }
291 298
(...skipping 22 matching lines...) Expand all
314 321
315 SceneDef::Publication::Publication( 322 SceneDef::Publication::Publication(
316 mojo::gfx::composition::SceneMetadataPtr metadata) 323 mojo::gfx::composition::SceneMetadataPtr metadata)
317 : metadata(metadata.Pass()) { 324 : metadata(metadata.Pass()) {
318 DCHECK(this->metadata); 325 DCHECK(this->metadata);
319 } 326 }
320 327
321 SceneDef::Publication::~Publication() {} 328 SceneDef::Publication::~Publication() {}
322 329
323 } // namespace compositor 330 } // namespace compositor
OLDNEW
« no previous file with comments | « services/gfx/compositor/graph/scene_def.h ('k') | services/gfx/compositor/graph/snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698