SMOLNET PORTAL home about changes
ifix the horizontal scale - ploot - simple plotting tools	Err	bitreich.org	70
hgit clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot	URL:git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot	bitreich.org	70
1Log	/scm/ploot/log.gph	bitreich.org	70
1Files	/scm/ploot/files.gph	bitreich.org	70
1Refs	/scm/ploot/refs.gph	bitreich.org	70
1Tags	/scm/ploot/tag	bitreich.org	70
1README	/scm/ploot/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/ploot/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 26a6e01805dd158f9f97be0cc9bf43f3d5b6db37	/scm/ploot/commit/26a6e01805dd158f9f97be0cc9bf43f3d5b6db37.gph	bitreich.org	70
1parent 1d056caf74acaf182318297e2911fa8595fbd45c	/scm/ploot/commit/1d056caf74acaf182318297e2911fa8595fbd45c.gph	bitreich.org	70
hAuthor: Josuah Demangeon <me@josuah.net>	URL:mailto:me@josuah.net	bitreich.org	70
iDate:   Tue,  3 Mar 2020 21:26:54 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
ifix the horizontal scale	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |      18 +++++++++---------	Err	bitreich.org	70
i  M ploot-braille.c                     |      26 +++++++++++++++-----------	Err	bitreich.org	70
i  A ploot-csv.5                         |      77 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  D ploot-csv.7                         |      77 -------------------------------	Err	bitreich.org	70
i  M ploot-farbfeld.c                    |       6 ++++--	Err	bitreich.org	70
i  M ploot-feed.c                        |       2 +-	Err	bitreich.org	70
i  M ploot-text.c                        |       2 +-	Err	bitreich.org	70
i  M src/csv.c                           |       2 +-	Err	bitreich.org	70
i  M src/ffplot.c                        |       2 +-	Err	bitreich.org	70
i  M src/scale.c                         |      84 +++++++------------------------	Err	bitreich.org	70
i  M src/scale.h                         |       8 +++-----	Err	bitreich.org	70
i  D src/tool.c                          |      80 -------------------------------	Err	bitreich.org	70
i  A src/util.c                          |      80 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  R src/tool.h -> src/util.h            |       0 	Err	bitreich.org	70
i	Err	bitreich.org	70
i14 files changed, 211 insertions(+), 253 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/ploot/file/Makefile.gph	bitreich.org	70
i@@ -1,27 +1,27 @@	Err	bitreich.org	70
i include config.mk	Err	bitreich.org	70
i 	Err	bitreich.org	70
i src = src/csv.c src/drawille.c src/ffplot.c src/font.c src/font13.c \	Err	bitreich.org	70
i-        src/font8.c src/log.c src/scale.c src/tool.c	Err	bitreich.org	70
i+        src/font8.c src/log.c src/scale.c src/util.c	Err	bitreich.org	70
i inc = src/csv.h src/drawille.h src/ffplot.h src/font.h src/log.h \	Err	bitreich.org	70
i-        src/scale.h src/tool.h	Err	bitreich.org	70
i+        src/scale.h src/util.h	Err	bitreich.org	70
i bin = ploot-farbfeld ploot-feed ploot-braille ploot-text	Err	bitreich.org	70
i obj = ${src:.c=.o}	Err	bitreich.org	70
i lib = -lm	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-all: $(bin)	Err	bitreich.org	70
i+all: ${bin}	Err	bitreich.org	70
i 	Err	bitreich.org	70
i .c.o:	Err	bitreich.org	70
i         ${CC} -c ${CFLAGS} -o $@ $<	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ${obj} ${bin:=.o}: ${inc} Makefile	Err	bitreich.org	70
i ${bin}: ${obj} ${bin:=.o}	Err	bitreich.org	70
i-        ${CC} $(LFLAGS) -o $@ $@.o ${obj} $(lib)	Err	bitreich.org	70
i+        ${CC} ${LFLAGS} -o $@ $@.o ${obj} ${lib}	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-install: $(bin)	Err	bitreich.org	70
i-        mkdir -p ${PREFIX}/bin $(MANDIR)/man1 $(MANDIR)/man7	Err	bitreich.org	70
i-        cp $(bin) ${PREFIX}/bin	Err	bitreich.org	70
i-        cp ploot-farbfeld.1 ploot-feed.1 $(MANDIR)/man1	Err	bitreich.org	70
i-        cp ploot-csv.7 $(MANDIR)/man7	Err	bitreich.org	70
i+install: ${bin}	Err	bitreich.org	70
i+        mkdir -p ${PREFIX}/bin ${MANDIR}/man1 ${MANDIR}/man5	Err	bitreich.org	70
i+        cp ${bin} ${PREFIX}/bin	Err	bitreich.org	70
i+        cp *.1 ${MANDIR}/man1	Err	bitreich.org	70
i+        cp *.5 ${MANDIR}/man7	Err	bitreich.org	70
i 	Err	bitreich.org	70
i clean:	Err	bitreich.org	70
i         rm -f *.o */*.o ${bin}	Err	bitreich.org	70
1diff --git a/ploot-braille.c b/ploot-braille.c	/scm/ploot/file/ploot-braille.c.gph	bitreich.org	70
i@@ -10,7 +10,7 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include "drawille.h"	Err	bitreich.org	70
i #include "scale.h"	Err	bitreich.org	70
i-#include "tool.h"	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i #include "log.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i char const *arg0 = NULL;	Err	bitreich.org	70
i@@ -104,23 +104,26 @@ braille_render(struct drawille *drw, FILE *fp, double vmin, double vmax)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-plot(struct csv *vl, FILE *fp, size_t ncol, int row, int col)	Err	bitreich.org	70
i+plot(struct csv *vl, FILE *fp, size_t ncol, int rows, int cols)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         double vmin, vmax, vstep;	Err	bitreich.org	70
i         time_t tmin, tmax, tstep;	Err	bitreich.org	70
i         struct drawille *drw;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        col -= 8;	Err	bitreich.org	70
i+        cols -= 8;                /* scale printed at the right */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        scale(vl, ncol, &tmin, &tmax, &tstep, &vmin, &vmax, &vstep);	Err	bitreich.org	70
i-        row -= ncol - 1;        /* room for the labels and the scale */	Err	bitreich.org	70
i-        row /= ncol;                /* plot <ncol> times */	Err	bitreich.org	70
i-        row = MAX(row, 3);        /* readable */	Err	bitreich.org	70
i+        scale_minmax(vl, ncol, &tmin, &tmax, &vmin, &vmax);	Err	bitreich.org	70
i+        tstep = scale_tstep(tmin, tmax, cols / 10);	Err	bitreich.org	70
i+        vstep = scale_vstep(vmin, vmax, rows / 10);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        debug("vstep=%lf vstep=%ld ncol=%zu row=%zu", vstep, tstep, ncol, row);	Err	bitreich.org	70
i+        rows -= ncol - 1;        /* room for the labels and the scale */	Err	bitreich.org	70
i+        rows /= ncol;                /* plot <ncol> times */	Err	bitreich.org	70
i+        rows = MAX(rows, 3);        /* readable */	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        debug("vstep=%lf vstep=%ld ncol=%zu rows=%zu", vstep, tstep, ncol, rows);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         for (; ncol > 0; vl++, ncol--) {	Err	bitreich.org	70
i-                assert(drw = drawille_new(row, col));	Err	bitreich.org	70
i+                assert(drw = drawille_new(rows, cols));	Err	bitreich.org	70
i                 fprintf(fp, " %s\n", vl->label);	Err	bitreich.org	70
i                 if (braille_histogram(vl, drw, tmin, tmax, vmin, vmax) == -1)	Err	bitreich.org	70
i                         die(1, "allocating drawille canvas");	Err	bitreich.org	70
i@@ -128,7 +131,7 @@ plot(struct csv *vl, FILE *fp, size_t ncol, int row, int col)	Err	bitreich.org	70
i                         die(1, "rendering braille canvas");	Err	bitreich.org	70
i                 free(drw);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        if (braille_axis_x(fp, tmin, tmax, tstep, col) == -1)	Err	bitreich.org	70
i+        if (braille_axis_x(fp, tmin, tmax, tstep, cols) == -1)	Err	bitreich.org	70
i                 die(1, "printing x axis");;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i }	Err	bitreich.org	70
i@@ -136,7 +139,7 @@ plot(struct csv *vl, FILE *fp, size_t ncol, int row, int col)	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i usage(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        fprintf(stderr, "usage: %s\n", arg0);	Err	bitreich.org	70
i+        fprintf(stderr, "usage: %s [-r rows] [-c cols]\n", arg0);	Err	bitreich.org	70
i         exit(1);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -148,6 +151,7 @@ main(int argc, char **argv)	Err	bitreich.org	70
i         int c, rows, cols;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         rows = 20, cols = 80;	Err	bitreich.org	70
i+        arg0 = *argv;	Err	bitreich.org	70
i         optind = 0;	Err	bitreich.org	70
i         while ((c = getopt(argc, argv, "r:c:")) > -1) {	Err	bitreich.org	70
i                 switch (c) {	Err	bitreich.org	70
1diff --git a/ploot-csv.5 b/ploot-csv.5	/scm/ploot/file/ploot-csv.5.gph	bitreich.org	70
i@@ -0,0 +1,77 @@	Err	bitreich.org	70
i+.Dd $Mdocdate: February 01 2020$	Err	bitreich.org	70
i+.Dt PLOOT-CSV 5	Err	bitreich.org	70
i+.Os	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh NAME	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Nm ploot-csv	Err	bitreich.org	70
i+.Nd input format used by the ploot set of programs	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh SYNOPSIS	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Bd -literal	Err	bitreich.org	70
i+epoch,column-name-1,column-name-2	Err	bitreich.org	70
i+timestamp,value1,value2	Err	bitreich.org	70
i+timestamp,value1,value2	Err	bitreich.org	70
i+…	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh DESCRIPTION	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+This is the simple comma-separated format used by the ploot-* programs.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh INPUT FORMAT	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+has a first header line, then zero or more data lines, both	Err	bitreich.org	70
i+comma-separated list of values.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Ss Header line	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+The input must contain a first header line with the label of each column in order.	Err	bitreich.org	70
i+The first column is always	Err	bitreich.org	70
i+.Dq epoch .	Err	bitreich.org	70
i+Then there are the actual column names.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Bd -literal -offset indent	Err	bitreich.org	70
i+epoch,free_memory,process_count	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Ss Data lines	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+The following lines are the data.	Err	bitreich.org	70
i+The first column is always an unix timestamp as in	Err	bitreich.org	70
i+.Vt time_t .	Err	bitreich.org	70
i+The remaining columns are values parsed as floating point numbers by	Err	bitreich.org	70
i+.Xr strtod 3 :	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Bd -literal -offset indent	Err	bitreich.org	70
i+1533752053,16.3,45	Err	bitreich.org	70
i+1533752054,18.7,42	Err	bitreich.org	70
i+1533752055,40.1,39	Err	bitreich.org	70
i+1533752056,40.1,39	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh SEE ALSO	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Xr ploot-feed 1 ,	Err	bitreich.org	70
i+.Xr ploot-farbfeld 1	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh HISTORY	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+was defined at	Err	bitreich.org	70
i+.Lk gopher://bitreich.org/1/scm/ploot/ "Bitreich"	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh AUTHORS	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.An Josuah Demangeon	Err	bitreich.org	70
i+.Aq Mt me@josuah.net	Err	bitreich.org	70
1diff --git a/ploot-csv.7 b/ploot-csv.7	/scm/ploot/file/ploot-csv.7.gph	bitreich.org	70
i@@ -1,77 +0,0 @@	Err	bitreich.org	70
i-.Dd $Mdocdate: February 01 2020$	Err	bitreich.org	70
i-.Dt PLOOT-CSV 7	Err	bitreich.org	70
i-.Os	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Sh NAME	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Nm ploot-csv	Err	bitreich.org	70
i-.Nd input format used by the ploot set of programs	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Sh SYNOPSIS	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Bd -literal	Err	bitreich.org	70
i-epoch,column-name-1,column-name-2	Err	bitreich.org	70
i-timestamp,value1,value2	Err	bitreich.org	70
i-timestamp,value1,value2	Err	bitreich.org	70
i-…	Err	bitreich.org	70
i-.Ed	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Sh DESCRIPTION	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-This is the simple comma-separated format used by the ploot-* programs.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Sh INPUT FORMAT	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Nm	Err	bitreich.org	70
i-has a first header line, then zero or more data lines, both	Err	bitreich.org	70
i-comma-separated list of values.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Ss Header line	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-The input must contain a first header line with the label of each column in order.	Err	bitreich.org	70
i-The first column is always	Err	bitreich.org	70
i-.Dq epoch .	Err	bitreich.org	70
i-Then there are the actual column names.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Bd -literal -offset indent	Err	bitreich.org	70
i-epoch,free_memory,process_count	Err	bitreich.org	70
i-.Ed	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Ss Data lines	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-The following lines are the data.	Err	bitreich.org	70
i-The first column is always an unix timestamp as in	Err	bitreich.org	70
i-.Vt time_t .	Err	bitreich.org	70
i-The remaining columns are values parsed as floating point numbers by	Err	bitreich.org	70
i-.Xr strtod 3 :	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Bd -literal -offset indent	Err	bitreich.org	70
i-1533752053,16.3,45	Err	bitreich.org	70
i-1533752054,18.7,42	Err	bitreich.org	70
i-1533752055,40.1,39	Err	bitreich.org	70
i-1533752056,40.1,39	Err	bitreich.org	70
i-.Ed	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Sh SEE ALSO	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Xr ploot-feed 1 ,	Err	bitreich.org	70
i-.Xr ploot-farbfeld 1	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Sh HISTORY	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Nm	Err	bitreich.org	70
i-was defined at	Err	bitreich.org	70
i-.Lk gopher://bitreich.org/1/scm/ploot/ "Bitreich"	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.Sh AUTHORS	Err	bitreich.org	70
i-.	Err	bitreich.org	70
i-.An Josuah Demangeon	Err	bitreich.org	70
i-.Aq Mt me@josuah.net	Err	bitreich.org	70
1diff --git a/ploot-farbfeld.c b/ploot-farbfeld.c	/scm/ploot/file/ploot-farbfeld.c.gph	bitreich.org	70
i@@ -15,7 +15,7 @@	Err	bitreich.org	70
i #include "ffplot.h"	Err	bitreich.org	70
i #include "font.h"	Err	bitreich.org	70
i #include "log.h"	Err	bitreich.org	70
i-#include "tool.h"	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i #include "scale.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define MARGIN                4	Err	bitreich.org	70
i@@ -211,7 +211,9 @@ plot(struct csv *vl, struct ffcolor **cl, size_t ncol, char *name, char *units)	Err	bitreich.org	70
i         double vmin, vmax, vstep;	Err	bitreich.org	70
i         time_t tmin, tmax, tstep;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        scale(vl, ncol, &tmin, &tmax, &tstep, &vmin, &vmax, &vstep);	Err	bitreich.org	70
i+        scale_minmax(vl, ncol, &tmin, &tmax, &vmin, &vmax);	Err	bitreich.org	70
i+        tstep = scale_tstep(tmin, tmax, 7);	Err	bitreich.org	70
i+        vstep = scale_vstep(vmin, vmax, 7);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         assert(plot.buf = calloc(IMAGE_H * IMAGE_W, sizeof *plot.buf));	Err	bitreich.org	70
i 	Err	bitreich.org	70
1diff --git a/ploot-feed.c b/ploot-feed.c	/scm/ploot/file/ploot-feed.c.gph	bitreich.org	70
i@@ -9,7 +9,7 @@	Err	bitreich.org	70
i #include <time.h>	Err	bitreich.org	70
i #include <unistd.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-#include "tool.h"	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i #include "log.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define WIDTH_MAX 1024	Err	bitreich.org	70
1diff --git a/ploot-text.c b/ploot-text.c	/scm/ploot/file/ploot-text.c.gph	bitreich.org	70
i@@ -5,7 +5,7 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include "drawille.h"	Err	bitreich.org	70
i #include "font.h"	Err	bitreich.org	70
i-#include "tool.h"	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i char *arg0 = NULL;	Err	bitreich.org	70
i 	Err	bitreich.org	70
1diff --git a/src/csv.c b/src/csv.c	/scm/ploot/file/src/csv.c.gph	bitreich.org	70
i@@ -9,7 +9,7 @@	Err	bitreich.org	70
i #include <time.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include "log.h"	Err	bitreich.org	70
i-#include "tool.h"	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i  * Read CSV data onto a set of (struct csv).	Err	bitreich.org	70
1diff --git a/src/ffplot.c b/src/ffplot.c	/scm/ploot/file/src/ffplot.c.gph	bitreich.org	70
i@@ -7,7 +7,7 @@	Err	bitreich.org	70
i #include <stdint.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include "font.h"	Err	bitreich.org	70
i-#include "tool.h"	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i  * Convert (x,y) coordinates to (row,col) for printing into the buffer.	Err	bitreich.org	70
1diff --git a/src/scale.c b/src/scale.c	/scm/ploot/file/src/scale.c.gph	bitreich.org	70
i@@ -3,7 +3,7 @@	Err	bitreich.org	70
i #include <stddef.h>	Err	bitreich.org	70
i #include <time.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-#include "tool.h"	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i #include "log.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i@@ -31,7 +31,7 @@ scale_xpos(time_t t, time_t t1, time_t t2, int szx)	Err	bitreich.org	70
i         return szx * (t - t1) / (t2 - t1);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-static void	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i scale_minmax(struct csv *vl, int ncol,	Err	bitreich.org	70
i         time_t *tmin, time_t *tmax,	Err	bitreich.org	70
i         double *vmin, double *vmax)	Err	bitreich.org	70
i@@ -56,10 +56,10 @@ scale_minmax(struct csv *vl, int ncol,	Err	bitreich.org	70
i                 die(1, "invalid time scale: min=%lld max=%lld", *tmin, *tmax);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-static time_t	Err	bitreich.org	70
i-scale_tstep(time_t min, time_t max, int density)	Err	bitreich.org	70
i+time_t	Err	bitreich.org	70
i+scale_tstep(time_t min, time_t max, int nval)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        time_t dt, *s, scale[] = {	Err	bitreich.org	70
i+        time_t dt, *sc, scale[] = {	Err	bitreich.org	70
i                 1, 5, 2, 10, 20, 30, 60, 60*2, 60*5, 60*10, 60*20, 60*30, 3600, 	Err	bitreich.org	70
i                 3600*2, 3600*5, 3600*10, 3600*18, 3600*24, 3600*24*2, 	Err	bitreich.org	70
i                 3600*24*5, 3600*24*10, 3600*24*20, 3600*24*30, 3600*24*50,	Err	bitreich.org	70
i@@ -67,75 +67,29 @@ scale_tstep(time_t min, time_t max, int density)	Err	bitreich.org	70
i         };	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         dt = max - min;	Err	bitreich.org	70
i-        for (s = scale; s < scale + LEN(scale); s++)	Err	bitreich.org	70
i-                if (dt < *s * density)	Err	bitreich.org	70
i-                        return *s;	Err	bitreich.org	70
i-        return 0;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (sc = scale; *sc > 0; sc++)	Err	bitreich.org	70
i+                if (dt < *sc * nval)	Err	bitreich.org	70
i+                        return *sc;	Err	bitreich.org	70
i+        return dt / nval;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-static double	Err	bitreich.org	70
i-scale_vstep(double min, double max, int density)	Err	bitreich.org	70
i+double	Err	bitreich.org	70
i+scale_vstep(double min, double max, int nval)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        double dv, d, *s, scale[] = { 1, 2, 3, 5 };	Err	bitreich.org	70
i+        double dv, d, *sc, scale[] = { 1, 2, 3, 5 };	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         dv = max - min;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (dv > 1)	Err	bitreich.org	70
i                 for (d = 1; d != 0; d *= 10)	Err	bitreich.org	70
i-                        for (s = scale; s < scale + LEN(scale); s++)	Err	bitreich.org	70
i-                                if (dv < *s * d * density)	Err	bitreich.org	70
i-                                        return *s * d;	Err	bitreich.org	70
i+                        for (sc = scale; sc < scale + LEN(scale); sc++)	Err	bitreich.org	70
i+                                if (dv < *sc * d * nval)	Err	bitreich.org	70
i+                                        return *sc * d;	Err	bitreich.org	70
i         if (dv < 1)	Err	bitreich.org	70
i                 for (d = 1; d != 0; d *= 10)	Err	bitreich.org	70
i-                        for (s = scale + LEN(scale) - 1; s >= scale; s--)	Err	bitreich.org	70
i-                                if (dv > *s / d * density / 2)	Err	bitreich.org	70
i-                                        return *s / d;	Err	bitreich.org	70
i+                        for (sc = scale + LEN(scale) - 1; sc >= scale; sc--)	Err	bitreich.org	70
i+                                if (dv > *sc / d * nval / 2)	Err	bitreich.org	70
i+                                        return *sc / d;	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-/*	Err	bitreich.org	70
i- * Adjust the vertical scale so that everything fits, with nice	Err	bitreich.org	70
i- * scale values.	Err	bitreich.org	70
i- */	Err	bitreich.org	70
i-void	Err	bitreich.org	70
i-scale_vminmax(double *min, double *max, int row)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        double unit, range, mi;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        range = *max - *min;	Err	bitreich.org	70
i-        unit = 1;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        /* Zoom until it fills the canvas. */	Err	bitreich.org	70
i-        for (; (row - 1) * unit > range; unit /= 10)	Err	bitreich.org	70
i-                continue;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        /* Dezoom until it fits the canvas. */	Err	bitreich.org	70
i-        for (; (row - 1) * unit < range; unit *= 10)	Err	bitreich.org	70
i-                continue;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        /* Fine tune. */	Err	bitreich.org	70
i-        if ((row - 1) * unit / 5 > range)	Err	bitreich.org	70
i-                unit /= 5;	Err	bitreich.org	70
i-        if ((row - 1) * unit / 4 > range)	Err	bitreich.org	70
i-                unit /= 4;	Err	bitreich.org	70
i-        if ((row - 1) * unit / 2 > range)	Err	bitreich.org	70
i-                unit /= 2;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        /* Align the minimum (and the zero). */	Err	bitreich.org	70
i-        for (mi = 0; mi > *min - unit; mi -= unit)	Err	bitreich.org	70
i-                continue;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        /* Update the displayed minimal and maximal. */	Err	bitreich.org	70
i-        *min = mi;	Err	bitreich.org	70
i-        *max = mi + unit * row;	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-void	Err	bitreich.org	70
i-scale(struct csv *vl, int ncol,	Err	bitreich.org	70
i-        time_t *tmin, time_t *tmax, time_t *tstep,	Err	bitreich.org	70
i-        double *vmin, double *vmax, double *vstep)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        scale_minmax(vl, ncol, tmin, tmax, vmin, vmax);	Err	bitreich.org	70
i-        *tstep = scale_tstep(*tmin, *tmax, SCALE_X);	Err	bitreich.org	70
i-        *vstep = scale_vstep(*vmin, *vmax, SCALE_Y);	Err	bitreich.org	70
i-}	Err	bitreich.org	70
1diff --git a/src/scale.h b/src/scale.h	/scm/ploot/file/src/scale.h.gph	bitreich.org	70
i@@ -6,13 +6,11 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include "csv.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-#define SCALE_X 7        /* nb of values on x axis */	Err	bitreich.org	70
i-#define SCALE_Y 7        /* nb of values on y axis */	Err	bitreich.org	70
i-	Err	bitreich.org	70
i /**/	Err	bitreich.org	70
i int                scale_ypos                (double, double, double, int);	Err	bitreich.org	70
i int                scale_xpos                (time_t, time_t, time_t, int);	Err	bitreich.org	70
i-void                scale_vminmax                (double *, double *, int);	Err	bitreich.org	70
i-void                scale                        (struct csv *, int, time_t *, time_t *, time_t *, double *, double *, double *);	Err	bitreich.org	70
i+void                scale_minmax                (struct csv *, int, time_t *, time_t *, double *, double *);	Err	bitreich.org	70
i+time_t                scale_tstep                (time_t, time_t, int);	Err	bitreich.org	70
i+double                scale_vstep                (double, double, int);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #endif	Err	bitreich.org	70
1diff --git a/src/tool.c b/src/tool.c	/scm/ploot/file/src/tool.c.gph	bitreich.org	70
i@@ -1,80 +0,0 @@	Err	bitreich.org	70
i-#include "tool.h"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-#include <ctype.h>	Err	bitreich.org	70
i-#include <errno.h>	Err	bitreich.org	70
i-#include <limits.h>	Err	bitreich.org	70
i-#include <stdarg.h>	Err	bitreich.org	70
i-#include <stdio.h>	Err	bitreich.org	70
i-#include <stdlib.h>	Err	bitreich.org	70
i-#include <string.h>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-size_t	Err	bitreich.org	70
i-strlcpy(char *buf, const char *str, size_t sz)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        size_t len, cpy;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        cpy = ((len = strlen(str)) > sz) ? (sz) : (len);	Err	bitreich.org	70
i-        memcpy(buf, str, cpy);	Err	bitreich.org	70
i-        buf[sz - 1] = '\0';	Err	bitreich.org	70
i-        return len;	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-void	Err	bitreich.org	70
i-put3utf(long rune)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        putchar((char)(0xe0 | (0x0f & (rune >> 12))));        /* 1110xxxx */	Err	bitreich.org	70
i-        putchar((char)(0x80 | (0x3f & (rune >> 6))));        /* 10xxxxxx */	Err	bitreich.org	70
i-        putchar((char)(0x80 | (0x3f & (rune))));        /* 10xxxxxx */	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-char *	Err	bitreich.org	70
i-strsep(char **strp, const char *sep)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        char *s, *prev;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        if (*strp == NULL)	Err	bitreich.org	70
i-                return NULL;	Err	bitreich.org	70
i-        for (s = prev = *strp; strchr(sep, *s) == NULL; s++);	Err	bitreich.org	70
i-        if (*s == '\0') {	Err	bitreich.org	70
i-                *strp = NULL;	Err	bitreich.org	70
i-                return prev;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-        *s = '\0';	Err	bitreich.org	70
i-        *strp = s + 1;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        return prev;	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-void	Err	bitreich.org	70
i-strchomp(char *s)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        char *x = s + strlen(s);	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        while (--x >= s && (*x == '\r' || *x == '\n'))	Err	bitreich.org	70
i-                *x = '\0';	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-/*	Err	bitreich.org	70
i- * Set 'str' to a human-readable form of 'num' with always a width of 8 (+1 for	Err	bitreich.org	70
i- * the '\0' terminator).  Buffer overflow is ensured not to happen due to the	Err	bitreich.org	70
i- * max size of a double.  Return the exponent.	Err	bitreich.org	70
i- */	Err	bitreich.org	70
i-int	Err	bitreich.org	70
i-humanize(char *str, double val)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        int exp, precision;	Err	bitreich.org	70
i-        char label[] = { '\0', 'M', 'G', 'T', 'E' };	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        for (exp = 0; ABS(val) > 1000; exp++)	Err	bitreich.org	70
i-                val /= 1000;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        precision = (ABS(val) < 10) ? 2 : (ABS(val) < 100) ? 1 : 0;	Err	bitreich.org	70
i-        precision += (exp == 0);	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        snprintf(str, 9, "%+.*f %c", precision, val, label[exp]);	Err	bitreich.org	70
i-        str[8] = '\0';	Err	bitreich.org	70
i-        if (val >= 0)	Err	bitreich.org	70
i-                str[0] = ' ';	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        return exp * 3;	Err	bitreich.org	70
i-}	Err	bitreich.org	70
1diff --git a/src/util.c b/src/util.c	/scm/ploot/file/src/util.c.gph	bitreich.org	70
i@@ -0,0 +1,80 @@	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#include <ctype.h>	Err	bitreich.org	70
i+#include <errno.h>	Err	bitreich.org	70
i+#include <limits.h>	Err	bitreich.org	70
i+#include <stdarg.h>	Err	bitreich.org	70
i+#include <stdio.h>	Err	bitreich.org	70
i+#include <stdlib.h>	Err	bitreich.org	70
i+#include <string.h>	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+size_t	Err	bitreich.org	70
i+strlcpy(char *buf, const char *str, size_t sz)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        size_t len, cpy;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        cpy = ((len = strlen(str)) > sz) ? (sz) : (len);	Err	bitreich.org	70
i+        memcpy(buf, str, cpy);	Err	bitreich.org	70
i+        buf[sz - 1] = '\0';	Err	bitreich.org	70
i+        return len;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+put3utf(long rune)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        putchar((char)(0xe0 | (0x0f & (rune >> 12))));        /* 1110xxxx */	Err	bitreich.org	70
i+        putchar((char)(0x80 | (0x3f & (rune >> 6))));        /* 10xxxxxx */	Err	bitreich.org	70
i+        putchar((char)(0x80 | (0x3f & (rune))));        /* 10xxxxxx */	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+char *	Err	bitreich.org	70
i+strsep(char **strp, const char *sep)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        char *s, *prev;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (*strp == NULL)	Err	bitreich.org	70
i+                return NULL;	Err	bitreich.org	70
i+        for (s = prev = *strp; strchr(sep, *s) == NULL; s++);	Err	bitreich.org	70
i+        if (*s == '\0') {	Err	bitreich.org	70
i+                *strp = NULL;	Err	bitreich.org	70
i+                return prev;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        *s = '\0';	Err	bitreich.org	70
i+        *strp = s + 1;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return prev;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+strchomp(char *s)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        char *x = s + strlen(s);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        while (--x >= s && (*x == '\r' || *x == '\n'))	Err	bitreich.org	70
i+                *x = '\0';	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Set 'str' to a human-readable form of 'num' with always a width of 8 (+1 for	Err	bitreich.org	70
i+ * the '\0' terminator).  Buffer overflow is ensured not to happen due to the	Err	bitreich.org	70
i+ * max size of a double.  Return the exponent.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+int	Err	bitreich.org	70
i+humanize(char *str, double val)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        int exp, precision;	Err	bitreich.org	70
i+        char label[] = { '\0', 'M', 'G', 'T', 'E' };	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (exp = 0; ABS(val) > 1000; exp++)	Err	bitreich.org	70
i+                val /= 1000;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        precision = (ABS(val) < 10) ? 2 : (ABS(val) < 100) ? 1 : 0;	Err	bitreich.org	70
i+        precision += (exp == 0);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        snprintf(str, 9, "%+.*f %c", precision, val, label[exp]);	Err	bitreich.org	70
i+        str[8] = '\0';	Err	bitreich.org	70
i+        if (val >= 0)	Err	bitreich.org	70
i+                str[0] = ' ';	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return exp * 3;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
1diff --git a/src/tool.h b/src/util.h	/scm/ploot/file/src/util.h.gph	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/ploot/commit/26a6e01805dd158f...
Content-Typetext/plain; charset=utf-8