SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/ff2txt/commit/1b7f84f5eed3577...
Content-Typetext/plain; charset=utf-8