File indexing completed on 2024-05-12 05:31:22

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 2021 Xaver Hugl <xaver.hugl@gmail.com>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 #pragma once
0010 
0011 #include "kwin_export.h"
0012 
0013 #include "output.h"
0014 
0015 #include <QPoint>
0016 #include <QSize>
0017 
0018 namespace KWin
0019 {
0020 
0021 class IccProfile;
0022 
0023 class KWIN_EXPORT OutputChangeSet
0024 {
0025 public:
0026     std::optional<std::weak_ptr<OutputMode>> mode;
0027     std::optional<bool> enabled;
0028     std::optional<QPoint> pos;
0029     std::optional<double> scale;
0030     std::optional<OutputTransform> transform;
0031     std::optional<OutputTransform> manualTransform;
0032     std::optional<uint32_t> overscan;
0033     std::optional<Output::RgbRange> rgbRange;
0034     std::optional<VrrPolicy> vrrPolicy;
0035     std::optional<bool> highDynamicRange;
0036     std::optional<uint32_t> sdrBrightness;
0037     std::optional<bool> wideColorGamut;
0038     std::optional<Output::AutoRotationPolicy> autoRotationPolicy;
0039     std::optional<QString> iccProfilePath;
0040     std::optional<std::shared_ptr<IccProfile>> iccProfile;
0041     std::optional<std::optional<double>> maxPeakBrightnessOverride;
0042     std::optional<std::optional<double>> maxAverageBrightnessOverride;
0043     std::optional<std::optional<double>> minBrightnessOverride;
0044     std::optional<double> sdrGamutWideness;
0045 };
0046 
0047 class KWIN_EXPORT OutputConfiguration
0048 {
0049 public:
0050     std::shared_ptr<OutputChangeSet> changeSet(Output *output);
0051     std::shared_ptr<OutputChangeSet> constChangeSet(Output *output) const;
0052 
0053 private:
0054     QMap<Output *, std::shared_ptr<OutputChangeSet>> m_properties;
0055 };
0056 
0057 }