[go: up one dir, main page]

File: decoder.h

package info (click to toggle)
sfftobmp 3.1.3-7
  • links: PTS
  • area: main
  • in suites: bullseye
  • size: 23,452 kB
  • sloc: cpp: 148,005; ansic: 85,028; sh: 14,606; makefile: 587; asm: 284
file content (104 lines) | stat: -rw-r--r-- 2,814 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#ifndef __DECODER_H__
#define __DECODER_H__
//
// Headerfile for decoder classes
//
// This file is part of sfftobmp, a program to convert
// structured fax files (sff) to windows bitmap files (bmp),
// portable bitmap graphics (pbm), tagged image file format (tiff)
// or JPEG (jpg).
//
// Copyright (C) 1998-2008 Peter Schaefer-Hutter and contributors ("THE AUTHORS")
//
// Permission to use, copy, modify, distribute, and sell this software and
// its documentation for any purpose is hereby granted without fee.
//
// THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
// EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
// WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
//
// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL,
// INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
// DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
// WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY
// THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE
// OR PERFORMANCE OF THIS SOFTWARE.
//
// Contributor(s):
//   None
//
// You can contact the original author by email at peter.schaefer@gmx.de.
//
// I'm always pleased to hear that somebody is actually using my software.
// If you can manage it, e-mail me a quick notice. Thanks!
//
/*-RCS-Info----------------------------------------------------

 $Id: decoder.h,v 1.3 2008/09/13 13:06:26 pschaefer Exp $

---RCS-Info--------------------------------------------------*/

class CBitSource
{
private:
  sff_byte *m_pBuffer;
  sff_word  m_wBitsAvail;
  sff_dword m_dwAccu;
  sff_dword m_dwByteCount;

public:
  void NeedBits(int nCount);
  void ClrBits(int nCount);
  sff_word GetBits(int nCount);
  bool NoMoreBits();

  CBitSource(void *pBuffer, sff_dword nByteCount);
};

//-----------------------------------------------------------------

class CBitSink
{
protected:
  sff_byte *m_pBuffer;

  sff_dword m_dwBitPos;
  sff_dword m_dwByteCount;
  sff_dword m_dwBitCount;

public:
  void Reset();

  virtual void SetBits(int nCount);
  virtual void ClearBits(int nCount);

  CBitSink(void *pBuffer, sff_dword nByteCount);
};

//-----------------------------------------------------------------

class CByteSink : public CBitSink
{
public:
  CByteSink(void *pBuffer, sff_dword nByteCount) :
    CBitSink(pBuffer, nByteCount) { /* nth. else */ };

  void SetBits(int nCount);
};

//-----------------------------------------------------------------

class CHuffDecoder : public CBitSource
{
protected:
  sff_dword m_dwRunlength;

public:
  CHuffDecoder(sff_byte *pBuffer, sff_dword nByteCount) :
    CBitSource(pBuffer, nByteCount) { /* nth. else */ };

  int FindToken(LPTABENTRY pTable);
  int DecodeLine(CBitSink& aBitSink);
};

#endif // __DECODER_H__