iutil.c - 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 iutil.c (822B) Err bitreich.org 70 i--- Err bitreich.org 70 i 1 #include Err bitreich.org 70 i 2 Err bitreich.org 70 i 3 #include Err bitreich.org 70 i 4 #include Err bitreich.org 70 i 5 #include Err bitreich.org 70 i 6 #include Err bitreich.org 70 i 7 Err bitreich.org 70 i 8 #include "util.h" Err bitreich.org 70 i 9 Err bitreich.org 70 i 10 void Err bitreich.org 70 i 11 err(char *msg) Err bitreich.org 70 i 12 { Err bitreich.org 70 i 13 perror(msg); Err bitreich.org 70 i 14 exit(1); Err bitreich.org 70 i 15 } Err bitreich.org 70 i 16 Err bitreich.org 70 i 17 void Err bitreich.org 70 i 18 read_header(uint32_t *width, uint32_t *height) Err bitreich.org 70 i 19 { Err bitreich.org 70 i 20 uint32_t header[4]; Err bitreich.org 70 i 21 Err bitreich.org 70 i 22 if (fread(header, sizeof(*header), LEN(header), stdin) != LEN(header)) Err bitreich.org 70 i 23 err("fread"); Err bitreich.org 70 i 24 Err bitreich.org 70 i 25 if (memcmp("farbfeld", header, sizeof("farbfeld") - 1)) Err bitreich.org 70 i 26 err("invalid magic value\n"); Err bitreich.org 70 i 27 Err bitreich.org 70 i 28 *width = ntohl(header[2]); Err bitreich.org 70 i 29 *height = ntohl(header[3]); Err bitreich.org 70 i 30 Err bitreich.org 70 i 31 if (width == 0 || height == 0) Err bitreich.org 70 i 32 err("empty image"); Err bitreich.org 70 i 33 } Err bitreich.org 70 i 34 Err bitreich.org 70 i 35 static uint16_t Err bitreich.org 70 i 36 col_blend(struct col col) Err bitreich.org 70 i 37 { Err bitreich.org 70 i 38 int16_t sum; Err bitreich.org 70 i 39 Err bitreich.org 70 i 40 /* divide first to avoid overflow */ Err bitreich.org 70 i 41 sum = ntohs(col.red) / 3; Err bitreich.org 70 i 42 sum += ntohs(col.green) / 3; Err bitreich.org 70 i 43 sum += ntohs(col.blue) / 3; Err bitreich.org 70 i 44 Err bitreich.org 70 i 45 return sum; Err bitreich.org 70 i 46 } Err bitreich.org 70 i 47 Err bitreich.org 70 i 48 int Err bitreich.org 70 i 49 col_is_bright(struct col col) Err bitreich.org 70 i 50 { Err bitreich.org 70 i 51 return col_blend(col) >= UINT16_MAX / 2; Err bitreich.org 70 i 52 } Err bitreich.org 70 .