Blame


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>
4 ed7c8e8d 2003-09-30 devnull
5 ed7c8e8d 2003-09-30 devnull /*
6 fa325e9b 2020-01-10 cross * compressed data are seuences of byte codes.
7 ed7c8e8d 2003-09-30 devnull * if the first byte b has the 0x80 bit set, the next (b^0x80)+1 bytes
8 ed7c8e8d 2003-09-30 devnull * are data. otherwise, it's two bytes specifying a previous string to repeat.
9 ed7c8e8d 2003-09-30 devnull */
10 ed7c8e8d 2003-09-30 devnull void
11 ed7c8e8d 2003-09-30 devnull _twiddlecompressed(uchar *buf, int n)
12 ed7c8e8d 2003-09-30 devnull {
13 ed7c8e8d 2003-09-30 devnull uchar *ebuf;
14 ed7c8e8d 2003-09-30 devnull int j, k, c;
15 ed7c8e8d 2003-09-30 devnull
16 ed7c8e8d 2003-09-30 devnull ebuf = buf+n;
17 ed7c8e8d 2003-09-30 devnull while(buf < ebuf){
18 ed7c8e8d 2003-09-30 devnull c = *buf++;
19 ed7c8e8d 2003-09-30 devnull if(c >= 128){
20 ed7c8e8d 2003-09-30 devnull k = c-128+1;
21 ed7c8e8d 2003-09-30 devnull for(j=0; j<k; j++, buf++)
22 ed7c8e8d 2003-09-30 devnull *buf ^= 0xFF;
23 ed7c8e8d 2003-09-30 devnull }else
24 ed7c8e8d 2003-09-30 devnull buf++;
25 ed7c8e8d 2003-09-30 devnull }
26 ed7c8e8d 2003-09-30 devnull }
27 ed7c8e8d 2003-09-30 devnull
28 ed7c8e8d 2003-09-30 devnull int
29 ed7c8e8d 2003-09-30 devnull _compblocksize(Rectangle r, int depth)
30 ed7c8e8d 2003-09-30 devnull {
31 ed7c8e8d 2003-09-30 devnull int bpl;
32 ed7c8e8d 2003-09-30 devnull
33 ed7c8e8d 2003-09-30 devnull bpl = bytesperline(r, depth);
34 ed7c8e8d 2003-09-30 devnull bpl = 2*bpl; /* add plenty extra for blocking, etc. */
35 ed7c8e8d 2003-09-30 devnull if(bpl < NCBLOCK)
36 ed7c8e8d 2003-09-30 devnull return NCBLOCK;
37 ed7c8e8d 2003-09-30 devnull return bpl;
38 ed7c8e8d 2003-09-30 devnull }