| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |