Author: mir3x
Date: Mon Sep  1 14:41:21 2014
New Revision: 26167

URL: http://svn.gna.org/viewcvs/freeciv?rev=26167&view=rev
Log:
Added tile pixmap to unit label (often useful when city labels
take too much space and player doesnt see current terrain)

See patch #5138


Modified:
    branches/S2_5/client/gui-qt/mapview.cpp
    branches/S2_5/client/gui-qt/mapview.h

Modified: branches/S2_5/client/gui-qt/mapview.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/mapview.cpp?rev=26167&r1=26166&r2=26167&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/mapview.cpp     (original)
+++ branches/S2_5/client/gui-qt/mapview.cpp     Mon Sep  1 14:41:21 2014
@@ -1432,6 +1432,7 @@
   setParent(parent);
   pix = NULL;
   arrow_pix = NULL;
+  tile_pix = NULL;
   ufont = new QFont;
   w_width = 0;
   selection_area.setWidth(0);
@@ -1451,9 +1452,10 @@
   struct unit *punit = unit_list_get(punits, 0);
   struct player *owner;
   struct canvas *unit_pixmap;
+  struct canvas *tile_pixmap;
 
   one_unit = true;
-  setFixedHeight(50);
+  setFixedHeight(56);
   if (unit_list_size(punits) == 0) {
     unit_label1 = "";
     unit_label2 = "";
@@ -1489,14 +1491,36 @@
   };
   punit = head_of_units_in_focus();
   if (punit) {
-    unit_pixmap = qtg_canvas_create(tileset_full_tile_width(tileset),
-                                    tileset_tile_height(tileset) * 3 / 2);
+    if (tileset_is_isometric(tileset)){
+      unit_pixmap = qtg_canvas_create(tileset_full_tile_width(tileset),
+                                      tileset_tile_height(tileset) * 3 / 2);
+    } else {
+      unit_pixmap = qtg_canvas_create(tileset_full_tile_width(tileset),
+                                      tileset_tile_height(tileset));
+    }
     unit_pixmap->map_pixmap.fill(Qt::transparent);
     put_unit(punit, unit_pixmap, 0, 0);
     pix = &unit_pixmap->map_pixmap;
     *pix = pix->scaledToHeight(height());
     w_width = pix->width() + 1;
-  }
+
+    if (tile_pix != NULL) {
+      delete tile_pix;
+    };
+    if (tileset_is_isometric(tileset)){
+      tile_pixmap = qtg_canvas_create(tileset_full_tile_width(tileset),
+                                      tileset_tile_height(tileset) * 2);
+    } else {
+      tile_pixmap = qtg_canvas_create(tileset_full_tile_width(tileset),
+                                      tileset_tile_height(tileset));
+    }
+    tile_pixmap->map_pixmap.fill(QColor(0 , 0 , 0 , 85));
+    put_terrain(punit->tile, tile_pixmap, 0, 0);
+    tile_pix = &tile_pixmap->map_pixmap;
+    *tile_pix = tile_pix->scaledToHeight(height());
+     w_width = w_width + tile_pix->width() + 1;
+  }
+
   QFontMetrics fm(*ufont);
   if (arrow_pix == NULL) {
     arrow_pix = get_arrow_sprite(tileset, ARROW_PLUS)->pm;
@@ -1560,6 +1584,7 @@
   int w;
   QPainter::CompositionMode comp_mode = painter->compositionMode();
   QPen pen;
+  QFontMetrics fm(*ufont);
 
   selection_area.setWidth(0);
   pen.setWidth(1);
@@ -1568,9 +1593,11 @@
   painter->drawRect(0, 0, w_width, height());
   painter->setFont(*ufont);
   painter->setPen(pen);
+
+  w = 0;
   if (pix != NULL) {
-    painter->drawPixmap(0, (height() - pix->height()) / 2, *pix);
-    w = pix->width() + 1;
+    painter->drawPixmap(w, (height() - pix->height()) / 2, *pix);
+    w = w + pix->width() + 1;
     if (one_unit == false) {
       if (highlight_pix) {
         painter->setCompositionMode(QPainter::CompositionMode_HardLight);
@@ -1583,6 +1610,11 @@
     painter->setCompositionMode(comp_mode);
     painter->drawText(w, height() / 2.5, unit_label1);
     painter->drawText(w, height() - 8, unit_label2);
+    w = w + 5 + qMax(fm.width(unit_label1), fm.width(unit_label2));
+    if (tile_pix != NULL) {
+      painter->drawPixmap(w, (height() - pix->height()) / 2, *tile_pix);
+      w = tile_pix->width() + 1;
+    }
   } else {
     painter->drawText(5, height() / 3 + 5, _("No units selected."));
   }

Modified: branches/S2_5/client/gui-qt/mapview.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/mapview.h?rev=26167&r1=26166&r2=26167&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/mapview.h       (original)
+++ branches/S2_5/client/gui-qt/mapview.h       Mon Sep  1 14:41:21 2014
@@ -278,6 +278,7 @@
   Q_OBJECT
   QPixmap *pix;
   QPixmap *arrow_pix;
+  QPixmap *tile_pix;
   QFont *ufont;
 public:
   unit_label(QWidget *parent);


_______________________________________________
Freeciv-commits mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to