3 Commits

Author SHA1 Message Date
Martin Preuss
78853bd7be PRepared release 0.1.5. 2026-01-04 15:40:04 +01:00
Martin Preuss
8bafc714c3 another fix for axis ticks. 2026-01-04 15:39:09 +01:00
Martin Preuss
7d139093df fixed axis ticks mainly used for y-axis. 2026-01-04 15:09:10 +01:00
2 changed files with 111 additions and 47 deletions

4
0BUILD
View File

@@ -3,8 +3,8 @@
<gwbuild requiredVersion="5.9.0" >
<project name="aqdiagram" version="0.1.4"
so_current="0" so_age="0" so_revision="4"
<project name="aqdiagram" version="0.1.5"
so_current="0" so_age="0" so_revision="5"
write_config_h="TRUE"
>

View File

@@ -52,6 +52,94 @@
</content>
</inline>
<inline loc="code">
<content>
static int _genLog10TicksUp($(struct_type) *st, \n
double vStart, \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=vStart; \n
while(vRun&lt;=vEnd) { \n
if (vRun&gt;=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 vStart, \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=vStart; \n
while(vRun&gt;=vEnd) { \n
if (vRun&lt;=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&lt;0.0 && vMax&gt;=0.0) { \n
int rv; \n
\n
rv=_genLog10TicksUp(st, 0.0, vStep, 0.0, vMax, level, precision); \n
rv|=_genLog10TicksDown(st, 0.0, vStep, 0.0, vMin, level, precision); \n
return rv; \n
} \n
else if (vMin&lt;0.0 && vMax&lt;=0.0) \n
return _genLog10TicksDown(st, vStart, vStep, vMax, vMin, level, precision); \n
else \n
return _genLog10TicksUp(st, vStart, vStep, vMin, vMax, level, precision); \n
} \n
</content>
</inline>
<inline loc="end" access="public">
<content>
@@ -65,68 +153,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-&gt;minValue); \n
v=abs(st-&gt;maxValue); \n
vMin=st-&gt;minValue; \n
vMax=st-&gt;maxValue; \n
absMaxValue=abs(vMin); \n
v=abs(vMax); \n
absMaxValue=(v&gt;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-&gt;minValue)&lt;startValue) \n
startValue=-startValue; \n
vStart=v; \n
if (vMin&lt;vStart) \n
vStart=-vStart; \n
\n
for(;;) { \n
int rv; \n
\n
while(v&gt;=0.0) { \n
DBG_INFO(NULL, "Handling level %d (%.2f)", nextLevel, v); \n
if (nextLevel&gt;=3) \n
break; \n
vRun=startValue; \n
while(vRun&lt;=(st-&gt;maxValue)) { \n
if (vRun&gt;=(st-&gt;minValue)) { \n
if (!$(struct_prefix)_HasTickValue(st, vRun)) { \n
GWEN_Buffer_AppendArgs(dbuf, "%.*f", st-&gt;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-&gt;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&gt;=3) \n
break; \n
vRun=startValue; \n
while(vRun&lt;=(st-&gt;maxValue)) { \n
if (vRun&gt;=(st-&gt;minValue)) { \n
if (!$(struct_prefix)_HasTickValue(st, vRun)) { \n
GWEN_Buffer_AppendArgs(dbuf, "%.*f", st-&gt;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
DBG_INFO(NULL, "Handling level %d (%.2f)", nextLevel, v); \n
rv=_genLog10Ticks(st, vStart, v, vMin, vMax, nextLevel, st-&gt;precision); \n
if (rv) \n
nextLevel++; \n
v/=5.0; \n
if ($(struct_prefix)_HasAtLeastNLevelTicks(st, nextLevel, nextLevel?1:4)) \n
nextLevel++; \n
else \n
$(struct_prefix)_RemoveLevelTicks(st, nextLevel); \n
} /* while */ \n
GWEN_Buffer_free(dbuf); \n
} /* for */ \n
} \n
</content>
</inline>