iplot lines thanks to dcat - 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 bb9f77683b2a4c23a519b71baaea8bec6eb5be90 /scm/ploot/commit/bb9f77683b2a4c23a519b71baaea8bec6eb5be90.gph bitreich.org 70 1parent 6e13cd89684d0129aa13995c3f0e2ba4f0a7aae1 /scm/ploot/commit/6e13cd89684d0129aa13995c3f0e2ba4f0a7aae1.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Mon, 30 Apr 2018 14:25:31 +0200 Err bitreich.org 70 i Err bitreich.org 70 iplot lines thanks to dcat Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M .gitignore | 1 + Err bitreich.org 70 i M font.c | 55 ++++++++++++++++++++++--------- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 41 insertions(+), 15 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/.gitignore b/.gitignore /scm/ploot/file/.gitignore.gph bitreich.org 70 i@@ -1,2 +1,3 @@ Err bitreich.org 70 i *.o Err bitreich.org 70 i+*.core Err bitreich.org 70 i ploot Err bitreich.org 70 1diff --git a/font.c b/font.c /scm/ploot/file/font.c.gph bitreich.org 70 i@@ -1,5 +1,9 @@ Err bitreich.org 70 i /* Err bitreich.org 70 i * Render bitmapped font as a farbfeld image Err bitreich.org 70 i+ * Err bitreich.org 70 i+ * The convention used: y Err bitreich.org 70 i+ * - (0,0) is at the lower left corner of the canvas. | Err bitreich.org 70 i+ * - (0,1) is above it. +--x Err bitreich.org 70 i */ Err bitreich.org 70 i Err bitreich.org 70 i #include Err bitreich.org 70 i@@ -32,6 +36,10 @@ 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+/* Make it segfault early. Err bitreich.org 70 i+ x = MIN(can->w - 1, x); Err bitreich.org 70 i+ y = MIN(can->h - 1, 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@@ -50,20 +58,37 @@ ffdraw_rectangle(Canvas *can, Color c, 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+/* Err bitreich.org 70 i+ * Adapted from Bresenham's line algorithm and dcat's tplot. Err bitreich.org 70 i+ */ Err bitreich.org 70 i+static 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+ int x0, int y0, Err bitreich.org 70 i+ int x1, int y1) 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+ int dx, dy, sx, sy, err, e; Err bitreich.org 70 i+ Err bitreich.org 70 i+ sx = x0 < x1 ? 1 : -1; Err bitreich.org 70 i+ sy = y0 < y1 ? 1 : -1; Err bitreich.org 70 i+ dx = abs(x1 - x0); Err bitreich.org 70 i+ dy = abs(y1 - y0); Err bitreich.org 70 i+ err = (dx > dy ? dx : -dy) / 2; Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (;;) { Err bitreich.org 70 i+ ffdraw_pixel(can, c, x0, y0); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (x0 == x1 && y0 == y1) Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ Err bitreich.org 70 i+ e = err; Err bitreich.org 70 i+ if (e > -dx) { Err bitreich.org 70 i+ x0 += sx; Err bitreich.org 70 i+ err -= dy; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ if (e < dy) { Err bitreich.org 70 i+ y0 += sy; Err bitreich.org 70 i+ err += dx; 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@@ -80,9 +105,9 @@ ffdraw(Canvas *can) 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+ ffdraw_line(can, c2, Err bitreich.org 70 i+ 0, 0, Err bitreich.org 70 i+ 50 - 1, 80 - 1); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 .