Author: mir3x
Date: Thu Nov 24 08:09:59 2016
New Revision: 34628

URL: http://svn.gna.org/viewcvs/freeciv?rev=34628&view=rev
Log:
Qt client - Current terrain could be scaled wrongly
Reported by Marko Lindqvist <cazfi>

See bug #25333

Modified:
    trunk/client/gui-qt/hudwidget.cpp

Modified: trunk/client/gui-qt/hudwidget.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/hudwidget.cpp?rev=34628&r1=34627&r2=34628&view=diff
==============================================================================
--- trunk/client/gui-qt/hudwidget.cpp   (original)
+++ trunk/client/gui-qt/hudwidget.cpp   Thu Nov 24 08:09:59 2016
@@ -576,7 +576,8 @@
   QFontMetrics *fm;
   QImage cropped_img;
   QImage img;
-  QPixmap pix;
+  QPainter p;
+  QPixmap pix, pix2;
   QRect crop;
   QString mp;
   QString snum;
@@ -654,6 +655,16 @@
   cropped_img = img.copy(crop);
   img = cropped_img.scaledToHeight(height(), Qt::SmoothTransformation);
   pix = QPixmap::fromImage(img);
+  /* add transparent borders if image is too slim */
+  if (pix.width() < tileset_unit_width(tileset)) {
+    int px = tileset_full_tile_width(tileset);
+    pix2 = QPixmap(px, pix.height());
+    pix2.fill(Qt::transparent);
+    p.begin(&pix2);
+    p.drawPixmap(px / 2 - pix.width() / 2, 0, pix);
+    p.end();
+    pix = pix2;
+  }
   wwidth = 2 * 3 + pix.width();
   unit_label.setPixmap(pix);
   if (tileset_is_isometric(tileset)) {
@@ -668,8 +679,13 @@
   img = tile_pixmap->map_pixmap.toImage();
   crop = zealous_crop_rect(img);
   cropped_img = img.copy(crop);
-  img = cropped_img.scaledToWidth(wwidth - 10,
-                                  Qt::SmoothTransformation);
+  if (cropped_img.height() > height() - 5 ||
+      cropped_img.height() < height() / 3) {
+    img = cropped_img.scaledToHeight(height() - 5,
+                                     Qt::SmoothTransformation);
+  } else {
+    img = cropped_img;
+  }
   pix = QPixmap::fromImage(img);
   tile_label.setPixmap(pix);
   unit_label.setToolTip(popup_info_text(punit->tile));


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to