Blob
1 #include <u.h>2 #include <libc.h>3 #include <draw.h>5 Point6 stringsubfont(Image *b, Point p, Image *color, Subfont *f, char *cs)7 {8 int w, width;9 uchar *s;10 Rune c;11 Fontchar *i;13 s = (uchar*)cs;14 for(; c=*s; p.x+=width){15 width = 0;16 if(c < Runeself)17 s++;18 else{19 w = chartorune(&c, (char*)s);20 if(w == 0){21 s++;22 continue;23 }24 s += w;25 }26 if(c >= f->n)27 continue;28 i = f->info+c;29 width = i->width;30 draw(b, Rect(p.x+i->left, p.y+i->top, p.x+i->left+(i[1].x-i[0].x), p.y+i->bottom),31 color, f->bits, Pt(i->x, i->top));32 }33 return p;34 }36 Point37 strsubfontwidth(Subfont *f, char *cs)38 {39 Rune c;40 Point p;41 uchar *s;42 Fontchar *i;43 int w, width;45 p = Pt(0, f->height);46 s = (uchar*)cs;47 for(; c=*s; p.x+=width){48 width = 0;49 if(c < Runeself)50 s++;51 else{52 w = chartorune(&c, (char*)s);53 if(w == 0){54 s++;55 continue;56 }57 s += w;58 }59 if(c >= f->n)60 continue;61 i = f->info+c;62 width = i->width;63 }64 return p;65 }