File indexing completed on 2024-05-12 05:31:23
0001 /* 0002 SPDX-FileCopyrightText: 2023 Xaver Hugl <xaver.hugl@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "core/output.h" 0010 0011 #include <QMatrix4x4> 0012 #include <QRectF> 0013 #include <QRegion> 0014 0015 namespace KWin 0016 { 0017 0018 class RenderTarget; 0019 0020 class KWIN_EXPORT RenderViewport 0021 { 0022 public: 0023 explicit RenderViewport(const QRectF &renderRect, double scale, const RenderTarget &renderTarget); 0024 0025 QMatrix4x4 projectionMatrix() const; 0026 QRectF renderRect() const; 0027 double scale() const; 0028 0029 QRectF mapToRenderTarget(const QRectF &logicalGeometry) const; 0030 QRect mapToRenderTarget(const QRect &logicalGeometry) const; 0031 QPoint mapToRenderTarget(const QPoint &logicalGeometry) const; 0032 QPointF mapToRenderTarget(const QPointF &logicalGeometry) const; 0033 QRegion mapToRenderTarget(const QRegion &logicalGeometry) const; 0034 0035 QRectF mapToRenderTargetTexture(const QRectF &logicalGeometry) const; 0036 QRect mapToRenderTargetTexture(const QRect &logicalGeometry) const; 0037 QPoint mapToRenderTargetTexture(const QPoint &logicalGeometry) const; 0038 QPointF mapToRenderTargetTexture(const QPointF &logicalGeometry) const; 0039 QRegion mapToRenderTargetTexture(const QRegion &logicalGeometry) const; 0040 0041 private: 0042 const OutputTransform m_transform; 0043 const QSize m_transformBounds; 0044 const QRectF m_renderRect; 0045 const QRect m_deviceRenderRect; 0046 const QMatrix4x4 m_projectionMatrix; 0047 const double m_scale; 0048 }; 0049 0050 } // namespace KWin