| 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/nodes.h" | 5 #include "services/gfx/compositor/graph/nodes.h" |
| 6 | 6 |
| 7 #include <ostream> | 7 #include <ostream> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "mojo/services/gfx/composition/cpp/formatting.h" | 10 #include "mojo/services/gfx/composition/cpp/formatting.h" |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 return; | 188 return; |
| 189 } | 189 } |
| 190 | 190 |
| 191 default: { | 191 default: { |
| 192 NOTREACHED(); | 192 NOTREACHED(); |
| 193 return; | 193 return; |
| 194 } | 194 } |
| 195 } | 195 } |
| 196 } | 196 } |
| 197 | 197 |
| 198 void Node::RecordPicture(const SceneContent* content, | 198 void Node::Paint(const SceneContent* content, |
| 199 const Snapshot* snapshot, | 199 const Snapshot* snapshot, |
| 200 SkCanvas* canvas) const { | 200 SkCanvas* canvas) const { |
| 201 DCHECK(content); | 201 DCHECK(content); |
| 202 DCHECK(snapshot); | 202 DCHECK(snapshot); |
| 203 DCHECK(canvas); | 203 DCHECK(canvas); |
| 204 | 204 |
| 205 const bool must_save = content_transform_ || content_clip_; | 205 const bool must_save = content_transform_ || content_clip_; |
| 206 if (must_save) { | 206 if (must_save) { |
| 207 canvas->save(); | 207 canvas->save(); |
| 208 if (content_transform_) | 208 if (content_transform_) |
| 209 canvas->concat(content_transform_->forward()); | 209 canvas->concat(content_transform_->forward()); |
| 210 if (content_clip_) | 210 if (content_clip_) |
| 211 canvas->clipRect(content_clip_->To<SkRect>()); | 211 canvas->clipRect(content_clip_->To<SkRect>()); |
| 212 } | 212 } |
| 213 | 213 |
| 214 RecordPictureInner(content, snapshot, canvas); | 214 PaintInner(content, snapshot, canvas); |
| 215 | 215 |
| 216 if (must_save) | 216 if (must_save) |
| 217 canvas->restore(); | 217 canvas->restore(); |
| 218 } | 218 } |
| 219 | 219 |
| 220 void Node::RecordPictureInner(const SceneContent* content, | 220 void Node::PaintInner(const SceneContent* content, |
| 221 const Snapshot* snapshot, | 221 const Snapshot* snapshot, |
| 222 SkCanvas* canvas) const { | 222 SkCanvas* canvas) const { |
| 223 DCHECK(content); | 223 DCHECK(content); |
| 224 DCHECK(snapshot); | 224 DCHECK(snapshot); |
| 225 DCHECK(canvas); | 225 DCHECK(canvas); |
| 226 | 226 |
| 227 TraverseSnapshottedChildren( | 227 TraverseSnapshottedChildren( |
| 228 content, snapshot, | 228 content, snapshot, |
| 229 [this, content, snapshot, canvas](const Node* child_node) -> bool { | 229 [this, content, snapshot, canvas](const Node* child_node) -> bool { |
| 230 child_node->RecordPicture(content, snapshot, canvas); | 230 child_node->Paint(content, snapshot, canvas); |
| 231 return true; | 231 return true; |
| 232 }); | 232 }); |
| 233 } | 233 } |
| 234 | 234 |
| 235 bool Node::HitTest(const SceneContent* content, | 235 bool Node::HitTest(const SceneContent* content, |
| 236 const Snapshot* snapshot, | 236 const Snapshot* snapshot, |
| 237 const SkPoint& parent_point, | 237 const SkPoint& parent_point, |
| 238 const SkMatrix44& global_to_parent_transform, | 238 const SkMatrix44& global_to_parent_transform, |
| 239 mojo::Array<mojo::gfx::composition::HitPtr>* hits) const { | 239 mojo::Array<mojo::gfx::composition::HitPtr>* hits) const { |
| 240 DCHECK(content); | 240 DCHECK(content); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 std::move(content_transform), | 333 std::move(content_transform), |
| 334 content_clip.Pass(), | 334 content_clip.Pass(), |
| 335 hit_test_behavior.Pass(), | 335 hit_test_behavior.Pass(), |
| 336 combinator, | 336 combinator, |
| 337 child_node_ids), | 337 child_node_ids), |
| 338 content_rect_(content_rect), | 338 content_rect_(content_rect), |
| 339 color_(color) {} | 339 color_(color) {} |
| 340 | 340 |
| 341 RectNode::~RectNode() {} | 341 RectNode::~RectNode() {} |
| 342 | 342 |
| 343 void RectNode::RecordPictureInner(const SceneContent* content, | 343 void RectNode::PaintInner(const SceneContent* content, |
| 344 const Snapshot* snapshot, | 344 const Snapshot* snapshot, |
| 345 SkCanvas* canvas) const { | 345 SkCanvas* canvas) const { |
| 346 DCHECK(content); | 346 DCHECK(content); |
| 347 DCHECK(snapshot); | 347 DCHECK(snapshot); |
| 348 DCHECK(canvas); | 348 DCHECK(canvas); |
| 349 | 349 |
| 350 SkPaint paint; | 350 SkPaint paint; |
| 351 paint.setColor(MakeSkColor(color_)); | 351 paint.setColor(MakeSkColor(color_)); |
| 352 canvas->drawRect(content_rect_.To<SkRect>(), paint); | 352 canvas->drawRect(content_rect_.To<SkRect>(), paint); |
| 353 | 353 |
| 354 Node::RecordPictureInner(content, snapshot, canvas); | 354 Node::PaintInner(content, snapshot, canvas); |
| 355 } | 355 } |
| 356 | 356 |
| 357 ImageNode::ImageNode( | 357 ImageNode::ImageNode( |
| 358 uint32_t node_id, | 358 uint32_t node_id, |
| 359 std::unique_ptr<TransformPair> content_transform, | 359 std::unique_ptr<TransformPair> content_transform, |
| 360 mojo::RectFPtr content_clip, | 360 mojo::RectFPtr content_clip, |
| 361 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, | 361 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, |
| 362 Combinator combinator, | 362 Combinator combinator, |
| 363 const std::vector<uint32_t>& child_node_ids, | 363 const std::vector<uint32_t>& child_node_ids, |
| 364 const mojo::RectF& content_rect, | 364 const mojo::RectF& content_rect, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 379 ImageNode::~ImageNode() {} | 379 ImageNode::~ImageNode() {} |
| 380 | 380 |
| 381 bool ImageNode::RecordContent(SceneContentBuilder* builder) const { | 381 bool ImageNode::RecordContent(SceneContentBuilder* builder) const { |
| 382 DCHECK(builder); | 382 DCHECK(builder); |
| 383 | 383 |
| 384 return Node::RecordContent(builder) && | 384 return Node::RecordContent(builder) && |
| 385 builder->RequireResource(image_resource_id_, Resource::Type::kImage, | 385 builder->RequireResource(image_resource_id_, Resource::Type::kImage, |
| 386 node_id()); | 386 node_id()); |
| 387 } | 387 } |
| 388 | 388 |
| 389 void ImageNode::RecordPictureInner(const SceneContent* content, | 389 void ImageNode::PaintInner(const SceneContent* content, |
| 390 const Snapshot* snapshot, | 390 const Snapshot* snapshot, |
| 391 SkCanvas* canvas) const { | 391 SkCanvas* canvas) const { |
| 392 DCHECK(content); | 392 DCHECK(content); |
| 393 DCHECK(snapshot); | 393 DCHECK(snapshot); |
| 394 DCHECK(canvas); | 394 DCHECK(canvas); |
| 395 | 395 |
| 396 auto image_resource = static_cast<const ImageResource*>( | 396 auto image_resource = static_cast<const ImageResource*>( |
| 397 content->GetResource(image_resource_id_, Resource::Type::kImage)); | 397 content->GetResource(image_resource_id_, Resource::Type::kImage)); |
| 398 DCHECK(image_resource); | 398 DCHECK(image_resource); |
| 399 | 399 |
| 400 SkPaint paint; | 400 SkPaint paint; |
| 401 SetPaintForBlend(&paint, blend_.get()); | 401 SetPaintForBlend(&paint, blend_.get()); |
| 402 | 402 |
| 403 canvas->drawImageRect(image_resource->image()->image().get(), | 403 canvas->drawImageRect(image_resource->image()->image().get(), |
| 404 image_rect_ | 404 image_rect_ |
| 405 ? image_rect_->To<SkRect>() | 405 ? image_rect_->To<SkRect>() |
| 406 : SkRect::MakeWH(image_resource->image()->width(), | 406 : SkRect::MakeWH(image_resource->image()->width(), |
| 407 image_resource->image()->height()), | 407 image_resource->image()->height()), |
| 408 content_rect_.To<SkRect>(), &paint); | 408 content_rect_.To<SkRect>(), &paint); |
| 409 | 409 |
| 410 Node::RecordPictureInner(content, snapshot, canvas); | 410 Node::PaintInner(content, snapshot, canvas); |
| 411 } | 411 } |
| 412 | 412 |
| 413 SceneNode::SceneNode( | 413 SceneNode::SceneNode( |
| 414 uint32_t node_id, | 414 uint32_t node_id, |
| 415 std::unique_ptr<TransformPair> content_transform, | 415 std::unique_ptr<TransformPair> content_transform, |
| 416 mojo::RectFPtr content_clip, | 416 mojo::RectFPtr content_clip, |
| 417 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, | 417 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, |
| 418 Combinator combinator, | 418 Combinator combinator, |
| 419 const std::vector<uint32_t>& child_node_ids, | 419 const std::vector<uint32_t>& child_node_ids, |
| 420 uint32_t scene_resource_id, | 420 uint32_t scene_resource_id, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 444 DCHECK(content); | 444 DCHECK(content); |
| 445 DCHECK(builder); | 445 DCHECK(builder); |
| 446 | 446 |
| 447 Snapshot::Disposition disposition = | 447 Snapshot::Disposition disposition = |
| 448 builder->SnapshotReferencedScene(this, content); | 448 builder->SnapshotReferencedScene(this, content); |
| 449 if (disposition != Snapshot::Disposition::kSuccess) | 449 if (disposition != Snapshot::Disposition::kSuccess) |
| 450 return disposition; | 450 return disposition; |
| 451 return Node::RecordSnapshot(content, builder); | 451 return Node::RecordSnapshot(content, builder); |
| 452 } | 452 } |
| 453 | 453 |
| 454 void SceneNode::RecordPictureInner(const SceneContent* content, | 454 void SceneNode::PaintInner(const SceneContent* content, |
| 455 const Snapshot* snapshot, | 455 const Snapshot* snapshot, |
| 456 SkCanvas* canvas) const { | 456 SkCanvas* canvas) const { |
| 457 DCHECK(content); | 457 DCHECK(content); |
| 458 DCHECK(snapshot); | 458 DCHECK(snapshot); |
| 459 DCHECK(canvas); | 459 DCHECK(canvas); |
| 460 | 460 |
| 461 const SceneContent* resolved_content = | 461 const SceneContent* resolved_content = |
| 462 snapshot->GetResolvedSceneContent(this); | 462 snapshot->GetResolvedSceneContent(this); |
| 463 DCHECK(resolved_content); | 463 DCHECK(resolved_content); |
| 464 resolved_content->RecordPicture(snapshot, canvas); | 464 resolved_content->Paint(snapshot, canvas); |
| 465 | 465 |
| 466 Node::RecordPictureInner(content, snapshot, canvas); | 466 Node::PaintInner(content, snapshot, canvas); |
| 467 } | 467 } |
| 468 | 468 |
| 469 bool SceneNode::HitTestInner( | 469 bool SceneNode::HitTestInner( |
| 470 const SceneContent* content, | 470 const SceneContent* content, |
| 471 const Snapshot* snapshot, | 471 const Snapshot* snapshot, |
| 472 const SkPoint& local_point, | 472 const SkPoint& local_point, |
| 473 const SkMatrix44& global_to_local_transform, | 473 const SkMatrix44& global_to_local_transform, |
| 474 mojo::Array<mojo::gfx::composition::HitPtr>* hits) const { | 474 mojo::Array<mojo::gfx::composition::HitPtr>* hits) const { |
| 475 DCHECK(content); | 475 DCHECK(content); |
| 476 DCHECK(snapshot); | 476 DCHECK(snapshot); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 std::move(content_transform), | 508 std::move(content_transform), |
| 509 content_clip.Pass(), | 509 content_clip.Pass(), |
| 510 hit_test_behavior.Pass(), | 510 hit_test_behavior.Pass(), |
| 511 combinator, | 511 combinator, |
| 512 child_node_ids), | 512 child_node_ids), |
| 513 layer_rect_(layer_rect), | 513 layer_rect_(layer_rect), |
| 514 blend_(blend.Pass()) {} | 514 blend_(blend.Pass()) {} |
| 515 | 515 |
| 516 LayerNode::~LayerNode() {} | 516 LayerNode::~LayerNode() {} |
| 517 | 517 |
| 518 void LayerNode::RecordPictureInner(const SceneContent* content, | 518 void LayerNode::PaintInner(const SceneContent* content, |
| 519 const Snapshot* snapshot, | 519 const Snapshot* snapshot, |
| 520 SkCanvas* canvas) const { | 520 SkCanvas* canvas) const { |
| 521 DCHECK(content); | 521 DCHECK(content); |
| 522 DCHECK(snapshot); | 522 DCHECK(snapshot); |
| 523 DCHECK(canvas); | 523 DCHECK(canvas); |
| 524 | 524 |
| 525 SkPaint paint; | 525 SkPaint paint; |
| 526 SetPaintForBlend(&paint, blend_.get()); | 526 SetPaintForBlend(&paint, blend_.get()); |
| 527 | 527 |
| 528 canvas->saveLayer(layer_rect_.To<SkRect>(), &paint); | 528 canvas->saveLayer(layer_rect_.To<SkRect>(), &paint); |
| 529 Node::RecordPictureInner(content, snapshot, canvas); | 529 Node::PaintInner(content, snapshot, canvas); |
| 530 canvas->restore(); | 530 canvas->restore(); |
| 531 } | 531 } |
| 532 | 532 |
| 533 } // namespace compositor | 533 } // namespace compositor |
| OLD | NEW |