Mercurial > hg > forks > pwpunix
view pwplib/glyphgen.c @ 55:77f40a3c0095
Cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 27 May 2010 20:16:08 +0300 |
parents | acb5694e93d9 |
children |
line wrap: on
line source
/* * PWPlib: glyph generator ('font fixer') * */ #ifdef DRIVE_UNIX #include <stdio.h> #include <stdlib.h> #include "pwplib.h" #include "tty.h" #include "convert.h" /*****************/ struct { int w,h; } pwp_glyphgen; const char rastmatrix[8*4*4]= " " " " " " " " "x " " " " x " " " " x " " " " x x" " " "x x " " " " x x" " " "x x " " x x" "x x " " x x" "x x " "xxxx" "x x " "xxxx" "xx x" "xxxx" " xxx" "xxxx" "xxxx" "xxxx" "xxxx" "xxxx"; /* #define MKB(a,b,c,d,e,f,g,h) \ ((a<<7)|(b<<6)|(c<<5)|(d<<4)|(e<<3)|(f<<2)|(g<<1)|h) char rastmatrix[4*4]= { MKB(1,1,1,1,1,0,1,0), MKB(1,1,0,0,0,1,0,0), MKB(1,0,1,1,1,0,0,0), MKB(1,1,0,0,0,0,0,0), MKB(1,1,1,0,0,0,0,0), MKB(1,1,1,1,0,0,0,0), MKB(1,1,1,0,0,0,0,0), MKB(1,1,1,1,0,0,0,0), MKB(1,0,1,1,0,0,0,0), MKB(1,1,0,0,1,1,0,0), MKB(1,1,1,1,0,0,1,0), MKB(1,1,0,0,1,1,0,0), MKB(1,1,1,0,0,0,0,0), MKB(1,1,1,1,0,0,0,0), MKB(1,1,1,0,0,0,0,0), MKB(1,1,1,1,0,0,0,0) }; #undef MKB */ char* glyphgen_raster(char*o,int ul,int ur,int dl,int dr) { int x,y; for(y=0;y<pwp_glyphgen.h;y++) for(x=0;x<pwp_glyphgen.w;x++) { int lev=(y<=(pwp_glyphgen.h>>1)? (x<=(pwp_glyphgen.w>>1)?ul:ur): (x<=(pwp_glyphgen.w>>1)?dl:dr)); /* another possiblity: interpolated rasters? */ *o++=rastmatrix[16*lev+4*(y&3)+(x&3)]>32?1:0; /* (rastmatrix[4*(y&3)+(x&3)]>>lev)&1 */ } return o; } char* glyphgen_64rast(char*o,int width,int height) { int u,d; pwp_glyphgen.w=width; pwp_glyphgen.h=height; for(u=0;u<8;u++) for(d=u?0:1;d<8;d++) o=glyphgen_raster(o,u,u,d,d); return o; } /* 96rast (94rast?) will be more clever, designed for 2x2 resolution */ void glyphgen_fixtoibm(char*o,int width,int height) { int c=width*height; pwp_glyphgen.w=width; pwp_glyphgen.h=height; o=glyphgen_raster(o+c*176, 2,2,2,2); o=glyphgen_raster(o,4,4,4,4); glyphgen_raster(o,6,6,6,6); o=glyphgen_raster(o+c*(219-178), 7,7,7,7); o=glyphgen_raster(o,0,0,7,7); o=glyphgen_raster(o,7,0,7,0); o=glyphgen_raster(o,0,7,0,7); glyphgen_raster(o,7,7,0,0); } /* fixtopwp: has 96rast set + enhancements for text art (ripoffs from petscii etc) ? linuxcon: loadpwpfont - loads a 8x8 (8x7?) font */ #endif