changeset 5796:54b69ef4b352 draft

(svn r8356) -Codechange: [Graphs] Rename mx to highest_value, and fix the scaling for negative values.
author maedhros <maedhros@openttd.org>
date Mon, 22 Jan 2007 20:38:19 +0000
parents 01ed755fe72b
children 15dbff62d766
files src/graph_gui.cpp
diffstat 1 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -67,7 +67,7 @@
 {
 	uint x,y,old_x,old_y;
 	int right;
-	int64 mx;
+	int64 highest_value;
 	int adj_height;
 	uint64 y_scaling;
 	int64 value;
@@ -121,9 +121,10 @@
 	assert(gw->num_on_x_axis > 0);
 	assert(gw->num_dataset > 0);
 
-	mx = 0;
-		/* bit selection for the showing of various players, base max element
-		 * on to-be shown player-information. This way the graph can scale */
+	highest_value = 0;
+
+	/* bit selection for the showing of various players, base max element
+	 * on to-be shown player-information. This way the graph can scale */
 	sel = gw->sel;
 	for (int i = 0; i < gw->num_dataset; i++) {
 		if (!(sel&1)) {
@@ -131,7 +132,10 @@
 				int64 datapoint = gw->cost[i][j];
 
 				if (datapoint != INVALID_VALUE) {
-					mx = max(mx, datapoint);
+					/* For now, if the graph has negative values the scaling is
+					 * symmetrical about the x axis, so take the absolute value
+					 * of each data point. */
+					highest_value = max(highest_value, myabs(datapoint));
 				}
 			}
 		}
@@ -142,10 +146,10 @@
 	y_scaling = INVALID_VALUE;
 	value = adj_height * 2;
 
-	if (mx > value) {
-		mx = (mx + 7) & ~7;
-		y_scaling = (((uint64) (value>>1) << 32) / mx);
-		value = mx;
+	if (highest_value > value) {
+		highest_value = ALIGN(highest_value, 8);
+		y_scaling = (((uint64) (value>>1) << 32) / highest_value);
+		value = highest_value;
 	}
 
 	/* draw text strings on the y axis */