kwin/colordevice.h
Vlad Zahorodnii 64ad9a61d8 Introduce ColorManager component
This change introduces a new component - ColorManager that is
responsible for color management stuff.

At the moment, it's very naive. It is useful only for updating gamma
ramps. But in the future, it will be extended with more CMS-related
features.

The ColorManager depends on lcms2 library. This is an optional
dependency. If lcms2 is not installed, the color manager won't be built.

This also fixes the issue where colord and nightcolor overwrite each
other's gamma ramps. With this change, the ColorManager will resolve the
conflict between two.
2020-12-13 23:53:33 +02:00

87 lines
1.8 KiB
C++

/*
SPDX-FileCopyrightText: 2020 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <kwinglobals.h>
#include <QObject>
namespace KWin
{
class AbstractOutput;
class ColorDevicePrivate;
/**
* The ColorDevice class represents a color managed device.
*/
class KWIN_EXPORT ColorDevice : public QObject
{
Q_OBJECT
public:
explicit ColorDevice(AbstractOutput *output, QObject *parent = nullptr);
~ColorDevice() override;
/**
* Returns the underlying output for this color device.
*/
AbstractOutput *output() const;
/**
* Returns the current color brightness on this device, in percent.
*/
uint brightness() const;
/**
* Sets the color brightness on this device to @a brightness, in percent.
*/
void setBrightness(uint brightness);
/**
* Returns the current color temperature on this device, in Kelvins.
*/
uint temperature() const;
/**
* Sets the color temperature on this device to @a temperature, in Kelvins.
*/
void setTemperature(uint temperature);
/**
* Returns the color profile for this device.
*/
QString profile() const;
/**
* Sets the color profile for this device to @a profile.
*/
void setProfile(const QString &profile);
public Q_SLOTS:
void update();
void scheduleUpdate();
Q_SIGNALS:
/**
* This signal is emitted when the brightness of this device has changed.
*/
void brightnessChanged();
/**
* This signal is emitted when the color temperature of this device has changed.
*/
void temperatureChanged();
/**
* This signal is emitted when the color profile of this device has changed.
*/
void profileChanged();
private:
QScopedPointer<ColorDevicePrivate> d;
};
} // namespace KWin