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
|
* forward declarations
|
||||||
* ------------------------------------------------------------------------------------------------
|
* ------------------------------------------------------------------------------------------------
|
||||||
@@ -127,13 +132,14 @@ void _drawCurves(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc)
|
|||||||
const AQDG_GRAPH_SUBGRAPH *subGraph;
|
const AQDG_GRAPH_SUBGRAPH *subGraph;
|
||||||
int penIdx=AQDG_GRAPHWIDGET_PEN_IDX_CURVE0;
|
int penIdx=AQDG_GRAPHWIDGET_PEN_IDX_CURVE0;
|
||||||
|
|
||||||
DBG_ERROR(NULL, "Draw curves");
|
|
||||||
xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_WIDGET_VIEWPORT, o);
|
xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_WIDGET_VIEWPORT, o);
|
||||||
graph=AQDG_GraphWidget_GetGraph(xo->graphObject);
|
graph=AQDG_GraphWidget_GetGraph(xo->graphObject);
|
||||||
|
|
||||||
subGraphList=AQDG_Graph_GetSubGraphList(graph);
|
subGraphList=AQDG_Graph_GetSubGraphList(graph);
|
||||||
subGraph=subGraphList?AQDG_Graph_SubGraph_List_First(subGraphList):NULL;
|
subGraph=subGraphList?AQDG_Graph_SubGraph_List_First(subGraphList):NULL;
|
||||||
while (subGraph) {
|
while (subGraph) {
|
||||||
|
const AQDG_GRAPH_AXIS *xAxis;
|
||||||
|
const AQDG_GRAPH_AXIS *yAxis;
|
||||||
double minValueX;
|
double minValueX;
|
||||||
double maxValueX;
|
double maxValueX;
|
||||||
double minValueY;
|
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_LIST *curveList;
|
||||||
const AQDG_GRAPH_CURVE *curve;
|
const AQDG_GRAPH_CURVE *curve;
|
||||||
|
|
||||||
minValueX=AQDG_Graph_SubGraph_GetMinValueX(subGraph);
|
xAxis=AQDG_Graph_GetAxisByIndex(graph, AQDG_Graph_SubGraph_GetIndexAxisX(subGraph));
|
||||||
maxValueX=AQDG_Graph_SubGraph_GetMaxValueX(subGraph);
|
yAxis=AQDG_Graph_GetAxisByIndex(graph, AQDG_Graph_SubGraph_GetIndexAxisY(subGraph));
|
||||||
minValueY=AQDG_Graph_SubGraph_GetMinValueY(subGraph);
|
minValueX=AQDG_Graph_Axis_GetMinValue(xAxis);
|
||||||
maxValueY=AQDG_Graph_SubGraph_GetMaxValueY(subGraph);
|
maxValueX=AQDG_Graph_Axis_GetMaxValue(xAxis);
|
||||||
|
minValueY=AQDG_Graph_Axis_GetMinValue(yAxis);
|
||||||
|
maxValueY=AQDG_Graph_Axis_GetMaxValue(yAxis);
|
||||||
|
|
||||||
curveList=AQDG_Graph_SubGraph_GetCurves(subGraph);
|
curveList=AQDG_Graph_SubGraph_GetCurves(subGraph);
|
||||||
curve=curveList?AQDG_Graph_Curve_List_First(curveList):NULL;
|
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,
|
double minValueX, double maxValueX, double minValueY, double maxValueY,
|
||||||
int pen)
|
int pen)
|
||||||
{
|
{
|
||||||
DBG_ERROR(NULL, "Draw curve");
|
|
||||||
switch(AQDG_Graph_Curve_GetGraphType(curve)) {
|
switch(AQDG_Graph_Curve_GetGraphType(curve)) {
|
||||||
case AQDG_GRAPH_TYPE_LINE:
|
case AQDG_GRAPH_TYPE_LINE:
|
||||||
_drawCurveLines(o, dc, curve, minValueX, maxValueX, minValueY, maxValueY, pen);
|
_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);
|
maxValue=AQDG_Graph_Axis_GetMaxValue(axis);
|
||||||
pen1=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID1);
|
pen1=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID1);
|
||||||
pen2=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID2);
|
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);
|
tick=AQDG_Graph_Tick_List_First(tickList);
|
||||||
while(tick) {
|
while(tick) {
|
||||||
@@ -361,7 +368,7 @@ void _drawHorizontalGrid(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc)
|
|||||||
maxValue=AQDG_Graph_Axis_GetMaxValue(axis);
|
maxValue=AQDG_Graph_Axis_GetMaxValue(axis);
|
||||||
pen1=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID1);
|
pen1=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID1);
|
||||||
pen2=AQDG_GraphWidget_GetPen(xo->graphObject, AQDG_GRAPHWIDGET_PEN_IDX_GRID2);
|
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);
|
tick=AQDG_Graph_Tick_List_First(tickList);
|
||||||
while(tick) {
|
while(tick) {
|
||||||
@@ -392,9 +399,7 @@ int _screenDistBetweenLevelTicksX(const AQDG_GRAPH_TICK_LIST *tickList, int lvl,
|
|||||||
int pts;
|
int pts;
|
||||||
|
|
||||||
v=AQDG_Graph_Tick_List_DistanceBetweenTicks(tickList, lvl);
|
v=AQDG_Graph_Tick_List_DistanceBetweenTicks(tickList, lvl);
|
||||||
DBG_ERROR(NULL, "Value diff: %.2f", v);
|
|
||||||
pts=(v*(contentSize/(maxValue-minValue)));
|
pts=(v*(contentSize/(maxValue-minValue)));
|
||||||
DBG_ERROR(NULL, "Point diff: %d", pts);
|
|
||||||
return pts;
|
return pts;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -407,9 +412,7 @@ int _screenDistBetweenLevelTicksY(const AQDG_GRAPH_TICK_LIST *tickList, int lvl,
|
|||||||
int pts;
|
int pts;
|
||||||
|
|
||||||
v=AQDG_Graph_Tick_List_DistanceBetweenTicks(tickList, lvl);
|
v=AQDG_Graph_Tick_List_DistanceBetweenTicks(tickList, lvl);
|
||||||
DBG_ERROR(NULL, "Value diff: %.2f", v);
|
|
||||||
pts=(v*(contentSize/(maxValue-minValue)));
|
pts=(v*(contentSize/(maxValue-minValue)));
|
||||||
DBG_ERROR(NULL, "Point diff: %d", pts);
|
|
||||||
return pts;
|
return pts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user