亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美一区中文字幕| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲精品一区二区三区精华液| 国产日产欧产精品推荐色| 亚洲欧美日韩国产一区二区三区| 人人精品人人爱| 99免费精品视频| 久久综合久久鬼色中文字| 亚洲乱码中文字幕综合| 精品一区二区三区在线播放视频| 欧美性大战xxxxx久久久| 久久中文娱乐网| 国产精品大尺度| 国产成人高清视频| 欧美一激情一区二区三区| 亚洲免费伊人电影| 国产成人免费视频一区| 91精品国产一区二区| 香蕉成人啪国产精品视频综合网 | 日韩毛片视频在线看| 狠狠色丁香久久婷婷综合丁香| 一本色道久久综合亚洲精品按摩| 91女神在线视频| 中文字幕中文在线不卡住| 美腿丝袜在线亚洲一区| 51精品国自产在线| 亚洲免费在线电影| 99热99精品| 亚洲精选视频免费看| 国产成人自拍网| 精品美女一区二区三区| 激情六月婷婷综合| 日韩写真欧美这视频| 免费观看一级特黄欧美大片| 欧美日韩亚洲高清一区二区| 亚洲免费av高清| 欧美在线你懂得| 亚洲特级片在线| 粉嫩高潮美女一区二区三区| 国产精品久久精品日日| 成人黄色网址在线观看| 国产精品女上位| 99久久久久免费精品国产| 国产精品污www在线观看| 色诱视频网站一区| 午夜精品爽啪视频| 欧洲国产伦久久久久久久| 午夜精品久久久久久久99水蜜桃| 欧美私人免费视频| 亚洲国产日韩a在线播放| 欧美体内she精高潮| 亚洲制服丝袜在线| 精品国产1区二区| 国内国产精品久久| 欧美tk—视频vk| 93久久精品日日躁夜夜躁欧美| 成人免费在线视频| 国产成人在线视频免费播放| 成人欧美一区二区三区黑人麻豆| 91视频xxxx| 免费精品99久久国产综合精品| 精品国免费一区二区三区| 国产美女在线精品| 亚洲小说欧美激情另类| 91精品国产综合久久精品图片| 亚洲成av人片一区二区| 久久久亚洲综合| 91丝袜美腿高跟国产极品老师 | 99精品久久99久久久久| 天天亚洲美女在线视频| 精品国产乱码久久久久久牛牛| 久久99国产乱子伦精品免费| 综合久久久久久| 91精品婷婷国产综合久久竹菊| 国产精品99久久久| 亚洲综合一区二区| 日韩欧美不卡在线观看视频| 色噜噜久久综合| 日本一不卡视频| 久久噜噜亚洲综合| 欧美日本在线观看| 国产91综合网| 九色综合国产一区二区三区| 自拍偷拍欧美激情| 日韩美女视频在线| 欧美日本一区二区三区四区| 国产一区二区三区在线看麻豆| 亚洲高清三级视频| 欧美激情在线一区二区三区| 欧美日韩一区精品| 91麻豆精品视频| 麻豆精品久久精品色综合| 亚洲综合偷拍欧美一区色| 国产日韩欧美不卡在线| 欧美日韩国产另类不卡| 色婷婷激情久久| 国产精品一品视频| 亚洲精品日韩一| 最新国产成人在线观看| 精品国产91洋老外米糕| 8x福利精品第一导航| jizz一区二区| 国产精品911| 粉嫩高潮美女一区二区三区| 日本91福利区| 美女一区二区视频| 亚洲高清免费一级二级三级| 国产精品久久久久久户外露出| 久久婷婷色综合| 久久久精品一品道一区| 国产亚洲精品福利| 欧美成人综合网站| 欧美日本一区二区三区| 欧洲视频一区二区| 91麻豆免费观看| 国产一区二区三区免费| 午夜婷婷国产麻豆精品| 樱花影视一区二区| 中文字幕中文字幕一区| 国产精品久久久久久久久快鸭| 国产目拍亚洲精品99久久精品| 精品国产凹凸成av人导航| 精品盗摄一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 在线一区二区三区做爰视频网站| 91色在线porny| 精品一区二区三区在线观看| 九九热在线视频观看这里只有精品| 亚洲欧美偷拍卡通变态| 亚洲综合一区在线| 亚洲综合偷拍欧美一区色| 日日夜夜一区二区| 另类小说一区二区三区| 国产黄人亚洲片| 99久久久久久99| 色偷偷久久人人79超碰人人澡 | 91免费精品国自产拍在线不卡| 国产69精品一区二区亚洲孕妇| 国产乱国产乱300精品| 丁香激情综合国产| voyeur盗摄精品| 成人激情免费网站| 色妞www精品视频| 欧美色电影在线| 欧美精品一区二区三区蜜桃| 久久日韩精品一区二区五区| 亚洲三级在线免费观看| 亚洲自拍偷拍九九九| 视频一区二区三区中文字幕| 国产成人av福利| 91丨porny丨在线| 日韩欧美国产小视频| 日本一区二区三级电影在线观看| 久久久久久免费毛片精品| 一区二区三区影院| 免费成人在线网站| 色综合久久66| 制服丝袜激情欧洲亚洲| 精品乱人伦一区二区三区| 国产精品第13页| 日韩国产一区二| 在线亚洲高清视频| 欧美va亚洲va香蕉在线| 亚洲一卡二卡三卡四卡五卡| 国产在线观看一区二区| 久久99热这里只有精品| 在线观看亚洲专区| 久久久国产精华| 久久精品72免费观看| 91麻豆国产自产在线观看| 欧美顶级少妇做爰| 136国产福利精品导航| 免费在线视频一区| 欧美日韩亚洲高清一区二区| 国产亚洲欧美在线| 久久99热99| 欧美日韩国产a| 亚洲欧洲综合另类在线| 午夜免费欧美电影| 91丨porny丨首页| 久久久久久久久久久电影| 亚洲国产精品欧美一二99| 韩国中文字幕2020精品| 欧美国产精品v| 亚洲一区在线观看视频| www.欧美亚洲| 欧美三级日韩三级| 亚洲一区二区三区四区中文字幕| 国产成人在线视频播放| 久久久久久久久岛国免费| 免费亚洲电影在线| 欧美一区二区在线看| 亚洲午夜视频在线| 欧美综合天天夜夜久久| 中文字幕在线一区免费| 亚洲第一福利一区| 51精品久久久久久久蜜臀| 亚洲在线中文字幕| 7777精品伊人久久久大香线蕉的 | 亚洲国产cao|