ifix endianess, ignore alpha, add ff2col - ff2txt - farbfeld image to plain text visualization Err bitreich.org 70
hgit clone git://bitreich.org/ff2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ff2txt URL:git://bitreich.org/ff2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ff2txt bitreich.org 70
1Log /scm/ff2txt/log.gph bitreich.org 70
1Files /scm/ff2txt/files.gph bitreich.org 70
1Refs /scm/ff2txt/refs.gph bitreich.org 70
1Tags /scm/ff2txt/tag bitreich.org 70
1README /scm/ff2txt/file/README.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 1b7f84f5eed357743b19d90188c0dcc0736db014 /scm/ff2txt/commit/1b7f84f5eed357743b19d90188c0dcc0736db014.gph bitreich.org 70
1parent 0618ea49eedccf14ae19e93f9e8ec1ffd43daa44 /scm/ff2txt/commit/0618ea49eedccf14ae19e93f9e8ec1ffd43daa44.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Mon, 29 Jan 2018 12:40:46 +0100 Err bitreich.org 70
i Err bitreich.org 70
ifix endianess, ignore alpha, add ff2col Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M Makefile | 10 +++++++--- Err bitreich.org 70
i D ff2ascii.c | 101 ------------------------------- Err bitreich.org 70
i M ff2braille.c | 2 +- Err bitreich.org 70
i A ff2col.1 | 34 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i M ff2col.c | 4 ++-- Err bitreich.org 70
i M util.c | 21 +++++++++++++-------- Err bitreich.org 70
i M util.h | 2 +- Err bitreich.org 70
i Err bitreich.org 70
i7 files changed, 58 insertions(+), 116 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/Makefile b/Makefile /scm/ff2txt/file/Makefile.gph bitreich.org 70
i@@ -1,17 +1,21 @@ Err bitreich.org 70
i CFLAGS = -std=c89 -pedantic -Wall -Wextra -Werror Err bitreich.org 70
i+ Err bitreich.org 70
i all: ff2braille ff2col Err bitreich.org 70
i Err bitreich.org 70
i+.c.o: Err bitreich.org 70
i+ ${CC} ${CFLAGS} -c $< -o $@ Err bitreich.org 70
i+ Err bitreich.org 70
i ff2braille: ff2braille.o util.o util.h Err bitreich.org 70
i- cc -o $@ ff2braille.o util.o $(LDFLAGS) Err bitreich.org 70
i+ ${CC} -o $@ ff2braille.o util.o $(LDFLAGS) Err bitreich.org 70
i Err bitreich.org 70
i ff2col: ff2col.o util.o util.h Err bitreich.org 70
i- cc -o $@ ff2col.o util.o $(LDFLAGS) Err bitreich.org 70
i+ ${CC} -o $@ ff2col.o util.o $(LDFLAGS) Err bitreich.org 70
i Err bitreich.org 70
i install: Err bitreich.org 70
i mkdir -p ${PREFIX}/bin Err bitreich.org 70
i cp ff2braille ${PREFIX}/bin Err bitreich.org 70
i Err bitreich.org 70
i clean: Err bitreich.org 70
i- rm -f *.o ff2braille Err bitreich.org 70
i+ rm -f *.o ff2braille ff2col Err bitreich.org 70
i Err bitreich.org 70
i .PHONY: all install clean Err bitreich.org 70
1diff --git a/ff2ascii.c b/ff2ascii.c /scm/ff2txt/file/ff2ascii.c.gph bitreich.org 70
i@@ -1,101 +0,0 @@ Err bitreich.org 70
i-/* Err bitreich.org 70
i- * Transforming an image into a braille character text is transforming a Err bitreich.org 70
i- * matrice this way: Err bitreich.org 70
i- * Err bitreich.org 70
i- * farbfeld image braille characters Err bitreich.org 70
i- * Err bitreich.org 70
i- * [[a0 a1 a2 a3 a4 a5] [[[a0 a1 [a2 a3 [a4 a5 \ Err bitreich.org 70
i- * [b0 b1 b2 b3 b4 b5] b0 b1 / b2 b3 / b4 b5 |<- One braille Err bitreich.org 70
i- * [c0 c1 c2 c3 c4 c5] c0 c1 / c2 c3 / c4 c5 | character Err bitreich.org 70
i- * [d0 d1 d2 d3 d4 d5] => d0 d1] d2 d3] d4 d5]] / Err bitreich.org 70
i- * [e0 e1 e2 e3 e4 e5] [[e0 e1 [e2 e3 [e4 e5 Err bitreich.org 70
i- * [f0 f1 f2 f3 f4 f5] f0 f1 / f2 f3 / f4 f5 Err bitreich.org 70
i- * [g0 g1 g2 g3 g4 g5] g0 g1 / g2 g3 / g4 g5 Err bitreich.org 70
i- * [h0 h1 h2 h3 h4 h5]] h0 h1] h2 h3] h4 h5]]] Err bitreich.org 70
i- * Err bitreich.org 70
i- * braille characters written as a line: Err bitreich.org 70
i- * Err bitreich.org 70
i- * [[[a0 a1 b0 b1 c0 c1 d0 d1] <- One braille character Err bitreich.org 70
i- * [a2 a3 b2 b3 c2 c3 d2 d3] Err bitreich.org 70
i- * [a4 a5 b4 b5 c4 c5 d4 d5]] <- One row of braille characters Err bitreich.org 70
i- * [[e0 e1 f0 f1 g0 g1 h0 h1] Err bitreich.org 70
i- * [e2 e3 f2 f3 g2 g3 h2 h3] Err bitreich.org 70
i- * [e4 e5 f4 f5 g4 g5 h4 h5]]] <- Two row of braille characters Err bitreich.org 70
i- * Err bitreich.org 70
i- * Although the encoding of braille keeps 1 4 Err bitreich.org 70
i- * the characters encoded with only six 2 5 Err bitreich.org 70
i- * dots first, as only these are used for 3 6 Err bitreich.org 70
i- * encoding letters: 7 8 Err bitreich.org 70
i- */ Err bitreich.org 70
i-#include <stdio.h> Err bitreich.org 70
i-#include <string.h> Err bitreich.org 70
i-#include <stdlib.h> Err bitreich.org 70
i-#include <stdint.h> Err bitreich.org 70
i- Err bitreich.org 70
i-#include "util.h" Err bitreich.org 70
i- Err bitreich.org 70
i-void Err bitreich.org 70
i-print_utf8_3byte(long rune) Err bitreich.org 70
i-{ Err bitreich.org 70
i- printf("%c%c%c", Err bitreich.org 70
i- (char)(0xe0 | (0x0f & (rune >> 12))), /* 1110xxxx */ Err bitreich.org 70
i- (char)(0x80 | (0x3f & (rune >> 6))), /* 10xxxxxx */ Err bitreich.org 70
i- (char)(0x80 | (0x3f & (rune)))); /* 10xxxxxx */ Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-int Err bitreich.org 70
i-is_on(struct col *rows[4], uint32_t width, uint32_t height, uint32_t w, Err bitreich.org 70
i- uint32_t h) Err bitreich.org 70
i-{ Err bitreich.org 70
i- uint16_t sum; Err bitreich.org 70
i- Err bitreich.org 70
i- if (w >= width || h >= height) Err bitreich.org 70
i- return 0; Err bitreich.org 70
i- Err bitreich.org 70
i- /* divide first to avoid overflow */ Err bitreich.org 70
i- sum = rows[h][w].red / 4; Err bitreich.org 70
i- sum += rows[h][w].green / 4; Err bitreich.org 70
i- sum += rows[h][w].blue / 4; Err bitreich.org 70
i- sum += rows[h][w].alpha / 4; Err bitreich.org 70
i- return sum >= UINT16_MAX / 2; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-void Err bitreich.org 70
i-print_4_rows(struct col *rows[4], uint32_t width, uint32_t height) Err bitreich.org 70
i-{ Err bitreich.org 70
i- uint32_t w; Err bitreich.org 70
i- Err bitreich.org 70
i- for (w = 0; w < width; w += 2) Err bitreich.org 70
i- print_utf8_3byte(BRAILLE_START + Err bitreich.org 70
i- 0x01 * is_on(rows, width, height, w + 0, 0) + Err bitreich.org 70
i- 0x08 * is_on(rows, width, height, w + 1, 0) + Err bitreich.org 70
i- 0x02 * is_on(rows, width, height, w + 0, 1) + Err bitreich.org 70
i- 0x10 * is_on(rows, width, height, w + 1, 1) + Err bitreich.org 70
i- 0x04 * is_on(rows, width, height, w + 0, 2) + Err bitreich.org 70
i- 0x20 * is_on(rows, width, height, w + 1, 2) + Err bitreich.org 70
i- 0x40 * is_on(rows, width, height, w + 0, 3) + Err bitreich.org 70
i- 0x80 * is_on(rows, width, height, w + 1, 3)); Err bitreich.org 70
i- putchar('\n'); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-int Err bitreich.org 70
i-main(void) Err bitreich.org 70
i-{ Err bitreich.org 70
i- struct col buf[MAX_WIDTH * 4], *rows[4]; Err bitreich.org 70
i- uint32_t width, height, h, r, i; Err bitreich.org 70
i- Err bitreich.org 70
i- read_header(&width, &height); Err bitreich.org 70
i- Err bitreich.org 70
i- for (i = 0; i < 4; i++) Err bitreich.org 70
i- rows[i] = buf + width * i; Err bitreich.org 70
i- Err bitreich.org 70
i- for (h = 0; h < height; h += 4) { Err bitreich.org 70
i- r = fread(buf, sizeof(*buf), width * 4, stdin); Err bitreich.org 70
i- if (r % width != 0) Err bitreich.org 70
i- err("invalid line width"); Err bitreich.org 70
i- print_4_rows(rows, width, r / width); Err bitreich.org 70
i- if (ferror(stdin)) Err bitreich.org 70
i- err("fread stdin"); Err bitreich.org 70
i- } Err bitreich.org 70
i- return 0; Err bitreich.org 70
i-} Err bitreich.org 70
1diff --git a/ff2braille.c b/ff2braille.c /scm/ff2txt/file/ff2braille.c.gph bitreich.org 70
i@@ -51,7 +51,7 @@ is_on(struct col *rows[4], uint32_t width, uint32_t height, Err bitreich.org 70
i if (w >= width || h >= height) Err bitreich.org 70
i return 0; Err bitreich.org 70
i Err bitreich.org 70
i- return is_bright(rows[h][w]); Err bitreich.org 70
i+ return col_is_bright(rows[h][w]); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
1diff --git a/ff2col.1 b/ff2col.1 /scm/ff2txt/file/ff2col.1.gph bitreich.org 70
i@@ -0,0 +1,34 @@ Err bitreich.org 70
i+.Dt FF2COL 1 Err bitreich.org 70
i+.Dd $Mdocdate: January 22 2018$ 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 ff2col Err bitreich.org 70
i+.Nd farbfeld to text column, comma, single-quote image conversion 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+.Nm 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+.Nm Err bitreich.org 70
i+reads a Err bitreich.org 70
i+.Xr farbfeld 5 Err bitreich.org 70
i+image from stdin and write a text representation of the image using Err bitreich.org 70
i+.Dq \&'\&.\&: Err bitreich.org 70
i+characters to stdout. Err bitreich.org 70
i+. Err bitreich.org 70
i+. Err bitreich.org 70
i+.Sh EXIT STATUS Err bitreich.org 70
i+. Err bitreich.org 70
i+.Ex -std Err bitreich.org 70
i+. Err bitreich.org 70
i+. Err bitreich.org 70
i+.Sh EXAMPLES Err bitreich.org 70
i+. Err bitreich.org 70
i+.Dl pg2ff < image.png | ff2col > file.txt Err bitreich.org 70
1diff --git a/ff2col.c b/ff2col.c /scm/ff2txt/file/ff2col.c.gph bitreich.org 70
i@@ -13,8 +13,8 @@ print_2_rows(struct col *buf, uint32_t width, int height) Err bitreich.org 70
i char *map = " '.:"; Err bitreich.org 70
i Err bitreich.org 70
i for (w = 0; w < width; w++) { Err bitreich.org 70
i- up = height > 0 && is_bright(buf[w]) ? 0x1 : 0x0; Err bitreich.org 70
i- dn = height > 1 && is_bright(buf[w + width]) ? 0x2 : 0x0; Err bitreich.org 70
i+ up = height > 0 && col_is_bright(buf[w]) ? 0x1 : 0x0; Err bitreich.org 70
i+ dn = height > 1 && col_is_bright(buf[w + width]) ? 0x2 : 0x0; Err bitreich.org 70
i putchar(map[up | dn]); Err bitreich.org 70
i } Err bitreich.org 70
i putchar('\n'); Err bitreich.org 70
1diff --git a/util.c b/util.c /scm/ff2txt/file/util.c.gph bitreich.org 70
i@@ -32,16 +32,21 @@ read_header(uint32_t *width, uint32_t *height) Err bitreich.org 70
i err("empty image"); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-int Err bitreich.org 70
i-is_bright(struct col col) Err bitreich.org 70
i+static uint16_t Err bitreich.org 70
i+col_blend(struct col col) Err bitreich.org 70
i { Err bitreich.org 70
i- int32_t sum; Err bitreich.org 70
i+ int16_t sum; Err bitreich.org 70
i Err bitreich.org 70
i /* divide first to avoid overflow */ Err bitreich.org 70
i- sum = htonl(col.red) / 4; Err bitreich.org 70
i- sum += htonl(col.green) / 4; Err bitreich.org 70
i- sum += htonl(col.blue) / 4; Err bitreich.org 70
i- sum += htonl(col.alpha) / 4; Err bitreich.org 70
i+ sum = ntohs(col.red) / 3; Err bitreich.org 70
i+ sum += ntohs(col.green) / 3; Err bitreich.org 70
i+ sum += ntohs(col.blue) / 3; Err bitreich.org 70
i+ Err bitreich.org 70
i+ return sum; Err bitreich.org 70
i+} Err bitreich.org 70
i Err bitreich.org 70
i- return sum <= UINT16_MAX / 2; Err bitreich.org 70
i+int Err bitreich.org 70
i+col_is_bright(struct col col) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ return col_blend(col) >= UINT16_MAX / 2; Err bitreich.org 70
i } Err bitreich.org 70
1diff --git a/util.h b/util.h /scm/ff2txt/file/util.h.gph bitreich.org 70
i@@ -13,4 +13,4 @@ struct col { Err bitreich.org 70
i Err bitreich.org 70
i void err(char *); Err bitreich.org 70
i void read_header(uint32_t *, uint32_t *); Err bitreich.org 70
i-int is_bright(struct col); Err bitreich.org 70
i+int col_is_bright(struct col); Err bitreich.org 70
.
Response:
text/plain