further improve handling of ticks for x axis.

This commit is contained in:
Martin Preuss
2025-12-23 17:18:05 +01:00
parent 6cb0cabcb0
commit a2fc8cec5d
2 changed files with 13 additions and 7 deletions

View File

@@ -226,6 +226,7 @@ void _drawVerticalGrid(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc)
int y1; int y1;
int y2; int y2;
int showLevel1; int showLevel1;
int showLevel2;
y1=AQDG_Object_GetAbsoluteY(o)+AQDG_Object_GetBorderTop(o); y1=AQDG_Object_GetAbsoluteY(o)+AQDG_Object_GetBorderTop(o);
y2=AQDG_Object_GetAbsoluteY(o)+AQDG_Object_GetHeight(o)-AQDG_Object_GetBorderBottom(o); y2=AQDG_Object_GetAbsoluteY(o)+AQDG_Object_GetHeight(o)-AQDG_Object_GetBorderBottom(o);
@@ -236,19 +237,21 @@ void _drawVerticalGrid(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc)
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)>AQDG_WIDGET_VIEWPORT_TICK_MIN_X)?1:0; showLevel1=(_screenDistBetweenLevelTicksX(tickList, 1, contentSize, minValue, maxValue)>AQDG_WIDGET_VIEWPORT_TICK_MIN_X)?1:0;
showLevel2=(_screenDistBetweenLevelTicksY(tickList, 2, 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) {
double value; double value;
int xpos; int xpos;
int tickLevel;
value=AQDG_Graph_Tick_GetValue(tick); value=AQDG_Graph_Tick_GetValue(tick);
xpos=_calcHorizontalPos(value, contentSize, minValue, maxValue); xpos=_calcHorizontalPos(value, contentSize, minValue, maxValue);
xpos+=AQDG_Object_GetBorderLeft(o); xpos+=AQDG_Object_GetBorderLeft(o);
if (AQDG_Graph_Tick_GetLevel(tick)==0) tickLevel=AQDG_Graph_Tick_GetLevel(tick);
if (tickLevel==0)
AQDG_Draw_Context_DrawLine(dc, pen1, absX+xpos, y1, absX+xpos, y2); AQDG_Draw_Context_DrawLine(dc, pen1, absX+xpos, y1, absX+xpos, y2);
else { else if ((tickLevel==1 && showLevel1) || ((tickLevel==2 && showLevel2))) {
if (showLevel1)
AQDG_Draw_Context_DrawLine(dc, pen2, absX+xpos, y1, absX+xpos, y2); AQDG_Draw_Context_DrawLine(dc, pen2, absX+xpos, y1, absX+xpos, y2);
} }
tick=AQDG_Graph_Tick_List_Next(tick); tick=AQDG_Graph_Tick_List_Next(tick);

View File

@@ -133,6 +133,7 @@ void _drawTicks(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc, int absY)
int absX; int absX;
int pen; int pen;
int showLevel1; int showLevel1;
int showLevel2;
contentSize=AQDG_Object_GetWidth(o)-AQDG_Object_GetBorderLeft(o)-AQDG_Object_GetBorderRight(o); contentSize=AQDG_Object_GetWidth(o)-AQDG_Object_GetBorderLeft(o)-AQDG_Object_GetBorderRight(o);
scaleSize=AQDG_AxisWidget_GetScaleSize(o); scaleSize=AQDG_AxisWidget_GetScaleSize(o);
@@ -141,19 +142,21 @@ void _drawTicks(AQDG_OBJECT *o, AQDG_DRAW_CONTEXT *dc, int absY)
maxValue=AQDG_AxisWidget_GetMaxValue(o); maxValue=AQDG_AxisWidget_GetMaxValue(o);
pen=AQDG_DrawableWidget_GetForegroundPenId(o); pen=AQDG_DrawableWidget_GetForegroundPenId(o);
showLevel1=(_screenDistBetweenLevelTicks(tickList, 1, contentSize, minValue, maxValue)>AQDG_WIDGET_XAXIS_TICK_MIN_X)?1:0; showLevel1=(_screenDistBetweenLevelTicks(tickList, 1, contentSize, minValue, maxValue)>AQDG_WIDGET_XAXIS_TICK_MIN_X)?1:0;
showLevel2=(_screenDistBetweenLevelTicks(tickList, 2, contentSize, minValue, maxValue)>AQDG_WIDGET_XAXIS_TICK_MIN_X)?1:0;
tick=AQDG_Graph_Tick_List_First(tickList); tick=AQDG_Graph_Tick_List_First(tickList);
while(tick) { while(tick) {
double value; double value;
int xpos; int xpos;
int tickLevel;
value=AQDG_Graph_Tick_GetValue(tick); value=AQDG_Graph_Tick_GetValue(tick);
xpos=_calcHorizontalPos(value, contentSize, minValue, maxValue); xpos=_calcHorizontalPos(value, contentSize, minValue, maxValue);
xpos+=AQDG_Object_GetBorderLeft(o); xpos+=AQDG_Object_GetBorderLeft(o);
tickLevel=AQDG_Graph_Tick_GetLevel(tick);
if (AQDG_Graph_Tick_GetLevel(tick)==0) if (AQDG_Graph_Tick_GetLevel(tick)==0)
AQDG_Draw_Context_DrawLine(dc, pen, absX+xpos, absY-(scaleSize/2), absX+xpos, absY+(scaleSize/2)); AQDG_Draw_Context_DrawLine(dc, pen, absX+xpos, absY-(scaleSize/2), absX+xpos, absY+(scaleSize/2));
else if (AQDG_Graph_Tick_GetLevel(tick)==1) { else if ((tickLevel==1 && showLevel1) || ((tickLevel==2 && showLevel2))) {
if (showLevel1)
AQDG_Draw_Context_DrawLine(dc, pen, absX+xpos, absY-(scaleSize/4), absX+xpos, absY+(scaleSize/4)); AQDG_Draw_Context_DrawLine(dc, pen, absX+xpos, absY-(scaleSize/4), absX+xpos, absY+(scaleSize/4));
} }
tick=AQDG_Graph_Tick_List_Next(tick); tick=AQDG_Graph_Tick_List_Next(tick);