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

Side by Side Diff: ui/compositor/layer.cc

Issue 1002393002: Change ui::wm::Shadow to pass ImageSkia instead of SkBitmap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 | « ui/compositor/layer.h ('k') | ui/wm/core/shadow.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/compositor/layer.h" 5 #include "ui/compositor/layer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 13 matching lines...) Expand all
24 #include "cc/output/delegated_frame_data.h" 24 #include "cc/output/delegated_frame_data.h"
25 #include "cc/output/filter_operation.h" 25 #include "cc/output/filter_operation.h"
26 #include "cc/output/filter_operations.h" 26 #include "cc/output/filter_operations.h"
27 #include "cc/resources/transferable_resource.h" 27 #include "cc/resources/transferable_resource.h"
28 #include "ui/compositor/compositor_switches.h" 28 #include "ui/compositor/compositor_switches.h"
29 #include "ui/compositor/dip_util.h" 29 #include "ui/compositor/dip_util.h"
30 #include "ui/compositor/layer_animator.h" 30 #include "ui/compositor/layer_animator.h"
31 #include "ui/gfx/animation/animation.h" 31 #include "ui/gfx/animation/animation.h"
32 #include "ui/gfx/canvas.h" 32 #include "ui/gfx/canvas.h"
33 #include "ui/gfx/display.h" 33 #include "ui/gfx/display.h"
34 #include "ui/gfx/geometry/dip_util.h"
34 #include "ui/gfx/geometry/point3_f.h" 35 #include "ui/gfx/geometry/point3_f.h"
35 #include "ui/gfx/geometry/point_conversions.h" 36 #include "ui/gfx/geometry/point_conversions.h"
36 #include "ui/gfx/geometry/size_conversions.h" 37 #include "ui/gfx/geometry/size_conversions.h"
37 #include "ui/gfx/interpolated_transform.h" 38 #include "ui/gfx/interpolated_transform.h"
38 39
39 namespace { 40 namespace {
40 41
41 const ui::Layer* GetRoot(const ui::Layer* layer) { 42 const ui::Layer* GetRoot(const ui::Layer* layer) {
42 while (layer->parent()) 43 while (layer->parent())
43 layer = layer->parent(); 44 layer = layer->parent();
(...skipping 26 matching lines...) Expand all
70 layer_brightness_(0.0f), 71 layer_brightness_(0.0f),
71 layer_grayscale_(0.0f), 72 layer_grayscale_(0.0f),
72 layer_inverted_(false), 73 layer_inverted_(false),
73 layer_mask_(NULL), 74 layer_mask_(NULL),
74 layer_mask_back_link_(NULL), 75 layer_mask_back_link_(NULL),
75 zoom_(1), 76 zoom_(1),
76 zoom_inset_(0), 77 zoom_inset_(0),
77 delegate_(NULL), 78 delegate_(NULL),
78 owner_(NULL), 79 owner_(NULL),
79 cc_layer_(NULL), 80 cc_layer_(NULL),
80 device_scale_factor_(1.0f) { 81 device_scale_factor_(1.0f),
82 nine_patch_layer_bitmap_scale_factor_(1.0f) {
oshima 2015/03/14 05:42:55 Why you need this? You should just use device_scal
hshi1 2015/03/16 16:50:48 Done.
81 CreateCcLayer(); 83 CreateCcLayer();
82 } 84 }
83 85
84 Layer::Layer(LayerType type) 86 Layer::Layer(LayerType type)
85 : type_(type), 87 : type_(type),
86 compositor_(NULL), 88 compositor_(NULL),
87 parent_(NULL), 89 parent_(NULL),
88 visible_(true), 90 visible_(true),
89 force_render_surface_(false), 91 force_render_surface_(false),
90 fills_bounds_opaquely_(true), 92 fills_bounds_opaquely_(true),
91 fills_bounds_completely_(false), 93 fills_bounds_completely_(false),
92 background_blur_radius_(0), 94 background_blur_radius_(0),
93 layer_saturation_(0.0f), 95 layer_saturation_(0.0f),
94 layer_brightness_(0.0f), 96 layer_brightness_(0.0f),
95 layer_grayscale_(0.0f), 97 layer_grayscale_(0.0f),
96 layer_inverted_(false), 98 layer_inverted_(false),
97 layer_mask_(NULL), 99 layer_mask_(NULL),
98 layer_mask_back_link_(NULL), 100 layer_mask_back_link_(NULL),
99 zoom_(1), 101 zoom_(1),
100 zoom_inset_(0), 102 zoom_inset_(0),
101 delegate_(NULL), 103 delegate_(NULL),
102 owner_(NULL), 104 owner_(NULL),
103 cc_layer_(NULL), 105 cc_layer_(NULL),
104 device_scale_factor_(1.0f) { 106 device_scale_factor_(1.0f),
107 nine_patch_layer_bitmap_scale_factor_(1.0f) {
105 CreateCcLayer(); 108 CreateCcLayer();
106 } 109 }
107 110
108 Layer::~Layer() { 111 Layer::~Layer() {
109 // Destroying the animator may cause observers to use the layer (and 112 // Destroying the animator may cause observers to use the layer (and
110 // indirectly the WebLayer). Destroy the animator first so that the WebLayer 113 // indirectly the WebLayer). Destroy the animator first so that the WebLayer
111 // is still around. 114 // is still around.
112 if (animator_.get()) 115 if (animator_.get())
113 animator_->SetDelegate(NULL); 116 animator_->SetDelegate(NULL);
114 animator_ = NULL; 117 animator_ = NULL;
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 solid_color_layer_ = new_layer; 616 solid_color_layer_ = new_layer;
614 617
615 mailbox_ = cc::TextureMailbox(); 618 mailbox_ = cc::TextureMailbox();
616 if (mailbox_release_callback_) { 619 if (mailbox_release_callback_) {
617 mailbox_release_callback_->Run(0, false); 620 mailbox_release_callback_->Run(0, false);
618 mailbox_release_callback_.reset(); 621 mailbox_release_callback_.reset();
619 } 622 }
620 RecomputeDrawsContentAndUVRect(); 623 RecomputeDrawsContentAndUVRect();
621 } 624 }
622 625
623 void Layer::UpdateNinePatchLayerBitmap(const SkBitmap& bitmap) { 626 void Layer::UpdateNinePatchLayerImage(const gfx::ImageSkia& image) {
624 DCHECK(type_ == LAYER_NINE_PATCH && nine_patch_layer_.get()); 627 DCHECK(type_ == LAYER_NINE_PATCH && nine_patch_layer_.get());
628 nine_patch_layer_bitmap_scale_factor_ = device_scale_factor_;
629 SkBitmap bitmap = image.GetRepresentation(
630 nine_patch_layer_bitmap_scale_factor_).sk_bitmap();
625 SkBitmap bitmap_copy; 631 SkBitmap bitmap_copy;
626 if (bitmap.isImmutable()) { 632 if (bitmap.isImmutable()) {
627 bitmap_copy = bitmap; 633 bitmap_copy = bitmap;
628 } else { 634 } else {
629 // UIResourceBitmap requires an immutable copy of the input |bitmap|. 635 // UIResourceBitmap requires an immutable copy of the input |bitmap|.
630 bitmap.copyTo(&bitmap_copy); 636 bitmap.copyTo(&bitmap_copy);
631 bitmap_copy.setImmutable(); 637 bitmap_copy.setImmutable();
632 } 638 }
633 nine_patch_layer_->SetBitmap(bitmap_copy); 639 nine_patch_layer_->SetBitmap(bitmap_copy);
634 } 640 }
635 641
636 void Layer::UpdateNinePatchLayerAperture(const gfx::Rect& aperture) { 642 void Layer::UpdateNinePatchLayerAperture(const gfx::Rect& aperture) {
637 DCHECK(type_ == LAYER_NINE_PATCH && nine_patch_layer_.get()); 643 DCHECK(type_ == LAYER_NINE_PATCH && nine_patch_layer_.get());
638 nine_patch_layer_->SetAperture(aperture); 644 gfx::Rect aperture_in_pixel =
645 gfx::ConvertRectToPixel(nine_patch_layer_bitmap_scale_factor_, aperture);
646 nine_patch_layer_->SetAperture(aperture_in_pixel);
639 } 647 }
640 648
641 void Layer::UpdateNinePatchLayerBorder(const gfx::Rect& border) { 649 void Layer::UpdateNinePatchLayerBorder(const gfx::Rect& border) {
642 DCHECK(type_ == LAYER_NINE_PATCH && nine_patch_layer_.get()); 650 DCHECK(type_ == LAYER_NINE_PATCH && nine_patch_layer_.get());
643 nine_patch_layer_->SetBorder(border); 651 nine_patch_layer_->SetBorder(border);
644 } 652 }
645 653
646 void Layer::SetColor(SkColor color) { GetAnimator()->SetColor(color); } 654 void Layer::SetColor(SkColor color) { GetAnimator()->SetColor(color); }
647 655
648 bool Layer::SchedulePaint(const gfx::Rect& invalid_rect) { 656 bool Layer::SchedulePaint(const gfx::Rect& invalid_rect) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 delegate_ = NULL; 707 delegate_ = NULL;
700 for (size_t i = 0; i < children_.size(); ++i) 708 for (size_t i = 0; i < children_.size(); ++i)
701 children_[i]->SuppressPaint(); 709 children_[i]->SuppressPaint();
702 } 710 }
703 711
704 void Layer::OnDeviceScaleFactorChanged(float device_scale_factor) { 712 void Layer::OnDeviceScaleFactorChanged(float device_scale_factor) {
705 if (device_scale_factor_ == device_scale_factor) 713 if (device_scale_factor_ == device_scale_factor)
706 return; 714 return;
707 if (animator_.get()) 715 if (animator_.get())
708 animator_->StopAnimatingProperty(LayerAnimationElement::TRANSFORM); 716 animator_->StopAnimatingProperty(LayerAnimationElement::TRANSFORM);
709 device_scale_factor_ = device_scale_factor; 717 device_scale_factor_ = device_scale_factor;
oshima 2015/03/14 05:42:55 you need to update the image here.
hshi1 2015/03/16 16:50:47 Done.
710 RecomputeDrawsContentAndUVRect(); 718 RecomputeDrawsContentAndUVRect();
711 RecomputePosition(); 719 RecomputePosition();
712 SchedulePaint(gfx::Rect(bounds_.size())); 720 SchedulePaint(gfx::Rect(bounds_.size()));
713 if (delegate_) 721 if (delegate_)
714 delegate_->OnDeviceScaleFactorChanged(device_scale_factor); 722 delegate_->OnDeviceScaleFactorChanged(device_scale_factor);
715 for (size_t i = 0; i < children_.size(); ++i) 723 for (size_t i = 0; i < children_.size(); ++i)
716 children_[i]->OnDeviceScaleFactorChanged(device_scale_factor); 724 children_[i]->OnDeviceScaleFactorChanged(device_scale_factor);
717 if (layer_mask_) 725 if (layer_mask_)
718 layer_mask_->OnDeviceScaleFactorChanged(device_scale_factor); 726 layer_mask_->OnDeviceScaleFactorChanged(device_scale_factor);
719 } 727 }
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
1071 children_.end(), 1079 children_.end(),
1072 std::bind2nd(std::mem_fun(&Layer::RemoveAnimatorsInTreeFromCollection), 1080 std::bind2nd(std::mem_fun(&Layer::RemoveAnimatorsInTreeFromCollection),
1073 collection)); 1081 collection));
1074 } 1082 }
1075 1083
1076 bool Layer::IsAnimating() const { 1084 bool Layer::IsAnimating() const {
1077 return animator_.get() && animator_->is_animating(); 1085 return animator_.get() && animator_->is_animating();
1078 } 1086 }
1079 1087
1080 } // namespace ui 1088 } // namespace ui
OLDNEW
« no previous file with comments | « ui/compositor/layer.h ('k') | ui/wm/core/shadow.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698