changeset 14032:0a874c3b0514 draft

(svn r18575) -Fix [FS#3393]: unit numbers weren't always fully shown in the depot
author rubidium <rubidium@openttd.org>
date Sun, 20 Dec 2009 16:42:35 +0000
parents c603550031d4
children d10f25c883e9
files src/depot_gui.cpp src/gfx.cpp src/gfx_func.h
diffstat 3 files changed, 17 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -631,15 +631,14 @@
 					this->count_width = 0;
 				}
 
-				SetDParam(0, 999);
-				Dimension unumber = GetStringBoundingBox(STR_BLACK_COMMA);
+				Dimension unumber = { GetDigitWidth() * 4, FONT_HEIGHT_NORMAL };
 				const Sprite *spr = GetSprite(SPR_FLAG_VEH_STOPPED, ST_NORMAL);
 				this->flag_width  = spr->width + WD_FRAMERECT_RIGHT;
 				this->flag_height = spr->height;
 
 				if (this->type == VEH_TRAIN || this->type == VEH_ROAD) {
 					min_height = max<uint>(unumber.height + WD_MATRIX_TOP, spr->height);
-					this->header_width = unumber.width + this->flag_width;
+					this->header_width = unumber.width + this->flag_width + WD_FRAMERECT_LEFT;
 				} else {
 					min_height = unumber.height + spr->height + WD_MATRIX_TOP + WD_PAR_VSEP_NORMAL + WD_MATRIX_BOTTOM;
 					this->header_width = max<uint>(unumber.width, this->flag_width) + WD_FRAMERECT_RIGHT;
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -1306,6 +1306,20 @@
 	return GetGlyphWidth(size, key);
 }
 
+/**
+ * Return the maximum width of single digit.
+ * @param size  Font of the digit
+ * @return Width of the digit.
+ */
+byte GetDigitWidth(FontSize size)
+{
+	byte width = 0;
+	for (char c = '0'; c <= '9'; c++) {
+		width = max(GetCharacterWidth(size, c), width);
+	}
+	return width;
+}
+
 
 void ScreenSizeChanged()
 {
--- a/src/gfx_func.h
+++ b/src/gfx_func.h
@@ -160,6 +160,7 @@
 extern FontSize _cur_fontsize; ///< Currently selected font.
 
 byte GetCharacterWidth(FontSize size, uint32 key);
+byte GetDigitWidth(FontSize size = FS_NORMAL);
 
 /**
  * Get height of a character for a given font size.