summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormaedhros <maedhros@openttd.org>2007-01-22 20:38:19 +0000
committermaedhros <maedhros@openttd.org>2007-01-22 20:38:19 +0000
commita8303975011dafc71df2464161b32f79270cf820 (patch)
tree66278aa17ec0d03085f17ad451ecce365cd0e10b
parenteedd58484f76426bf1f6ad89b41fc3055c7f9c73 (diff)
downloadopenttd-a8303975011dafc71df2464161b32f79270cf820.tar.xz
(svn r8356) -Codechange: [Graphs] Rename mx to highest_value, and fix the scaling for negative values.
-rw-r--r--src/graph_gui.cpp22
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 */