File indexing completed on 2024-04-28 16:45:09
0001 /* 0002 SPDX-FileCopyrightText: 2019 Roman Gilg <subdiff@gmail.com> 0003 SPDX-FileCopyrightText: 2021 David Redondo <kde@david-redondo.de> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #ifndef KDED_OUTPUT_H 0008 #define KDED_OUTPUT_H 0009 0010 #include "../common/control.h" 0011 #include "../common/globals.h" 0012 0013 #include <kscreen/output.h> 0014 #include <kscreen/types.h> 0015 0016 #include <QOrientationReading> 0017 #include <QVariantMap> 0018 0019 #include <optional> 0020 0021 class Output 0022 { 0023 public: 0024 static void readInOutputs(KScreen::ConfigPtr config, const QVariantList &outputsInfo); 0025 0026 static void writeGlobal(const KScreen::OutputPtr &output, bool hasDuplicate); 0027 static bool writeGlobalPart(const KScreen::OutputPtr &output, QVariantMap &info, const KScreen::OutputPtr &fallback); 0028 0029 static QString dirPath(); 0030 0031 static bool updateOrientation(KScreen::OutputPtr &output, QOrientationReading::Orientation orientation); 0032 0033 struct GlobalConfig { 0034 std::optional<qreal> scale; 0035 std::optional<QString> modeId; 0036 std::optional<KScreen::Output::Rotation> rotation; 0037 std::optional<KScreen::Output::VrrPolicy> vrrPolicy; 0038 std::optional<uint32_t> overscan; 0039 std::optional<KScreen::Output::RgbRange> rgbRange; 0040 }; 0041 static GlobalConfig readGlobal(const KScreen::OutputPtr &output); 0042 0043 private: 0044 static QVariantMap getGlobalData(KScreen::OutputPtr output); 0045 0046 static void readIn(KScreen::OutputPtr output, const QVariantMap &info, Control::OutputRetention retention); 0047 static bool readInGlobal(KScreen::OutputPtr output); 0048 static void readInGlobalPartFromInfo(KScreen::OutputPtr output, const QVariantMap &info); 0049 /* 0050 * When a global output value (scale, rotation) is changed we might 0051 * need to reposition the outputs when another config is read. 0052 */ 0053 static void adjustPositions(KScreen::ConfigPtr config, const QVariantList &outputsInfo); 0054 0055 static QString s_dirName; 0056 }; 0057 0058 #endif