1 /* 2 * SPDX-FileCopyrightText: 2015 Daniel Vrátil <dvratil@redhat.com> 3 * 4 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 5 * 6 */ 7 #pragma once 8 9 #include <QMap> 10 #include <QObject> 11 #include <QRect> 12 #include <QVector> 13 14 #include <xcb/randr.h> 15 16 class XRandRConfig; 17 18 class XRandRCrtc : public QObject 19 { 20 Q_OBJECT 21 22 public: 23 typedef QMap<xcb_randr_crtc_t, XRandRCrtc *> Map; 24 25 XRandRCrtc(xcb_randr_crtc_t crtc, XRandRConfig *config); 26 27 xcb_randr_crtc_t crtc() const; 28 xcb_randr_mode_t mode() const; 29 30 QRect geometry() const; 31 xcb_randr_rotation_t rotation() const; 32 33 QVector<xcb_randr_output_t> possibleOutputs(); 34 QVector<xcb_randr_output_t> outputs() const; 35 36 bool connectOutput(xcb_randr_output_t output); 37 void disconectOutput(xcb_randr_output_t output); 38 39 bool isFree() const; 40 41 void update(); 42 void update(xcb_randr_crtc_t mode, xcb_randr_rotation_t rotation, const QRect &geom); 43 44 private: 45 xcb_randr_crtc_t m_crtc; 46 xcb_randr_mode_t m_mode; 47 48 QRect m_geometry; 49 xcb_randr_rotation_t m_rotation; 50 51 QVector<xcb_randr_output_t> m_possibleOutputs; 52 QVector<xcb_randr_output_t> m_outputs; 53 }; 54