|
|
@ -45,12 +45,14 @@ typedef struct nc##X##plot { \
|
|
|
|
\
|
|
|
|
\
|
|
|
|
int redraw_plot_##T(nc##X##plot* ncp){ \
|
|
|
|
int redraw_plot_##T(nc##X##plot* ncp){ \
|
|
|
|
ncplane_erase(ncp->plot.ncp); \
|
|
|
|
ncplane_erase(ncp->plot.ncp); \
|
|
|
|
const int scale = ncp->plot.bset->width; \
|
|
|
|
const int scale = ncp->plot.bset->geom == NCBLIT_PIXEL ? \
|
|
|
|
|
|
|
|
ncplane_notcurses_const(ncp->plot.ncp)->tcache.cellpixx : ncp->plot.bset->width; \
|
|
|
|
int dimy, dimx; \
|
|
|
|
int dimy, dimx; \
|
|
|
|
ncplane_dim_yx(ncp->plot.ncp, &dimy, &dimx); \
|
|
|
|
ncplane_dim_yx(ncp->plot.ncp, &dimy, &dimx); \
|
|
|
|
const int scaleddim = dimx * scale; \
|
|
|
|
const int scaleddim = dimx * scale; \
|
|
|
|
/* each transition is worth this much change in value */ \
|
|
|
|
/* each transition is worth this much change in value */ \
|
|
|
|
const size_t states = ncp->plot.bset->height + 1; \
|
|
|
|
const size_t states = (ncp->plot.bset->geom == NCBLIT_PIXEL ? \
|
|
|
|
|
|
|
|
ncplane_notcurses_const(ncp->plot.ncp)->tcache.cellpixy : ncp->plot.bset->height) + 1; \
|
|
|
|
/* FIXME can we not rid ourselves of this meddlesome double? either way, the \
|
|
|
|
/* FIXME can we not rid ourselves of this meddlesome double? either way, the \
|
|
|
|
interval is one row's range (for linear plots), or the base (base^slots== \
|
|
|
|
interval is one row's range (for linear plots), or the base (base^slots== \
|
|
|
|
maxy-miny) of the range (for exponential plots). */ \
|
|
|
|
maxy-miny) of the range (for exponential plots). */ \
|
|
|
@ -138,6 +140,7 @@ int redraw_plot_##T(nc##X##plot* ncp){ \
|
|
|
|
calc_gradient_channels(&channels, ncp->plot.minchannels, ncp->plot.minchannels, \
|
|
|
|
calc_gradient_channels(&channels, ncp->plot.minchannels, ncp->plot.minchannels, \
|
|
|
|
ncp->plot.maxchannels, ncp->plot.maxchannels, y, x, dimy, dimx); \
|
|
|
|
ncp->plot.maxchannels, ncp->plot.maxchannels, y, x, dimy, dimx); \
|
|
|
|
ncplane_set_channels(ncp->plot.ncp, channels); \
|
|
|
|
ncplane_set_channels(ncp->plot.ncp, channels); \
|
|
|
|
|
|
|
|
if(egc){ \
|
|
|
|
size_t egcidx = 0, sumidx = 0; \
|
|
|
|
size_t egcidx = 0, sumidx = 0; \
|
|
|
|
/* if we've got at least one interval's worth on the number of positions \
|
|
|
|
/* if we've got at least one interval's worth on the number of positions \
|
|
|
|
times the number of intervals per position plus the starting offset, \
|
|
|
|
times the number of intervals per position plus the starting offset, \
|
|
|
@ -201,6 +204,7 @@ int redraw_plot_##T(nc##X##plot* ncp){ \
|
|
|
|
if(done){ \
|
|
|
|
if(done){ \
|
|
|
|
break; \
|
|
|
|
break; \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
|
|
|
|
} \
|
|
|
|
if(ncp->plot.exponentiali){ \
|
|
|
|
if(ncp->plot.exponentiali){ \
|
|
|
|
intervalbase = ncp->miny + pow(interval, (y + 1) * states - 1); \
|
|
|
|
intervalbase = ncp->miny + pow(interval, (y + 1) * states - 1); \
|
|
|
|
}else{ \
|
|
|
|
}else{ \
|
|
|
|