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

传真(Fax)编程

开发平台:

C/C++

  1. /* $Id: Class2Params.h,v 1.3 2007/02/21 19:23:06 faxguy Exp $ */
  2. /*
  3.  * Copyright (c) 1990-1996 Sam Leffler
  4.  * Copyright (c) 1991-1996 Silicon Graphics, Inc.
  5.  * HylaFAX is a trademark of Silicon Graphics
  6.  *
  7.  * Permission to use, copy, modify, distribute, and sell this software and 
  8.  * its documentation for any purpose is hereby granted without fee, provided
  9.  * that (i) the above copyright notices and this permission notice appear in
  10.  * all copies of the software and related documentation, and (ii) the names of
  11.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  12.  * publicity relating to the software without the specific, prior written
  13.  * permission of Sam Leffler and Silicon Graphics.
  14.  * 
  15.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  16.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  17.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  18.  * 
  19.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24.  * OF THIS SOFTWARE.
  25.  */
  26. #ifndef _Class2Params_
  27. #define _Class2Params_
  28. /*
  29.  * Class 2 T.30 parameter wrapper.
  30.  */
  31. #include "class2.h"
  32. #include "Str.h"
  33. #include "FaxParams.h"
  34. class Class2Params 
  35.   : public FaxParams
  36. {
  37. private:
  38. // XXX these exist solely for FaxModem
  39.     static const char* pageWidthNames[8];
  40.     static const char* pageLengthNames[4];
  41.     static const char* verticalResNames[65];
  42.     static const char* scanlineTimeNames[8];
  43.     static const char* dataFormatNames[7];
  44.     static const char* ecmNames[8];
  45.     friend class FaxModem;
  46. public:
  47.     u_int vr; // vertical resolution (VR_*)
  48.     u_int br; // bit rate (BR_*)
  49.     u_int wd; // page width (WD_*)
  50.     u_int ln; // page length (LN_*)
  51.     u_int df; // data format (DF_*)
  52.     u_int ec; // error correction protocol (EC_*)
  53.     u_int bf; // binary file transfer protocol (BF_*)
  54.     u_int st; // minimum scanline time (ST_*)
  55.     u_int jp; // JPEG support (JP_*)
  56. // tables for mapping Class 2 codes to T.30 DIS/DCS codes
  57.     static u_int vrDISTab[2]; // vertical resolution
  58.     static u_int dfDISTab[4]; // data compression format
  59.     static u_int wdDISTab[8]; // page width
  60.     static u_int lnDISTab[3]; // page length
  61.     static u_int stDISTab[8]; // min scanline time (DIS specific)
  62.     static u_int stDCSTab[8]; // min scanline time (DCS specific)
  63.     static u_int brDISTab[8]; // bit rate (DIS specific)
  64.     static u_int brDCSTab[8]; // bit rate (DCS specific)
  65. // tables for mapping T.30 DIS/DCS values to Class 2 codes
  66.     static u_int DISvrTab[2]; // vertical resolution
  67.     static u_int DISdfTab[2]; // data compression format
  68.     static u_int DISwdTab[4]; // page width
  69.     static u_int DISlnTab[4]; // page length
  70.     static u_int DISstTab[8]; // min scanline time
  71.     static u_int DISbrTab[16]; // DIS best bit rate
  72.     static u_int DCSbrTab[16]; // DIS actual bit rate
  73.     Class2Params();
  74.     virtual void update(bool isDIS);
  75.     int operator==(const Class2Params&) const;
  76.     int operator!=(const Class2Params&) const;
  77.     fxStr cmd(bool class2UseHex, bool ecm20 = false, bool doDFbitmap = false, bool useJP = false) const; // format AT+F cmd string
  78.     void setFromDIS(FaxParams& dis);
  79.     void setFromDIS(u_int dis, u_int xinfo = 0);
  80.     void setFromDCS(FaxParams& dcs);
  81.     void setFromDCS(u_int dcs, u_int xinfo = 0);
  82.     bool is2D() const;
  83.     u_int transferSize(u_int ms) const;
  84.     u_int minScanlineSize() const;
  85.     u_int pageWidth() const; // page width in mm
  86.     void setPageWidthInPixels(u_int w);
  87.     void setPageWidthInMM(u_int w);
  88.     u_int pageLength() const; // page length in mm
  89.     void setPageLengthInMM(u_int l);
  90.     u_int verticalRes() const; // lines/inch
  91.     u_int horizontalRes() const; // dpi
  92.     void setRes(u_int xres, u_int yres);
  93.     u_int getMinSpeed() const;
  94.     static const char* bitRateNames[16]; // XXX needed by Class 1 driver
  95.     const char* pageWidthName() const;
  96.     const char* pageLengthName() const;
  97.     const char* bitRateName() const;
  98.     u_int bitRate() const; // bits/second value
  99.     const char* verticalResName() const;
  100.     const char* bestVerticalResName() const;
  101.     const char* scanlineTimeName() const;
  102.     const char* dataFormatName() const;
  103.     fxStr dataFormatsName();
  104.     const char* ecmName() const;
  105.     u_int encode() const; // generate encoded params
  106.     void decode(u_int); // decode previously encoded params
  107.     fxStr encodePage() const; // generate encoded page params
  108.     void decodePage(const char*); // decode previously encoded page params
  109.     u_int encodeCaps() const; // generate encoded capabilities
  110.     void decodeCaps(u_int); // decode capabilities
  111. };
  112. #endif /* _Class2Params_ */