1 ed7c8e8d 2003-09-30 devnull #include <u.h>
2 ed7c8e8d 2003-09-30 devnull #include <libc.h>
3 ed7c8e8d 2003-09-30 devnull #include <draw.h>
6 ed7c8e8d 2003-09-30 devnull stringsubfont(Image *b, Point p, Image *color, Subfont *f, char *cs)
8 ed7c8e8d 2003-09-30 devnull int w, width;
11 ed7c8e8d 2003-09-30 devnull Fontchar *i;
13 ed7c8e8d 2003-09-30 devnull s = (uchar*)cs;
14 ed7c8e8d 2003-09-30 devnull for(; c=*s; p.x+=width){
15 ed7c8e8d 2003-09-30 devnull width = 0;
16 ed7c8e8d 2003-09-30 devnull if(c < Runeself)
19 ed7c8e8d 2003-09-30 devnull w = chartorune(&c, (char*)s);
20 ed7c8e8d 2003-09-30 devnull if(w == 0){
22 ed7c8e8d 2003-09-30 devnull continue;
26 ed7c8e8d 2003-09-30 devnull if(c >= f->n)
27 ed7c8e8d 2003-09-30 devnull continue;
28 ed7c8e8d 2003-09-30 devnull i = f->info+c;
29 ed7c8e8d 2003-09-30 devnull width = i->width;
30 ed7c8e8d 2003-09-30 devnull 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 ed7c8e8d 2003-09-30 devnull color, f->bits, Pt(i->x, i->top));
33 ed7c8e8d 2003-09-30 devnull return p;
37 ed7c8e8d 2003-09-30 devnull strsubfontwidth(Subfont *f, char *cs)
41 ed7c8e8d 2003-09-30 devnull uchar *s;
42 ed7c8e8d 2003-09-30 devnull Fontchar *i;
43 ed7c8e8d 2003-09-30 devnull int w, width;
45 ed7c8e8d 2003-09-30 devnull p = Pt(0, f->height);
46 ed7c8e8d 2003-09-30 devnull s = (uchar*)cs;
47 ed7c8e8d 2003-09-30 devnull for(; c=*s; p.x+=width){
48 ed7c8e8d 2003-09-30 devnull width = 0;
49 ed7c8e8d 2003-09-30 devnull if(c < Runeself)
52 ed7c8e8d 2003-09-30 devnull w = chartorune(&c, (char*)s);
53 ed7c8e8d 2003-09-30 devnull if(w == 0){
55 ed7c8e8d 2003-09-30 devnull continue;
59 ed7c8e8d 2003-09-30 devnull if(c >= f->n)
60 ed7c8e8d 2003-09-30 devnull continue;
61 ed7c8e8d 2003-09-30 devnull i = f->info+c;
62 ed7c8e8d 2003-09-30 devnull width = i->width;
64 ed7c8e8d 2003-09-30 devnull return p;