mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-15 23:21:40 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
98
Code/wwbitpack/BitPacker.h
Normal file
98
Code/wwbitpack/BitPacker.h
Normal file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
** Command & Conquer Renegade(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
//
|
||||
// Filename: bitpacker.h
|
||||
// Project: wwbitpack.lib
|
||||
// Author: Tom Spencer-Smith
|
||||
// Date: June 1998
|
||||
// Description: Minimal bit encoding
|
||||
//
|
||||
|
||||
#ifndef BITPACKER_H
|
||||
#define BITPACKER_H
|
||||
|
||||
|
||||
#include "always.h"
|
||||
#include "bittype.h"
|
||||
|
||||
|
||||
#pragma warning(disable:4514)
|
||||
|
||||
static const int MAX_BITS = 32;
|
||||
|
||||
// 1400 is too big. Minimum MTU allowable on the internet is 576. IP Header is 20 bytes. UDP header is 8 bytes
|
||||
// So our max packet size is 576 - 28 = 548
|
||||
//static const int MAX_BUFFER_SIZE = 1400;
|
||||
static const int MAX_BUFFER_SIZE = 548;
|
||||
|
||||
class cBitPacker
|
||||
{
|
||||
public:
|
||||
//cBitPacker(UINT buffer_size);
|
||||
cBitPacker();
|
||||
virtual ~cBitPacker();
|
||||
|
||||
char * Get_Data() const {return (char *) Buffer;}
|
||||
//UINT Get_Buffer_Size() const {return BufferSize;}
|
||||
UINT Get_Buffer_Size() const {return MAX_BUFFER_SIZE;}
|
||||
void Flush() {BitReadPosition = BitWritePosition;}
|
||||
bool Is_Flushed() const {return (BitReadPosition == BitWritePosition);}
|
||||
|
||||
void Add_Bits(ULONG value, UINT num_bits);
|
||||
void Get_Bits(ULONG & value, UINT num_bits);
|
||||
|
||||
void Set_Bit_Write_Position(UINT position);
|
||||
UINT Get_Bit_Write_Position() const {return BitWritePosition;}
|
||||
|
||||
protected:
|
||||
cBitPacker& operator=(const cBitPacker& rhs);
|
||||
|
||||
private:
|
||||
|
||||
cBitPacker(const cBitPacker& source); // Disallow copy constructor
|
||||
|
||||
//BYTE * Buffer;
|
||||
//const UINT BufferSize;
|
||||
BYTE Buffer[MAX_BUFFER_SIZE];
|
||||
UINT BitWritePosition;
|
||||
UINT BitReadPosition;
|
||||
};
|
||||
|
||||
#endif // BITPACKER_H
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void Reset() {BitWritePosition = 0;}
|
||||
UINT Get_Compressed_Size_Bytes() const;
|
||||
|
||||
void Flush() {NumBits = 0;}
|
||||
bool Is_Flushed() const {return (NumBits < 8);}
|
||||
|
||||
void Set_Num_Bits(int num) {WWASSERT(num >= 0); NumBits = num;}
|
||||
int Get_Num_Bits(void) {return NumBits;}
|
||||
|
||||
void Increment_Bit_Position(int num_bits);
|
||||
|
||||
|
||||
//inline void Advance_Bit_Position();
|
||||
|
||||
//int NumBits;
|
||||
*/
|
||||
Reference in New Issue
Block a user