diff --git a/pip b/pip
index 31f0d88..9834ac1 160000
--- a/pip
+++ b/pip
@@ -1 +1 @@
-Subproject commit 31f0d881570880a73b6b4bdef5708de58570651d
+Subproject commit 9834ac177bfae3f0bfa14c083e3857560ec59b38
diff --git a/qad/application/aboutwindow.ui b/qad/application/aboutwindow.ui
index cd926fd..3167f51 100644
--- a/qad/application/aboutwindow.ui
+++ b/qad/application/aboutwindow.ui
@@ -28,6 +28,9 @@
+
+ QPainter::SmoothPixmapTransform|QPainter::TextAntialiasing
+
-
diff --git a/qad/widgets/image_view.cpp b/qad/widgets/image_view.cpp
index f50c0cd..57dc59f 100644
--- a/qad/widgets/image_view.cpp
+++ b/qad/widgets/image_view.cpp
@@ -14,6 +14,8 @@ ImageView::ImageView(QWidget * parent): QGraphicsView(parent) {
setDragMode(QGraphicsView::NoDrag);
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
setScene(new QGraphicsScene());
+ setRenderHint(QPainter::Antialiasing, true);
+ setRenderHint(QPainter::SmoothPixmapTransform, true);
item.setTransformationMode(Qt::SmoothTransformation);
item.setFlags(0);
scene()->addItem(&item);
@@ -28,12 +30,12 @@ ImageView::~ImageView() {
QPixmap ImageView::pixmap() const {
- return item.pixmap();
+ return map;
}
void ImageView::setPixmap(QPixmap pixmap) {
- item.setPixmap(pixmap);
+ map = pixmap;
adjustView();
}
@@ -42,12 +44,13 @@ void ImageView::setImage(const QImage & i) {
im_data.clear();
if (i.isNull()) {
item.setPixmap(QPixmap());
+ map = QPixmap();
return;
}
QBuffer b(&im_data); b.open(QIODevice::ReadWrite);
i.save(&b, "png");
b.close();
- item.setPixmap(QPixmap::fromImage(i));
+ map = QPixmap::fromImage(i);
adjustView();
}
@@ -56,17 +59,18 @@ void ImageView::setImage(const QByteArray & i) {
im_data = i;
if (i.isEmpty()) {
item.setPixmap(QPixmap());
+ map = QPixmap();
return;
}
- item.setPixmap(QPixmap::fromImage(QImage::fromData(i)));
+ map = QPixmap::fromImage(QImage::fromData(i));
adjustView();
-
}
void ImageView::clear() {
im_data.clear();
item.setPixmap(QPixmap());
+ map = QPixmap();
}
@@ -121,10 +125,17 @@ bool ImageView::eventFilter(QObject * o, QEvent * e) {
void ImageView::adjustView() {
+ qreal mp = map.width() / map.size().boundedTo(size()).width();
+ if (mp > 2) {
+ item.setPixmap(map.scaled(map.size()/mp, Qt::KeepAspectRatio, Qt::SmoothTransformation));
+ } else {
+ item.setPixmap(map);
+ }
if (!autofit_) return;
setSceneRect(item.boundingRect());
fitInView(&item, Qt::KeepAspectRatio);
centerOn(&item);
+
}
diff --git a/qad/widgets/image_view.h b/qad/widgets/image_view.h
index 81ecadb..dbed10d 100644
--- a/qad/widgets/image_view.h
+++ b/qad/widgets/image_view.h
@@ -52,6 +52,7 @@ private:
QByteArray im_data;
QPoint prev_pos;
bool autofit_;
+ QPixmap map;
public slots: