File indexing completed on 2024-05-05 05:30:26
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 #pragma once 0008 0009 #include "../common/control.h" 0010 #include "../common/globals.h" 0011 0012 #include <kscreen/output.h> 0013 #include <kscreen/types.h> 0014 0015 #include <QOrientationReading> 0016 #include <QVariantMap> 0017 0018 #include <optional> 0019 0020 class Output 0021 { 0022 public: 0023 static void readInOutputs(KScreen::ConfigPtr config, const QVariantList &outputsInfo); 0024 0025 static void writeGlobal(const KScreen::OutputPtr &output, bool hasDuplicate); 0026 static bool writeGlobalPart(const KScreen::OutputPtr &output, QVariantMap &info, const KScreen::OutputPtr &fallback); 0027 0028 static QString dirPath(); 0029 0030 static bool updateOrientation(KScreen::OutputPtr &output, QOrientationReading::Orientation orientation); 0031 0032 struct GlobalConfig { 0033 std::optional<qreal> scale; 0034 std::optional<QString> modeId; 0035 std::optional<KScreen::Output::Rotation> rotation; 0036 std::optional<KScreen::Output::VrrPolicy> vrrPolicy; 0037 std::optional<uint32_t> overscan; 0038 std::optional<KScreen::Output::RgbRange> rgbRange; 0039 }; 0040 static GlobalConfig readGlobal(const KScreen::OutputPtr &output); 0041 0042 private: 0043 static QVariantMap getGlobalData(KScreen::OutputPtr output); 0044 0045 static void readIn(KScreen::OutputPtr output, const QVariantMap &info); 0046 static bool readInGlobal(KScreen::OutputPtr output); 0047 static void readInGlobalPartFromInfo(KScreen::OutputPtr output, const QVariantMap &info); 0048 /* 0049 * When a global output value (scale, rotation) is changed we might 0050 * need to reposition the outputs when another config is read. 0051 */ 0052 static void adjustPositions(KScreen::ConfigPtr config, const QVariantList &outputsInfo); 0053 0054 static QString s_dirName; 0055 };