diff options
Diffstat (limited to 'src-qt5/core/libLumina/LuminaRandR.h')
-rw-r--r-- | src-qt5/core/libLumina/LuminaRandR.h | 60 |
1 files changed, 44 insertions, 16 deletions
diff --git a/src-qt5/core/libLumina/LuminaRandR.h b/src-qt5/core/libLumina/LuminaRandR.h index 448c676d..86c713db 100644 --- a/src-qt5/core/libLumina/LuminaRandR.h +++ b/src-qt5/core/libLumina/LuminaRandR.h @@ -17,17 +17,34 @@ #include <QRect> #include <QList> +// XCB +#include "xcb/randr.h" +#include "xcb/xcb_atom.h" + +struct p_objects{ +//public: + xcb_atom_t monitor_atom; //This is the index used to identify particular monitors (unique ID) + + //Cached Information + bool primary, automatic; + QRect geometry; + QList<QSize> resolutions; + QSize physicalSizeMM; + QString name; + QList<xcb_randr_output_t> outputs; + + /*p_objects(){ + // Set the defaults for non-default-constructed variables + primary = automatic = false; + monitor_atom = 0; + }*/ + +}; class OutputDevice{ public: - QString id; //output ID - bool enabled; - bool isPrimary; - //Monitor Geometry - QPoint geom; //geometry of monitor within session - //Monitor Resolution - QSize cRes; //current resolution of the monitor (could be different from geom.size() if panning is enabled) - QList<QSize> availRes; //available resolutions supported by the monitor + + // EXPANSIONS TO-DO //Refresh Rate //int cHz; //current refresh rate //QList<int> availHz; //available refresh rates @@ -39,19 +56,32 @@ public: static QList<OutputDevice> availableMonitors(); //FUNCTIONS (do not use directly - use the static list function instead) - OutputDevice(); + OutputDevice(QString id); ~OutputDevice(); + //Information + QString ID(); + + bool isEnabled(); + bool isPrimary(); + bool isAutomatic(); + QList<QSize> availableResolutions(); + QSize currentResolution(); //could be different from geometry.size() if things like panning/rotation are enabled + QRect currentGeometry(); + //Modification - bool setAsPrimary(); + bool setAsPrimary(bool); bool disable(); void enable(QRect geom = QRect()); //if no geom provided, will add as the right-most screen at optimal resolution void changeResolution(QSize); - + void changeGeometry(QRect); //move a currently-enabled screen to another place + + void updateInfoCache(); //Run this after all modification functions to refresh the current info for this device + //Now define a simple public_objects class so that each implementation - // has a storage container for placing private objects as needed - class p_objects; - p_objects* p_obj; + // has a storage container for placing semi-private objects as needed + //class p_objects; //forward declaration - defined in the .cpp file + p_objects p_obj; }; class OutputDeviceList : public QList<OutputDevice>{ @@ -64,7 +94,5 @@ public: void disableMonitor(QString id); //void enableMonitor(QString id, -private: - }; #endif |