use correct min/max values from axis instead of subgraph.
subgraph contains the max/min values of the datasets while axis stores the visible max/min values (i.e. spanned by labeled tick axis).
This commit is contained in:
@@ -18,6 +18,11 @@
|
||||
|
||||
|
||||
|
||||
#define AQDG_WIDGET_VIEWPORT_TICK_MIN_X 10
|
||||
#define AQDG_WIDGET_VIEWPORT_TICK_MIN_Y 20
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* forward declarations
|
||||
* ------------------------------------------------------------------------------------------------
|
||||
@@ -127,13 +132,14 @@ void _drawCurves(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc)
|
||||
const AQDG_GRAPH_SUBGRAPH *subGraph;
|
||||
int penIdx=AQDG_GRAPHWIDGET_PEN_IDX_CURVE0;
|
||||
|
||||
DBG_ERROR(NULL, "Draw curves");
|
||||
xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_WIDGET_VIEWPORT, o);
|
||||
graph=AQDG_GraphWidget_GetGraph(xo->graphObject);
|
||||
|
||||
subGraphList=AQDG_Graph_GetSubGraphList(graph);
|
||||
subGraph=subGraphList?AQDG_Graph_SubGraph_List_First(subGraphList):NULL;
|
||||
while (subGraph) {
|
||||
const AQDG_GRAPH_AXIS *xAxis;
|
||||
const AQDG_GRAPH_AXIS *yAxis;
|
||||
double minValueX;
|
||||
double maxValueX;
|
||||
double minValueY;
|
||||
@@ -141,10 +147,12 @@ void _drawCurves(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc)
|
||||
const AQDG_GRAPH_CURVE_LIST *curveList;
|
||||
const AQDG_GRAPH_CURVE *curve;
|
||||
|
||||
minValueX=AQDG_Graph_SubGraph_GetMinValueX(subGraph);
|
||||
maxValueX=AQDG_Graph_SubGraph_GetMaxValueX(subGraph);
|
||||
minValueY=AQDG_Graph_SubGraph_GetMinValueY(subGraph);
|
||||
maxValueY=AQDG_Graph_SubGraph_GetMaxValueY(subGraph);
|
||||
xAxis=AQDG_Graph_GetAxisByIndex(graph, AQDG_Graph_SubGraph_GetIndexAxisX(subGraph));
|
||||
yAxis=AQDG_Graph_GetAxisByIndex(graph, AQDG_Graph_SubGraph_GetIndexAxisY(subGraph));
|
||||
minValueX=AQDG_Graph_Axis_GetMinValue(xAxis);
|
||||
maxValueX=AQDG_Graph_Axis_GetMaxValue(xAxis);
|
||||
minValueY=AQDG_Graph_Axis_GetMinValue(yAxis);
|
||||
maxValueY=AQDG_Graph_Axis_GetMaxValue(yAxis);
|
||||
|
||||
curveList=AQDG_Graph_SubGraph_GetCurves(subGraph);
|
||||
curve=curveList?AQDG_Graph_Curve_List_First(curveList):NULL;
|
||||
@@ -170,7 +178,6 @@ void _drawCurve(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc, const AQDG_GRAPH_CURVE *c
|
||||
double minValueX, double maxValueX, double minValueY, double maxValueY,
|
||||
int pen)
|
||||
{
|
||||
DBG_ERROR(NULL, "Draw curve");
|
||||
switch(AQDG_Graph_Curve_GetGraphType(curve)) {
|
||||
case AQDG_GRAPH_TYPE_LINE:
|
||||
_drawCurveLines(o, dc, curve, minValueX, maxValueX, minValueY, maxValueY, pen);
|
||||
@@ -302,7 +309,7 @@ void _drawVerticalGrid(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc)
|
||||
maxValue=AQDG_Graph_Axis_GetMaxValue(axis);
|
||||
pen1=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID1);
|
||||
pen2=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID2);
|
||||
showLevel1=(_screenDistBetweenLevelTicksX(tickList, 1, contentSize, minValue, maxValue)>15)?1:0;
|
||||
showLevel1=(_screenDistBetweenLevelTicksX(tickList, 1, contentSize, minValue, maxValue)>AQDG_WIDGET_VIEWPORT_TICK_MIN_X)?1:0;
|
||||
|
||||
tick=AQDG_Graph_Tick_List_First(tickList);
|
||||
while(tick) {
|
||||
@@ -361,7 +368,7 @@ void _drawHorizontalGrid(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc)
|
||||
maxValue=AQDG_Graph_Axis_GetMaxValue(axis);
|
||||
pen1=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID1);
|
||||
pen2=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID2);
|
||||
showLevel1=(_screenDistBetweenLevelTicksY(tickList, 1, contentSize, minValue, maxValue)>15)?1:0;
|
||||
showLevel1=(_screenDistBetweenLevelTicksY(tickList, 1, contentSize, minValue, maxValue)>AQDG_WIDGET_VIEWPORT_TICK_MIN_Y)?1:0;
|
||||
|
||||
tick=AQDG_Graph_Tick_List_First(tickList);
|
||||
while(tick) {
|
||||
@@ -392,9 +399,7 @@ int _screenDistBetweenLevelTicksX(const AQDG_GRAPH_TICK_LIST *tickList, int lvl,
|
||||
int pts;
|
||||
|
||||
v=AQDG_Graph_Tick_List_DistanceBetweenTicks(tickList, lvl);
|
||||
DBG_ERROR(NULL, "Value diff: %.2f", v);
|
||||
pts=(v*(contentSize/(maxValue-minValue)));
|
||||
DBG_ERROR(NULL, "Point diff: %d", pts);
|
||||
return pts;
|
||||
}
|
||||
|
||||
@@ -407,9 +412,7 @@ int _screenDistBetweenLevelTicksY(const AQDG_GRAPH_TICK_LIST *tickList, int lvl,
|
||||
int pts;
|
||||
|
||||
v=AQDG_Graph_Tick_List_DistanceBetweenTicks(tickList, lvl);
|
||||
DBG_ERROR(NULL, "Value diff: %.2f", v);
|
||||
pts=(v*(contentSize/(maxValue-minValue)));
|
||||
DBG_ERROR(NULL, "Point diff: %d", pts);
|
||||
return pts;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user