shithub: tinygl

ref: b7ae731f2111e4766fce4a73bd262be69fbd4c40
dir: /Raw_Demos/bigfont.c/

View raw version
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../include/GL/gl.h"
#include "../src/font8x8_basic.h"
#include "../include-demo/stringutil.h"

char fillchar = '#';
void render(unsigned char *bitmap, int x) {
    int y;
    int set;
    for (y=0; y < 8; y++) {
       	set = bitmap[x] & (1 << y); //despite the naming convention... x is actually the row # not the column #. X IS Y, Y IS X, got it?
        fputc(set ? fillchar : ' ', stdout);
    }
}

int main(int argc, char **argv) {
	if(argc > 1) fillchar = argv[1][0];
	
	{
		unsigned long l;
		unsigned char* b = (unsigned char*)read_until_terminator_alloced(stdin, &l, '\n', 30);
		if(b)
		do {
			for(unsigned int x = 0; x < 8; x++){ //Despite the name, this is actually the row
				fputc('\n', stdout);
			    for(unsigned int i = 0; b[i] != '\n' && b[i] != '\0'; i++){
			    	unsigned char *bitmap = (unsigned char*)font8x8_basic[ b[i] ];
			    	render(bitmap, x);	
			   	}
		   	}
		//Walk b until the next \n or null terminator.
			free(b);
			b = (unsigned char*)read_until_terminator_alloced(stdin, &l, '\n', 30);
	   	} while(!feof(stdin) && b);
	   	if(b) free(b);
   	}
   	fputc('\n', stdout);
    return 0;
}