@@ -195,21 +195,24 @@ void KDReports::PreviewWidgetPrivate::paintItem(QListWidgetItem *item, int index
195
195
196
196
// Use a QImage so that the raster paint engine is used.
197
197
// Gives a 7.7 times speedup (!) compared to X11.
198
- QImage img (PreviewSize, PreviewSize, QImage::Format_ARGB32_Premultiplied);
198
+ const qreal dpr = q->devicePixelRatioF ();
199
+ QImage img (PreviewSize * dpr, PreviewSize * dpr, QImage::Format_ARGB32_Premultiplied);
200
+ img.setDevicePixelRatio (dpr);
201
+ img.fill (Qt::transparent);
199
202
const QSizeF paperSize = m_report->paperSize ();
200
- const qreal longestSide = qMax ( paperSize.width (), paperSize. height () );
201
- qreal width = img. width () * paperSize.width () / longestSide ;
202
- qreal height = img. height () * paperSize. height () / longestSide ;
203
- // img.fill( QColor( Qt::white ).rgb() ) ;
204
- img. fill ( qRgba ( 0 , 0 , 0 , 0 )); // transparent
203
+ const qreal paperWidth = paperSize.width ();
204
+ const qreal paperHeight = paperSize.height () ;
205
+ const qreal longestSide = qMax (paperWidth, paperHeight) ;
206
+ const qreal width = PreviewSize * paperWidth / longestSide ;
207
+ const qreal height = PreviewSize * paperHeight / longestSide;
205
208
QPainter painter (&img);
206
- painter.setRenderHint (QPainter::Antialiasing);
207
- painter.translate ((img. width () - width) / 2 , (img. height () - height) / 2 );
209
+ painter.setRenderHints (QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform, true );
210
+ painter.translate ((PreviewSize - width) / 2 , (PreviewSize - height) / 2 );
208
211
painter.fillRect (QRectF (0 , 0 , width, height), QBrush (Qt::white));
209
- painter.scale (img. width () / longestSide, img. height () / longestSide);
212
+ painter.scale (PreviewSize / longestSide, PreviewSize / longestSide);
210
213
m_report->paintPage (index, painter);
211
214
painter.setPen (QPen (1 ));
212
- painter.drawRect (QRectF (0 , 0 , paperSize. width (), paperSize. height () ));
215
+ painter.drawRect (QRectF (0 , 0 , paperWidth, paperHeight ));
213
216
214
217
item->setIcon (QIcon (QPixmap::fromImage (img)));
215
218
}
@@ -231,15 +234,18 @@ QPixmap KDReports::PreviewWidgetPrivate::paintPreview(int index) const
231
234
const QSizeF paperSize = m_report->paperSize ();
232
235
const int width = qCeil (paperSize.width () * m_zoomFactor);
233
236
const int height = qCeil (paperSize.height () * m_zoomFactor);
237
+ const qreal dpr = q->devicePixelRatioF ();
234
238
235
- QPixmap pixmap (width, height);
239
+ QPixmap pixmap (width * dpr, height * dpr);
240
+ pixmap.setDevicePixelRatio (dpr);
241
+ pixmap.fill (Qt::transparent);
236
242
// qDebug() << width << "," << height;
237
243
238
244
// qDebug() << "paintPreview " << index;
239
245
240
246
QPainter painter (&pixmap);
241
- painter.setRenderHint (QPainter::Antialiasing);
242
- painter. setRenderHint (QPainter::SmoothPixmapTransform);
247
+ painter.setRenderHints (QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform, true );
248
+
243
249
painter.fillRect (QRectF (0 , 0 , width, height), QBrush (Qt::white));
244
250
painter.scale (m_zoomFactor, m_zoomFactor);
245
251
m_report->paintPage (index, painter);
0 commit comments