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 <mail@josuah.net> 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 <arpa/inet.h> 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
.
Response:
text/plain