diff options
author | maedhros <maedhros@openttd.org> | 2007-01-22 20:38:19 +0000 |
---|---|---|
committer | maedhros <maedhros@openttd.org> | 2007-01-22 20:38:19 +0000 |
commit | a8303975011dafc71df2464161b32f79270cf820 (patch) | |
tree | 66278aa17ec0d03085f17ad451ecce365cd0e10b /src | |
parent | eedd58484f76426bf1f6ad89b41fc3055c7f9c73 (diff) | |
download | openttd-a8303975011dafc71df2464161b32f79270cf820.tar.xz |
(svn r8356) -Codechange: [Graphs] Rename mx to highest_value, and fix the scaling for negative values.
Diffstat (limited to 'src')
-rw-r--r-- | src/graph_gui.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp index ccc945a33..f01f2b2f5 100644 --- a/src/graph_gui.cpp +++ b/src/graph_gui.cpp @@ -67,7 +67,7 @@ static void DrawGraph(const GraphDrawer *gw) { 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 @@ static void DrawGraph(const GraphDrawer *gw) 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 @@ static void DrawGraph(const GraphDrawer *gw) 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 @@ static void DrawGraph(const GraphDrawer *gw) 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 */ |