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

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

Issue 2854653003: [Night Light] Backend ui::Layer work (Closed)
Patch Set: Created 3 years, 7 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/compositor/layer_animation_delegate.h » ('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 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 compositor_(NULL), 90 compositor_(NULL),
91 parent_(NULL), 91 parent_(NULL),
92 visible_(true), 92 visible_(true),
93 fills_bounds_opaquely_(true), 93 fills_bounds_opaquely_(true),
94 fills_bounds_completely_(false), 94 fills_bounds_completely_(false),
95 background_blur_radius_(0), 95 background_blur_radius_(0),
96 layer_saturation_(0.0f), 96 layer_saturation_(0.0f),
97 layer_brightness_(0.0f), 97 layer_brightness_(0.0f),
98 layer_grayscale_(0.0f), 98 layer_grayscale_(0.0f),
99 layer_inverted_(false), 99 layer_inverted_(false),
100 layer_temperature_(0.0f),
101 layer_blue_scale_(1.0f),
102 layer_green_scale_(1.0f),
100 layer_mask_(NULL), 103 layer_mask_(NULL),
101 layer_mask_back_link_(NULL), 104 layer_mask_back_link_(NULL),
102 zoom_(1), 105 zoom_(1),
103 zoom_inset_(0), 106 zoom_inset_(0),
104 delegate_(NULL), 107 delegate_(NULL),
105 owner_(NULL), 108 owner_(NULL),
106 cc_layer_(NULL), 109 cc_layer_(NULL),
107 device_scale_factor_(1.0f) { 110 device_scale_factor_(1.0f) {
108 CreateCcLayer(); 111 CreateCcLayer();
109 } 112 }
110 113
111 Layer::Layer(LayerType type) 114 Layer::Layer(LayerType type)
112 : type_(type), 115 : type_(type),
113 compositor_(NULL), 116 compositor_(NULL),
114 parent_(NULL), 117 parent_(NULL),
115 visible_(true), 118 visible_(true),
116 fills_bounds_opaquely_(true), 119 fills_bounds_opaquely_(true),
117 fills_bounds_completely_(false), 120 fills_bounds_completely_(false),
118 background_blur_radius_(0), 121 background_blur_radius_(0),
119 layer_saturation_(0.0f), 122 layer_saturation_(0.0f),
120 layer_brightness_(0.0f), 123 layer_brightness_(0.0f),
121 layer_grayscale_(0.0f), 124 layer_grayscale_(0.0f),
122 layer_inverted_(false), 125 layer_inverted_(false),
126 layer_temperature_(0.0f),
127 layer_blue_scale_(1.0f),
128 layer_green_scale_(1.0f),
123 layer_mask_(NULL), 129 layer_mask_(NULL),
124 layer_mask_back_link_(NULL), 130 layer_mask_back_link_(NULL),
125 zoom_(1), 131 zoom_(1),
126 zoom_inset_(0), 132 zoom_inset_(0),
127 delegate_(NULL), 133 delegate_(NULL),
128 owner_(NULL), 134 owner_(NULL),
129 cc_layer_(NULL), 135 cc_layer_(NULL),
130 device_scale_factor_(1.0f) { 136 device_scale_factor_(1.0f) {
131 CreateCcLayer(); 137 CreateCcLayer();
132 } 138 }
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 float Layer::GetCombinedOpacity() const { 371 float Layer::GetCombinedOpacity() const {
366 float opacity = this->opacity(); 372 float opacity = this->opacity();
367 Layer* current = this->parent_; 373 Layer* current = this->parent_;
368 while (current) { 374 while (current) {
369 opacity *= current->opacity(); 375 opacity *= current->opacity();
370 current = current->parent_; 376 current = current->parent_;
371 } 377 }
372 return opacity; 378 return opacity;
373 } 379 }
374 380
381 void Layer::SetLayerTemperature(float value) {
382 GetAnimator()->SetTemperature(value);
383 }
384
375 void Layer::SetBackgroundBlur(int blur_radius) { 385 void Layer::SetBackgroundBlur(int blur_radius) {
376 background_blur_radius_ = blur_radius; 386 background_blur_radius_ = blur_radius;
377 387
378 SetLayerBackgroundFilters(); 388 SetLayerBackgroundFilters();
379 } 389 }
380 390
381 void Layer::SetLayerSaturation(float saturation) { 391 void Layer::SetLayerSaturation(float saturation) {
382 layer_saturation_ = saturation; 392 layer_saturation_ = saturation;
383 SetLayerFilters(); 393 SetLayerFilters();
384 } 394 }
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 void Layer::SetLayerFilters() { 461 void Layer::SetLayerFilters() {
452 cc::FilterOperations filters; 462 cc::FilterOperations filters;
453 if (layer_saturation_) { 463 if (layer_saturation_) {
454 filters.Append(cc::FilterOperation::CreateSaturateFilter( 464 filters.Append(cc::FilterOperation::CreateSaturateFilter(
455 layer_saturation_)); 465 layer_saturation_));
456 } 466 }
457 if (layer_grayscale_) { 467 if (layer_grayscale_) {
458 filters.Append(cc::FilterOperation::CreateGrayscaleFilter( 468 filters.Append(cc::FilterOperation::CreateGrayscaleFilter(
459 layer_grayscale_)); 469 layer_grayscale_));
460 } 470 }
471 if (layer_temperature_) {
472 float color_matrix[] = {
473 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
474 0.0f, layer_green_scale_, 0.0f, 0.0f, 0.0f,
475 0.0f, 0.0f, layer_blue_scale_, 0.0f, 0.0f,
476 0.0f, 0.0f, 0.0f, 1.0f, 0.0f
477 };
478 filters.Append(cc::FilterOperation::CreateColorMatrixFilter(color_matrix));
479 }
461 if (layer_inverted_) 480 if (layer_inverted_)
462 filters.Append(cc::FilterOperation::CreateInvertFilter(1.0)); 481 filters.Append(cc::FilterOperation::CreateInvertFilter(1.0));
463 // Brightness goes last, because the resulting colors neeed clamping, which 482 // Brightness goes last, because the resulting colors neeed clamping, which
464 // cause further color matrix filters to be applied separately. In this order, 483 // cause further color matrix filters to be applied separately. In this order,
465 // they all can be combined in a single pass. 484 // they all can be combined in a single pass.
466 if (layer_brightness_) { 485 if (layer_brightness_) {
467 filters.Append(cc::FilterOperation::CreateSaturatingBrightnessFilter( 486 filters.Append(cc::FilterOperation::CreateSaturatingBrightnessFilter(
468 layer_brightness_)); 487 layer_brightness_));
469 } 488 }
470 if (alpha_shape_) { 489 if (alpha_shape_) {
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
1047 layer_grayscale_ = grayscale; 1066 layer_grayscale_ = grayscale;
1048 SetLayerFilters(); 1067 SetLayerFilters();
1049 } 1068 }
1050 1069
1051 void Layer::SetColorFromAnimation(SkColor color) { 1070 void Layer::SetColorFromAnimation(SkColor color) {
1052 DCHECK_EQ(type_, LAYER_SOLID_COLOR); 1071 DCHECK_EQ(type_, LAYER_SOLID_COLOR);
1053 cc_layer_->SetBackgroundColor(color); 1072 cc_layer_->SetBackgroundColor(color);
1054 SetFillsBoundsOpaquely(SkColorGetA(color) == 0xFF); 1073 SetFillsBoundsOpaquely(SkColorGetA(color) == 0xFF);
1055 } 1074 }
1056 1075
1076 void Layer::SetTemperatureFromAnimation(float temperature) {
1077 layer_temperature_ = temperature;
1078
1079 // If we only tone down the blue scale, the screen will look very green so we
1080 // also need to tone down the green, but with a less value compared to the
1081 // blue scale to avoid making things look very red.
1082 layer_blue_scale_ = 1.0f - temperature;
1083 layer_green_scale_ = 1.0f - 0.3f * temperature;
1084 SetLayerFilters();
1085 }
1086
1057 void Layer::ScheduleDrawForAnimation() { 1087 void Layer::ScheduleDrawForAnimation() {
1058 ScheduleDraw(); 1088 ScheduleDraw();
1059 } 1089 }
1060 1090
1061 const gfx::Rect& Layer::GetBoundsForAnimation() const { 1091 const gfx::Rect& Layer::GetBoundsForAnimation() const {
1062 return bounds(); 1092 return bounds();
1063 } 1093 }
1064 1094
1065 gfx::Transform Layer::GetTransformForAnimation() const { 1095 gfx::Transform Layer::GetTransformForAnimation() const {
1066 return transform(); 1096 return transform();
(...skipping 16 matching lines...) Expand all
1083 } 1113 }
1084 1114
1085 SkColor Layer::GetColorForAnimation() const { 1115 SkColor Layer::GetColorForAnimation() const {
1086 // WebColor is equivalent to SkColor, per WebColor.h. 1116 // WebColor is equivalent to SkColor, per WebColor.h.
1087 // The NULL check is here since this is invoked regardless of whether we have 1117 // The NULL check is here since this is invoked regardless of whether we have
1088 // been configured as LAYER_SOLID_COLOR. 1118 // been configured as LAYER_SOLID_COLOR.
1089 return solid_color_layer_.get() ? 1119 return solid_color_layer_.get() ?
1090 solid_color_layer_->background_color() : SK_ColorBLACK; 1120 solid_color_layer_->background_color() : SK_ColorBLACK;
1091 } 1121 }
1092 1122
1123 float Layer::GetTemperatureFromAnimation() const {
1124 return layer_temperature_;
1125 }
1126
1093 float Layer::GetDeviceScaleFactor() const { 1127 float Layer::GetDeviceScaleFactor() const {
1094 return device_scale_factor_; 1128 return device_scale_factor_;
1095 } 1129 }
1096 1130
1097 LayerAnimatorCollection* Layer::GetLayerAnimatorCollection() { 1131 LayerAnimatorCollection* Layer::GetLayerAnimatorCollection() {
1098 Compositor* compositor = GetCompositor(); 1132 Compositor* compositor = GetCompositor();
1099 return compositor ? compositor->layer_animator_collection() : NULL; 1133 return compositor ? compositor->layer_animator_collection() : NULL;
1100 } 1134 }
1101 1135
1102 int Layer::GetFrameNumber() const { 1136 int Layer::GetFrameNumber() const {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 const auto it = std::find_if(mirrors_.begin(), mirrors_.end(), 1227 const auto it = std::find_if(mirrors_.begin(), mirrors_.end(),
1194 [mirror](const std::unique_ptr<LayerMirror>& mirror_ptr) { 1228 [mirror](const std::unique_ptr<LayerMirror>& mirror_ptr) {
1195 return mirror_ptr.get() == mirror; 1229 return mirror_ptr.get() == mirror;
1196 }); 1230 });
1197 1231
1198 DCHECK(it != mirrors_.end()); 1232 DCHECK(it != mirrors_.end());
1199 mirrors_.erase(it); 1233 mirrors_.erase(it);
1200 } 1234 }
1201 1235
1202 } // namespace ui 1236 } // namespace ui
OLDNEW
« no previous file with comments | « ui/compositor/layer.h ('k') | ui/compositor/layer_animation_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698