#include <u.h> | |
#include <libc.h> | |
#include <draw.h> | |
/* | |
* compressed data are seuences of byte codes. | |
* if the first byte b has the 0x80 bit set, the next (b^0x80)+1 bytes | |
* are data. otherwise, it's two bytes specifying a previous string to repeat. | |
*/ | |
void | |
_twiddlecompressed(uchar *buf, int n) | |
{ | |
uchar *ebuf; | |
int j, k, c; | |
ebuf = buf+n; | |
while(buf < ebuf){ | |
c = *buf++; | |
if(c >= 128){ | |
k = c-128+1; | |
for(j=0; j<k; j++, buf++) | |
*buf ^= 0xFF; | |
}else | |
buf++; | |
} | |
} | |
int | |
_compblocksize(Rectangle r, int depth) | |
{ | |
int bpl; | |
bpl = bytesperline(r, depth); | |
bpl = 2*bpl; /* add plenty extra for blocking, etc. */ | |
if(bpl < NCBLOCK) | |
return NCBLOCK; | |
return bpl; | |
} |