1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| #include "loadfonts.h" #include <string.h> #include <stdio.h>
void displayline(char *start, char *end, char align, int width); char *split(char *start, int width);
void display(char align, int width, char message[]) { char *s = message; char *e; while (*s != '\0') { e = split(s, width); displayline(s, e, align, width); s = e + 1; } }
void displayline(char *start, char *end, char align, int width) { char buffer[50][200] = {0}; int i, j; char *p; int sp = 0; for (i = 0; i < 8; i++) { for (p = start; p <= end; p++) { strcat(buffer[i], getfont(*p).img[i]); } }
if (align == 'c') { sp = (width - strlen(buffer[0])) / 2; } else if (align == 'r') { sp = width - strlen(buffer[0]); } for (i = 0; i < 8; i++) { for (j = 0; j < sp; j++) { printf(" "); } printf("%s\n", buffer[i]); } } char *split(char *start, int width) { char *p = start; int cur = 0; struct font f; while (*p != '\0') { f = getfont(*p); if (f.width + cur <= width) { cur += f.width; p++; } else { break; } } return --p; }
|