亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? faxfile.cpp

?? fax engine 傳真引擎 relay fax 的開(kāi)源項(xiàng)目 商業(yè)軟件使用 高質(zhì)量 高可靠
?? CPP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
					}
					else if( nBitCntr > 8 )
					{
						//OutputDebugString( "Whoops 2!\n" );
						m_bFoundStartOfPage = false;
						m_bFoundStartOfFrame = false;
					}
				}
			}			
		}
	}		

	return true;
}




//////////////////////////////////////////////////////////////////////
// ProcessECMFrame
//////////////////////////////////////////////////////////////////////
bool CFaxFile::ProcessECMFrame( void )
{
	//char szMsg[160];
	bool bRet = true;

	if( m_ECMBuffer.CheckFCS() )
	{
		if( m_ECMBuffer.GetFCF() == FCD )
		{

			//wsprintf( szMsg, "ECM Frame %d bytes, Control=%02X FCF=%02X Seq=%d LastSeq=%d Data[0]=%02X\n", m_ECMBuffer.GetSize(), 
			//		  m_ECMBuffer.GetControl(), m_ECMBuffer.GetFCF(), m_ECMBuffer.GetSeq(), m_ECMBuffer.GetLastSeq(), m_ECMBuffer.GetData()[0] );
			//OutputDebugString( szMsg );

			int nGap = m_ECMBuffer.GetSeq() - m_ECMBuffer.GetLastSeq();

			if( nGap < 1 )
			{
				//wsprintf( szMsg, "Backing up %d frames\n", 1 -  nGap );
				//OutputDebugString( szMsg );

				m_MemFile.Seek( (nGap-1) * m_nECMFrameSize, SEEK_CUR );
				//fseek( m_fp, (nGap-1) * m_nECMFrameSize, SEEK_CUR );
			}
			else if( nGap > 1 )
			{
				char Zeros[MAX_ECM_DATA];
				ZeroMemory( Zeros, m_nECMFrameSize );

				if( m_ECMBuffer.GetHighestSeq() > m_ECMBuffer.GetLastSeq() )
				{
					int nNewGap = m_ECMBuffer.GetHighestSeq() - m_ECMBuffer.GetLastSeq();

					if( nNewGap > nGap )
					{
						nNewGap = nGap;
					}

					//wsprintf( szMsg, "Moving forward %d frames\n", nNewGap );
					//OutputDebugString( szMsg );
					m_MemFile.Seek( (nNewGap-1) * m_nECMFrameSize, SEEK_CUR );
					//fseek( m_fp, (nNewGap-1) * m_nECMFrameSize, SEEK_CUR );
					nGap -= nNewGap;
				}

				if( nGap > 0 )
				{
					//wsprintf( szMsg, "Skipping %d frames\n", nGap - 1 );
					//OutputDebugString( szMsg );

					for( int i = 1; i < nGap; i++ )
					{
						if( m_MemFile.Write( Zeros, m_nECMFrameSize ) == 0 )
						//if( fwrite( Zeros, 1, m_nECMFrameSize, m_fp ) != m_nECMFrameSize )
						{
							//OutputDebugString( "Error writing to file\n" );
						}
					}
				}
			}

			m_MemFile.Write( m_ECMBuffer.GetData(), m_nECMFrameSize );

			//if( fwrite( m_ECMBuffer.GetData(), 1, m_nECMFrameSize, m_fp ) != m_nECMFrameSize )
			{
				//OutputDebugString( "Error writing to file\n" );
			}

			m_ECMBuffer.UpdateLastSeq();
		}
		else if( m_ECMBuffer.GetFCF() == RCP )
		{
			//OutputDebugString( "Got RCP\n" );
		}
		else
		{
			//OutputDebugString( "Unknown ECM Frame\n" );
		}
	}
	else
	{
		//OutputDebugString( "Bad ECM Frame\n" );
		bRet = false;
	}

	m_ECMBuffer.InitFrame();

	return bRet;
}

//////////////////////////////////////////////////////////////////////
// NextBlock called between ECM blocks
//////////////////////////////////////////////////////////////////////
void CFaxFile::NextECMBlock(void)
{	
	m_MemFile.Seek( 0, SEEK_END );
	m_ECMBuffer.InitFrame();
	m_ECMBuffer.InitBlock();

	m_bFoundStartOfPage = false;
	m_bFoundStartOfFrame = false;
	m_bFoundEndOfPage = false;
	nZcnt = 0;
	nRTCCnt = 0;
	nBitCntr = 0;
	nZeroBitDeleteCntr = 0;
}

//////////////////////////////////////////////////////////////////////
// NextBlock called between ECM blocks
//////////////////////////////////////////////////////////////////////
void CFaxFile::RedoECMBlock(void)
{	
	m_ECMBuffer.InitFrame();

	m_bFoundStartOfPage = false;
	m_bFoundStartOfFrame = false;
	m_bFoundEndOfPage = false;
	nZcnt = 0;
	nRTCCnt = 0;
	nBitCntr = 0;
	nZeroBitDeleteCntr = 0;
}


//////////////////////////////////////////////////////////////////////
// WriteIFD prepares for the next fax page
//////////////////////////////////////////////////////////////////////
bool CFaxFile::WriteIFD(void)
{
	m_bGotData = false;
	m_bFoundStartOfPage = false;
	m_bFoundStartOfFrame = false;
	m_bFoundEndOfPage = false;
	nZcnt = 0;
	nRTCCnt = 0;
	nBitCntr = 0;
	nZeroBitDeleteCntr = 0;

	bool bRet = ( WriteIfd() > 0 ) ? true : false;

	if( bRet )
	{
		m_PageCount++;
	}

	return bRet;
}

//////////////////////////////////////////////////////////////////////
// WriteIfd dumps the page to disk
//////////////////////////////////////////////////////////////////////
int CFaxFile::WriteIfd (void)
{
	int nRet = m_MemFile.Size();

	if( length == 0 )
	{
		if( compression == 3 )
		{
			CountGroup3TiffLines();
		}
		else
		{
			CountGroup4TiffLines();
		}
		//char szMsg[80];
		//wsprintf( szMsg, "Counted %d lines\n", length );
		//OutputDebugString( szMsg );
	}

	if( (length < 10) || (nRet == 0 ) )
	{
		return 0;
	}

	TIFFSetField( m_tiff, TIFFTAG_SUBFILETYPE, 2 );
	TIFFSetField( m_tiff, TIFFTAG_IMAGEWIDTH, width );
	TIFFSetField( m_tiff, TIFFTAG_IMAGELENGTH, length);
	TIFFSetField( m_tiff, TIFFTAG_PHOTOMETRIC, 0 );
	TIFFSetField( m_tiff, TIFFTAG_ROWSPERSTRIP, length );
	TIFFSetField( m_tiff, TIFFTAG_BITSPERSAMPLE, bitspersample);
	TIFFSetField( m_tiff, TIFFTAG_FILLORDER, fillorder);
	TIFFSetField( m_tiff, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH );
	TIFFSetField( m_tiff, TIFFTAG_XRESOLUTION, xres );
	TIFFSetField( m_tiff, TIFFTAG_YRESOLUTION, yres );
	TIFFSetField( m_tiff, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG );
	TIFFSetField( m_tiff, TIFFTAG_COMPRESSION, compression );
	TIFFSetField( m_tiff, TIFFTAG_PAGENUMBER, m_PageCount, 0 );

	if( compression == COMPRESSION_CCITTFAX3 )
	{
		TIFFSetField( m_tiff, TIFFTAG_GROUP3OPTIONS, g3opts );
	}
	else if( compression == COMPRESSION_CCITTFAX4 )
	{
		TIFFSetField( m_tiff, TIFFTAG_GROUP4OPTIONS, 0 );
	}

	TIFFWriteRawStrip( m_tiff, 0, m_MemFile.GetData(0), m_MemFile.Size() );

	TIFFWriteDirectory( m_tiff );
	
	m_bFileHasData = true;

	m_MemFile.Clear();

	length = 0;

	return nRet;
}

//////////////////////////////////////////////////////////////////////
// CountGroup3TiffLines
//////////////////////////////////////////////////////////////////////
void CFaxFile::CountGroup3TiffLines(void)
{
	int i;

	nZcnt = 0;
	nRTCCnt = 0;
	m_bFoundEndOfPage = false;

	m_MemFile.Seek( 0, SEEK_SET );
	
	for( i = 0; i < m_MemFile.Size(); i++ )
	{
		if( !m_bFoundEndOfPage )
		{
			BYTE b = *m_MemFile.GetData(i);
			
			if (nZcnt) 
			{
				nZcnt += s_LeadZero[b];
				if (b && (nZcnt < 11)) 
				{
					nRTCCnt = 0;
					nZcnt = s_TrailZero[b];
				}
			}
			else 
			{
				nZcnt = s_TrailZero[b];
				if (!nZcnt) nRTCCnt = 0;
			}
			
			if( nZcnt > 10 && b != 0 )
			{
				nRTCCnt++;
				if (nRTCCnt > 5) 
				{
					//OutputDebugString( "Found RTC!\n" );
					IncrementImageLength( -5 );
					m_bFoundEndOfPage = true;
				}
				else
				{
					IncrementImageLength();
				}
				nZcnt = s_TrailZero[b];
			}	
		}
	}
}


//////////////////////////////////////////////////////////////////////
// ExpandLine - used by CountGroup4TiffLines
//////////////////////////////////////////////////////////////////////
void ExpandLine ( unsigned char color, char *cur_line, 
			   int& bit_2D, int& i_2D, int runlength )
{
	int copyrun=runlength ;
	if (color==WHITE)
	{
		bit_2D-=(copyrun%8) ;
		i_2D+=(copyrun/8) ;
		if (bit_2D<0)
		{
			bit_2D+=8 ;
			i_2D++ ;
		}
	}
	else for (;;)
	{
		while (bit_2D>0)
		{
			cur_line[i_2D]|=(1<<(bit_2D-1)) ;
			bit_2D-- ;
			if (!(--copyrun)) break ;
		}
		if (copyrun==0) break ;
		i_2D++ ;
		for (; copyrun>8 ; copyrun-=8) cur_line[i_2D++]=(char)0xff ;
		if (copyrun==0) break ;
		bit_2D=8 ;
	}
}

//////////////////////////////////////////////////////////////////////
// CountGroup4TiffLines
//////////////////////////////////////////////////////////////////////
void CFaxFile::CountGroup4TiffLines(void)
{
	int i,j,k;

	nZcnt = 0;
	nRTCCnt = 0;
	m_bFoundEndOfPage = false;

	int dots_left= width;
	int code= 0;
	int resync, a0, b1, b2, horz_runs;
	NODE *tree= (NODE *)&s_WTree ;
	unsigned char octet, ref_color, this_bit, coding_scheme = 1;
    unsigned char color;      
    char *cur_line; 
	int i_2D= 0; 
	int bit_2D=8 ;

	char twolines[(2432/8)*2];
	char *ref_line;
	char *tmp_line;

	ref_color = WHITE;

    memset (twolines,0x00,(width/8)*2) ;
	ref_line= &twolines[0] ;
	cur_line= &twolines[width/8] ;
	coding_scheme= 2 ;
	resync= 0 ;
	color= WHITE ;
	dots_left= width ;
	tree= (NODE *)&s_TwoTree ;
	horz_runs= code= 0 ;
	a0= (-1) ;

	m_MemFile.Seek( 0, SEEK_SET );

	for( k = 0; k < m_MemFile.Size(); k++ )
	{
		octet = *m_MemFile.GetData(k);
		
		for (i= 0 ; i<8 ; i++, octet<<= 1)
		{
			
			if( !m_bFoundEndOfPage )
			{					
				if ((horz_runs==0)&&(dots_left==0))
				{
					i_2D=0 ;
					bit_2D=8 ;
					IncrementImageLength();
			        coding_scheme= 2 ;
					resync= 0 ;
					color= WHITE ;
					dots_left= width ;
			        tree= (NODE *)&s_TwoTree ;
					tmp_line= ref_line ;
					ref_line= cur_line ;
					cur_line= tmp_line ;
					memset (cur_line,0x00,width/8) ;
					horz_runs= code= 0 ;
					a0= (-1) ;
				}

				if (code== FAXFILE_EOL)
				{
					m_bFoundEndOfPage = true;
					break;
				}

				if (code== FAXFILE_EOL2)
				{
					coding_scheme= ((octet&0x80) >> 7) ;
					if (coding_scheme== 1) tree= (NODE *)&s_WTree ;
					else
					{
						tree= (NODE *)&s_TwoTree ;
						horz_runs= 0 ;
						a0= (-1) ;
					}
					tmp_line= ref_line ;
					ref_line= cur_line ;
					cur_line= tmp_line ;
					memset (cur_line,0x00,width/8) ;
					code= 0 ;
					continue ;
				}

				int nBit = (octet&0x80)>>7;
				
				code= (*tree)[code][nBit]  ;
				if (code<1)
				{
					code= (-code) ;
					if (!resync) if ((dots_left-= code)<0) resync= 1 ;
					if ((!resync)&&(code!= 0)) ExpandLine( color, cur_line, bit_2D, i_2D, code) ;
					if (code < 64)
					{
						color= (~color) ;
						tree= color ? (NODE *)&s_BTree: (NODE *)&s_WTree;
						if ((coding_scheme!= 1)&&(--horz_runs== 0))
						{
							a0= 0 ;
							tree= (NODE *)&s_TwoTree ;
						}
					} 
					code= 0 ;
					continue ;
				}
				if (code<FAXFILE_OFFTREE) continue ;
								
				if (code== FAXFILE_OFFTREE)
				{
					resync= 1 ;
					continue ;
				}
				
				if (code== FAXFILE_EOL)
				{
					continue;
				}
				
				if (code== FAXFILE_HORZ)
				{
					horz_runs= 2 ;
					code= 0 ;
					tree= color ? (NODE *)&s_BTree: (NODE *)&s_WTree;
					continue ;
				}


				if (a0== (-1)) ref_color= WHITE ;
				else
				{
					a0= (width-dots_left) ;
					j= (a0/8) ;
					this_bit= (0x80>>(a0%8)) ;
					if ((unsigned char)ref_line[j]&this_bit) ref_color= BLACK ; else ref_color= WHITE ;
				}
				
				for (b1= a0+1;b1<width;b1++)
				{
					j= (b1/8) ;
					this_bit= (0x80>>(b1%8)) ;
					if (((unsigned char)ref_line[j]&this_bit)!= (ref_color&this_bit)) break ;
				}
				if (ref_color!= color)
				{
					for (b1++;b1<width;b1++)
					{
						j= (b1/8) ;
						this_bit= (0x80>>(b1%8)) ;
						if (((unsigned char)ref_line[j]&this_bit)== (ref_color&this_bit)) break ;
					}
				}
				if (b1>width) b1= width ;
				a0= (width-dots_left) ;
				
				if (code<FAXFILE_PASS)
				{
					code= ((b1-a0)+(code-FAXFILE_V_0)) ; if (code < 0) resync= 1;
					if (!resync) if ((dots_left-= code)<0) resync= 1 ;
					if ((!resync)&&(code!= 0)) ExpandLine( color, cur_line, bit_2D, i_2D, code);
					color= (~color) ;
					code= 0 ;
					continue ;
				}
								
				for (b2= b1+1;b2<width;b2++)
				{
					j= (b2/8) ;
					this_bit= (0x80>>(b2%8)) ;
					if (((unsigned char)ref_line[j]&this_bit)== (color&this_bit)) break ;
				}
				if (b2>width) b2= width ;
				
				if (code== FAXFILE_PASS)
				{
					code= (b2-a0) ; if (code < 0) resync= 1;
					if (!resync) if ((dots_left-= code)<0) resync= 1 ;
					if ((!resync)&&(code!= 0)) ExpandLine( color, cur_line, bit_2D, i_2D, code);
					code= 0 ;
					continue ;
				}
				
				m_bFoundEndOfPage = true;
				break;
			}
		}
	}
}


//////////////////////////////////////////////////////////////////////
// SelectEncoding
//////////////////////////////////////////////////////////////////////
void CFaxFile::SelectEncoding( int nEncoding )
{
	m_nSendEncoding = nEncoding;
}


//////////////////////////////////////////////////////////////////////
// Clear
//////////////////////////////////////////////////////////////////////
void CFaxFile::Clear(void)
{
	bitspersample = 1;
	width = 1728;
	length = 0;
	fillorder = 1;
	g3opts = 0;
	compression = COMPRESSION_CCITTFAX3;
	xres = 204.0f;
	yres = 196.0f;

	m_MemFile.Clear();
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜小视频| 秋霞成人午夜伦在线观看| 久久久久国产精品麻豆| 91精品婷婷国产综合久久性色| 色吊一区二区三区| av在线播放一区二区三区| 国产精品一区久久久久| 国产成人免费视频网站 | 国产剧情av麻豆香蕉精品| 蜜桃久久久久久| 久久99精品久久只有精品| 久久66热偷产精品| 捆绑调教一区二区三区| 国精产品一区一区三区mba视频| 国产在线视频精品一区| 国产一区二区三区久久久| 国产剧情av麻豆香蕉精品| 国产99久久久国产精品潘金| 成人美女在线观看| 色婷婷激情久久| 欧美日韩免费观看一区二区三区| 亚洲色图欧美在线| 综合在线观看色| 亚洲一区二区视频在线| 日韩av一区二区在线影视| 久久99精品国产| 国产成人av电影在线播放| av不卡在线播放| 欧美丝袜丝nylons| 精品少妇一区二区| 欧美国产一区二区在线观看| 日韩理论片在线| 丝袜诱惑制服诱惑色一区在线观看| 日本视频在线一区| 国产一区二区不卡| 99re成人在线| 欧美久久久久久蜜桃| 精品成人免费观看| 中文字幕一区二区三区不卡在线 | 日韩一卡二卡三卡国产欧美| 久久网站最新地址| 成人欧美一区二区三区小说| 亚洲午夜国产一区99re久久| 久久国产三级精品| av一区二区久久| 欧美剧情片在线观看| 久久久久99精品一区| 自拍偷拍亚洲激情| 美国毛片一区二区| 91香蕉视频污在线| 日韩精品在线看片z| 综合电影一区二区三区 | 国产成人综合自拍| 欧美日韩亚洲丝袜制服| 久久综合九色欧美综合狠狠| 一区二区三区四区蜜桃| 国模娜娜一区二区三区| 日本乱码高清不卡字幕| 久久久久久一级片| 婷婷成人激情在线网| 成人自拍视频在线| 欧美一区二区三区在| 亚洲精品综合在线| 国产一区二区三区免费| 欧美日韩中文国产| 国产精品青草综合久久久久99| 午夜激情综合网| 99久久精品国产导航| 欧美精品一区二| 亚洲图片有声小说| a级精品国产片在线观看| 欧美一级理论片| 亚洲一区视频在线| av在线一区二区三区| 欧美精品一区二区精品网| 午夜精品一区二区三区电影天堂| 处破女av一区二区| 久久婷婷综合激情| 久久国产精品色婷婷| 欧美日韩高清一区二区三区| 成人免费在线播放视频| 国产精品白丝av| 日韩一区二区视频在线观看| 亚洲午夜三级在线| 色狠狠色狠狠综合| 国产精品久久久久婷婷二区次| 精品一区二区在线播放| 这里只有精品99re| 夜夜嗨av一区二区三区| 波多野结衣精品在线| 国产亚洲一本大道中文在线| 狠狠色丁香婷婷综合| 欧美一二区视频| 热久久国产精品| 欧美高清激情brazzers| 亚洲高清免费视频| 欧美日韩一区二区三区四区 | 亚洲已满18点击进入久久| 成人在线视频一区| 国产日韩精品久久久| 国产精品一区二区久激情瑜伽| 精品久久人人做人人爱| 美日韩一级片在线观看| 日韩免费性生活视频播放| 蜜桃久久精品一区二区| 欧美成人精品1314www| 免费一级片91| 亚洲精品一线二线三线无人区| 免费成人你懂的| 精品国产91洋老外米糕| 国产在线精品视频| 国产亚洲精品bt天堂精选| 国产九色精品成人porny| 久久―日本道色综合久久 | 日韩一二在线观看| 免费观看一级欧美片| 精品国产免费人成在线观看| 激情六月婷婷久久| 国产午夜三级一区二区三| 成人一区二区在线观看| 国产精品麻豆视频| 色欧美片视频在线观看| 一区二区在线免费观看| 欧美日韩国产中文| 免费视频最近日韩| 久久综合久久久久88| 成人免费福利片| 一区二区三区四区高清精品免费观看 | 91日韩在线专区| 亚洲综合久久av| 91精品啪在线观看国产60岁| 麻豆成人av在线| 国产视频在线观看一区二区三区| av激情成人网| 亚洲成人黄色小说| 337p日本欧洲亚洲大胆色噜噜| 懂色av一区二区三区蜜臀| 亚洲色图制服诱惑 | 69堂精品视频| 国产自产v一区二区三区c| 中文字幕亚洲一区二区va在线| 色妹子一区二区| 日韩成人午夜电影| 久久久99免费| 色综合天天综合| 日本美女一区二区三区视频| 国产人成亚洲第一网站在线播放| 一本色道久久综合狠狠躁的推荐 | 欧美日韩免费一区二区三区视频| 麻豆精品一区二区三区| 国产精品丝袜一区| 91精品婷婷国产综合久久竹菊| 国产1区2区3区精品美女| 亚洲综合自拍偷拍| 精品国产在天天线2019| 色婷婷综合久色| 激情综合网天天干| 一区二区三区久久| 2020国产成人综合网| 色悠悠久久综合| 国产一区二区按摩在线观看| 一区二区三区四区高清精品免费观看| 日韩欧美的一区二区| 色999日韩国产欧美一区二区| 捆绑调教一区二区三区| 一区二区在线免费| 久久亚洲私人国产精品va媚药| 欧美午夜宅男影院| 盗摄精品av一区二区三区| 日本欧美肥老太交大片| 伊人性伊人情综合网| 久久色.com| 日韩欧美一区二区三区在线| 色视频一区二区| 大桥未久av一区二区三区中文| 蜜桃一区二区三区在线观看| 一级特黄大欧美久久久| 日本一区二区视频在线观看| 91麻豆精品国产91久久久更新时间| av一二三不卡影片| 国产精品资源网| 美女国产一区二区| 天堂成人免费av电影一区| 亚洲黄色免费网站| 国产精品女人毛片| 久久久青草青青国产亚洲免观| 7878成人国产在线观看| 色婷婷综合久色| 97久久精品人人做人人爽50路| 国产精品69久久久久水密桃| 久久国内精品视频| 日韩和欧美一区二区三区| 一区二区免费在线| 欧美激情一区在线| 久久久不卡网国产精品二区| 精品国产三级a在线观看| 欧美一区二区三区四区在线观看 | 中文字幕综合网| 中文字幕在线播放不卡一区| 久久久久亚洲蜜桃|