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

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

?? tif_imageiter.c

?? tiff格式傳真源碼例子
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_imageiter.c,v 1.2 2004/05/19 17:14:45 dron Exp $ *//* * Copyright (c) 1991-1996 Sam Leffler * Copyright (c) 1991-1996 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. *//* * TIFF Library * * Written by Conrad J. Poelman, PL/WSAT, Kirtland AFB, NM on 26 Mar 96. * * This file contains code to allow a calling program to "iterate" over each * pixels in an image as it is read from the file. The iterator takes care of * reading strips versus (possibly clipped) tiles, decoding the information * according to the decoding method, and so on, so that calling program can * ignore those details. The calling program does, however, need to be * conscious of the type of the pixel data that it is receiving. * * For reasons of efficiency, the callback function actually gets called for  * "blocks" of pixels rather than for individual pixels. The format of the * callback arguments is given below. * * This code was taken from TIFFReadRGBAImage() in tif_getimage.c of the original * TIFF distribution, and simplified and generalized to provide this general * iteration capability. Those routines could certainly be re-implemented in terms * of a TIFFImageIter if desired. * */#include "tiffiop.h"#include "tif_imageiter.h"#include <assert.h>#include <stdio.h>static	int gtTileContig(TIFFImageIter*, void *udata, uint32, uint32);static	int gtTileSeparate(TIFFImageIter*, void *udata, uint32, uint32);static	int gtStripContig(TIFFImageIter*, void *udata, uint32, uint32);static	int gtStripSeparate(TIFFImageIter*, void *udata, uint32, uint32);static	const char photoTag[] = "PhotometricInterpretation";static intisCCITTCompression(TIFF* tif){    uint16 compress;    TIFFGetField(tif, TIFFTAG_COMPRESSION, &compress);    return (compress == COMPRESSION_CCITTFAX3 ||	    compress == COMPRESSION_CCITTFAX4 ||	    compress == COMPRESSION_CCITTRLE ||	    compress == COMPRESSION_CCITTRLEW);}intTIFFImageIterBegin(TIFFImageIter* img, TIFF* tif, int stop, char emsg[1024]){    uint16* sampleinfo;    uint16 extrasamples;    uint16 planarconfig;    int colorchannels;    img->tif = tif;    img->stoponerr = stop;    TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &img->bitspersample);    img->alpha = 0;    TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &img->samplesperpixel);    TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES,	&extrasamples, &sampleinfo);    if (extrasamples == 1)	switch (sampleinfo[0]) {	case EXTRASAMPLE_ASSOCALPHA:	/* data is pre-multiplied */	case EXTRASAMPLE_UNASSALPHA:	/* data is not pre-multiplied */	    img->alpha = sampleinfo[0];	    break;	}    colorchannels = img->samplesperpixel - extrasamples;    TIFFGetFieldDefaulted(tif, TIFFTAG_PLANARCONFIG, &planarconfig);    if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric)) {	switch (colorchannels) {	case 1:	    if (isCCITTCompression(tif))		img->photometric = PHOTOMETRIC_MINISWHITE;	    else		img->photometric = PHOTOMETRIC_MINISBLACK;	    break;	case 3:	    img->photometric = PHOTOMETRIC_RGB;	    break;	default:	    sprintf(emsg, "Missing needed %s tag", photoTag);	    return (0);	}    }    switch (img->photometric) {    case PHOTOMETRIC_PALETTE:	if (!TIFFGetField(tif, TIFFTAG_COLORMAP,	    &img->redcmap, &img->greencmap, &img->bluecmap)) {	    TIFFError(TIFFFileName(tif), "Missing required \"Colormap\" tag");	    return (0);	}	/* fall thru... */    case PHOTOMETRIC_MINISWHITE:    case PHOTOMETRIC_MINISBLACK:/* This should work now so skip the check - BSR	if (planarconfig == PLANARCONFIG_CONTIG && img->samplesperpixel != 1) {	    sprintf(emsg,		"Sorry, can not handle contiguous data with %s=%d, and %s=%d",		photoTag, img->photometric,		"Samples/pixel", img->samplesperpixel);	    return (0);	} */	break;    case PHOTOMETRIC_YCBCR:	if (planarconfig != PLANARCONFIG_CONTIG) {	    sprintf(emsg, "Sorry, can not handle YCbCr images with %s=%d",		"Planarconfiguration", planarconfig);	    return (0);	}	/* It would probably be nice to have a reality check here. */	{ uint16 compress;	  TIFFGetField(tif, TIFFTAG_COMPRESSION, &compress);	  if (compress == COMPRESSION_JPEG && planarconfig == PLANARCONFIG_CONTIG) {	    /* can rely on libjpeg to convert to RGB */	    /* XXX should restore current state on exit */	    TIFFSetField(tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);	    img->photometric = PHOTOMETRIC_RGB;	  }	}	break;    case PHOTOMETRIC_RGB: 	if (colorchannels < 3) {	    sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",		"Color channels", colorchannels);	    return (0);	}	break;    case PHOTOMETRIC_SEPARATED: {	uint16 inkset;	TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);	if (inkset != INKSET_CMYK) {	    sprintf(emsg, "Sorry, can not handle separated image with %s=%d",		"InkSet", inkset);	    return (0);	}	if (img->samplesperpixel != 4) {	    sprintf(emsg, "Sorry, can not handle separated image with %s=%d",		"Samples/pixel", img->samplesperpixel);	    return (0);	}	break;    }    default:	sprintf(emsg, "Sorry, can not handle image with %s=%d",	    photoTag, img->photometric);	return (0);    }    TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &img->width);    TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &img->height);    TIFFGetFieldDefaulted(tif, TIFFTAG_ORIENTATION, &img->orientation);    switch (img->orientation) {    case ORIENTATION_BOTRIGHT:    case ORIENTATION_RIGHTBOT:	/* XXX */    case ORIENTATION_LEFTBOT:	/* XXX */	TIFFWarning(TIFFFileName(tif), "using bottom-left orientation");	img->orientation = ORIENTATION_BOTLEFT;	/* fall thru... */    case ORIENTATION_BOTLEFT:	break;    case ORIENTATION_TOPRIGHT:    case ORIENTATION_RIGHTTOP:	/* XXX */    case ORIENTATION_LEFTTOP:	/* XXX */    default:	TIFFWarning(TIFFFileName(tif), "using top-left orientation");	img->orientation = ORIENTATION_TOPLEFT;	/* fall thru... */    case ORIENTATION_TOPLEFT:	break;    }    img->isContig =	!(planarconfig == PLANARCONFIG_SEPARATE && colorchannels > 1);    if (img->isContig) {	img->get = TIFFIsTiled(tif) ? gtTileContig : gtStripContig;    } else {	img->get = TIFFIsTiled(tif) ? gtTileSeparate : gtStripSeparate;    }    return (1);}intTIFFImageIterGet(TIFFImageIter* img, void *udata, uint32 w, uint32 h){    if (img->get == NULL) {	TIFFError(TIFFFileName(img->tif), "No \"get\" routine setup");	return (0);    }    if (img->callback.any == NULL) {	TIFFError(TIFFFileName(img->tif),	    "No \"put\" routine setupl; probably can not handle image format");	return (0);    }    return (*img->get)(img, udata, w, h);}TIFFImageIterEnd(TIFFImageIter* img){    /* Nothing to free... ? */}/* * Read the specified image into an ABGR-format raster. */intTIFFReadImageIter(TIFF* tif,    uint32 rwidth, uint32 rheight, uint8* raster, int stop){    char emsg[1024];    TIFFImageIter img;    int ok;    if (TIFFImageIterBegin(&img, tif, stop, emsg)) {	/* XXX verify rwidth and rheight against width and height */	ok = TIFFImageIterGet(&img, raster, rwidth, img.height);	TIFFImageIterEnd(&img);    } else {	TIFFError(TIFFFileName(tif), emsg);	ok = 0;    }    return (ok);}/* * Get an tile-organized image that has *	PlanarConfiguration contiguous if SamplesPerPixel > 1 * or *	SamplesPerPixel == 1 */	static intgtTileContig(TIFFImageIter* img, void *udata, uint32 w, uint32 h)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频免费观看高清完整版 | 日精品一区二区三区| 亚洲v日本v欧美v久久精品| 另类中文字幕网| 成人午夜免费视频| 国产在线精品一区二区不卡了| 国产成人av一区二区三区在线 | 人妖欧美一区二区| 久色婷婷小香蕉久久| 色综合天天做天天爱| 日韩欧美一区在线| 亚洲一区电影777| 黄网站免费久久| 欧美日韩三级在线| 国产精品人成在线观看免费| 亚洲最新视频在线观看| 成人一区二区三区中文字幕| 在线观看视频一区二区| 中文字幕欧美日韩一区| 日韩av电影天堂| 狠狠色丁香久久婷婷综合丁香| 欧美日韩一区二区在线观看 | 中文字幕久久午夜不卡| 日本不卡一区二区三区| 91美女在线看| 亚洲精品五月天| 国内精品写真在线观看| 555www色欧美视频| 午夜欧美视频在线观看| 91免费观看国产| 亚洲视频一区二区在线观看| 精品一区二区三区影院在线午夜 | 欧美在线不卡视频| 国产精品伦一区二区三级视频| 国产麻豆午夜三级精品| 日韩一级成人av| 亚洲精品一区二区三区福利| 日韩高清中文字幕一区| 欧美日韩精品一区视频| 午夜电影久久久| 欧美这里有精品| 亚洲一区二区美女| 在线亚洲精品福利网址导航| 国产精品天天看| 99这里只有精品| 亚洲视频一区在线| 欧美无人高清视频在线观看| 亚洲欧美激情在线| 欧美色精品在线视频| 一区二区三区中文在线观看| 北条麻妃国产九九精品视频| 中文字幕一区二区三区不卡在线| 国产成人精品综合在线观看| 亚洲天堂精品在线观看| 95精品视频在线| 亚洲曰韩产成在线| 欧美日韩国产小视频| 亚洲成人精品在线观看| 日韩精品中文字幕一区二区三区 | 亚洲精品成人少妇| 色婷婷精品久久二区二区蜜臂av| 一级特黄大欧美久久久| 欧美色手机在线观看| 一个色妞综合视频在线观看| 6080yy午夜一二三区久久| 美国毛片一区二区| 国产精品欧美一级免费| 在线观看国产日韩| 日本免费新一区视频| 日韩精品一区二区三区在线 | 欧美偷拍一区二区| 免费的成人av| 亚洲人精品午夜| 欧美日韩精品系列| 免费一级片91| 1区2区3区欧美| 欧美日韩三级在线| 成人免费精品视频| 亚洲va韩国va欧美va精品| 久久婷婷一区二区三区| 成人午夜av电影| 亚洲人成网站影音先锋播放| 欧美变态tickling挠脚心| 国产成人在线视频网址| 亚洲成年人影院| 久久久久久久久久美女| 欧美三级电影在线观看| 精品亚洲成a人在线观看| 亚洲同性gay激情无套| 欧美午夜精品免费| 国产美女在线观看一区| 一二三区精品福利视频| 精品福利一二区| 91在线观看地址| 久久99精品网久久| 亚洲综合999| 中文字幕欧美激情| 欧美一区二区在线免费观看| 国产精品一区二区久激情瑜伽| 亚洲免费伊人电影| 国产日韩欧美激情| 成人av第一页| 蜜桃精品在线观看| 亚洲天堂av一区| 国产精品污www在线观看| 日韩三级精品电影久久久| 欧美日韩一区不卡| 91在线精品一区二区三区| 国产美女av一区二区三区| 午夜精品久久久久久久99樱桃| 欧美刺激脚交jootjob| 欧美在线不卡视频| 99视频有精品| 国产91精品入口| 美国一区二区三区在线播放| 欧美国产欧美综合| 欧美电影影音先锋| 91.com视频| 欧美影院一区二区三区| 欧美性猛交xxxxxx富婆| 91影院在线免费观看| 日本乱人伦一区| 91丨九色丨蝌蚪丨老版| av亚洲精华国产精华精| 国产精品一区二区在线观看不卡 | 精品国产乱码久久久久久久| 欧洲生活片亚洲生活在线观看| 一本一本大道香蕉久在线精品| 成人午夜激情在线| 日本不卡视频在线| 日韩av网站在线观看| 视频一区二区欧美| 日韩黄色一级片| 久久精品国产第一区二区三区| 日本欧美一区二区三区| 国产在线不卡一卡二卡三卡四卡| 毛片不卡一区二区| 精品中文av资源站在线观看| 亚洲女子a中天字幕| 亚洲免费电影在线| 亚洲高清视频在线| 一区二区三区丝袜| 亚洲成av人**亚洲成av**| 日本女人一区二区三区| 精品一区二区久久| av午夜一区麻豆| 色哟哟在线观看一区二区三区| 色呦呦网站一区| 欧美性生活一区| 日韩亚洲欧美一区| 精品国产a毛片| 国产精品理论片| 亚洲一区二区三区四区不卡| 亚洲国产精品影院| 精品中文字幕一区二区 | 亚洲欧美综合在线精品| 亚洲人123区| 五月婷婷激情综合网| 国产精品一区久久久久| 99久久精品免费精品国产| 日韩一区国产二区欧美三区| 久久天天做天天爱综合色| 亚洲精品免费在线| 日韩高清不卡一区| 国产河南妇女毛片精品久久久| 成人黄色在线网站| 日韩欧美激情一区| 亚洲精品高清在线| 国产精品亚洲成人| 欧美日本一区二区三区四区| 精品国产伦一区二区三区免费| 夜夜嗨av一区二区三区四季av| 麻豆视频观看网址久久| 91福利精品视频| 精品精品国产高清一毛片一天堂| 精品捆绑美女sm三区| 五月婷婷欧美视频| 91国产免费观看| 中文字幕精品三区| 污片在线观看一区二区| 国产高清亚洲一区| 日韩一级大片在线观看| 日韩一区在线看| 国产激情视频一区二区在线观看| 欧美中文字幕不卡| 日本一区二区不卡视频| 成人黄色在线看| 久久亚洲精华国产精华液| 依依成人精品视频| 紧缚奴在线一区二区三区| 国产欧美精品一区二区色综合朱莉 | 久久品道一品道久久精品| 在线免费观看日本一区| 亚洲欧美色图小说| 亚洲三级电影网站| 色网站国产精品| 亚洲午夜一区二区三区| 欧美日本一区二区在线观看| 爽爽淫人综合网网站| 欧美一区二区黄色|