- cimage.zip
- BIN
- cimage.dll
- demodll.exe
- test.gif
- cimage.dsw
- CIMAGE
- cimage.gif
- cimage.html
- demo.gif
- imagedll.dsp
- imagelib.dsp
- INCLUDE
- JPEG
- change.log
- filelist.txt
- JCAPIMIN.C
- JCAPISTD.C
- JCCOEFCT.C
- JCCOLOR.C
- JCDCTMGR.C
- JCHUFF.C
- JCHUFF.H
- JCINIT.C
- JCMAINCT.C
- JCMARKER.C
- JCMASTER.C
- JCOMAPI.C
- JCONFIG.H
- jconfig.vc
- JCPARAM.C
- JCPHUFF.C
- JCPREPCT.C
- JCSAMPLE.C
- JCTRANS.C
- JDAPIMIN.C
- JDAPISTD.C
- JDATADST.C
- JDATASRC.C
- JDCOEFCT.C
- JDCOLOR.C
- JDCT.H
- JDDCTMGR.C
- JDHUFF.C
- JDHUFF.H
- JDINPUT.C
- JDMAINCT.C
- JDMARKER.C
- JDMASTER.C
- JDMERGE.C
- JDPHUFF.C
- JDPOSTCT.C
- JDSAMPLE.C
- JDTRANS.C
- JERROR.C
- JERROR.H
- JFDCTFLT.C
- JFDCTFST.C
- JFDCTINT.C
- JIDCTFLT.C
- JIDCTFST.C
- JIDCTINT.C
- JIDCTRED.C
- JINCLUDE.H
- JMEMMGR.C
- JMEMNOBS.C
- JMEMSYS.H
- Jmorecfg.h
- JPEGINT.H
- JPEGLIB.H
- JQUANT1.C
- JQUANT2.C
- JUTILS.C
- JVERSION.H
- Readme.txt
- PNG
- project.gif
- SRC
- TIFF
- DEMO
- ZLIB
|
/* inflate_util.c -- data and routines common to blocks and codes
* Copyright (C) 1995-1998 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "infblock.h"
#include "inftrees.h"
#include "infcodes.h"
#include "infutil.h"
struct inflate_codes_state {int dummy;}; /* for buggy compilers */
/* And'ing with mask[n] masks the lower n bits */
uInt inflate_mask[17] = {
0x0000,
0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
};
/* copy as much as possible from the sliding window to the output area */
int inflate_flush(s, z, r)
inflate_blocks_statef *s;
z_streamp z;
int r;
{
uInt n;
Bytef *p;
Bytef *q;
/* local copies of source and destination pointers */
p = z->next_out;
q = s->read;
/* compute number of bytes to copy as far as end of window */
n = (uInt)((q <= s->write ? s->write : s->end) - q);
if (n > z->avail_out) n = z->avail_out;
if (n && r == Z_BUF_ERROR) r = Z_OK;
/* update counters */
z->avail_out -= n;
z->total_out += n;
/* update check information */
if (s->checkfn != Z_NULL)
z->adler = s->check = (*s->checkfn)(s->check, q, n);
/* copy as far as end of window */
zmemcpy(p, q, n);
p += n;
q += n;
/* see if more to copy at beginning of window */
if (q == s->end)
{
/* wrap pointers */
q = s->window;
if (s->write == s->end)
s->write = s->window;
/* compute bytes to copy */
n = (uInt)(s->write - q);
if (n > z->avail_out) n = z->avail_out;
if (n && r == Z_BUF_ERROR) r = Z_OK;
/* update counters */
z->avail_out -= n;
z->total_out += n;
/* update check information */
if (s->checkfn != Z_NULL)
z->adler = s->check = (*s->checkfn)(s->check, q, n);
/* copy */
zmemcpy(p, q, n);
p += n;
q += n;
}
/* update pointers */
z->next_out = p;
s->read = q;
/* done */
return r;
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.