iinterpolate.c - pointtools - Simple point utilities to hold text presentations. Err bitreich.org 70 hgit clone git://bitreich.org/pointtools/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/pointtools/ URL:git://bitreich.org/pointtools/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/pointtools/ bitreich.org 70 1Log /scm/pointtools/log.gph bitreich.org 70 1Files /scm/pointtools/files.gph bitreich.org 70 1Refs /scm/pointtools/refs.gph bitreich.org 70 1Tags /scm/pointtools/tag bitreich.org 70 1README /scm/pointtools/file/README.md.gph bitreich.org 70 1LICENSE /scm/pointtools/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 iinterpolate.c (1587B) Err bitreich.org 70 i--- Err bitreich.org 70 i 1 #include Err bitreich.org 70 i 2 #include Err bitreich.org 70 i 3 #include Err bitreich.org 70 i 4 #include Err bitreich.org 70 i 5 Err bitreich.org 70 i 6 #define STEPS 32 Err bitreich.org 70 i 7 Err bitreich.org 70 i 8 /* SLEEPTIME in microseconds */ Err bitreich.org 70 i 9 #define SLEEPTIME 100 Err bitreich.org 70 i 10 Err bitreich.org 70 i 11 int Err bitreich.org 70 i 12 main(int argc, char *argv[]) Err bitreich.org 70 i 13 { Err bitreich.org 70 i 14 FILE *from, *to; Err bitreich.org 70 i 15 int i, j, k; Err bitreich.org 70 i 16 int width, height; Err bitreich.org 70 i 17 int fromn, ton; Err bitreich.org 70 i 18 size_t linesize; Err bitreich.org 70 i 19 ssize_t r; Err bitreich.org 70 i 20 char **fromlines, **tolines, *line; Err bitreich.org 70 i 21 char fromc, toc; Err bitreich.org 70 i 22 Err bitreich.org 70 i 23 if (argc < 3) Err bitreich.org 70 i 24 return 1; Err bitreich.org 70 i 25 Err bitreich.org 70 i 26 if (!(from = fopen(argv[1], "r"))) Err bitreich.org 70 i 27 return 1; Err bitreich.org 70 i 28 Err bitreich.org 70 i 29 if (!(to = fopen(argv[2], "r"))) Err bitreich.org 70 i 30 return 1; Err bitreich.org 70 i 31 Err bitreich.org 70 i 32 line = NULL; Err bitreich.org 70 i 33 linesize = 0; Err bitreich.org 70 i 34 width = 0; Err bitreich.org 70 i 35 Err bitreich.org 70 i 36 fromn = 0; Err bitreich.org 70 i 37 fromlines = NULL; Err bitreich.org 70 i 38 while ((r = getline(&line, &linesize, from)) != -1) { Err bitreich.org 70 i 39 if (line[r-1] == '\n') Err bitreich.org 70 i 40 line[--r] = '\0'; Err bitreich.org 70 i 41 fromn++; Err bitreich.org 70 i 42 fromlines = realloc(fromlines, fromn * sizeof(*fromlines)); Err bitreich.org 70 i 43 fromlines[fromn-1] = strdup(line); Err bitreich.org 70 i 44 if (r > width) Err bitreich.org 70 i 45 width = r; Err bitreich.org 70 i 46 } Err bitreich.org 70 i 47 fclose(from); Err bitreich.org 70 i 48 Err bitreich.org 70 i 49 ton = 0; Err bitreich.org 70 i 50 tolines = NULL; Err bitreich.org 70 i 51 while ((r = getline(&line, &linesize, to)) != -1) { Err bitreich.org 70 i 52 if (line[r-1] == '\n') Err bitreich.org 70 i 53 line[--r] = '\0'; Err bitreich.org 70 i 54 ton++; Err bitreich.org 70 i 55 tolines = realloc(tolines, ton * sizeof(*tolines)); Err bitreich.org 70 i 56 tolines[ton-1] = strdup(line); Err bitreich.org 70 i 57 if (r > width) Err bitreich.org 70 i 58 width = r; Err bitreich.org 70 i 59 } Err bitreich.org 70 i 60 fclose(to); Err bitreich.org 70 i 61 Err bitreich.org 70 i 62 height = ton > fromn ? ton : fromn; Err bitreich.org 70 i 63 Err bitreich.org 70 i 64 printf("\033[2J"); Err bitreich.org 70 i 65 for (k = 0; k <= STEPS; k++) { Err bitreich.org 70 i 66 printf("\033[;H"); Err bitreich.org 70 i 67 for (i = 0; i < height; i++) { Err bitreich.org 70 i 68 for (j = 0; j < width; j++) { Err bitreich.org 70 i 69 fromc = ' '; Err bitreich.org 70 i 70 toc = ' '; Err bitreich.org 70 i 71 if (i < fromn && j < strlen(fromlines[i])) Err bitreich.org 70 i 72 fromc = fromlines[i][j]; Err bitreich.org 70 i 73 if (i < ton && j < strlen(tolines[i])) Err bitreich.org 70 i 74 toc = tolines[i][j]; Err bitreich.org 70 i 75 if (toc & 128) Err bitreich.org 70 i 76 putchar(toc); Err bitreich.org 70 i 77 else Err bitreich.org 70 i 78 putchar(fromc + (toc - fromc) * k / STEPS); Err bitreich.org 70 i 79 } Err bitreich.org 70 i 80 putchar('\n'); Err bitreich.org 70 i 81 } Err bitreich.org 70 i 82 usleep(SLEEPTIME); Err bitreich.org 70 i 83 } Err bitreich.org 70 i 84 Err bitreich.org 70 i 85 return 0; Err bitreich.org 70 i 86 } Err bitreich.org 70 .