Richard Boegli's CnC_Generals_Zero_Hour Fork
WIP
This is documentation of Richard Boegil's Zero Hour Fork
Loading...
Searching...
No Matches
lcwpipe.h
Go to the documentation of this file.
1
/*
2
** Command & Conquer Generals Zero Hour(tm)
3
** Copyright 2025 Electronic Arts Inc.
4
**
5
** This program is free software: you can redistribute it and/or modify
6
** it under the terms of the GNU General Public License as published by
7
** the Free Software Foundation, either version 3 of the License, or
8
** (at your option) any later version.
9
**
10
** This program is distributed in the hope that it will be useful,
11
** but WITHOUT ANY WARRANTY; without even the implied warranty of
12
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
** GNU General Public License for more details.
14
**
15
** You should have received a copy of the GNU General Public License
16
** along with this program. If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
/***********************************************************************************************
20
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
21
***********************************************************************************************
22
* *
23
* Project Name : Command & Conquer *
24
* *
25
* $Archive:: /Commando/Library/LCWPIPE.H $*
26
* *
27
* $Author:: Greg_h $*
28
* *
29
* $Modtime:: 7/22/97 11:37a $*
30
* *
31
* $Revision:: 1 $*
32
* *
33
*---------------------------------------------------------------------------------------------*
34
* Functions: *
35
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36
37
#ifndef LCWPIPE_H
38
#define LCWPIPE_H
39
40
#include "
pipe.h
"
41
42
43
/*
44
** Performs LCW compression/decompression on the data stream that is piped through this
45
** class. The data is compressed in blocks so of small enough size to be compressed
46
** quickly and large enough size to get decent compression rates.
47
*/
48
class
LCWPipe
:
public
Pipe
49
{
50
public
:
51
typedef
enum
CompControl
{
52
COMPRESS
,
53
DECOMPRESS
54
}
CompControl
;
55
56
LCWPipe
(
CompControl
,
int
blocksize=1024*8);
57
virtual
~LCWPipe
(
void
);
58
59
virtual
int
Flush
(
void
);
60
virtual
int
Put
(
void
const
* source,
int
slen);
61
62
private
:
63
/*
64
** This tells the pipe if it should be decompressing or compressing the data stream.
65
*/
66
CompControl
Control;
67
68
/*
69
** The number of bytes accumulated into the staging buffer.
70
*/
71
int
Counter;
72
73
/*
74
** Pointer to the working buffer that compression/decompression will use.
75
*/
76
char
*
Buffer
;
77
char
* Buffer2;
78
79
/*
80
** The working block size. Data will be compressed in chunks of this size.
81
*/
82
int
BlockSize;
83
84
/*
85
** LCW compression requires a safety margin when decompressing over itself. This
86
** margin is only for the worst case situation (very rare).
87
*/
88
int
SafetyMargin;
89
90
/*
91
** Each block has a header of this format.
92
*/
93
struct
{
94
unsigned
short
CompCount
;
// Size of data block (compressed).
95
unsigned
short
UncompCount
;
// Bytes of uncompressed data it represents.
96
} BlockHeader;
97
98
LCWPipe
(
LCWPipe
& rvalue);
99
LCWPipe
& operator = (
LCWPipe
const
& pipe);
100
};
101
102
103
#endif
PIPE.H
Buffer
Definition
BUFF.H:57
LCWPipe
Definition
lcwpipe.h:49
LCWPipe::Put
virtual int Put(void const *source, int slen)
Definition
lcwpipe.cpp:123
LCWPipe::~LCWPipe
virtual ~LCWPipe(void)
Definition
lcwpipe.cpp:94
LCWPipe::CompControl
CompControl
Definition
lcwpipe.h:51
LCWPipe::COMPRESS
@ COMPRESS
Definition
lcwpipe.h:52
LCWPipe::DECOMPRESS
@ DECOMPRESS
Definition
lcwpipe.h:53
LCWPipe::LCWPipe
LCWPipe(CompControl, int blocksize=1024 *8)
Definition
lcwpipe.cpp:66
LCWPipe::UncompCount
unsigned short UncompCount
Definition
lcwpipe.h:95
LCWPipe::CompCount
unsigned short CompCount
Definition
lcwpipe.h:94
LCWPipe::Flush
virtual int Flush(void)
Definition
lcwpipe.cpp:259
Code
Libraries
Source
WWVegas
WWLib
lcwpipe.h
Generated by
1.13.2