FaxParams.h
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:4k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. /*
  2.  * Copyright (c) 1990-1996 Sam Leffler
  3.  * Copyright (c) 1991-1996 Silicon Graphics, Inc.
  4.  * HylaFAX is a trademark of Silicon Graphics
  5.  *
  6.  * Permission to use, copy, modify, distribute, and sell this software and 
  7.  * its documentation for any purpose is hereby granted without fee, provided
  8.  * that (i) the above copyright notices and this permission notice appear in
  9.  * all copies of the software and related documentation, and (ii) the names of
  10.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  11.  * publicity relating to the software without the specific, prior written
  12.  * permission of Sam Leffler and Silicon Graphics.
  13.  * 
  14.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  15.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  16.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  17.  * 
  18.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  19.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  20.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  22.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  23.  * OF THIS SOFTWARE.
  24.  */
  25. #ifndef fax_capabilities
  26. #define fax_capabilities
  27. #include "Types.h"
  28. #include "Str.h"
  29. struct Class2Params;
  30. #define MAX_BITSTRING_BYTES 16
  31. /* The FaxParams class stores the DIS/DCS bitstring according to Table 2 
  32.  * T.30.  Before this class, dis/dcs were limited to 24 bits and 32 bits of
  33.  * optional data.  Merging them into this one class removes that limitation.
  34.  * Table 2 T.30 starts the index at one.  This class follows that same
  35.  * convention.  Only bit numbers start at index one.  Byte numbers in this class
  36.  * follow the c convention of the index starting at zero.
  37.  *
  38.  */
  39. class FaxParams
  40. {
  41.     public:
  42. FaxParams();
  43. FaxParams(u_int disDcs, u_int xinfo);
  44. FaxParams(u_char* pBits, int length);
  45. virtual ~FaxParams(void);
  46. virtual void update(bool isDIS);
  47. void setBit(int bitNum, bool val);
  48. bool isBitEnabled(int bitNum);
  49. u_char getByte(int byteNum) const;
  50. bool hasNextByte(int byteNum) const;
  51. void asciiEncode(fxStr&) const;
  52. void asciiDecode(const char*);
  53. bool operator==(const FaxParams& operand) const;
  54. bool operator!=(const FaxParams& operand) const;
  55. FaxParams& operator=(const FaxParams& operand);
  56.     protected:
  57. void setupT30(u_char* pBits, int length);
  58. void setupT30(u_int dcs_dis, u_int xinfo);
  59. static const int BITNUM_V8_CAPABLE; //  6;
  60. static const int BITNUM_FRAMESIZE_DIS; //  7;
  61. static const int BITNUM_T4XMTR; //  9;
  62. static const int BITNUM_T4RCVR; // 10;
  63. static const int BITNUM_SIGRATE_11; // 11;
  64. static const int BITNUM_SIGRATE_12; // 12;
  65. static const int BITNUM_SIGRATE_13; // 13;
  66. static const int BITNUM_SIGRATE_14; // 14;
  67. static const int BITNUM_VR_FINE; // 15;
  68. static const int BITNUM_2DMR; // 16;
  69. static const int BITNUM_WIDTH_17; // 17;
  70. static const int BITNUM_WIDTH_18; // 18;
  71. static const int BITNUM_LENGTH_19; // 19;
  72. static const int BITNUM_LENGTH_20; // 20;
  73. static const int BITNUM_ST_21; // 21;
  74. static const int BITNUM_ST_22; // 22;
  75. static const int BITNUM_ST_23; // 23;
  76. static const int BITNUM_ECM; // 27;
  77. static const int BITNUM_FRAMESIZE_DCS; // 28;
  78. static const int BITNUM_2DMMR; // 31;
  79. static const int BITNUM_JBIG; // 36;
  80. static const int BITNUM_VR_R8; // 41;
  81. static const int BITNUM_VR_300X300; // 42;
  82. static const int BITNUM_VR_R16; // 43;
  83. static const int BITNUM_INCH_RES; // 44;
  84. static const int BITNUM_METRIC_RES; // 45;
  85. static const int BITNUM_SEP; // 47;
  86. static const int BITNUM_SUB; // 49;
  87. static const int BITNUM_PWD; // 50;
  88. static const int BITNUM_JPEG; // 68;
  89. static const int BITNUM_FULLCOLOR; // 69;
  90. static const int BITNUM_LETTER_SIZE; // 76;
  91. static const int BITNUM_LEGAL_SIZE; // 77;
  92. static const int BITNUM_JBIG_BASIC; // 78;
  93. static const int BITNUM_JBIG_L0; // 79;
  94. FaxParams& assign (const FaxParams&);
  95. // Class1Modem wants intimate knowledge of the BITS&BYTES
  96. friend class Class1Modem;
  97.     private:
  98. void initializeBitString();
  99. int calculateByteNumber(int bitNum);
  100. u_char calculateMask(int bitNum);
  101. void setExtendBits(int byteNum);
  102. void unsetExtendBits();
  103. bool validBitNumber(int bitNum);
  104.     
  105. u_char m_bits[MAX_BITSTRING_BYTES];
  106. };
  107. inline FaxParams& FaxParams::operator= (const FaxParams& p)
  108. {
  109.     return assign(p);
  110. }
  111. #endif