11#include <kwin_export.h>
28class OutputConfiguration;
29class ColorTransformation;
76 QSizeF map(
const QSizeF &size)
const;
77 QSize map(
const QSize &size)
const;
82 QRectF map(
const QRectF &rect,
const QSizeF &bounds)
const;
83 QRect map(
const QRect &rect,
const QSize &bounds)
const;
88 QPointF map(
const QPointF &point,
const QSizeF &bounds)
const;
89 QPoint map(
const QPoint &point,
const QSize &bounds)
const;
100 QMatrix4x4 toMatrix()
const;
103 Kind m_kind = Kind::Normal;
113 Q_DECLARE_FLAGS(Flags, Flag)
115 OutputMode(
const QSize &size, uint32_t refreshRate, Flags flags = {});
119 uint32_t refreshRate()
const;
124 const uint32_t m_refreshRate;
134 Q_PROPERTY(QRect geometry READ geometry NOTIFY geometryChanged)
135 Q_PROPERTY(qreal devicePixelRatio READ scale NOTIFY scaleChanged)
136 Q_PROPERTY(QString name READ name CONSTANT)
137 Q_PROPERTY(QString manufacturer READ manufacturer CONSTANT)
138 Q_PROPERTY(QString model READ model CONSTANT)
139 Q_PROPERTY(QString serialNumber READ serialNumber CONSTANT)
155 HighDynamicRange = 1 << 4,
156 WideColorGamut = 1 << 5,
157 AutoRotation = 1 << 6,
161 Q_DECLARE_FLAGS(Capabilities, Capability)
187 explicit Output(QObject *parent =
nullptr);
196 QRect mapFromGlobal(
const QRect &rect)
const;
201 QRectF mapFromGlobal(
const QRectF &rect)
const;
206 QRectF mapToGlobal(
const QRectF &rect)
const;
208 Q_INVOKABLE QPointF mapToGlobal(
const QPointF &pos)
const;
209 Q_INVOKABLE QPointF mapFromGlobal(
const QPointF &pos)
const;
214 QString name()
const;
224 bool isEnabled()
const;
229 QRect geometry()
const;
234 QRectF geometryF()
const;
244 QRectF rectF()
const;
249 uint32_t refreshRate()
const;
255 bool isInternal()
const;
265 QSize physicalSize()
const;
268 QSize pixelSize()
const;
269 QSize modeSize()
const;
271 QString eisaId()
const;
276 QString manufacturer()
const;
280 QString model()
const;
284 QString serialNumber()
const;
293 void inhibitDirectScanout();
294 void uninhibitDirectScanout();
296 bool directScanoutInhibited()
const;
306 static std::chrono::milliseconds dimAnimationTime();
314 QSize orientateSize(
const QSize &size)
const;
319 QString description()
const;
320 Capabilities capabilities()
const;
321 const Edid &edid()
const;
322 QList<std::shared_ptr<OutputMode>> modes()
const;
323 std::shared_ptr<OutputMode> currentMode()
const;
325 virtual void setDpmsMode(
DpmsMode mode);
327 uint32_t overscan()
const;
332 bool isPlaceholder()
const;
333 bool isNonDesktop()
const;
335 bool wideColorGamut()
const;
336 bool highDynamicRange()
const;
337 uint32_t sdrBrightness()
const;
339 std::shared_ptr<IccProfile> iccProfile()
const;
340 QString iccProfilePath()
const;
344 QByteArray mstPath()
const;
346 virtual bool setGammaRamp(
const std::shared_ptr<ColorTransformation> &transformation);
347 virtual bool setChannelFactors(
const QVector3D &rgb);
349 virtual bool updateCursorLayer();
351 std::optional<double> maxPeakBrightness()
const;
352 std::optional<double> maxAverageBrightness()
const;
353 double minBrightness()
const;
354 std::optional<double> maxPeakBrightnessOverride()
const;
355 std::optional<double> maxAverageBrightnessOverride()
const;
356 std::optional<double> minBrightnessOverride()
const;
358 double sdrGamutWideness()
const;
438 bool internal =
false;
439 bool placeholder =
false;
440 bool nonDesktop =
false;
444 double minBrightness = 0;
453 QList<std::shared_ptr<OutputMode>>
modes;
457 bool enabled =
false;
458 uint32_t overscan = 0;
460 bool wideColorGamut =
false;
461 bool highDynamicRange =
false;
462 uint32_t sdrBrightness = 200;
470 double sdrGamutWideness = 0;
474 void setInformation(
const Information &information);
475 void setState(
const State &state);
480 int m_directScanoutCount = 0;
486 return QRect(QPoint(0, 0),
geometry().size());
491 return QRectF(QPointF(0, 0),
geometryF().size());
498Q_DECLARE_OPERATORS_FOR_FLAGS(KWin::Output::Capabilities)
void outputChange(const QRegion &damagedRegion)
void colorDescriptionChanged()
Q_ENUM(AutoRotationPolicy)
void currentModeChanged()
void highDynamicRangeChanged()
void autoRotationPolicyChanged()
void sdrBrightnessChanged()
virtual RenderLoop * renderLoop() const =0
void capabilitiesChanged()
void iccProfilePathChanged()
void aboutToChange(OutputChangeSet *changeSet)
void sdrGamutWidenessChanged()
void brightnessMetadataChanged()
void aboutToTurnOff(std::chrono::milliseconds time)
void wideColorGamutChanged()
Information m_information
virtual ~OutputMode()=default
QDebug & operator<<(QDebug &s, const KWin::DrmConnector *obj)
std::shared_ptr< OutputMode > currentMode
QList< std::shared_ptr< OutputMode > > modes
std::shared_ptr< IccProfile > iccProfile
std::optional< double > maxAverageBrightnessOverride
std::optional< double > minBrightnessOverride
std::optional< double > maxPeakBrightnessOverride