Mercurial > hg > openttd
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 */