URI:
       tstring.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tstring.c (1032B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 #include <draw.h>
            4 #include <memdraw.h>
            5 
            6 Point
            7 memimagestring(Memimage *b, Point p, Memimage *color, Point cp, Memsubfont *f, char *cs)
            8 {
            9         int w, width;
           10         uchar *s;
           11         Rune c;
           12         Fontchar *i;
           13 
           14         s = (uchar*)cs;
           15         for(; c=*s; p.x+=width, cp.x+=width){
           16                 width = 0;
           17                 if(c < Runeself)
           18                         s++;
           19                 else{
           20                         w = chartorune(&c, (char*)s);
           21                         if(w == 0){
           22                                 s++;
           23                                 continue;
           24                         }
           25                         s += w;
           26                 }
           27                 if(c >= f->n)
           28                         continue;
           29                 i = f->info+c;
           30                 width = i->width;
           31                 memdraw(b, Rect(p.x+i->left, p.y+i->top, p.x+i->left+(i[1].x-i[0].x), p.y+i->bottom),
           32                         color, cp, f->bits, Pt(i->x, i->top), SoverD);
           33         }
           34         return p;
           35 }
           36 
           37 Point
           38 memsubfontwidth(Memsubfont *f, char *cs)
           39 {
           40         Rune c;
           41         Point p;
           42         uchar *s;
           43         Fontchar *i;
           44         int w, width;
           45 
           46         p = Pt(0, f->height);
           47         s = (uchar*)cs;
           48         for(; c=*s; p.x+=width){
           49                 width = 0;
           50                 if(c < Runeself)
           51                         s++;
           52                 else{
           53                         w = chartorune(&c, (char*)s);
           54                         if(w == 0){
           55                                 s++;
           56                                 continue;
           57                         }
           58                         s += w;
           59                 }
           60                 if(c >= f->n)
           61                         continue;
           62                 i = f->info+c;
           63                 width = i->width;
           64         }
           65         return p;
           66 }