home *** CD-ROM | disk | FTP | other *** search
/ PC Shareware 1997 June / PC_Shareware-1997-06.iso / manga / mp2win95 / _setup.1 / BIT_RES.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-10  |  2.5 KB  |  136 lines

  1. #define STRICT
  2. #define WIN32_LEAN_AND_MEAN
  3. #define NOMCX
  4. #define NOIME
  5. #define NOGDI
  6. #define NOUSER
  7. #define NOSOUND
  8. #define NOCOMM
  9. #define NODRIVERS
  10. #define OEMRESOURCE
  11. #define NONLS
  12. #define NOSERVICE
  13. #define NOKANJI
  14. #define NOMINMAX
  15. #define NOLOGERROR
  16. #define NOPROFILER
  17. #define NOMEMMGR
  18. #define NOLFILEIO
  19. #define NOOPENFILE
  20. #define NORESOURCE
  21. #define NOATOM
  22. #define NOLANGUAGE
  23. #define NOLSTRING
  24. #define NODBCS
  25. #define NOKEYBOARDINFO
  26. #define NOGDICAPMASKS
  27. #define NOCOLOR
  28. #define NOGDIOBJ
  29. #define NODRAWTEXT
  30. #define NOTEXTMETRIC
  31. #define NOSCALABLEFONT
  32. #define NOBITMAP
  33. #define NORASTEROPS
  34. #define NOMETAFILE
  35. #define NOSYSMETRICS
  36. #define NOSYSTEMPARAMSINFO
  37. #define NOMSG
  38. #define NOWINSTYLES
  39. #define NOWINOFFSETS
  40. #define NOSHOWWINDOW
  41. #define NODEFERWINDOWPOS
  42. #define NOVIRTUALKEYCODES
  43. #define NOKEYSTATES
  44. #define NOWH
  45. #define NOMENUS
  46. #define NOSCROLL
  47. #define NOCLIPBOARD
  48. #define NOICONS
  49. #define NOMB
  50. #define NOSYSCOMMANDS
  51. #define NOMDI
  52. #define NOCTLMGR
  53. #define NOWINMESSAGES
  54. #define NOHELP
  55. #define _WINUSER_
  56. #define __oleidl_h__
  57. #define _OLE2_H_
  58.  
  59. #include <windows.h>
  60. #include "bit_res.h"
  61.  
  62. Bit_Reserve::Bit_Reserve ()
  63. {
  64.     offset = totbit = buf_byte_idx = 0;
  65.     buf = new unsigned int[BUFSIZE];
  66.     buf_bit_idx = 8;
  67.     putmask = new int [10];
  68.     putmask[0] = 0x000;
  69.     putmask[1] = 0x001;
  70.     putmask[2] = 0x003;
  71.     putmask[3] = 0x007;
  72.     putmask[4] = 0x00f;
  73.     putmask[5] = 0x01f;
  74.     putmask[6] = 0x03f;
  75.     putmask[7] = 0x07f;
  76.     putmask[8] = 0x0ff;
  77.     putmask[9] = 0x1ff;
  78. }
  79.  
  80. Bit_Reserve::~Bit_Reserve ()
  81. {
  82.     delete [] putmask;
  83.     delete [] buf;
  84. }
  85.  
  86. /*read N bit from the bit stream */
  87. unsigned int Bit_Reserve::hgetbits(int N)
  88. {
  89.  unsigned int val=0;
  90.  int j = N;
  91.  int k, tmp;
  92.  
  93.  totbit += N;
  94.  while (j > 0) {
  95.     if (!buf_bit_idx) {
  96.          buf_bit_idx = 8;
  97.          buf_byte_idx++;
  98. /*    if (buf_byte_idx > offset)
  99.       { printf("Buffer overflow !!\n");exit(3); } */
  100.     }
  101.  
  102.     k = (j < buf_bit_idx) ? j : buf_bit_idx;
  103.    /* BUFSIZE = 4096 = 2^12, so buf_byte_idx%BUFSIZE ==
  104.       buf_byte_idx & 0xfff */
  105.    tmp = buf[buf_byte_idx & 0xfff] & putmask[buf_bit_idx];
  106.    buf_bit_idx -= k;
  107.     tmp = tmp >> buf_bit_idx;
  108.    j -=k;
  109.    val |= tmp << j;
  110.  }
  111.  return(val);
  112. }
  113.  
  114. /*write 8 bits into the bit stream */
  115. void Bit_Reserve::hputbuf(unsigned int val)
  116. {
  117.   buf[offset & 0xfff] = val;
  118.   offset++;
  119. }
  120.  
  121. void Bit_Reserve::rewindNbits(int N)
  122. {
  123.     totbit -= N;
  124.     buf_bit_idx += N;
  125.     while( buf_bit_idx >= 8 )
  126.     {  buf_bit_idx -= 8;
  127.         buf_byte_idx--;
  128.     }
  129. }
  130.  
  131. void Bit_Reserve::rewindNbytes(int N)
  132. {
  133.    totbit -= (N << 3);
  134.     buf_byte_idx -= N;
  135. }
  136.