Annotation of lucent/sys/src/libgnot/f003244, revision 1.1.1.1

1.1       root        1: #include <u.h>
                      2: #include <libc.h>
                      3: #include <libg.h>
                      4: #include <gnot.h>
                      5: 
                      6: Point
                      7: gsubfstring(GBitmap *b, Point p, GSubfont *f, char *cs, Fcode fc)
                      8: {
                      9:        int w, width;
                     10:        int full;
                     11:        uchar *s;
                     12:        Rectangle r;
                     13:        Rune c;
                     14:        Fontchar *i;
                     15: 
                     16:        s = (uchar*)cs;
                     17:        fc &= F;
                     18:        full = fc==S || fc==notS;       /* for reverse-video */
                     19:        if(full){
                     20:                r.min.y = 0;
                     21:                r.max.y = f->height;
                     22:        }
                     23:        for(; c=*s; p.x+=width){
                     24:                width = 0;
                     25:                if(c < Runeself)
                     26:                        s++;
                     27:                else{
                     28:                        w = chartorune(&c, (char*)s);
                     29:                        if(w == 0){
                     30:                                s++;
                     31:                                continue;
                     32:                        }
                     33:                        s += w;
                     34:                }
                     35:                if(c >= f->n)
                     36:                        continue;
                     37:                i = f->info+c;
                     38:                width = i->width;
                     39:                if(!full){
                     40:                        r.min.y = i->top;
                     41:                        r.max.y = i->bottom;
                     42:                }
                     43:                r.min.x = i[0].x;
                     44:                r.max.x = i[1].x;
                     45:                gbitblt(b, Pt(p.x+i->left, p.y+r.min.y), f->bits, r, fc);
                     46:        }
                     47:        return p;
                     48: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.