draw to farbfeld instead of plain text - ploot - simple plotting tools | |
git clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit 1fc2d491d5051732caac4426d73cb22c2d870f6d | |
parent dd70db86b2270b2a539f863664d2af0c5c7f1040 | |
Author: Josuah Demangeon <[email protected]> | |
Date: Sun, 29 Apr 2018 21:54:47 +0200 | |
draw to farbfeld instead of plain text | |
Diffstat: | |
M Makefile | 19 +++++++++++-------- | |
M arg.h | 30 +++++++++++++++--------------- | |
A deffont.h | 27 +++++++++++++++++++++++++++ | |
A font-14x7.h | 550 +++++++++++++++++++++++++++++… | |
A font.c | 71 +++++++++++++++++++++++++++++… | |
5 files changed, 674 insertions(+), 23 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
@@ -1,17 +1,20 @@ | |
CFLAGS = -Wall -Wextra -Werror -std=c89 -pedantic -D_POSIX_C_SOURCE=200… | |
-.PHONY: all | |
-all:ploot | |
+SRC = font.c | |
+ | |
+OBJ = $(SRC:.c=.o) | |
+ | |
+all:x ploot | |
ploot.o: config.h arg.h | |
-ploot: ploot.o | |
- ${CC} -static -o ploot ploot.o | |
+ploot: $(OBJ) | |
+ ${CC} -static -o $@ $(OBJ) | |
-.PHONY: install | |
-install: ploot | |
+install:x ploot | |
mkdir -p ${PREFIX}/bin | |
cp ploot ${PREFIX}/bin/ploot | |
-.PHONY: clean | |
-clean: | |
+clean:x | |
rm -f *.o ploot | |
+ | |
+x: | |
diff --git a/arg.h b/arg.h | |
@@ -3,25 +3,25 @@ | |
extern char *argv0; | |
-#define ARGBEGIN(argc, argv) \ | |
- for (argv0 = *argv, argv++, argc--; \ | |
- argv[0] != NULL && argv[0][0] == '-' && argv[0][1] != '\0'; … | |
- argc--, argv++) { \ | |
- char **_argv, *_a; \ | |
- if (argv[0][1] == '-' && argv[0][2] == '\0') { \ | |
- argv++, argc--; … | |
- break; \ | |
- } \ | |
- for (_argv = argv, _a = *argv + 1; *_a != '\0'; _a++) { … | |
+#define ARGBEGIN \ | |
+ for (argv0 = *argv, argv++, argc--; \ | |
+ argv[0] != NULL && argv[0][0] == '-' && argv[0][1] != '\0'; \ | |
+ argc--, argv++) { \ | |
+ char **_argv, *_a; \ | |
+ if (argv[0][1] == '-' && argv[0][2] == '\0') { \ | |
+ argv++, argc--; \ | |
+ break; \ | |
+ } \ | |
+ for (_argv = argv, _a = *argv + 1; *_a != '\0'; _a++) { \ | |
switch (*_a) | |
-#define ARGEND \ | |
- if (_argv != argv) \ | |
- break; \ | |
- } \ | |
+#define ARGEND \ | |
+ if (_argv != argv) \ | |
+ break; \ | |
+ } \ | |
} | |
-#define EARGF(x) … | |
+#define EARGF(x) \ | |
((argv[1] == NULL) ? ((x), (char *)0) : (argc--, argv++, argv[0])) | |
#endif | |
diff --git a/deffont.h b/deffont.h | |
@@ -0,0 +1,27 @@ | |
+#include <stddef.h> | |
+ | |
+#define _ 0 | |
+#define X 1 | |
+#define B(x) char glyph_ ## x[WIDTH * HEIGHT] | |
+#define b(x) glyph_ ## x | |
+#define NOPR NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL | |
+#define NOPRINT NOPR, NOPR, NOPR, NOPR | |
+ | |
+#define FONT(x) char *font_ ## x[] = { \ | |
+ NULL, NULL, NULL, NULL, \ | |
+ NULL, NULL, NULL, NULL, \ | |
+ NULL, NULL, NULL, NULL, \ | |
+ NULL, NULL, NULL, NULL, \ | |
+ NULL, NULL, NULL, NULL, \ | |
+ NULL, NULL, NULL, NULL, \ | |
+ b(space), b(bang), b(double), b(hash), \ | |
+ b(dollar), b(percent), b(ampersand), b(single), \ | |
+ b(l_round), b(r_round), b(asterisk), b(plus), \ | |
+ b(coma), b(minus), b(dot), b(slash), \ | |
+ b(0), b(1), b(2), b(3), \ | |
+ b(4), b(5), b(6), b(7), \ | |
+ b(8), b(9), b(column), b(semicolumn), \ | |
+ b(l_angle), b(equal), b(r_angle), b(question), \ | |
+ b(column), b(semicolumn), b(l_angle), b(equal), \ | |
+ b(r_angle), b(question) \ | |
+} | |
diff --git a/font-14x7.h b/font-14x7.h | |
@@ -0,0 +1,550 @@ | |
+#include "deffont.h" | |
+ | |
+#define WIDTH 14 | |
+#define HEIGHT 7 | |
+ | |
+B(space) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(bang) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(double) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,_,X,_, | |
+_ ,_,X,_,X,_, | |
+_ ,_,X,_,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(hash) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,_,X,_, | |
+_ ,_,X,_,X,_, | |
+_ ,X,X,X,X,X, | |
+_ ,_,X,_,X,_, | |
+_ ,_,X,_,X,_, | |
+_ ,X,X,X,X,X, | |
+_ ,_,X,_,X,_, | |
+_ ,_,X,_,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(dollar) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,X,_,X, | |
+_ ,X,_,X,_,_, | |
+_ ,X,_,X,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,X,_,X, | |
+_ ,_,_,X,_,X, | |
+_ ,X,_,X,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(percent) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,X, | |
+_ ,X,X,_,_,X, | |
+_ ,X,X,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,X,X, | |
+_ ,X,_,_,X,X, | |
+_ ,X,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(ampersand) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,X,_, | |
+_ ,_,X,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,X,_,X, | |
+_ ,X,_,_,X,_, | |
+_ ,X,_,_,X,_, | |
+_ ,X,_,_,X,_, | |
+_ ,_,X,X,_,X, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(single) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(l_round) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(r_round) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(asterisk) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,X,_,X,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,X,_,X, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(plus) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,X,X,X,X,X, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(coma) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(minus) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,X,X,X,X,X, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(dot) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(slash) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(0) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,X,_,X, | |
+_ ,X,_,X,_,X, | |
+_ ,X,_,X,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(1) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(2) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,X,X,X,X,X, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(3) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(4) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,X,X, | |
+_ ,_,_,X,_,X, | |
+_ ,_,X,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,X,X,X,X,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(5) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,X,X,X,X,X, | |
+_ ,X,_,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,X,X,X,X,_, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(6) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,X,X,X,X,_, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(7) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,X,X,X,X,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(8) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(9) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,X,X,X,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,X,X,X,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(column) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(semicolumn) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(l_angle) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(equal) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,X,X,X,X,X, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,X,X,X,X,X, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(r_angle) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,X,_,_,_, | |
+_ ,X,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+B(question) = { | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,X,X,X,_, | |
+_ ,X,_,_,_,X, | |
+_ ,X,_,_,_,X, | |
+_ ,_,_,_,_,X, | |
+_ ,_,_,_,X,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,X,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_, | |
+_ ,_,_,_,_,_ | |
+}; | |
+ | |
+FONT(14x7); | |
diff --git a/font.c b/font.c | |
@@ -0,0 +1,71 @@ | |
+/* | |
+ * Render bitmapped font as a farbfeld image | |
+ */ | |
+ | |
+#include <arpa/inet.h> | |
+ | |
+#include <stdint.h> | |
+#include <stdio.h> | |
+#include <stdlib.h> | |
+#include <string.h> | |
+ | |
+#include "arg.h" | |
+ | |
+typedef uint16_t Color[4]; | |
+ | |
+enum { R, G, B, A }; | |
+ | |
+Color *canvas; | |
+ | |
+char *argv0; | |
+int wflag = 0; | |
+int hflag = 0; | |
+ | |
+void | |
+usage() | |
+{ | |
+ fputs("ploot -w width -h height <data.csv >image.ff\n", stderr); | |
+ exit(1); | |
+} | |
+ | |
+void | |
+ffdraw(Color *canvas, int w, int h) | |
+{ | |
+ Color col = { 0xffff, 0xffff, 0x0000, 0xffff }; | |
+ size_t n; | |
+ | |
+ for (n = w * h; n > 0; n--) | |
+ memcpy(canvas + n - 1, col, sizeof(col)); | |
+} | |
+ | |
+int | |
+main(int argc, char **argv) | |
+{ | |
+ uint32_t w, h; | |
+ | |
+ ARGBEGIN { | |
+ case 'w': | |
+ wflag = atoi(EARGF(usage())); | |
+ break; | |
+ case 'h': | |
+ hflag = atoi(EARGF(usage())); | |
+ break; | |
+ } ARGEND; | |
+ | |
+ if (wflag == 0 || hflag == 0) | |
+ usage(); | |
+ | |
+ if ((canvas = calloc(wflag * hflag, sizeof(*canvas))) == NULL) { | |
+ perror("allocating memory for the canvas"); | |
+ return 1; | |
+ } | |
+ | |
+ fputs("farbfeld", stdout); | |
+ w = htonl(wflag); | |
+ h = htonl(hflag); | |
+ fwrite(&w, sizeof(w), 1, stdout); | |
+ fwrite(&h, sizeof(h), 1, stdout); | |
+ ffdraw(canvas, wflag, hflag); | |
+ fwrite(canvas, wflag * hflag, sizeof(*canvas), stdout); | |
+ return 0; | |
+} |