OLD | NEW |
1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 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/layers/layer.h" | 5 #include "cc/layers/layer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 29 matching lines...) Expand all Loading... |
40 | 40 |
41 namespace cc { | 41 namespace cc { |
42 | 42 |
43 base::StaticAtomicSequenceNumber g_next_layer_id; | 43 base::StaticAtomicSequenceNumber g_next_layer_id; |
44 | 44 |
45 Layer::Inputs::Inputs(int layer_id) | 45 Layer::Inputs::Inputs(int layer_id) |
46 : layer_id(layer_id), | 46 : layer_id(layer_id), |
47 masks_to_bounds(false), | 47 masks_to_bounds(false), |
48 mask_layer(nullptr), | 48 mask_layer(nullptr), |
49 opacity(1.f), | 49 opacity(1.f), |
50 blend_mode(SkXfermode::kSrcOver_Mode), | 50 blend_mode(SkBlendMode::kSrcOver), |
51 is_root_for_isolated_group(false), | 51 is_root_for_isolated_group(false), |
52 contents_opaque(false), | 52 contents_opaque(false), |
53 is_drawable(false), | 53 is_drawable(false), |
54 double_sided(true), | 54 double_sided(true), |
55 should_flatten_transform(true), | 55 should_flatten_transform(true), |
56 sorting_context_id(0), | 56 sorting_context_id(0), |
57 use_parent_backface_visibility(false), | 57 use_parent_backface_visibility(false), |
58 background_color(0), | 58 background_color(0), |
59 scroll_clip_layer_id(INVALID_ID), | 59 scroll_clip_layer_id(INVALID_ID), |
60 user_scrollable_horizontal(true), | 60 user_scrollable_horizontal(true), |
(...skipping 29 matching lines...) Expand all Loading... |
90 scroll_tree_index_(ScrollTree::kInvalidNodeId), | 90 scroll_tree_index_(ScrollTree::kInvalidNodeId), |
91 property_tree_sequence_number_(-1), | 91 property_tree_sequence_number_(-1), |
92 should_flatten_transform_from_property_tree_(false), | 92 should_flatten_transform_from_property_tree_(false), |
93 draws_content_(false), | 93 draws_content_(false), |
94 use_local_transform_for_backface_visibility_(false), | 94 use_local_transform_for_backface_visibility_(false), |
95 should_check_backface_visibility_(false), | 95 should_check_backface_visibility_(false), |
96 force_render_surface_for_testing_(false), | 96 force_render_surface_for_testing_(false), |
97 subtree_property_changed_(false), | 97 subtree_property_changed_(false), |
98 may_contain_video_(false), | 98 may_contain_video_(false), |
99 safe_opaque_background_color_(0), | 99 safe_opaque_background_color_(0), |
100 draw_blend_mode_(SkXfermode::kSrcOver_Mode), | 100 draw_blend_mode_(SkBlendMode::kSrcOver), |
101 num_unclipped_descendants_(0) {} | 101 num_unclipped_descendants_(0) {} |
102 | 102 |
103 Layer::~Layer() { | 103 Layer::~Layer() { |
104 // Our parent should be holding a reference to us so there should be no | 104 // Our parent should be holding a reference to us so there should be no |
105 // way for us to be destroyed while we still have a parent. | 105 // way for us to be destroyed while we still have a parent. |
106 DCHECK(!parent()); | 106 DCHECK(!parent()); |
107 // Similarly we shouldn't have a layer tree host since it also keeps a | 107 // Similarly we shouldn't have a layer tree host since it also keeps a |
108 // reference to us. | 108 // reference to us. |
109 DCHECK(!layer_tree_host()); | 109 DCHECK(!layer_tree_host()); |
110 | 110 |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 } | 491 } |
492 | 492 |
493 bool Layer::OpacityCanAnimateOnImplThread() const { | 493 bool Layer::OpacityCanAnimateOnImplThread() const { |
494 return false; | 494 return false; |
495 } | 495 } |
496 | 496 |
497 bool Layer::AlwaysUseActiveTreeOpacity() const { | 497 bool Layer::AlwaysUseActiveTreeOpacity() const { |
498 return false; | 498 return false; |
499 } | 499 } |
500 | 500 |
501 void Layer::SetBlendMode(SkXfermode::Mode blend_mode) { | 501 void Layer::SetBlendMode(SkBlendMode blend_mode) { |
502 DCHECK(IsPropertyChangeAllowed()); | 502 DCHECK(IsPropertyChangeAllowed()); |
503 if (inputs_.blend_mode == blend_mode) | 503 if (inputs_.blend_mode == blend_mode) |
504 return; | 504 return; |
505 | 505 |
506 // Allowing only blend modes that are defined in the CSS Compositing standard: | 506 // Allowing only blend modes that are defined in the CSS Compositing standard: |
507 // http://dev.w3.org/fxtf/compositing-1/#blending | 507 // http://dev.w3.org/fxtf/compositing-1/#blending |
508 switch (blend_mode) { | 508 switch (blend_mode) { |
509 case SkXfermode::kSrcOver_Mode: | 509 case SkBlendMode::kSrcOver: |
510 case SkXfermode::kScreen_Mode: | 510 case SkBlendMode::kScreen: |
511 case SkXfermode::kOverlay_Mode: | 511 case SkBlendMode::kOverlay: |
512 case SkXfermode::kDarken_Mode: | 512 case SkBlendMode::kDarken: |
513 case SkXfermode::kLighten_Mode: | 513 case SkBlendMode::kLighten: |
514 case SkXfermode::kColorDodge_Mode: | 514 case SkBlendMode::kColorDodge: |
515 case SkXfermode::kColorBurn_Mode: | 515 case SkBlendMode::kColorBurn: |
516 case SkXfermode::kHardLight_Mode: | 516 case SkBlendMode::kHardLight: |
517 case SkXfermode::kSoftLight_Mode: | 517 case SkBlendMode::kSoftLight: |
518 case SkXfermode::kDifference_Mode: | 518 case SkBlendMode::kDifference: |
519 case SkXfermode::kExclusion_Mode: | 519 case SkBlendMode::kExclusion: |
520 case SkXfermode::kMultiply_Mode: | 520 case SkBlendMode::kMultiply: |
521 case SkXfermode::kHue_Mode: | 521 case SkBlendMode::kHue: |
522 case SkXfermode::kSaturation_Mode: | 522 case SkBlendMode::kSaturation: |
523 case SkXfermode::kColor_Mode: | 523 case SkBlendMode::kColor: |
524 case SkXfermode::kLuminosity_Mode: | 524 case SkBlendMode::kLuminosity: |
525 // supported blend modes | 525 // supported blend modes |
526 break; | 526 break; |
527 case SkXfermode::kClear_Mode: | 527 case SkBlendMode::kClear: |
528 case SkXfermode::kSrc_Mode: | 528 case SkBlendMode::kSrc: |
529 case SkXfermode::kDst_Mode: | 529 case SkBlendMode::kDst: |
530 case SkXfermode::kDstOver_Mode: | 530 case SkBlendMode::kDstOver: |
531 case SkXfermode::kSrcIn_Mode: | 531 case SkBlendMode::kSrcIn: |
532 case SkXfermode::kDstIn_Mode: | 532 case SkBlendMode::kDstIn: |
533 case SkXfermode::kSrcOut_Mode: | 533 case SkBlendMode::kSrcOut: |
534 case SkXfermode::kDstOut_Mode: | 534 case SkBlendMode::kDstOut: |
535 case SkXfermode::kSrcATop_Mode: | 535 case SkBlendMode::kSrcATop: |
536 case SkXfermode::kDstATop_Mode: | 536 case SkBlendMode::kDstATop: |
537 case SkXfermode::kXor_Mode: | 537 case SkBlendMode::kXor: |
538 case SkXfermode::kPlus_Mode: | 538 case SkBlendMode::kPlus: |
539 case SkXfermode::kModulate_Mode: | 539 case SkBlendMode::kModulate: |
540 // Porter Duff Compositing Operators are not yet supported | 540 // Porter Duff Compositing Operators are not yet supported |
541 // http://dev.w3.org/fxtf/compositing-1/#porterduffcompositingoperators | 541 // http://dev.w3.org/fxtf/compositing-1/#porterduffcompositingoperators |
542 NOTREACHED(); | 542 NOTREACHED(); |
543 return; | 543 return; |
544 } | 544 } |
545 | 545 |
546 inputs_.blend_mode = blend_mode; | 546 inputs_.blend_mode = blend_mode; |
547 SetNeedsCommit(); | 547 SetNeedsCommit(); |
548 SetSubtreePropertyChanged(); | 548 SetSubtreePropertyChanged(); |
549 } | 549 } |
(...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1664 | 1664 |
1665 LayerTree* Layer::GetLayerTree() const { | 1665 LayerTree* Layer::GetLayerTree() const { |
1666 return layer_tree_; | 1666 return layer_tree_; |
1667 } | 1667 } |
1668 | 1668 |
1669 void Layer::SetLayerIdForTesting(int id) { | 1669 void Layer::SetLayerIdForTesting(int id) { |
1670 inputs_.layer_id = id; | 1670 inputs_.layer_id = id; |
1671 } | 1671 } |
1672 | 1672 |
1673 } // namespace cc | 1673 } // namespace cc |
OLD | NEW |