fixed axis ticks mainly used for y-axis.
This commit is contained in:
@@ -52,6 +52,92 @@
|
||||
</content>
|
||||
</inline>
|
||||
|
||||
<inline loc="code">
|
||||
<content>
|
||||
static int _genLog10TicksUp($(struct_type) *st, \n
|
||||
double vStep, \n
|
||||
double vBegin, double vEnd, \n
|
||||
int level, \n
|
||||
int precision) \n
|
||||
{ \n
|
||||
double vRun; \n
|
||||
GWEN_BUFFER *dbuf; \n
|
||||
\n
|
||||
dbuf=GWEN_Buffer_new(0, 256, 0, 1); \n
|
||||
vRun=vBegin; \n
|
||||
while(vRun<=vEnd) { \n
|
||||
if (vRun>=vBegin) { \n
|
||||
if (!$(struct_prefix)_HasTickValue(st, vRun)) { \n
|
||||
GWEN_Buffer_AppendArgs(dbuf, "%.*f", precision, vRun); \n
|
||||
$(struct_prefix)_AddNewTick(st, GWEN_Buffer_GetStart(dbuf), vRun, level, 0, vStep); \n
|
||||
DBG_INFO(NULL, "Adding tick %d: %s", level, GWEN_Buffer_GetStart(dbuf)); \n
|
||||
GWEN_Buffer_Reset(dbuf); \n
|
||||
} \n
|
||||
} \n
|
||||
vRun+=vStep; \n
|
||||
} \n
|
||||
GWEN_Buffer_free(dbuf); \n
|
||||
return ($(struct_prefix)_HasAtLeastNLevelTicks(st, level, level?1:4))?1:0; \n
|
||||
} \n
|
||||
</content>
|
||||
</inline>
|
||||
|
||||
|
||||
<inline loc="code">
|
||||
<content>
|
||||
static int _genLog10TicksDown($(struct_type) *st, \n
|
||||
double vStep, \n
|
||||
double vBegin, double vEnd, \n
|
||||
int level, \n
|
||||
int precision) \n
|
||||
{ \n
|
||||
double vRun; \n
|
||||
GWEN_BUFFER *dbuf; \n
|
||||
\n
|
||||
dbuf=GWEN_Buffer_new(0, 256, 0, 1); \n
|
||||
vRun=vBegin; \n
|
||||
while(vRun>=vEnd) { \n
|
||||
if (vRun<=vBegin) { \n
|
||||
if (!$(struct_prefix)_HasTickValue(st, vRun)) { \n
|
||||
GWEN_Buffer_AppendArgs(dbuf, "%.*f", precision, vRun); \n
|
||||
$(struct_prefix)_AddNewTick(st, GWEN_Buffer_GetStart(dbuf), vRun, level, 0, vStep); \n
|
||||
DBG_INFO(NULL, "Adding tick %d: %s", level, GWEN_Buffer_GetStart(dbuf)); \n
|
||||
GWEN_Buffer_Reset(dbuf); \n
|
||||
} \n
|
||||
} \n
|
||||
vRun-=vStep; \n
|
||||
} \n
|
||||
GWEN_Buffer_free(dbuf); \n
|
||||
return ($(struct_prefix)_HasAtLeastNLevelTicks(st, level, level?1:4))?1:0; \n
|
||||
} \n
|
||||
</content>
|
||||
</inline>
|
||||
|
||||
|
||||
<inline loc="code">
|
||||
<content>
|
||||
static int _genLog10Ticks($(struct_type) *st, \n
|
||||
double vStart, \n
|
||||
double vStep, \n
|
||||
double vMin, double vMax, \n
|
||||
int level, \n
|
||||
int precision) \n
|
||||
{ \n
|
||||
if (vMin<0.0 && vMax>=0.0) { \n
|
||||
int rv; \n
|
||||
\n
|
||||
rv=_genLog10TicksUp(st, vStep, 0.0, vMax, level, precision); \n
|
||||
rv|=_genLog10TicksDown(st, vStep, 0.0, vMin, level, precision); \n
|
||||
return rv; \n
|
||||
} \n
|
||||
else if (vMin<0.0 && vMax<=0.0) \n
|
||||
return _genLog10TicksDown(st, vStep, vStart, vMin, level, precision); \n
|
||||
else \n
|
||||
return _genLog10TicksUp(st, vStep, vStart, vMax, level, precision); \n
|
||||
} \n
|
||||
</content>
|
||||
</inline>
|
||||
|
||||
|
||||
<inline loc="end" access="public">
|
||||
<content>
|
||||
@@ -65,68 +151,44 @@
|
||||
{ \n
|
||||
double absMaxValue; \n
|
||||
double v; \n
|
||||
double vRun; \n
|
||||
double startValue; \n
|
||||
GWEN_BUFFER *dbuf; \n
|
||||
double vMin; \n
|
||||
double vMax; \n
|
||||
double vStart; \n
|
||||
int nextLevel=0; \n
|
||||
\n
|
||||
absMaxValue=abs(st->minValue); \n
|
||||
v=abs(st->maxValue); \n
|
||||
vMin=st->minValue; \n
|
||||
vMax=st->maxValue; \n
|
||||
absMaxValue=abs(vMin); \n
|
||||
v=abs(vMax); \n
|
||||
absMaxValue=(v>absMaxValue)?v:absMaxValue; \n
|
||||
\n
|
||||
dbuf=GWEN_Buffer_new(0, 64, 0, 1); \n
|
||||
if (absMaxValue==0.0) \n
|
||||
absMaxValue=1.0; \n
|
||||
v=pow(10, floor(log10(absMaxValue))); \n
|
||||
\n
|
||||
startValue=v; \n
|
||||
if ((st->minValue)<startValue) \n
|
||||
startValue=-startValue; \n
|
||||
vStart=v; \n
|
||||
if (vMin<vStart) \n
|
||||
vStart=-vStart; \n
|
||||
\n
|
||||
for(;;) { \n
|
||||
int rv; \n
|
||||
\n
|
||||
while(v>=0.0) { \n
|
||||
DBG_INFO(NULL, "Handling level %d (%.2f)", nextLevel, v); \n
|
||||
if (nextLevel>=3) \n
|
||||
break; \n
|
||||
vRun=startValue; \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, v); \n
|
||||
DBG_INFO(NULL, "Adding tick %d: %s", nextLevel, GWEN_Buffer_GetStart(dbuf)); \n
|
||||
GWEN_Buffer_Reset(dbuf); \n
|
||||
} \n
|
||||
} \n
|
||||
vRun+=v; \n
|
||||
} \n
|
||||
rv=_genLog10Ticks(st, vStart, v, vMin, vMax, nextLevel, st->precision); \n
|
||||
if (rv) \n
|
||||
nextLevel++; \n
|
||||
v/=2.0; \n
|
||||
if ($(struct_prefix)_HasAtLeastNLevelTicks(st, nextLevel, nextLevel?1:4)) \n
|
||||
nextLevel++; \n
|
||||
else \n
|
||||
$(struct_prefix)_RemoveLevelTicks(st, nextLevel); \n
|
||||
\n
|
||||
DBG_INFO(NULL, "Handling level %d (%.2f)", nextLevel, v); \n
|
||||
if (nextLevel>=3) \n
|
||||
break; \n
|
||||
vRun=startValue; \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, v); \n
|
||||
DBG_INFO(NULL, "Adding tick %d: %s", nextLevel, GWEN_Buffer_GetStart(dbuf)); \n
|
||||
GWEN_Buffer_Reset(dbuf); \n
|
||||
} \n
|
||||
} \n
|
||||
vRun+=v; \n
|
||||
} \n
|
||||
v/=5.0; \n
|
||||
if ($(struct_prefix)_HasAtLeastNLevelTicks(st, nextLevel, nextLevel?1:4)) \n
|
||||
DBG_INFO(NULL, "Handling level %d (%.2f)", nextLevel, v); \n
|
||||
rv=_genLog10Ticks(st, vStart, v, vMin, vMax, nextLevel, st->precision); \n
|
||||
if (rv) \n
|
||||
nextLevel++; \n
|
||||
else \n
|
||||
$(struct_prefix)_RemoveLevelTicks(st, nextLevel); \n
|
||||
} /* while */ \n
|
||||
GWEN_Buffer_free(dbuf); \n
|
||||
v/=5.0; \n
|
||||
} /* for */ \n
|
||||
} \n
|
||||
</content>
|
||||
</inline>
|
||||
|
||||
Reference in New Issue
Block a user