亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美调教femdomvk| 91丨porny丨户外露出| 日产国产欧美视频一区精品| 亚洲欧美日韩久久| 国产精品剧情在线亚洲| 久久久99久久| 国产精品美女www爽爽爽| 国产偷国产偷亚洲高清人白洁| 久久久国产一区二区三区四区小说 | 国产欧美日韩视频在线观看| 精品裸体舞一区二区三区| 91超碰这里只有精品国产| 欧美精品 日韩| 日韩视频免费直播| 久久免费午夜影院| 国产精品女同一区二区三区| 成人免费一区二区三区视频 | 日本美女一区二区三区| 蜜臀久久久久久久| 国产在线播精品第三| 高潮精品一区videoshd| 色综合色狠狠综合色| 欧美久久久久免费| 久久综合色综合88| 一区二区三区在线不卡| 日本午夜一区二区| 国产成人精品免费网站| 色综合久久久久综合体| 欧美精品三级日韩久久| 亚洲精品在线一区二区| 亚洲色图20p| 美女精品自拍一二三四| 成人动漫av在线| 777欧美精品| 中文字幕在线观看不卡视频| 亚洲国产中文字幕在线视频综合| 美女高潮久久久| 色先锋资源久久综合| 日韩三级精品电影久久久| 综合久久久久综合| 麻豆精品在线看| www.日本不卡| 2021久久国产精品不只是精品| 自拍偷拍欧美激情| 国产专区综合网| 欧美日韩国产综合一区二区三区| 欧美激情中文不卡| 狂野欧美性猛交blacked| 91黄视频在线| 专区另类欧美日韩| 国产精品自拍网站| 91麻豆精品91久久久久久清纯| 国产精品天美传媒| 美日韩一区二区| 日本大香伊一区二区三区| 国产婷婷一区二区| 一本在线高清不卡dvd| 久久综合九色综合欧美就去吻| 亚洲一二三四在线观看| www.av亚洲| 国产精品国产自产拍在线| 日本va欧美va欧美va精品| 欧美亚洲综合色| 一区二区三区资源| 91在线观看高清| 国产精品久久久久久久久动漫 | 欧美日韩中文另类| 亚洲乱码国产乱码精品精小说 | 色爱区综合激月婷婷| 国产精品久久久久一区二区三区 | 亚洲国产裸拍裸体视频在线观看乱了| 成人一区二区三区视频在线观看 | 亚洲一区二区三区中文字幕| 99精品黄色片免费大全| 国产亚洲欧美一区在线观看| 国产一级精品在线| 久久久午夜精品理论片中文字幕| 精品制服美女久久| 久久女同互慰一区二区三区| 69堂成人精品免费视频| 国产精品456| 中文字幕av一区 二区| 国产一区不卡视频| 日本一区二区免费在线| 99久久久精品免费观看国产蜜| 国产精品久久久久精k8| 一本色道a无线码一区v| 亚洲柠檬福利资源导航| 色激情天天射综合网| 亚洲一区二区三区激情| 欧美日韩高清一区二区三区| 青青草97国产精品免费观看无弹窗版 | 亚洲欧美电影一区二区| 色哟哟一区二区三区| 亚洲国产综合视频在线观看| 9191久久久久久久久久久| 日本欧美一区二区| 精品粉嫩aⅴ一区二区三区四区| 国内成人免费视频| 成人免费小视频| 欧美一区二区三区免费在线看| 激情亚洲综合在线| **性色生活片久久毛片| 在线不卡免费av| 国产传媒一区在线| 亚洲最大的成人av| 337p粉嫩大胆噜噜噜噜噜91av | 激情丁香综合五月| 亚洲国产激情av| 欧美在线观看一区二区| 麻豆高清免费国产一区| 国产精品福利一区二区三区| 在线电影国产精品| av电影在线不卡| 麻豆精品一区二区综合av| 国产精品乱人伦中文| 欧美日本一区二区| 成人av综合在线| 另类综合日韩欧美亚洲| 亚洲免费看黄网站| 国产亚洲成年网址在线观看| 精品视频1区2区| 成人av资源在线| 激情久久久久久久久久久久久久久久| 亚洲另类春色校园小说| 久久久精品国产99久久精品芒果 | 一本久久精品一区二区| 久久爱另类一区二区小说| 亚洲情趣在线观看| 国产网红主播福利一区二区| 91精品国产欧美一区二区成人| 91在线porny国产在线看| 国产精品一区二区无线| 日韩高清中文字幕一区| 一区二区三区在线播放| 亚洲欧洲日产国码二区| 国产亚洲欧美日韩日本| 日韩欧美国产综合| 欧美高清视频在线高清观看mv色露露十八| 粉嫩一区二区三区在线看| 国产做a爰片久久毛片| 麻豆久久久久久久| 日本视频在线一区| 图片区小说区国产精品视频| 一区二区三区在线播| 1024成人网| 亚洲日本欧美天堂| 亚洲乱码日产精品bd| 亚洲欧洲韩国日本视频| 亚洲欧美在线aaa| 国产精品久久毛片av大全日韩| 国产日韩欧美电影| 国产人成亚洲第一网站在线播放 | 成年人国产精品| 成人av在线影院| 99精品久久免费看蜜臀剧情介绍| 成人国产精品免费观看视频| 粉嫩av亚洲一区二区图片| 国产在线不卡一区| 粉嫩欧美一区二区三区高清影视 | 亚洲激情图片一区| 一区二区三区在线观看视频| 一区二区三区日韩精品视频| 亚洲乱码中文字幕| 亚洲成av人综合在线观看| 日韩高清不卡一区二区| 久久99久久精品| 成人免费视频app| 一本一本久久a久久精品综合麻豆| 91原创在线视频| 777欧美精品| 久久久精品天堂| 亚洲免费观看高清完整| 五月天视频一区| 国产成人自拍高清视频在线免费播放| 国产91在线|亚洲| 欧美日韩一级片网站| 日韩三级视频在线看| 国产精品女主播在线观看| 亚洲黄色片在线观看| 美女视频网站黄色亚洲| 成人开心网精品视频| 欧美亚洲国产怡红院影院| 日韩一级片网站| 亚洲欧洲日本在线| 蜜臀av一级做a爰片久久| 成人亚洲一区二区一| 91国产成人在线| 久久精品亚洲一区二区三区浴池| 一区二区三区在线不卡| 黄色日韩网站视频| 欧美婷婷六月丁香综合色| 国产亚洲精品资源在线26u| 日韩伦理免费电影| 久久99九九99精品| 欧美性高清videossexo| 久久久精品国产免大香伊| 亚洲综合色区另类av| 国产白丝精品91爽爽久久 | 久久99精品久久久久久|