14static QMatrix4x4 createProjectionMatrix(
const RenderTarget &renderTarget, 
const QRect &rect)
 
   19    ret *= renderTarget.transform().toMatrix();
 
   27    : m_transform(renderTarget.transform())
 
   28    , m_transformBounds(m_transform.map(renderTarget.size()))
 
   29    , m_renderRect(renderRect)
 
   31    , m_projectionMatrix(createProjectionMatrix(renderTarget, m_deviceRenderRect))
 
 
   38    return m_projectionMatrix;
 
 
   53    const QRectF deviceGeometry = 
scaledRect(logicalGeometry, m_scale)
 
   54                                      .translated(-m_deviceRenderRect.topLeft());
 
   55    return m_transform.
map(deviceGeometry, m_transformBounds);
 
 
   61                                     .translated(-m_deviceRenderRect.topLeft());
 
   62    return m_transform.
map(deviceGeometry, m_transformBounds);
 
 
   67    const QPoint devicePoint = 
snapToPixelGrid(QPointF(logicalGeometry) * m_scale) - m_deviceRenderRect.topLeft();
 
   68    return m_transform.
map(devicePoint, m_transformBounds);
 
 
   73    const QPointF devicePoint = logicalGeometry * m_scale - m_deviceRenderRect.topLeft();
 
   74    return m_transform.
map(devicePoint, m_transformBounds);
 
 
   80    for (
const auto &rect : logicalGeometry) {
 
 
   89        .translated(-m_deviceRenderRect.topLeft());
 
 
   95        .translated(-m_deviceRenderRect.topLeft());
 
 
  100    return snapToPixelGrid(QPointF(logicalGeometry) * m_scale) - m_deviceRenderRect.topLeft();
 
 
  105    return logicalGeometry * m_scale - m_deviceRenderRect.topLeft();
 
 
  111    for (
const auto &rect : logicalGeometry) {
 
 
QRectF mapToRenderTargetTexture(const QRectF &logicalGeometry) const
QMatrix4x4 projectionMatrix() const
RenderViewport(const QRectF &renderRect, double scale, const RenderTarget &renderTarget)
QRectF renderRect() const
QRectF mapToRenderTarget(const QRectF &logicalGeometry) const
KWIN_EXPORT QPoint snapToPixelGrid(const QPointF &point)
KWIN_EXPORT QRectF scaledRect(const QRectF &rect, qreal scale)