ibasic rectangle drawing functions - 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 6e13cd89684d0129aa13995c3f0e2ba4f0a7aae1 /scm/ploot/commit/6e13cd89684d0129aa13995c3f0e2ba4f0a7aae1.gph bitreich.org 70 1parent 1fc2d491d5051732caac4426d73cb22c2d870f6d /scm/ploot/commit/1fc2d491d5051732caac4426d73cb22c2d870f6d.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Mon, 30 Apr 2018 11:33:21 +0200 Err bitreich.org 70 i Err bitreich.org 70 ibasic rectangle drawing functions Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i D deffont.h | 27 --------------------------- Err bitreich.org 70 i M font-14x7.h | 16 +++++++--------- Err bitreich.org 70 i M font.c | 113 +++++++++++++++++++++---------- Err bitreich.org 70 i A font.h | 29 +++++++++++++++++++++++++++++ Err bitreich.org 70 i D txt | 0 Err bitreich.org 70 i Err bitreich.org 70 i5 files changed, 113 insertions(+), 72 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/deffont.h b/deffont.h /scm/ploot/file/deffont.h.gph bitreich.org 70 i@@ -1,27 +0,0 @@ Err bitreich.org 70 i-#include Err bitreich.org 70 i- Err bitreich.org 70 i-#define _ 0 Err bitreich.org 70 i-#define X 1 Err bitreich.org 70 i-#define B(x) char glyph_ ## x[WIDTH * HEIGHT] Err bitreich.org 70 i-#define b(x) glyph_ ## x Err bitreich.org 70 i-#define NOPR NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL Err bitreich.org 70 i-#define NOPRINT NOPR, NOPR, NOPR, NOPR Err bitreich.org 70 i- Err bitreich.org 70 i-#define FONT(x) char *font_ ## x[] = { \ Err bitreich.org 70 i- NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i- NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i- NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i- NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i- NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i- NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i- b(space), b(bang), b(double), b(hash), \ Err bitreich.org 70 i- b(dollar), b(percent), b(ampersand), b(single), \ Err bitreich.org 70 i- b(l_round), b(r_round), b(asterisk), b(plus), \ Err bitreich.org 70 i- b(coma), b(minus), b(dot), b(slash), \ Err bitreich.org 70 i- b(0), b(1), b(2), b(3), \ Err bitreich.org 70 i- b(4), b(5), b(6), b(7), \ Err bitreich.org 70 i- b(8), b(9), b(column), b(semicolumn), \ Err bitreich.org 70 i- b(l_angle), b(equal), b(r_angle), b(question), \ Err bitreich.org 70 i- b(column), b(semicolumn), b(l_angle), b(equal), \ Err bitreich.org 70 i- b(r_angle), b(question) \ Err bitreich.org 70 i-} Err bitreich.org 70 1diff --git a/font-14x7.h b/font-14x7.h /scm/ploot/file/font-14x7.h.gph bitreich.org 70 i@@ -1,7 +1,5 @@ Err bitreich.org 70 i-#include "deffont.h" Err bitreich.org 70 i- Err bitreich.org 70 i-#define WIDTH 14 Err bitreich.org 70 i-#define HEIGHT 7 Err bitreich.org 70 i+#define FONT_WIDTH 14 Err bitreich.org 70 i+#define FONT_HEIGHT 6 Err bitreich.org 70 i Err bitreich.org 70 i B(space) = { Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i@@ -73,6 +71,7 @@ _ ,_,_,_,_,_ Err bitreich.org 70 i Err bitreich.org 70 i B(dollar) = { Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i+_ ,_,_,_,_,_, Err bitreich.org 70 i _ ,_,_,X,_,_, Err bitreich.org 70 i _ ,_,X,X,X,_, Err bitreich.org 70 i _ ,X,_,X,_,X, Err bitreich.org 70 i@@ -85,21 +84,20 @@ _ ,X,_,X,_,X, Err bitreich.org 70 i _ ,_,X,X,X,_, Err bitreich.org 70 i _ ,_,_,X,_,_, Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i-_ ,_,_,_,_,_ Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i B(percent) = { Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i-_ ,_,_,_,_,X, Err bitreich.org 70 i+_ ,_,_,_,_,_, Err bitreich.org 70 i _ ,X,X,_,_,X, Err bitreich.org 70 i _ ,X,X,_,X,_, Err bitreich.org 70 i _ ,_,_,_,X,_, Err bitreich.org 70 i _ ,_,_,X,_,_, Err bitreich.org 70 i+_ ,_,_,X,_,_, Err bitreich.org 70 i _ ,_,X,_,_,_, Err bitreich.org 70 i _ ,_,X,_,X,X, Err bitreich.org 70 i _ ,X,_,_,X,X, Err bitreich.org 70 i-_ ,X,_,_,_,_, Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i _ ,_,_,_,_,_ Err bitreich.org 70 i@@ -381,7 +379,7 @@ B(6) = { Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i _ ,_,X,X,X,_, Err bitreich.org 70 i-_ ,X,_,_,_,_, Err bitreich.org 70 i+_ ,X,_,_,_,X, Err bitreich.org 70 i _ ,X,_,_,_,_, Err bitreich.org 70 i _ ,X,_,_,_,_, Err bitreich.org 70 i _ ,X,X,X,X,_, Err bitreich.org 70 i@@ -438,7 +436,7 @@ _ ,X,_,_,_,X, Err bitreich.org 70 i _ ,_,X,X,X,X, Err bitreich.org 70 i _ ,_,_,_,_,X, Err bitreich.org 70 i _ ,_,_,_,_,X, Err bitreich.org 70 i-_ ,_,_,_,_,X, Err bitreich.org 70 i+_ ,X,_,_,_,X, Err bitreich.org 70 i _ ,_,X,X,X,_, Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 i _ ,_,_,_,_,_, Err bitreich.org 70 1diff --git a/font.c b/font.c /scm/ploot/file/font.c.gph bitreich.org 70 i@@ -9,63 +9,104 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i-#include "arg.h" Err bitreich.org 70 i+#include "font.h" Err bitreich.org 70 i+#include "font-14x7.h" Err bitreich.org 70 i+ Err bitreich.org 70 i+#define WIDTH 100 Err bitreich.org 70 i+#define HEIGHT 100 Err bitreich.org 70 i+ Err bitreich.org 70 i+#define MIN(x, y) ((x) < (y) ? (x) : (y)) Err bitreich.org 70 i+#define MAX(x, y) ((x) > (y) ? (x) : (y)) Err bitreich.org 70 i Err bitreich.org 70 i typedef uint16_t Color[4]; Err bitreich.org 70 i Err bitreich.org 70 i-enum { R, G, B, A }; Err bitreich.org 70 i+typedef struct { Err bitreich.org 70 i+ Color *b; /* buffer */ Err bitreich.org 70 i+ int w; /* width */ Err bitreich.org 70 i+ int h; /* height */ Err bitreich.org 70 i+} Canvas; Err bitreich.org 70 i Err bitreich.org 70 i-Color *canvas; Err bitreich.org 70 i+Color buffer[WIDTH * HEIGHT]; Err bitreich.org 70 i Err bitreich.org 70 i-char *argv0; Err bitreich.org 70 i-int wflag = 0; Err bitreich.org 70 i-int hflag = 0; Err bitreich.org 70 i+void Err bitreich.org 70 i+ffdraw_pixel(Canvas *can, Color c, Err bitreich.org 70 i+ int x, int y) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ memcpy(can->b + x + (can->h - 1 - y) * can->w, c, sizeof(*can->b)); Err bitreich.org 70 i+} Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i-usage() Err bitreich.org 70 i+ffdraw_rectangle(Canvas *can, Color c, Err bitreich.org 70 i+ int x1, int y1, Err bitreich.org 70 i+ int x2, int y2) Err bitreich.org 70 i { Err bitreich.org 70 i- fputs("ploot -w width -h height image.ff\n", stderr); Err bitreich.org 70 i- exit(1); Err bitreich.org 70 i+ int x, y, xmin, ymin, xmax, ymax; Err bitreich.org 70 i+ Err bitreich.org 70 i+ xmin = MIN(x1, x2); xmax = MAX(x1, x2); Err bitreich.org 70 i+ ymin = MIN(y1, y2); ymax = MAX(y1, y2); Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (x = xmin; x <= xmax; x++) Err bitreich.org 70 i+ for (y = ymin; y <= ymax; y++) Err bitreich.org 70 i+ ffdraw_pixel(can, c, x, y); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+ffdraw_line(Canvas *can, Color c, Err bitreich.org 70 i+ int x1, int y1, Err bitreich.org 70 i+ int x2, int y2) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ int x, y; Err bitreich.org 70 i+ Err bitreich.org 70 i+ (void)c; Err bitreich.org 70 i+ (void)can; Err bitreich.org 70 i+ Err bitreich.org 70 i+ x = x1; Err bitreich.org 70 i+ y = y1; Err bitreich.org 70 i+ while (x < x2 && y < y2) { Err bitreich.org 70 i+ x++; y++; Err bitreich.org 70 i+ } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i-ffdraw(Color *canvas, int w, int h) Err bitreich.org 70 i+ffdraw_fill(Canvas *can, Color c) Err bitreich.org 70 i { Err bitreich.org 70 i- Color col = { 0xffff, 0xffff, 0x0000, 0xffff }; Err bitreich.org 70 i- size_t n; Err bitreich.org 70 i+ ffdraw_rectangle(can, c, 0, 0, can->w - 1, can->h - 1); Err bitreich.org 70 i+} Err bitreich.org 70 i Err bitreich.org 70 i- for (n = w * h; n > 0; n--) Err bitreich.org 70 i- memcpy(canvas + n - 1, col, sizeof(col)); Err bitreich.org 70 i+void Err bitreich.org 70 i+ffdraw(Canvas *can) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ Color c1 = { 0x2222, 0x2222, 0x2222, 0xffff }; Err bitreich.org 70 i+ Color c2 = { 0x3333, 0xffff, 0x8888, 0xffff }; Err bitreich.org 70 i+ Err bitreich.org 70 i+ ffdraw_fill(can, c1); Err bitreich.org 70 i+ ffdraw_rectangle(can, c2, Err bitreich.org 70 i+ 0, 20, Err bitreich.org 70 i+ can->w - 10, 4); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+usage(void) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ fprintf(stderr, "ploot image.ff\n"); Err bitreich.org 70 i+ exit(1); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i-main(int argc, char **argv) Err bitreich.org 70 i+main(void) Err bitreich.org 70 i { Err bitreich.org 70 i uint32_t w, h; Err bitreich.org 70 i+ Canvas can; Err bitreich.org 70 i Err bitreich.org 70 i- ARGBEGIN { Err bitreich.org 70 i- case 'w': Err bitreich.org 70 i- wflag = atoi(EARGF(usage())); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'h': Err bitreich.org 70 i- hflag = atoi(EARGF(usage())); Err bitreich.org 70 i- break; Err bitreich.org 70 i- } ARGEND; Err bitreich.org 70 i- Err bitreich.org 70 i- if (wflag == 0 || hflag == 0) Err bitreich.org 70 i- usage(); Err bitreich.org 70 i- Err bitreich.org 70 i- if ((canvas = calloc(wflag * hflag, sizeof(*canvas))) == NULL) { Err bitreich.org 70 i- perror("allocating memory for the canvas"); Err bitreich.org 70 i- return 1; Err bitreich.org 70 i- } Err bitreich.org 70 i- Err bitreich.org 70 i+ can.b = buffer; Err bitreich.org 70 i+ can.w = WIDTH; Err bitreich.org 70 i+ can.h = HEIGHT; Err bitreich.org 70 i+ w = htonl(WIDTH); Err bitreich.org 70 i+ h = htonl(HEIGHT); Err bitreich.org 70 i fputs("farbfeld", stdout); Err bitreich.org 70 i- w = htonl(wflag); Err bitreich.org 70 i- h = htonl(hflag); Err bitreich.org 70 i fwrite(&w, sizeof(w), 1, stdout); Err bitreich.org 70 i fwrite(&h, sizeof(h), 1, stdout); Err bitreich.org 70 i- ffdraw(canvas, wflag, hflag); Err bitreich.org 70 i- fwrite(canvas, wflag * hflag, sizeof(*canvas), stdout); Err bitreich.org 70 i+ ffdraw(&can); Err bitreich.org 70 i+ fwrite(can.b, WIDTH * HEIGHT, sizeof(*can.b), stdout); Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/font.h b/font.h /scm/ploot/file/font.h.gph bitreich.org 70 i@@ -0,0 +1,29 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * Macros to make the fonts header file more readable. Err bitreich.org 70 i+ */ Err bitreich.org 70 i+#define _ 0 Err bitreich.org 70 i+#define X 1 Err bitreich.org 70 i+#define B(x) char glyph_ ## x[FONT_WIDTH * FONT_HEIGHT] Err bitreich.org 70 i+#define b(x) glyph_ ## x Err bitreich.org 70 i+#define NOPR NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL Err bitreich.org 70 i+#define NOPRINT NOPR, NOPR, NOPR, NOPR Err bitreich.org 70 i+#define FONT(x) char *font_ ## x[] = { \ Err bitreich.org 70 i+ NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i+ NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i+ NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i+ NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i+ NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i+ NULL, NULL, NULL, NULL, \ Err bitreich.org 70 i+ b(space), b(bang), b(double), b(hash), \ Err bitreich.org 70 i+ b(dollar), b(percent), b(ampersand), b(single), \ Err bitreich.org 70 i+ b(l_round), b(r_round), b(asterisk), b(plus), \ Err bitreich.org 70 i+ b(coma), b(minus), b(dot), b(slash), \ Err bitreich.org 70 i+ b(0), b(1), b(2), b(3), \ Err bitreich.org 70 i+ b(4), b(5), b(6), b(7), \ Err bitreich.org 70 i+ b(8), b(9), b(column), b(semicolumn), \ Err bitreich.org 70 i+ b(l_angle), b(equal), b(r_angle), b(question), \ Err bitreich.org 70 i+ b(column), b(semicolumn), b(l_angle), b(equal), \ Err bitreich.org 70 i+ b(r_angle), b(question) \ Err bitreich.org 70 i+} Err bitreich.org 70 1diff --git a/txt b/txt /scm/ploot/file/txt.gph bitreich.org 70 .