diff options
author | Morten Johan Sørvig <morten.sorvig@digia.com> | 2013-01-24 09:26:45 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-15 07:55:52 +0200 |
commit | cea58f4b77e1639e5671cf424544d4948fb8e9ef (patch) | |
tree | c794d9e3505a9f1e4b9909bf470aa4bfbef25770 /src/opengl | |
parent | 1f3a67e8701bd8e8d4e58ca740bc03781c10136b (diff) | |
download | qtbase-cea58f4b77e1639e5671cf424544d4948fb8e9ef.tar.gz |
Add devicePixelRatio metric to QPaintDevice.
Previously QPainter computed the devicePixelRatio
based on the physical and logical dpi, and expected
that the ratio between them would be either 1x or
2x.
This was problematic for paint devices like printers
where the physical dpi can be much higher than the
logical dpi, and also for QScreen where the physical
dpi would have to be defined as a multiple of the
logical dpi.
Add QPaintDevice::PdmDevicePixelRatio and QPaintDevice::
devicePixelRatio() getter and implement it for the
QPaintDevice subclasses. Use it when calculating the
highdpi scale transform in qpainter.cpp and when scaling
the clip rect in qwidget.cpp.
Remove physical dpi scaling for QImage, QPixmap and
QOpenGLPaintDevice, reverting to the old behavior.
Change-Id: I6c97510613196d4536ff39d08e9750b8782283d4
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'src/opengl')
-rw-r--r-- | src/opengl/qglframebufferobject.cpp | 3 | ||||
-rw-r--r-- | src/opengl/qglpaintdevice.cpp | 2 | ||||
-rw-r--r-- | src/opengl/qglpixelbuffer.cpp | 3 |
3 files changed, 8 insertions, 0 deletions
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp index 15880108f3..1c802cabcb 100644 --- a/src/opengl/qglframebufferobject.cpp +++ b/src/opengl/qglframebufferobject.cpp @@ -1232,6 +1232,9 @@ int QGLFramebufferObject::metric(PaintDeviceMetric metric) const case PdmPhysicalDpiY: return qRound(dpmy * 0.0254); + case QPaintDevice::PdmDevicePixelRatio: + return 1; + default: qWarning("QGLFramebufferObject::metric(), Unhandled metric type: %d.\n", metric); break; diff --git a/src/opengl/qglpaintdevice.cpp b/src/opengl/qglpaintdevice.cpp index a3779218d2..ef9bdba070 100644 --- a/src/opengl/qglpaintdevice.cpp +++ b/src/opengl/qglpaintdevice.cpp @@ -67,6 +67,8 @@ int QGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const const QGLFormat f = format(); return f.redBufferSize() + f.greenBufferSize() + f.blueBufferSize() + f.alphaBufferSize(); } + case PdmDevicePixelRatio: + return 1; default: qWarning("QGLPaintDevice::metric() - metric %d not known", metric); return 0; diff --git a/src/opengl/qglpixelbuffer.cpp b/src/opengl/qglpixelbuffer.cpp index e514e34552..e5e7de0fff 100644 --- a/src/opengl/qglpixelbuffer.cpp +++ b/src/opengl/qglpixelbuffer.cpp @@ -462,6 +462,9 @@ int QGLPixelBuffer::metric(PaintDeviceMetric metric) const case PdmPhysicalDpiY: return qRound(dpmy * 0.0254); + case QPaintDevice::PdmDevicePixelRatio: + return 1; + default: qWarning("QGLPixelBuffer::metric(), Unhandled metric type: %d\n", metric); break; |