annotate bwsplash/pbm2c.c @ 247:12b20090b46a

ETM: add phone-on command to FCBM
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 09 May 2021 21:04:52 +0000
parents 4d9f24c501f3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
195
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This program compiles bwsplash.pbm into a C char array
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * for inclusion into phone UI firmware source.
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <sys/types.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdlib.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <string.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <strings.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 FILE *inf, *outf;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 char *infname, linebuf[128];
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 int lineno;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 void
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 get_input_line()
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 char *cp;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 if (!fgets(linebuf, sizeof linebuf, inf)) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 fprintf(stderr, "%s: premature EOF\n", infname);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 lineno++;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 cp = index(linebuf, '\n');
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 if (!cp) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 fprintf(stderr, "%s line %d: too long or missing newline\n",
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 infname, lineno);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 *cp = '\0';
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 void
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 parse_pixel_line(outbuf, npix)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 u_char *outbuf;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 unsigned npix;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 char *cp;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 u_char *dp;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 unsigned n;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 cp = linebuf;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 dp = outbuf;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 for (n = 0; n < npix; n++) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 if (*cp != '0' && *cp != '1') {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 inv: fprintf(stderr,
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 "%s line %d: does not match expected line of %u 0/1 characters\n",
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 infname, lineno, npix);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 *dp++ = *cp++ - '0';
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 if (*cp)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 goto inv;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 void
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 pack_pixel_byte(bits)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 u_char *bits;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 unsigned byte, mask, n;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 byte = 0;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 for (n = 0, mask = 0x80; n < 8; n++, mask >>= 1)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 if (bits[n])
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 byte |= mask;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 fprintf(outf, "0x%02X,", byte);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 main(argc, argv)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 char **argv;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 unsigned nrow, ncol;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 u_char rowbuf[80];
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 if (argc != 3) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 fprintf(stderr, "usage: %s pbmfile outfile\n", argv[0]);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 infname = argv[1];
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 inf = fopen(infname, "r");
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 if (!inf) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 perror(infname);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 get_input_line();
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 if (strcmp(linebuf, "P1")) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 fprintf(stderr,
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 "error in %s: first line is not the expected \"P1\"\n",
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 infname);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 get_input_line();
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 if (strcmp(linebuf, "80 30")) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 fprintf(stderr,
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 "error in %s: second line is not the expected \"80 30\"\n",
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 infname);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 outf = fopen(argv[2], "w");
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 if (!outf) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 perror(argv[2]);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 for (nrow = 0; nrow < 30; nrow++) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 get_input_line();
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 parse_pixel_line(rowbuf, 80);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 putc('\t', outf);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 for (ncol = 0; ncol < 80; ncol += 8)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 pack_pixel_byte(rowbuf + ncol);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 putc('\n', outf);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 exit(0);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 }