mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-15 11:20:03 +00:00
39 lines
680 B
C
39 lines
680 B
C
|
#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;
|
||
|
}
|