MCPcopy Create free account
hub / github.com/DFHack/dfhack / deflateFixed

Function deflateFixed

depends/lodepng/lodepng.cpp:2029–2072  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2027}
2028
2029static unsigned deflateFixed(LodePNGBitWriter* writer, Hash* hash,
2030 const unsigned char* data,
2031 size_t datapos, size_t dataend,
2032 const LodePNGCompressSettings* settings, unsigned final) {
2033 HuffmanTree tree_ll; /*tree for literal values and length codes*/
2034 HuffmanTree tree_d; /*tree for distance codes*/
2035
2036 unsigned BFINAL = final;
2037 unsigned error = 0;
2038 size_t i;
2039
2040 HuffmanTree_init(&tree_ll);
2041 HuffmanTree_init(&tree_d);
2042
2043 error = generateFixedLitLenTree(&tree_ll);
2044 if(!error) error = generateFixedDistanceTree(&tree_d);
2045
2046 if(!error) {
2047 writeBits(writer, BFINAL, 1);
2048 writeBits(writer, 1, 1); /*first bit of BTYPE*/
2049 writeBits(writer, 0, 1); /*second bit of BTYPE*/
2050
2051 if(settings->use_lz77) /*LZ77 encoded*/ {
2052 uivector lz77_encoded;
2053 uivector_init(&lz77_encoded);
2054 error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize,
2055 settings->minmatch, settings->nicematch, settings->lazymatching);
2056 if(!error) writeLZ77data(writer, &lz77_encoded, &tree_ll, &tree_d);
2057 uivector_cleanup(&lz77_encoded);
2058 } else /*no LZ77, but still will be Huffman compressed*/ {
2059 for(i = datapos; i < dataend; ++i) {
2060 writeBitsReversed(writer, tree_ll.codes[data[i]], tree_ll.lengths[data[i]]);
2061 }
2062 }
2063 /*add END code*/
2064 if(!error) writeBitsReversed(writer,tree_ll.codes[256], tree_ll.lengths[256]);
2065 }
2066
2067 /*cleanup*/
2068 HuffmanTree_cleanup(&tree_ll);
2069 HuffmanTree_cleanup(&tree_d);
2070
2071 return error;
2072}
2073
2074static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize,
2075 const LodePNGCompressSettings* settings) {

Callers 1

lodepng_deflatevFunction · 0.85

Calls 10

HuffmanTree_initFunction · 0.85
generateFixedLitLenTreeFunction · 0.85
writeBitsFunction · 0.85
uivector_initFunction · 0.85
encodeLZ77Function · 0.85
writeLZ77dataFunction · 0.85
uivector_cleanupFunction · 0.85
writeBitsReversedFunction · 0.85
HuffmanTree_cleanupFunction · 0.85

Tested by

no test coverage detected