diff --git a/src/lib/aqdiagram/graph/axis.t2d b/src/lib/aqdiagram/graph/axis.t2d index b089cad..36e9507 100644 --- a/src/lib/aqdiagram/graph/axis.t2d +++ b/src/lib/aqdiagram/graph/axis.t2d @@ -67,6 +67,7 @@ double vRun; \n double startValue; \n GWEN_BUFFER *dbuf; \n + int nextLevel=0; \n \n absMaxValue=abs(st->minValue); \n v=abs(st->maxValue); \n @@ -77,23 +78,24 @@ absMaxValue=1.0; \n v=pow(10, floor(log10(absMaxValue))); \n \n - startValue=v*10.0; \n + startValue=v; \n if ((st->minValue)<startValue) \n startValue=-startValue; \n \n vRun=startValue; \n - v/=10.0; \n DBG_ERROR(NULL, "vRun=%.2f, v=%.2f, vMin=%.2f, vMax=%.2f", vRun, v, st->minValue, st->maxValue); \n while(vRun<=(st->maxValue)) { \n if (vRun>=(st->minValue)) { \n if (!$(struct_prefix)_HasTickValue(st, vRun)) { \n GWEN_Buffer_AppendArgs(dbuf, "%.*f", st->precision, vRun); \n - $(struct_prefix)_AddNewTick(st, GWEN_Buffer_GetStart(dbuf), vRun, 0, 0); \n + $(struct_prefix)_AddNewTick(st, GWEN_Buffer_GetStart(dbuf), vRun, nextLevel, 0); \n GWEN_Buffer_Reset(dbuf); \n } \n } \n vRun+=v; \n } \n + if ($(struct_prefix)_HasLevelTicks(st, nextLevel)) \n + nextLevel++; \n \n vRun=startValue; \n v/=2.0; \n @@ -102,12 +104,31 @@ if (vRun>=(st->minValue)) { \n if (!$(struct_prefix)_HasTickValue(st, vRun)) { \n GWEN_Buffer_AppendArgs(dbuf, "%.*f", st->precision, vRun); \n - $(struct_prefix)_AddNewTick(st, GWEN_Buffer_GetStart(dbuf), vRun, 1, 0); \n + $(struct_prefix)_AddNewTick(st, GWEN_Buffer_GetStart(dbuf), vRun, nextLevel, 0); \n GWEN_Buffer_Reset(dbuf); \n } \n } \n vRun+=v; \n } \n + if ($(struct_prefix)_HasLevelTicks(st, nextLevel)) \n + nextLevel++; \n + \n + vRun=startValue; \n + v/=5.0; \n + DBG_ERROR(NULL, "vRun=%.2f, v=%.2f, vMin=%.2f, vMax=%.2f", vRun, v, st->minValue, st->maxValue); \n + while(vRun<=(st->maxValue)) { \n + if (vRun>=(st->minValue)) { \n + if (!$(struct_prefix)_HasTickValue(st, vRun)) { \n + GWEN_Buffer_AppendArgs(dbuf, "%.*f", st->precision, vRun); \n + $(struct_prefix)_AddNewTick(st, GWEN_Buffer_GetStart(dbuf), vRun, nextLevel, 0); \n + GWEN_Buffer_Reset(dbuf); \n + } \n + } \n + vRun+=v; \n + } \n + if ($(struct_prefix)_HasLevelTicks(st, nextLevel)) \n + nextLevel++; \n + \n GWEN_Buffer_free(dbuf); \n } \n @@ -138,6 +159,30 @@ + + + $(api) int $(struct_prefix)_HasLevelTicks(const $(struct_type) *st, int level); + + + + + + int $(struct_prefix)_HasLevelTicks(const $(struct_type) *st, int level) \n + { \n + const AQDG_GRAPH_TICK *tick; \n + \n + tick=AQDG_Graph_Tick_List_First(st->tickList); \n + while(tick) { \n + if (AQDG_Graph_Tick_GetLevel(tick)==level) \n + return 1; \n + tick=AQDG_Graph_Tick_List_Next(tick); \n + } \n + return 0; \n + } \n + + + + $(api) void $(struct_prefix)_GenHourTicks($(struct_type) *st, int lvl, int hours);