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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tif_fax3.h

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? H
?? 第 1 頁 / 共 2 頁
字號:
/* $Id: tif_fax3.h,v 1.5 2005/12/12 09:23:11 dron Exp $ *//* * Copyright (c) 1990-1997 Sam Leffler * Copyright (c) 1991-1997 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and  * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. *  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   *  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  * OF THIS SOFTWARE. */#ifndef _FAX3_#define	_FAX3_/* * TIFF Library. * * CCITT Group 3 (T.4) and Group 4 (T.6) Decompression Support. * * Decoder support is derived, with permission, from the code * in Frank Cringle's viewfax program; *      Copyright (C) 1990, 1995  Frank D. Cringle. */#include "tiff.h"/* * To override the default routine used to image decoded * spans one can use the pseduo tag TIFFTAG_FAXFILLFUNC. * The routine must have the type signature given below; * for example: * * fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx) * * where buf is place to set the bits, runs is the array of b&w run * lengths (white then black), erun is the last run in the array, and * lastx is the width of the row in pixels.  Fill routines can assume * the run array has room for at least lastx runs and can overwrite * data in the run array as needed (e.g. to append zero runs to bring * the count up to a nice multiple). */typedef	void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32);/* * The default run filler; made external for other decoders. */#if defined(__cplusplus)extern "C" {#endifextern	void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32);#if defined(__cplusplus)}#endif/* finite state machine codes */#define S_Null		0#define S_Pass		1#define S_Horiz		2#define S_V0		3#define S_VR		4#define S_VL		5#define S_Ext		6#define S_TermW		7#define S_TermB		8#define S_MakeUpW	9#define S_MakeUpB	10#define S_MakeUp	11#define S_EOL		12typedef struct {		/* state table entry */	unsigned char State;	/* see above */	unsigned char Width;	/* width of code in bits */	uint32	Param;		/* unsigned 32-bit run length in bits */} TIFFFaxTabEnt;extern	const TIFFFaxTabEnt TIFFFaxMainTable[];extern	const TIFFFaxTabEnt TIFFFaxWhiteTable[];extern	const TIFFFaxTabEnt TIFFFaxBlackTable[];/* * The following macros define the majority of the G3/G4 decoder * algorithm using the state tables defined elsewhere.  To build * a decoder you need some setup code and some glue code. Note * that you may also need/want to change the way the NeedBits* * macros get input data if, for example, you know the data to be * decoded is properly aligned and oriented (doing so before running * the decoder can be a big performance win). * * Consult the decoder in the TIFF library for an idea of what you * need to define and setup to make use of these definitions. * * NB: to enable a debugging version of these macros define FAX3_DEBUG *     before including this file.  Trace output goes to stdout. */#ifndef EndOfData#define EndOfData()	(cp >= ep)#endif/* * Need <=8 or <=16 bits of input data.  Unlike viewfax we * cannot use/assume a word-aligned, properly bit swizzled * input data set because data may come from an arbitrarily * aligned, read-only source such as a memory-mapped file. * Note also that the viewfax decoder does not check for * running off the end of the input data buffer.  This is * possible for G3-encoded data because it prescans the input * data to count EOL markers, but can cause problems for G4 * data.  In any event, we don't prescan and must watch for * running out of data since we can't permit the library to * scan past the end of the input data buffer. * * Finally, note that we must handle remaindered data at the end * of a strip specially.  The coder asks for a fixed number of * bits when scanning for the next code.  This may be more bits * than are actually present in the data stream.  If we appear * to run out of data but still have some number of valid bits * remaining then we makeup the requested amount with zeros and * return successfully.  If the returned data is incorrect then * we should be called again and get a premature EOF error; * otherwise we should get the right answer. */#ifndef NeedBits8#define NeedBits8(n,eoflab) do {					\    if (BitsAvail < (n)) {						\	if (EndOfData()) {						\	    if (BitsAvail == 0)			/* no valid bits */	\		goto eoflab;						\	    BitsAvail = (n);			/* pad with zeros */	\	} else {							\	    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;		\	    BitsAvail += 8;						\	}								\    }									\} while (0)#endif#ifndef NeedBits16#define NeedBits16(n,eoflab) do {					\    if (BitsAvail < (n)) {						\	if (EndOfData()) {						\	    if (BitsAvail == 0)			/* no valid bits */	\		goto eoflab;						\	    BitsAvail = (n);			/* pad with zeros */	\	} else {							\	    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;		\	    if ((BitsAvail += 8) < (n)) {				\		if (EndOfData()) {					\		    /* NB: we know BitsAvail is non-zero here */	\		    BitsAvail = (n);		/* pad with zeros */	\		} else {						\		    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;	\		    BitsAvail += 8;					\		}							\	    }								\	}								\    }									\} while (0)#endif#define GetBits(n)	(BitAcc & ((1<<(n))-1))#define ClrBits(n) do {							\    BitsAvail -= (n);							\    BitAcc >>= (n);							\} while (0)#ifdef FAX3_DEBUGstatic const char* StateNames[] = {    "Null   ",    "Pass   ",    "Horiz  ",    "V0     ",    "VR     ",    "VL     ",    "Ext    ",    "TermW  ",    "TermB  ",    "MakeUpW",    "MakeUpB",    "MakeUp ",    "EOL    ",};#define DEBUG_SHOW putchar(BitAcc & (1 << t) ? '1' : '0')#define LOOKUP8(wid,tab,eoflab) do {					\    int t;								\    NeedBits8(wid,eoflab);						\    TabEnt = tab + GetBits(wid);					\    printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail,		\	   StateNames[TabEnt->State], TabEnt->Param);			\    for (t = 0; t < TabEnt->Width; t++)					\	DEBUG_SHOW;							\    putchar('\n');							\    fflush(stdout);							\    ClrBits(TabEnt->Width);						\} while (0)#define LOOKUP16(wid,tab,eoflab) do {					\    int t;								\    NeedBits16(wid,eoflab);						\    TabEnt = tab + GetBits(wid);					\    printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail,		\	   StateNames[TabEnt->State], TabEnt->Param);			\    for (t = 0; t < TabEnt->Width; t++)					\	DEBUG_SHOW;							\    putchar('\n');							\    fflush(stdout);							\    ClrBits(TabEnt->Width);						\} while (0)#define SETVALUE(x) do {							\    *pa++ = RunLength + (x);						\    printf("SETVALUE: %d\t%d\n", RunLength + (x), a0);			\    a0 += x;								\    RunLength = 0;							\} while (0)#else#define LOOKUP8(wid,tab,eoflab) do {					\    NeedBits8(wid,eoflab);						\    TabEnt = tab + GetBits(wid);					\    ClrBits(TabEnt->Width);						\} while (0)#define LOOKUP16(wid,tab,eoflab) do {					\    NeedBits16(wid,eoflab);						\    TabEnt = tab + GetBits(wid);					\    ClrBits(TabEnt->Width);						\} while (0)/* * Append a run to the run length array for the * current row and reset decoding state. */#define SETVALUE(x) do {							\    *pa++ = RunLength + (x);						\    a0 += (x);								\    RunLength = 0;							\} while (0)#endif/* * Synchronize input decoding at the start of each * row by scanning for an EOL (if appropriate) and * skipping any trash data that might be present * after a decoding error.  Note that the decoding * done elsewhere that recognizes an EOL only consumes * 11 consecutive zero bits.  This means that if EOLcnt * is non-zero then we still need to scan for the final flag * bit that is part of the EOL code. */#define	SYNC_EOL(eoflab) do {						\    if (EOLcnt == 0) {							\	for (;;) {							\	    NeedBits16(11,eoflab);					\	    if (GetBits(11) == 0)					\

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品亚洲人成人网在线播放| 91麻豆免费看片| 日韩美女在线视频 | 欧美日韩免费观看一区二区三区| 亚洲精品日日夜夜| 欧美精品一级二级三级| 免费日韩伦理电影| 久久天堂av综合合色蜜桃网| 国产激情精品久久久第一区二区| 久久精品一区二区三区不卡| www.色精品| 亚洲一二三四久久| 日韩欧美一二三区| 国产成a人亚洲精品| 亚洲欧洲国产日本综合| 欧美三级视频在线| 精品一区二区三区影院在线午夜 | 久久久久久久综合狠狠综合| 粉嫩aⅴ一区二区三区四区五区| 亚洲少妇30p| 在线成人小视频| 东方aⅴ免费观看久久av| 亚洲精品成a人| 777午夜精品免费视频| 国产黄色成人av| 亚洲女厕所小便bbb| 欧美久久久一区| 国产不卡一区视频| 亚洲国产视频a| 国产片一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 奇米888四色在线精品| 国产精品美女一区二区| 欧美日本视频在线| 成人涩涩免费视频| 另类小说视频一区二区| 亚洲男人天堂av| 2023国产精品自拍| 精品污污网站免费看| 国产精品996| 五月天中文字幕一区二区| 国产三级三级三级精品8ⅰ区| 欧美日本韩国一区二区三区视频 | 亚洲免费在线观看| 欧美mv日韩mv亚洲| 欧美三级欧美一级| 成人网页在线观看| 国产一区二区在线观看视频| 亚洲一区二区三区四区的| 国产日韩欧美a| 日韩一区二区在线免费观看| 一本大道久久a久久精品综合| 日韩国产欧美一区二区三区| 亚洲三级电影网站| 国产欧美日韩在线观看| 日韩午夜在线观看| 欧美人妇做爰xxxⅹ性高电影| 成人激情av网| 国产mv日韩mv欧美| 国内精品写真在线观看| 三级不卡在线观看| 亚洲一区免费视频| 一区二区三区中文字幕电影| 国产精品福利在线播放| 久久影视一区二区| 欧美mv和日韩mv的网站| 91精品欧美久久久久久动漫| 在线观看国产精品网站| 91理论电影在线观看| 成人av资源网站| 国产v综合v亚洲欧| 盗摄精品av一区二区三区| 国产精品一区二区在线观看不卡| 偷拍亚洲欧洲综合| 亚洲国产欧美在线| 亚洲一区在线播放| 一区二区三区欧美亚洲| 亚洲人xxxx| 玉米视频成人免费看| 一区二区三区久久| 亚洲妇女屁股眼交7| 亚洲成人av一区二区三区| 午夜精品在线看| 免费看日韩精品| 久久99久久99精品免视看婷婷| 亚洲成人黄色影院| 五月婷婷激情综合网| 亚洲欧美成人一区二区三区| 亚洲男人的天堂一区二区| 亚洲青青青在线视频| 亚洲永久免费视频| 午夜影视日本亚洲欧洲精品| 肉丝袜脚交视频一区二区| 蜜臂av日日欢夜夜爽一区| 激情六月婷婷久久| 国产高清不卡二三区| 91在线无精精品入口| 欧美丝袜丝nylons| 日韩一区二区三区在线视频| 欧美不卡一区二区三区| 国产精品天干天干在线综合| 亚洲欧美日韩久久精品| 日韩在线观看一区二区| 久久99精品国产91久久来源| 高清不卡在线观看av| 日本道色综合久久| 日韩一级完整毛片| 中文字幕免费在线观看视频一区| 亚洲男人电影天堂| 秋霞影院一区二区| 国产成人aaaa| 欧美亚洲日本国产| 精品sm在线观看| 亚洲免费看黄网站| 日本成人在线电影网| 国产.欧美.日韩| 精品视频在线免费看| 久久久美女毛片| 亚洲国产精品久久人人爱| 国产乱码一区二区三区| 欧美私模裸体表演在线观看| 亚洲欧美一区二区三区孕妇| 午夜久久久影院| www.日本不卡| 91精品国产综合久久久蜜臀粉嫩| 国产色一区二区| 奇米777欧美一区二区| 91蝌蚪porny| 久久久青草青青国产亚洲免观| 亚洲一二三级电影| 国产aⅴ精品一区二区三区色成熟| 欧美日韩一区在线观看| 国产精品欧美综合在线| 麻豆国产91在线播放| 在线精品视频一区二区| 欧美韩国日本不卡| 免费视频最近日韩| 欧美亚洲高清一区| 国产精品三级电影| 久久激五月天综合精品| 3751色影院一区二区三区| 亚洲精品福利视频网站| 成人黄页毛片网站| 久久久久久免费网| 精品综合免费视频观看| 欧美日韩亚洲综合一区| 亚洲女与黑人做爰| 91在线视频网址| 国产蜜臀av在线一区二区三区| 久久成人精品无人区| 欧美色成人综合| 亚洲精品乱码久久久久久久久| 成人免费不卡视频| 国产精品污污网站在线观看| 国产一区视频导航| 欧美成人精品福利| 日韩中文欧美在线| 91精品国产一区二区| 亚洲国产成人porn| 欧美日韩黄视频| 亚洲午夜久久久久久久久电影网| 一本色道久久综合亚洲aⅴ蜜桃| 久久女同性恋中文字幕| 国产一区二区网址| 亚洲精品一区二区三区福利| 极品少妇xxxx偷拍精品少妇| 91精品国产手机| 裸体健美xxxx欧美裸体表演| 91精品国产入口| 一区二区三国产精华液| 欧美丝袜自拍制服另类| 亚洲大片一区二区三区| 91精品国产综合久久久久久漫画| 日日嗨av一区二区三区四区| 日韩视频一区二区| 久久成人精品无人区| 欧美精品一区二区高清在线观看| 日韩激情一二三区| 日韩欧美国产一区二区在线播放| 青娱乐精品视频在线| 久久蜜桃av一区精品变态类天堂| 国产91丝袜在线播放0| 国产精品狼人久久影院观看方式| 成人av动漫在线| 亚洲综合一区二区精品导航| 欧美在线免费视屏| 青娱乐精品视频| 国产亚洲一区二区三区| bt欧美亚洲午夜电影天堂| 一区二区三区精品视频| 欧美一级二级三级乱码| 国产激情一区二区三区桃花岛亚洲| 国产精品麻豆一区二区 | 蜜桃一区二区三区在线观看| 亚洲图片另类小说| 国产一区二区三区不卡在线观看 | 免费观看91视频大全| 久久蜜桃av一区精品变态类天堂| 精品综合免费视频观看| 色综合久久久网|