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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tif_pixarlog.c

?? 支持各種柵格圖像和矢量圖像讀取的庫(kù)
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/* $Id: tif_pixarlog.c,v 1.15 2006/09/28 16:26:03 dron Exp $ *//* * Copyright (c) 1996-1997 Sam Leffler * Copyright (c) 1996 Pixar * * 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 * Pixar, 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 Pixar, 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 PIXAR, 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. */#include "tiffiop.h"#ifdef PIXARLOG_SUPPORT/* * TIFF Library. * PixarLog Compression Support * * Contributed by Dan McCoy. * * PixarLog film support uses the TIFF library to store companded * 11 bit values into a tiff file, which are compressed using the  * zip compressor.   * * The codec can take as input and produce as output 32-bit IEEE float values  * as well as 16-bit or 8-bit unsigned integer values. * * On writing any of the above are converted into the internal * 11-bit log format.   In the case of  8 and 16 bit values, the * input is assumed to be unsigned linear color values that represent * the range 0-1.  In the case of IEEE values, the 0-1 range is assumed to * be the normal linear color range, in addition over 1 values are * accepted up to a value of about 25.0 to encode "hot" hightlights and such. * The encoding is lossless for 8-bit values, slightly lossy for the * other bit depths.  The actual color precision should be better * than the human eye can perceive with extra room to allow for * error introduced by further image computation.  As with any quantized * color format, it is possible to perform image calculations which * expose the quantization error. This format should certainly be less  * susceptable to such errors than standard 8-bit encodings, but more * susceptable than straight 16-bit or 32-bit encodings. * * On reading the internal format is converted to the desired output format. * The program can request which format it desires by setting the internal * pseudo tag TIFFTAG_PIXARLOGDATAFMT to one of these possible values: *  PIXARLOGDATAFMT_FLOAT     = provide IEEE float values. *  PIXARLOGDATAFMT_16BIT     = provide unsigned 16-bit integer values *  PIXARLOGDATAFMT_8BIT      = provide unsigned 8-bit integer values * * alternately PIXARLOGDATAFMT_8BITABGR provides unsigned 8-bit integer * values with the difference that if there are exactly three or four channels * (rgb or rgba) it swaps the channel order (bgr or abgr). * * PIXARLOGDATAFMT_11BITLOG provides the internal encoding directly * packed in 16-bit values.   However no tools are supplied for interpreting * these values. * * "hot" (over 1.0) areas written in floating point get clamped to * 1.0 in the integer data types. * * When the file is closed after writing, the bit depth and sample format * are set always to appear as if 8-bit data has been written into it. * That way a naive program unaware of the particulars of the encoding * gets the format it is most likely able to handle. * * The codec does it's own horizontal differencing step on the coded * values so the libraries predictor stuff should be turned off. * The codec also handle byte swapping the encoded values as necessary * since the library does not have the information necessary * to know the bit depth of the raw unencoded buffer. *  */#include "tif_predict.h"#include "zlib.h"#include <stdio.h>#include <stdlib.h>#include <math.h>/* Tables for converting to/from 11 bit coded values */#define  TSIZE	 2048		/* decode table size (11-bit tokens) */#define  TSIZEP1 2049		/* Plus one for slop */#define  ONE	 1250		/* token value of 1.0 exactly */#define  RATIO	 1.004		/* nominal ratio for log part */#define CODE_MASK 0x7ff         /* 11 bits. */static float  Fltsize;static float  LogK1, LogK2;#define REPEAT(n, op)   { int i; i=n; do { i--; op; } while (i>0); }static voidhorizontalAccumulateF(uint16 *wp, int n, int stride, float *op, 	float *ToLinearF){    register unsigned int  cr, cg, cb, ca, mask;    register float  t0, t1, t2, t3;    if (n >= stride) {	mask = CODE_MASK;	if (stride == 3) {	    t0 = ToLinearF[cr = wp[0]];	    t1 = ToLinearF[cg = wp[1]];	    t2 = ToLinearF[cb = wp[2]];	    op[0] = t0;	    op[1] = t1;	    op[2] = t2;	    n -= 3;	    while (n > 0) {		wp += 3;		op += 3;		n -= 3;		t0 = ToLinearF[(cr += wp[0]) & mask];		t1 = ToLinearF[(cg += wp[1]) & mask];		t2 = ToLinearF[(cb += wp[2]) & mask];		op[0] = t0;		op[1] = t1;		op[2] = t2;	    }	} else if (stride == 4) {	    t0 = ToLinearF[cr = wp[0]];	    t1 = ToLinearF[cg = wp[1]];	    t2 = ToLinearF[cb = wp[2]];	    t3 = ToLinearF[ca = wp[3]];	    op[0] = t0;	    op[1] = t1;	    op[2] = t2;	    op[3] = t3;	    n -= 4;	    while (n > 0) {		wp += 4;		op += 4;		n -= 4;		t0 = ToLinearF[(cr += wp[0]) & mask];		t1 = ToLinearF[(cg += wp[1]) & mask];		t2 = ToLinearF[(cb += wp[2]) & mask];		t3 = ToLinearF[(ca += wp[3]) & mask];		op[0] = t0;		op[1] = t1;		op[2] = t2;		op[3] = t3;	    }	} else {	    REPEAT(stride, *op = ToLinearF[*wp&mask]; wp++; op++)	    n -= stride;	    while (n > 0) {		REPEAT(stride,		    wp[stride] += *wp; *op = ToLinearF[*wp&mask]; wp++; op++)		n -= stride;	    }	}    }}static voidhorizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,	float *ToLinearF){    register unsigned int  cr, cg, cb, ca, mask;    register float  t0, t1, t2, t3;#define SCALE12 2048.0F#define CLAMP12(t) (((t) < 3071) ? (uint16) (t) : 3071)    if (n >= stride) {	mask = CODE_MASK;	if (stride == 3) {	    t0 = ToLinearF[cr = wp[0]] * SCALE12;	    t1 = ToLinearF[cg = wp[1]] * SCALE12;	    t2 = ToLinearF[cb = wp[2]] * SCALE12;	    op[0] = CLAMP12(t0);	    op[1] = CLAMP12(t1);	    op[2] = CLAMP12(t2);	    n -= 3;	    while (n > 0) {		wp += 3;		op += 3;		n -= 3;		t0 = ToLinearF[(cr += wp[0]) & mask] * SCALE12;		t1 = ToLinearF[(cg += wp[1]) & mask] * SCALE12;		t2 = ToLinearF[(cb += wp[2]) & mask] * SCALE12;		op[0] = CLAMP12(t0);		op[1] = CLAMP12(t1);		op[2] = CLAMP12(t2);	    }	} else if (stride == 4) {	    t0 = ToLinearF[cr = wp[0]] * SCALE12;	    t1 = ToLinearF[cg = wp[1]] * SCALE12;	    t2 = ToLinearF[cb = wp[2]] * SCALE12;	    t3 = ToLinearF[ca = wp[3]] * SCALE12;	    op[0] = CLAMP12(t0);	    op[1] = CLAMP12(t1);	    op[2] = CLAMP12(t2);	    op[3] = CLAMP12(t3);	    n -= 4;	    while (n > 0) {		wp += 4;		op += 4;		n -= 4;		t0 = ToLinearF[(cr += wp[0]) & mask] * SCALE12;		t1 = ToLinearF[(cg += wp[1]) & mask] * SCALE12;		t2 = ToLinearF[(cb += wp[2]) & mask] * SCALE12;		t3 = ToLinearF[(ca += wp[3]) & mask] * SCALE12;		op[0] = CLAMP12(t0);		op[1] = CLAMP12(t1);		op[2] = CLAMP12(t2);		op[3] = CLAMP12(t3);	    }	} else {	    REPEAT(stride, t0 = ToLinearF[*wp&mask] * SCALE12;                           *op = CLAMP12(t0); wp++; op++)	    n -= stride;	    while (n > 0) {		REPEAT(stride,		    wp[stride] += *wp; t0 = ToLinearF[wp[stride]&mask]*SCALE12;		    *op = CLAMP12(t0);  wp++; op++)		n -= stride;	    }	}    }}static voidhorizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,	uint16 *ToLinear16){    register unsigned int  cr, cg, cb, ca, mask;    if (n >= stride) {	mask = CODE_MASK;	if (stride == 3) {	    op[0] = ToLinear16[cr = wp[0]];	    op[1] = ToLinear16[cg = wp[1]];	    op[2] = ToLinear16[cb = wp[2]];	    n -= 3;	    while (n > 0) {		wp += 3;		op += 3;		n -= 3;		op[0] = ToLinear16[(cr += wp[0]) & mask];		op[1] = ToLinear16[(cg += wp[1]) & mask];		op[2] = ToLinear16[(cb += wp[2]) & mask];	    }	} else if (stride == 4) {	    op[0] = ToLinear16[cr = wp[0]];	    op[1] = ToLinear16[cg = wp[1]];	    op[2] = ToLinear16[cb = wp[2]];	    op[3] = ToLinear16[ca = wp[3]];	    n -= 4;	    while (n > 0) {		wp += 4;		op += 4;		n -= 4;		op[0] = ToLinear16[(cr += wp[0]) & mask];		op[1] = ToLinear16[(cg += wp[1]) & mask];		op[2] = ToLinear16[(cb += wp[2]) & mask];		op[3] = ToLinear16[(ca += wp[3]) & mask];	    }	} else {	    REPEAT(stride, *op = ToLinear16[*wp&mask]; wp++; op++)	    n -= stride;	    while (n > 0) {		REPEAT(stride,		    wp[stride] += *wp; *op = ToLinear16[*wp&mask]; wp++; op++)		n -= stride;	    }	}    }}/*  * Returns the log encoded 11-bit values with the horizontal * differencing undone. */static voidhorizontalAccumulate11(uint16 *wp, int n, int stride, uint16 *op){    register unsigned int  cr, cg, cb, ca, mask;    if (n >= stride) {	mask = CODE_MASK;	if (stride == 3) {	    op[0] = cr = wp[0];  op[1] = cg = wp[1];  op[2] = cb = wp[2];	    n -= 3;	    while (n > 0) {		wp += 3;		op += 3;		n -= 3;		op[0] = (cr += wp[0]) & mask;		op[1] = (cg += wp[1]) & mask;		op[2] = (cb += wp[2]) & mask;	    }	} else if (stride == 4) {	    op[0] = cr = wp[0];  op[1] = cg = wp[1];	    op[2] = cb = wp[2];  op[3] = ca = wp[3];	    n -= 4;	    while (n > 0) {		wp += 4;		op += 4;		n -= 4;		op[0] = (cr += wp[0]) & mask;		op[1] = (cg += wp[1]) & mask;		op[2] = (cb += wp[2]) & mask;		op[3] = (ca += wp[3]) & mask;	    } 	} else {	    REPEAT(stride, *op = *wp&mask; wp++; op++)	    n -= stride;	    while (n > 0) {		REPEAT(stride,		    wp[stride] += *wp; *op = *wp&mask; wp++; op++)		n -= stride;	    }	}    }}static voidhorizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,	unsigned char *ToLinear8){    register unsigned int  cr, cg, cb, ca, mask;    if (n >= stride) {	mask = CODE_MASK;	if (stride == 3) {	    op[0] = ToLinear8[cr = wp[0]];	    op[1] = ToLinear8[cg = wp[1]];	    op[2] = ToLinear8[cb = wp[2]];	    n -= 3;	    while (n > 0) {		n -= 3;		wp += 3;		op += 3;		op[0] = ToLinear8[(cr += wp[0]) & mask];		op[1] = ToLinear8[(cg += wp[1]) & mask];		op[2] = ToLinear8[(cb += wp[2]) & mask];	    }	} else if (stride == 4) {	    op[0] = ToLinear8[cr = wp[0]];	    op[1] = ToLinear8[cg = wp[1]];	    op[2] = ToLinear8[cb = wp[2]];	    op[3] = ToLinear8[ca = wp[3]];	    n -= 4;	    while (n > 0) {		n -= 4;		wp += 4;		op += 4;		op[0] = ToLinear8[(cr += wp[0]) & mask];		op[1] = ToLinear8[(cg += wp[1]) & mask];		op[2] = ToLinear8[(cb += wp[2]) & mask];		op[3] = ToLinear8[(ca += wp[3]) & mask];	    }	} else {	    REPEAT(stride, *op = ToLinear8[*wp&mask]; wp++; op++)	    n -= stride;	    while (n > 0) {		REPEAT(stride,		    wp[stride] += *wp; *op = ToLinear8[*wp&mask]; wp++; op++)		n -= stride;	    }	}    }}static voidhorizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,	unsigned char *ToLinear8){    register unsigned int  cr, cg, cb, ca, mask;    register unsigned char  t0, t1, t2, t3;    if (n >= stride) {	mask = CODE_MASK;	if (stride == 3) {	    op[0] = 0;	    t1 = ToLinear8[cb = wp[2]];	    t2 = ToLinear8[cg = wp[1]];	    t3 = ToLinear8[cr = wp[0]];	    op[1] = t1;	    op[2] = t2;	    op[3] = t3;	    n -= 3;	    while (n > 0) {		n -= 3;		wp += 3;		op += 4;		op[0] = 0;		t1 = ToLinear8[(cb += wp[2]) & mask];		t2 = ToLinear8[(cg += wp[1]) & mask];		t3 = ToLinear8[(cr += wp[0]) & mask];		op[1] = t1;		op[2] = t2;		op[3] = t3;	    }	} else if (stride == 4) {	    t0 = ToLinear8[ca = wp[3]];	    t1 = ToLinear8[cb = wp[2]];	    t2 = ToLinear8[cg = wp[1]];	    t3 = ToLinear8[cr = wp[0]];	    op[0] = t0;	    op[1] = t1;	    op[2] = t2;	    op[3] = t3;	    n -= 4;	    while (n > 0) {		n -= 4;		wp += 4;		op += 4;		t0 = ToLinear8[(ca += wp[3]) & mask];		t1 = ToLinear8[(cb += wp[2]) & mask];		t2 = ToLinear8[(cg += wp[1]) & mask];		t3 = ToLinear8[(cr += wp[0]) & mask];		op[0] = t0;		op[1] = t1;		op[2] = t2;		op[3] = t3;	    }	} else {	    REPEAT(stride, *op = ToLinear8[*wp&mask]; wp++; op++)	    n -= stride;	    while (n > 0) {		REPEAT(stride,		    wp[stride] += *wp; *op = ToLinear8[*wp&mask]; wp++; op++)		n -= stride;	    }	}    }}/* * State block for each open TIFF * file using PixarLog compression/decompression.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一二三| 91久久精品一区二区三| 91免费版在线| 欧美不卡一区二区三区| 综合色中文字幕| 激情文学综合插| 欧美高清视频在线高清观看mv色露露十八| www成人在线观看| 中文字幕一区三区| 国产精品996| 精品盗摄一区二区三区| 日韩精品欧美精品| 欧美日韩国产首页在线观看| 成人免费小视频| www..com久久爱| 日本一区二区三区免费乱视频| 综合久久久久综合| 99久久夜色精品国产网站| 精品国产一区二区在线观看| 丝袜亚洲精品中文字幕一区| 在线免费视频一区二区| 国产精品久久久久aaaa| 国产一区二区不卡| 欧美精品一区在线观看| 国内精品久久久久影院薰衣草 | 久久99精品国产.久久久久| 国产精品538一区二区在线| 51精品视频一区二区三区| 午夜精品久久久久久久99樱桃 | 亚洲精品精品亚洲| jvid福利写真一区二区三区| 中文在线一区二区| 丰满白嫩尤物一区二区| 久久精品一区四区| 波多野结衣亚洲一区| 综合久久一区二区三区| 色综合夜色一区| 亚洲综合成人在线| 欧美另类高清zo欧美| 天天色综合成人网| 精品国产成人系列| 精品一区免费av| 中文字幕 久热精品 视频在线 | 99精品视频在线免费观看| 中文字幕一区免费在线观看| 91福利在线免费观看| 亚洲成a人在线观看| 日韩午夜av一区| 国产宾馆实践打屁股91| 一区二区三区精品| 日韩视频在线你懂得| 国产精品影视天天线| 亚洲另类在线制服丝袜| 91精品国产欧美一区二区18| 久久91精品国产91久久小草| 国产欧美日韩精品一区| 99久久99久久精品国产片果冻 | 黑人巨大精品欧美黑白配亚洲| 日韩精品一区二区三区在线 | 欧美日本韩国一区二区三区视频 | 精品免费日韩av| 国产999精品久久久久久| 中文字幕一区二区在线播放| 欧美综合一区二区| 久久99久久99精品免视看婷婷 | 91丝袜美女网| 美女视频黄频大全不卡视频在线播放| 国产三级三级三级精品8ⅰ区| 色999日韩国产欧美一区二区| 免费三级欧美电影| 亚洲另类一区二区| 日韩女优av电影在线观看| 国产乱理伦片在线观看夜一区 | 自拍偷自拍亚洲精品播放| 欧美人xxxx| 国产成人在线电影| 亚洲国产精品一区二区www| 久久久久免费观看| 欧美日本在线播放| 懂色av噜噜一区二区三区av| 琪琪一区二区三区| 亚洲国产美女搞黄色| 91精品国产综合久久蜜臀| av日韩在线网站| 国产一区二区三区在线观看免费视频| 亚洲五码中文字幕| 国产精品国产三级国产有无不卡 | 精品国产乱码久久久久久久| 精品视频色一区| 丁香六月综合激情| 美国毛片一区二区三区| 亚洲一区二区综合| 久久久久久久免费视频了| 91精品国产综合久久福利| 91亚洲大成网污www| 久久www免费人成看片高清| 亚洲影视资源网| 亚洲欧美日本在线| 亚洲色图另类专区| 国产精品卡一卡二| 欧美国产97人人爽人人喊| 久久综合九色综合欧美就去吻| 欧美一区二区日韩| 欧美伦理影视网| 欧美系列在线观看| 在线日韩av片| 欧洲日韩一区二区三区| 欧洲在线/亚洲| 在线观看av不卡| 欧美三级资源在线| 欧美精品高清视频| 91.xcao| 制服丝袜亚洲网站| 欧美一区二区二区| 精品三级av在线| 国产喂奶挤奶一区二区三区| 国产亚洲精品超碰| 国产精品人人做人人爽人人添| 国产精品色哟哟| 亚洲激情六月丁香| 夜夜嗨av一区二区三区四季av| 亚洲另类中文字| 亚洲人成亚洲人成在线观看图片 | 亚洲va在线va天堂| 亚洲伊人色欲综合网| 韩国成人福利片在线播放| 蜜臀久久久久久久| 国产在线不卡视频| 成人小视频免费观看| 91小宝寻花一区二区三区| 成人app在线| 色婷婷激情久久| 日韩一区二区三区观看| 国产亚洲综合色| 久久久久99精品一区| 国产精品美女久久久久aⅴ国产馆| 一区精品在线播放| 日日欢夜夜爽一区| 粉嫩av一区二区三区| 在线观看免费成人| 久久综合色综合88| 亚洲欧美日韩国产手机在线 | 日韩精品一区二区三区在线| 久久精品男人天堂av| 一区二区三区在线高清| 久久国产精品99久久久久久老狼| 国产精品一二三四区| 欧美三日本三级三级在线播放| 精品国产自在久精品国产| 亚洲卡通欧美制服中文| 久久99精品国产.久久久久久| 成人av在线播放网址| 欧美丰满美乳xxx高潮www| 国产日韩一级二级三级| 亚洲国产日韩综合久久精品| 国产成人午夜高潮毛片| 欧美日韩免费一区二区三区| 国产区在线观看成人精品| 天堂一区二区在线免费观看| 成av人片一区二区| 日韩欧美成人午夜| 亚洲国产精品久久久久婷婷884 | 国产999精品久久久久久绿帽| 欧美午夜一区二区三区免费大片| 26uuu成人网一区二区三区| 一区二区三区在线播放| 国产suv一区二区三区88区| 欧美精品日韩一本| 有坂深雪av一区二区精品| 国产精品白丝av| 日韩欧美亚洲另类制服综合在线| 一区二区三区在线观看欧美| 国产不卡免费视频| 日韩欧美一区在线| 午夜在线成人av| 色哦色哦哦色天天综合| 亚洲国产激情av| 国产自产高清不卡| 欧美一区二视频| 日韩精品欧美精品| 欧美影院精品一区| 亚洲精品久久久久久国产精华液| 国产成人av一区二区三区在线| 欧美成人bangbros| 日本vs亚洲vs韩国一区三区二区| 欧美日韩在线播放三区| 尤物视频一区二区| 色天天综合久久久久综合片| 国产精品久久国产精麻豆99网站| 国产自产v一区二区三区c| 欧美电影免费观看高清完整版在线观看| 亚洲成人在线网站| 欧美综合欧美视频| 亚洲国产成人av| 欧美日韩在线亚洲一区蜜芽| 亚洲综合久久久久| 欧美日韩视频在线观看一区二区三区 | 亚洲二区在线观看| 色八戒一区二区三区| 一片黄亚洲嫩模|