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

Unified Diff: ui/compositor/layer.cc

Issue 2854653003: [Night Light] Backend ui::Layer work (Closed)
Patch Set: Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/compositor/layer.h ('k') | ui/compositor/layer_animation_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/layer.cc
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 57fd1ccf340ca04d0b163d3707c027bb14575e46..64faa6a1418a7f56175b47817e0a521397ef6afe 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -97,6 +97,9 @@ Layer::Layer()
layer_brightness_(0.0f),
layer_grayscale_(0.0f),
layer_inverted_(false),
+ layer_temperature_(0.0f),
+ layer_blue_scale_(1.0f),
+ layer_green_scale_(1.0f),
layer_mask_(NULL),
layer_mask_back_link_(NULL),
zoom_(1),
@@ -120,6 +123,9 @@ Layer::Layer(LayerType type)
layer_brightness_(0.0f),
layer_grayscale_(0.0f),
layer_inverted_(false),
+ layer_temperature_(0.0f),
+ layer_blue_scale_(1.0f),
+ layer_green_scale_(1.0f),
layer_mask_(NULL),
layer_mask_back_link_(NULL),
zoom_(1),
@@ -372,6 +378,10 @@ float Layer::GetCombinedOpacity() const {
return opacity;
}
+void Layer::SetLayerTemperature(float value) {
+ GetAnimator()->SetTemperature(value);
+}
+
void Layer::SetBackgroundBlur(int blur_radius) {
background_blur_radius_ = blur_radius;
@@ -458,6 +468,15 @@ void Layer::SetLayerFilters() {
filters.Append(cc::FilterOperation::CreateGrayscaleFilter(
layer_grayscale_));
}
+ if (layer_temperature_) {
+ float color_matrix[] = {
+ 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, layer_green_scale_, 0.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, layer_blue_scale_, 0.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f, 0.0f
+ };
+ filters.Append(cc::FilterOperation::CreateColorMatrixFilter(color_matrix));
+ }
if (layer_inverted_)
filters.Append(cc::FilterOperation::CreateInvertFilter(1.0));
// Brightness goes last, because the resulting colors neeed clamping, which
@@ -1054,6 +1073,17 @@ void Layer::SetColorFromAnimation(SkColor color) {
SetFillsBoundsOpaquely(SkColorGetA(color) == 0xFF);
}
+void Layer::SetTemperatureFromAnimation(float temperature) {
+ layer_temperature_ = temperature;
+
+ // If we only tone down the blue scale, the screen will look very green so we
+ // also need to tone down the green, but with a less value compared to the
+ // blue scale to avoid making things look very red.
+ layer_blue_scale_ = 1.0f - temperature;
+ layer_green_scale_ = 1.0f - 0.3f * temperature;
+ SetLayerFilters();
+}
+
void Layer::ScheduleDrawForAnimation() {
ScheduleDraw();
}
@@ -1090,6 +1120,10 @@ SkColor Layer::GetColorForAnimation() const {
solid_color_layer_->background_color() : SK_ColorBLACK;
}
+float Layer::GetTemperatureFromAnimation() const {
+ return layer_temperature_;
+}
+
float Layer::GetDeviceScaleFactor() const {
return device_scale_factor_;
}
« 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