OpenMoHAA 0.82.1
Loading...
Searching...
No Matches
lz77.h
1/*
2===========================================================================
3Copyright (C) 2025 the OpenMoHAA team
4
5This file is part of OpenMoHAA source code.
6
7OpenMoHAA source code is free software; you can redistribute it
8and/or modify it under the terms of the GNU General Public License as
9published by the Free Software Foundation; either version 2 of the License,
10or (at your option) any later version.
11
12OpenMoHAA source code is distributed in the hope that it will be
13useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with OpenMoHAA source code; if not, write to the Free Software
19Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20===========================================================================
21*/
22
23// lz77.h: LZ77 Compression Algorithm
24
25#pragma once
26
27#include <cstddef>
28
29class cLZ77
30{
31 static unsigned int m_pDictionary[];
32
33 unsigned char *ip;
34 unsigned char *op;
35 unsigned char *in_end;
36 unsigned char *ip_end;
37 unsigned char *ii;
38 unsigned char *m_pos;
39 unsigned int m_off;
40 unsigned int m_len;
41 unsigned int dindex;
42
43public:
44 cLZ77();
45
55 int Compress(unsigned char *in, size_t in_len, unsigned char *out, size_t *out_len);
56
66 int Decompress(unsigned char *in, size_t in_len, unsigned char *out, size_t *out_len);
67
68private:
69 unsigned int CompressData(unsigned char *in, size_t in_len, unsigned char *out, size_t *out_len);
70};
71
72extern cLZ77 g_lz77;
Definition lz77.h:30
int Compress(unsigned char *in, size_t in_len, unsigned char *out, size_t *out_len)
Compress a block of data using an LZ77 coder.
Definition lz77.cpp:193
int Decompress(unsigned char *in, size_t in_len, unsigned char *out, size_t *out_len)
Uncompress a block of data using an LZ77 decoder.
Definition lz77.cpp:253