diff --git a/src/lib/aqdiagram/graph/timegraph.c b/src/lib/aqdiagram/graph/timegraph.c index d899da7..2cc5b0c 100644 --- a/src/lib/aqdiagram/graph/timegraph.c +++ b/src/lib/aqdiagram/graph/timegraph.c @@ -28,6 +28,7 @@ * ------------------------------------------------------------------------------------------------ */ +static void _addMarginsToAxis(AQDG_GRAPH_AXIS *axis, double percent); static void _setupTicksForTimeAxis(AQDG_GRAPH_AXIS *axis); static void _setupTicksForDataAxis(AQDG_GRAPH_AXIS *axis); static int _readNumFromString(const char **sPtr); @@ -104,39 +105,14 @@ void AQDG_TimeGraph_SetupTicks(AQDG_GRAPH *g, uint32_t flags, double minY, doubl /* create ticks for X axis */ axis=AQDG_Graph_GetAxisByIndex(g, AQDG_GRAPH_AXISPOS_BOTTOM); if (axis) { + _addMarginsToAxis(axis, 2.0); _setupTicksForTimeAxis(axis); } /* create ticks for Y axis */ axis=AQDG_Graph_GetAxisByIndex(g, AQDG_GRAPH_AXISPOS_LEFT); if (axis) { - double vMax; - double vMin; - double vDiff; - - vMin=AQDG_Graph_Axis_GetMinValue(axis); - vMax=AQDG_Graph_Axis_GetMaxValue(axis); - vDiff=vMax-vMin; - DBG_ERROR(NULL, "old vMin=%.2f, vMax=%.2f", vMin, vMax); - - if (vDiff==0.0) { - DBG_ERROR(NULL, "min = max = %.2f", vMax); - vDiff=vMax; - if (vDiff==0.0) - vDiff=1.0; - } - if (vDiff>0.0) { - double vDiffBy10; - - DBG_ERROR(NULL, "Setting vmin and vmax"); - vDiffBy10=vDiff/10.0; - vMin-=vDiffBy10; - vMax+=vDiffBy10; - DBG_ERROR(NULL, "new vMin=%.2f, vMax=%.2f", vMin, vMax); - AQDG_Graph_Axis_SetMinValue(axis, vMin); - AQDG_Graph_Axis_SetMaxValue(axis, vMax); - } - + _addMarginsToAxis(axis, 10.0); if (flags & AQDG_TIMEGRAPH_SETUPTICKS_FLAGS_MINY) AQDG_Graph_Axis_SetMinValue(axis, minY); if (flags & AQDG_TIMEGRAPH_SETUPTICKS_FLAGS_MAXY) @@ -147,6 +123,38 @@ void AQDG_TimeGraph_SetupTicks(AQDG_GRAPH *g, uint32_t flags, double minY, doubl +void _addMarginsToAxis(AQDG_GRAPH_AXIS *axis, double percent) +{ + double vMax; + double vMin; + double vDiff; + + vMin=AQDG_Graph_Axis_GetMinValue(axis); + vMax=AQDG_Graph_Axis_GetMaxValue(axis); + vDiff=vMax-vMin; + DBG_ERROR(NULL, "old vMin=%.2f, vMax=%.2f", vMin, vMax); + + if (vDiff==0.0) { + DBG_ERROR(NULL, "min = max = %.2f", vMax); + vDiff=vMax; + if (vDiff==0.0) + vDiff=1.0; + } + if (vDiff>0.0) { + double vDiffForPercent; + + DBG_ERROR(NULL, "Setting vmin and vmax"); + vDiffForPercent=vDiff*(percent/100.0); + vMin-=vDiffForPercent; + vMax+=vDiffForPercent; + DBG_ERROR(NULL, "new vMin=%.2f, vMax=%.2f", vMin, vMax); + AQDG_Graph_Axis_SetMinValue(axis, vMin); + AQDG_Graph_Axis_SetMaxValue(axis, vMax); + } +} + + + void _setupTicksForTimeAxis(AQDG_GRAPH_AXIS *axis) { #if 0