Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#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;
}