⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 faxhead.hpp

📁 收发传真的C源码
💻 HPP
字号:
#ifndef __FAXHEADER_HPP__
#define  __FAXHEADER_HPP__

#define FAX_ADDR    0xff                    // value for address byte
#define FAX_CTL     0xC0                    // value for control field
#define FAX_CTL_FF  0xC8                    // control field + final frame

#define FAX_FCF_DIS 0x01                    // digital ID signal
#define FAX_FCF_CSI 0x02                    // called subscriber ID
#define FAX_FCF_NSF 0x04                    // non-standard facilities
#define FAX_FCF_DCS 0xC1                    // digital command signal
#define FAX_FCF_TSI 0xC2                    // transmitting subscriber ID
#define FAX_FCF_CFR 0x21                    // confirmation to receive
#define FAX_FCF_FTT 0x22                    // failure to train
#define FAX_FCF_EOM 0xF1                    // end of message
#define FAX_FCF_MPS 0xF2                    // multipage signal
#define FAX_FCF_EOP 0xF4                    // end of procedure
#define FAX_FCF_MCF 0x31                    // message confirmation
#define FAX_FCF_DCN 0xDF                    // disconnect

#define FINAL       8                       // final frame
#define NON_FINAL   0                       // non-final frame

#define TRANSMIT    0                       // connect in send mode
#define RECEIVE     1                       // connect in receive mode

#define FAX_T14400  0x200                    // 9600 transmit
#define FAX_T9600   0x100                    // 9600 transmit
#define FAX_T7200   0x80                    // 7200 transmit
#define FAX_T4800   0x40                    // 4800 transmit
#define FAX_T2400   0x20                    // 2400 transmit

#define FAX_R14400  0x10                    // 9600 transmit
#define FAX_R9600   0x08                    // 9600 receive
#define FAX_R7200   0x04                    // 7200 receive
#define FAX_R4800   0x02                    // 4800 receive
#define FAX_R2400   0x01                    // 2400 receive

#if defined(__WATCOMC__) || defined(_MSC_VER)
typedef  char BIG_PTR;
#else
typedef  huge char  BIG_PTR;
#endif

#include <string.h>
#include <ntype.hpp>

#define  PAGE_WIDTH 1728
#define  PAGE_HIGH  2304
//1440;//1143;
/*
#define  FAXFILE_MAXPAGE 127
class  FaxFile_Header{
		  public:
		  char    FaxID[8];
		  BYTE    Version;
		  long    page_count;
		  BYTE    rese;
		  short   fine;
		  FaxFile_Header();
};
inline FaxFile_Header::FaxFile_Header()
{
    memcpy(FaxID,"BIT  FAX",8);
    Version   =0;
    rese      =0;
    page_count=0;
    fine      =1;
}

class  FaxPage_Header{
		  public:
		  WORD page_width;
		  WORD page_high;
		  long   data_len;
		  long   off_len;
		  long   fine;
		  FaxPage_Header();
};

inline FaxPage_Header::FaxPage_Header()
{
    page_width=PAGE_WIDTH;
    page_high =PAGE_HIGH;
    data_len=0;
    off_len =2048;
    fine=1;
}
*/

const WORD HeaderWord1=0xBEAC;
const WORD HeaderWord2=0xAECA;

const char HeaderTitle[]="ELITE TECH. ";
class FaxHeader{
	  public:
	  char  TitleWord1[2];
	  char  Title[12];
	  char  TitleWord2[2];
	  char  fine[2]; //0x01
	  char  page_count[2];
	  char  page_number[2]; //0x01
	  char  sReserved1[10];
	  char  data_len[4];
	  char  off_len[4];
	  char  sReserved2[24];
	  FaxHeader();


};
inline FaxHeader::FaxHeader()
{
	  memset(this,0,sizeof(FaxHeader));
	  *(WORD *)TitleWord1=HeaderWord1;
	  memcpy(Title,HeaderTitle,12);
	  *(WORD *)TitleWord2=HeaderWord2;
	  *(WORD *)fine=0x01;
	  *(WORD *)page_number=0;
}

class  Read_FaxPage{
	  public:
	  BIG_PTR   *pagebuffer;
	  long       width;
	  long       high;
};


const    BUF_SIZE     =4096;                     // buffer size
class    fax_convert{
#if !defined(SERVER_NLM)&& !defined(_MSC_VER)
	int     f_handle;    	                  // G3 file handle
#else
	FILE    *f_handle;    	                  // G3 file handle
#endif

		short   f_pgcnt, f_write_flag;                       // write_out bit buffer flag
		char   *f_buffer,*f_ptr,*FileName;
		size_t  write_buff_count;

		long   f_page;                             // current G3 page size
		short  scanj,scani,scantype;
		void   write_flush();
		void   write_buf_char(char val);
		void   set_buff_str(char val,size_t len);
		void   set_bits(char *s,short   n,short   l);                   // length of bits
		WORD   get_bit(BYTE *s,short   n) ;                   // starting bit nbr (0 based)
		WORD   get_bits(BYTE *s,short   n,short   l);                   // length of bits
		char   *reverse_scan(char *p,char c,short  len);              // length of search

		short  f_get_next_byte(void);
		short  f_get_byte(void);
		short  f_get_bit(void);
		short  f_search(short type, short l,short a);                     // accumulator
		short  f_get_code(short type,short *len);                // length in bits
		short  f_get_pels(short type,short *len);                // length in bits

		void   f_get_eol(void);
		void   f_write_out(short bits,short len);                // ..and number of bits
		void   f_encode(short cnt,short type);                  // ..and bit color

		short  f_scan_out(char  *p,short  i,short  type);               // type to search
		short   rb,out_w,get_bit_w,get_bit_c;                              // bit count
		WORD    page_high;
		public:
		BOOL m_bRead;
		FaxHeader header;
		fax_convert(char *FaxFileName);
		~fax_convert();
		BOOL check();
		void write_line(char *p);

		void write_PageStart();
		void write_PageEnd();

		short  read_g3page(Read_FaxPage *rd,long n,
						   short( *sc)(short, FuncStat *),void **out=0);
		//------------user ----------------

		short  txt_toFaxFile(char *sourceFile,DWORD  memorysize,char **data,
						    WORD fontwidth,WORD fonthigh,short status,
						    short( *sc)(short, FuncStat *),void **out=0);
#if !defined(SERVER_NLM)
		short  bmp_toFaxFile(int sourceFile,long width,long high,char format,
						    short( *sc)(short, FuncStat *),void **out=0);
#else
		short  bmp_toFaxFile(FILE *sourceFile,long width,long high,char format,
						    short( *sc)(short, FuncStat *),void **out=0);
#endif
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -