blob: 989a21d67e3ff6eab745a8decb268cf3a7320f39 [file] [log] [blame]
Avi Drissmand878a5012022-09-12 19:13:301// Copyright 2020 The Chromium Authors
Jiaqi Han171c7bf2020-04-30 16:58:052// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROMECAST_UI_DISPLAY_SETTINGS_MANAGER_H_
6#define CHROMECAST_UI_DISPLAY_SETTINGS_MANAGER_H_
7
8#include <vector>
9
10#include "chromecast/ui/mojom/display_settings.mojom.h"
11#include "mojo/public/cpp/bindings/pending_receiver.h"
12#include "ui/display/types/gamma_ramp_rgb_entry.h"
13
14namespace chromecast {
15
16class DisplaySettingsManager {
17 public:
18 struct ColorTemperatureConfig {
19 ColorTemperatureConfig();
20 ColorTemperatureConfig(const ColorTemperatureConfig& other);
21 ~ColorTemperatureConfig();
22
23 float neutral_temperature;
24 float full_color;
25 std::vector<float> temperature_values;
26 std::vector<float> red_values;
27 std::vector<float> green_values;
28 std::vector<float> blue_values;
29 };
30
31 class Delegate {
32 public:
33 virtual void SetDisplayBrightness(float brightness, bool smooth) = 0;
34 virtual float GetDisplayBrightness() = 0;
35
36 protected:
37 virtual ~Delegate() {}
38 };
39
40 virtual ~DisplaySettingsManager() = default;
41
42 virtual void SetDelegate(Delegate* delegate) = 0;
43
Junbo Ke03a23902021-12-03 00:55:0444 virtual void SetColorTemperatureConfig(
45 const ColorTemperatureConfig& config) = 0;
46
Jiaqi Han171c7bf2020-04-30 16:58:0547 virtual void ResetDelegate() = 0;
48
49 virtual void SetGammaCalibration(
50 const std::vector<display::GammaRampRGBEntry>& gamma) = 0;
51
52 virtual void NotifyBrightnessChanged(float new_brightness,
53 float old_brightness) = 0;
54
55 virtual void SetColorInversion(bool enable) = 0;
56
57 virtual void AddReceiver(
58 mojo::PendingReceiver<mojom::DisplaySettings> receiver) = 0;
59};
60
61} // namespace chromecast
62
63#endif // CHROMECAST_UI_DISPLAY_SETTINGS_MANAGER_H_