Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <draw.h>
4
 
5
Point
6
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;
12
 
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
}
35
 
36
Point
37
strsubfontwidth(Subfont *f, char *cs)
38
{
39
	Rune c;
40
	Point p;
41
	uchar *s;
42
	Fontchar *i;
43
	int w, width;
44
 
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
}