diff --git a/src/lib/aqdiagram/graph/axis.t2d b/src/lib/aqdiagram/graph/axis.t2d index 8d86f31..3af1fd6 100644 --- a/src/lib/aqdiagram/graph/axis.t2d +++ b/src/lib/aqdiagram/graph/axis.t2d @@ -476,6 +476,64 @@ + + + $(api) void $(struct_prefix)_GenYearTicks($(struct_type) *st, int lvl); + + + + + + void $(struct_prefix)_GenYearTicks($(struct_type) *st, int lvl) \n + { \n + double minValue; \n + double maxValue; \n + GWEN_BUFFER *dbuf; \n + GWEN_DATE *dt; \n + int addSecs; \n + \n + addSecs=365*24*60*60; \n + \n + maxValue=st->maxValue; \n + dt=GWEN_Date_fromLocalTime(maxValue); \n + GWEN_Date_free(dt); \n + \n + minValue=st->minValue; \n + dt=GWEN_Date_fromLocalTime(minValue); \n + if (dt) { \n + GWEN_DATE *dtMonthStart; \n + \n + dtMonthStart=GWEN_Date_GetThisMonthStart(dt); \n + GWEN_Date_free(dt); \n + dt=dtMonthStart; \n + } \n + \n + dbuf=GWEN_Buffer_new(0, 256, 0, 1); \n + while(1) { \n + double v; \n + GWEN_DATE *dtCurrent; \n + \n + dtCurrent=GWEN_Date_GetThisYearStart(dt); \n + v=GWEN_Date_toLocalTime(dtCurrent); \n + if (v>=minValue && v<maxValue) { \n + GWEN_Buffer_AppendArgs(dbuf, "%04d", GWEN_Date_GetYear(dtCurrent)); \n + if (!$(struct_prefix)_HasTickValue(st, v)) \n + $(struct_prefix)_AddNewTick(st, GWEN_Buffer_GetStart(dbuf), v, lvl, 0, (double) addSecs); \n + GWEN_Buffer_Reset(dbuf); \n + } \n + GWEN_Date_free(dt); \n + dt=dtCurrent; \n + GWEN_Date_AddDays(dt, 370); \n + if (v>=maxValue) \n + break; \n + } \n + GWEN_Buffer_free(dbuf); \n + GWEN_Date_free(dt); \n + } \n + + + + $(api) void $(struct_prefix)_GenTimeTicks($(struct_type) *st); @@ -488,6 +546,12 @@ { \n int nextLevel=0; \n \n + $(struct_prefix)_GenYearTicks(st, nextLevel); \n + if ($(struct_prefix)_HasAtLeastNLevelTicks(st, nextLevel, nextLevel?2:4)) \n + nextLevel++; \n + else \n + $(struct_prefix)_RemoveLevelTicks(st, nextLevel); \n + \n $(struct_prefix)_GenMonthTicks(st, nextLevel); \n if ($(struct_prefix)_HasAtLeastNLevelTicks(st, nextLevel, nextLevel?2:4)) \n nextLevel++; \n