changeset 4928:9181476e1153 draft

(svn r6908) - Codechange: Modify DrawStringMultiLine() to return the number of pixel lines used, and use it for drawing NewGRF additional text (mart3p)
author peter1138 <peter1138@openttd.org>
date Mon, 23 Oct 2006 18:13:24 +0000
parents 29521f1b6ab5
children acd18d8cb136
files gfx.c gfx.h vehicle_gui.c vehicle_gui.h
diffstat 4 files changed, 11 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/gfx.c
+++ b/gfx.c
@@ -500,11 +500,13 @@
 	}
 }
 
-void DrawStringMultiLine(int x, int y, StringID str, int maxw)
+
+uint DrawStringMultiLine(int x, int y, StringID str, int maxw)
 {
 	char buffer[512];
 	uint32 tmp;
 	int num, mt;
+	uint total_height;
 	const char *src;
 	byte c;
 
@@ -514,6 +516,7 @@
 	num = GB(tmp, 0, 16);
 
 	mt = GetCharacterHeight(GB(tmp, 16, 16));
+	total_height = (num + 1) * mt;
 
 	src = buffer;
 
@@ -527,7 +530,7 @@
 				y += mt;
 				if (--num < 0) {
 					_cur_fontsize = FS_NORMAL;
-					return;
+					return total_height;
 				}
 				break;
 			} else if (c == ASCII_SETX) {
--- a/gfx.h
+++ b/gfx.h
@@ -70,7 +70,7 @@
 BoundingRect GetStringBoundingBox(const char *str);
 void LoadStringWidthTable(void);
 void DrawStringMultiCenter(int x, int y, StringID str, int maxw);
-void DrawStringMultiLine(int x, int y, StringID str, int maxw);
+uint DrawStringMultiLine(int x, int y, StringID str, int maxw);
 void DrawDirtyBlocks(void);
 void SetDirtyBlocks(int left, int top, int right, int bottom);
 void MarkWholeScreenDirty(void);
--- a/vehicle_gui.c
+++ b/vehicle_gui.c
@@ -482,13 +482,14 @@
 }
 
 /* Display additional text from NewGRF in the purchase information window */
-int ShowAdditionalText(int x, int y, int w, EngineID engine)
+uint ShowAdditionalText(int x, int y, int w, EngineID engine)
 {
 	uint16 callback = GetVehicleCallback(CBID_VEHICLE_ADDITIONAL_TEXT, 0, 0, engine, NULL);
 	if (callback == CALLBACK_FAILED) return 0;
 
-	DrawStringTruncated(x, y, GetGRFStringID(GetEngineGRFID(engine), 0xD000 + callback), 16, w);
-	return 10;
+	// STR_02BD is used to start the string with {BLACK}
+	SetDParam(0, GetGRFStringID(GetEngineGRFID(engine), 0xD000 + callback));
+	return DrawStringMultiLine(x, y, STR_02BD, w);
 }
 
 
--- a/vehicle_gui.h
+++ b/vehicle_gui.h
@@ -50,7 +50,7 @@
 
 void ChangeVehicleViewWindow(const Vehicle *from_v, const Vehicle *to_v);
 
-int ShowAdditionalText(int x, int y, int w, EngineID engine);
+uint ShowAdditionalText(int x, int y, int w, EngineID engine);
 
 void ShowVehicleListWindow(PlayerID player, StationID station, byte vehicle_type);
 void ShowVehWithSharedOrders(Vehicle *v, byte vehicle_type);