]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libdraw/computil.c
libdraw, screenrc: bind devdraw and devmouse in screenrc instead of handling it in...
[plan9front.git] / sys / src / libdraw / computil.c
1 #include <u.h>
2 #include <libc.h>
3 #include <draw.h>
4
5 /*
6  * compressed data are seuences of byte codes.  
7  * if the first byte b has the 0x80 bit set, the next (b^0x80)+1 bytes
8  * are data.  otherwise, it's two bytes specifying a previous string to repeat.
9  */
10 void
11 _twiddlecompressed(uchar *buf, int n)
12 {
13         uchar *ebuf;
14         int j, k, c;
15
16         ebuf = buf+n;
17         while(buf < ebuf){
18                 c = *buf++;
19                 if(c >= 128){
20                         k = c-128+1;
21                         for(j=0; j<k; j++, buf++)
22                                 *buf ^= 0xFF;
23                 }else
24                         buf++;
25         }
26 }
27
28 int
29 _compblocksize(Rectangle r, int depth)
30 {
31         int bpl;
32
33         bpl = bytesperline(r, depth);
34         bpl = 2*bpl;    /* add plenty extra for blocking, etc. */
35         if(bpl < NCBLOCK)
36                 return NCBLOCK;
37         return bpl;
38 }