2016-11-25 17:18:40 +01:00
|
|
|
/*
|
|
|
|
* This file is part of the UCB release of Plan 9. It is subject to the license
|
|
|
|
* terms in the LICENSE file found in the top-level directory of this
|
|
|
|
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
|
|
|
|
* part of the UCB release of Plan 9, including this file, may be copied,
|
|
|
|
* modified, propagated, or distributed except according to the terms contained
|
|
|
|
* in the LICENSE file.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <u.h>
|
2017-04-19 23:33:14 +02:00
|
|
|
#include <lib9.h>
|
2016-11-25 17:18:40 +01:00
|
|
|
#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(uint8_t *buf, int n)
|
|
|
|
{
|
|
|
|
uint8_t *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;
|
|
|
|
}
|