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