⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tif_print.c

📁 一个国人自己实现图像库的程序(有参考价值)
💻 C
📖 第 1 页 / 共 2 页
字号:
/* $Header: /cvsroot/osrs/libtiff/libtiff/tif_print.c,v 1.5 2001/03/02 04:59:52 warmerda Exp $ *//* * Copyright (c) 1988-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. *//* * TIFF Library. * * Directory Printing Support */#include "tiffiop.h"#include <stdio.h>#include <ctype.h>static const char *photoNames[] = {    "min-is-white",				/* PHOTOMETRIC_MINISWHITE */    "min-is-black",				/* PHOTOMETRIC_MINISBLACK */    "RGB color",				/* PHOTOMETRIC_RGB */    "palette color (RGB from colormap)",	/* PHOTOMETRIC_PALETTE */    "transparency mask",			/* PHOTOMETRIC_MASK */    "separated",				/* PHOTOMETRIC_SEPARATED */    "YCbCr",					/* PHOTOMETRIC_YCBCR */    "7 (0x7)",    "CIE L*a*b*",				/* PHOTOMETRIC_CIELAB */};#define	NPHOTONAMES	(sizeof (photoNames) / sizeof (photoNames[0]))static const char *orientNames[] = {    "0 (0x0)",    "row 0 top, col 0 lhs",			/* ORIENTATION_TOPLEFT */    "row 0 top, col 0 rhs",			/* ORIENTATION_TOPRIGHT */    "row 0 bottom, col 0 rhs",			/* ORIENTATION_BOTRIGHT */    "row 0 bottom, col 0 lhs",			/* ORIENTATION_BOTLEFT */    "row 0 lhs, col 0 top",			/* ORIENTATION_LEFTTOP */    "row 0 rhs, col 0 top",			/* ORIENTATION_RIGHTTOP */    "row 0 rhs, col 0 bottom",			/* ORIENTATION_RIGHTBOT */    "row 0 lhs, col 0 bottom",			/* ORIENTATION_LEFTBOT */};#define	NORIENTNAMES	(sizeof (orientNames) / sizeof (orientNames[0]))/* * Print the contents of the current directory * to the specified stdio file stream. */voidTIFFPrintDirectory(TIFF* tif, FILE* fd, long flags){	register TIFFDirectory *td;	char *sep;	uint16 i;	long l, n;	fprintf(fd, "TIFF Directory at offset 0x%lx\n", tif->tif_diroff);	td = &tif->tif_dir;	if (TIFFFieldSet(tif,FIELD_SUBFILETYPE)) {		fprintf(fd, "  Subfile Type:");		sep = " ";		if (td->td_subfiletype & FILETYPE_REDUCEDIMAGE) {			fprintf(fd, "%sreduced-resolution image", sep);			sep = "/";		}		if (td->td_subfiletype & FILETYPE_PAGE) {			fprintf(fd, "%smulti-page document", sep);			sep = "/";		}		if (td->td_subfiletype & FILETYPE_MASK)			fprintf(fd, "%stransparency mask", sep);		fprintf(fd, " (%lu = 0x%lx)\n",		    (long) td->td_subfiletype, (long) td->td_subfiletype);	}	if (TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS)) {		fprintf(fd, "  Image Width: %lu Image Length: %lu",		    (u_long) td->td_imagewidth, (u_long) td->td_imagelength);		if (TIFFFieldSet(tif,FIELD_IMAGEDEPTH))			fprintf(fd, " Image Depth: %lu",			    (u_long) td->td_imagedepth);		fprintf(fd, "\n");	} 	/* Begin Pixar */ 	if (TIFFFieldSet(tif,FIELD_IMAGEFULLWIDTH) || 	    TIFFFieldSet(tif,FIELD_IMAGEFULLLENGTH)) {	  fprintf(fd, "  Pixar Full Image Width: %lu Full Image Length: %lu\n",		  (u_long) td->td_imagefullwidth,		  (u_long) td->td_imagefulllength); 	} 	if (TIFFFieldSet(tif,FIELD_TEXTUREFORMAT))	  _TIFFprintAsciiTag(fd, "Texture Format", td->td_textureformat); 	if (TIFFFieldSet(tif,FIELD_WRAPMODES))	  _TIFFprintAsciiTag(fd, "Texture Wrap Modes", td->td_wrapmodes); 	if (TIFFFieldSet(tif,FIELD_FOVCOT))	  fprintf(fd, "  Field of View Cotangent: %g\n", td->td_fovcot);	if (TIFFFieldSet(tif,FIELD_MATRIX_WORLDTOSCREEN)) {	  typedef float	Matrix[4][4];	  Matrix*		m = (Matrix*)td->td_matrixWorldToScreen;	  	  fprintf(fd, "  Matrix NP:\n\t%g %g %g %g\n\t%g %g %g %g\n\t%g %g %g %g\n\t%g %g %g %g\n",		  (*m)[0][0], (*m)[0][1], (*m)[0][2], (*m)[0][3],		  (*m)[1][0], (*m)[1][1], (*m)[1][2], (*m)[1][3],		  (*m)[2][0], (*m)[2][1], (*m)[2][2], (*m)[2][3],		  (*m)[3][0], (*m)[3][1], (*m)[3][2], (*m)[3][3]); 	} 	if (TIFFFieldSet(tif,FIELD_MATRIX_WORLDTOCAMERA)) {	  typedef float	Matrix[4][4];	  Matrix*		m = (Matrix*)td->td_matrixWorldToCamera;	  	  fprintf(fd, "  Matrix Nl:\n\t%g %g %g %g\n\t%g %g %g %g\n\t%g %g %g %g\n\t%g %g %g %g\n",		  (*m)[0][0], (*m)[0][1], (*m)[0][2], (*m)[0][3],		  (*m)[1][0], (*m)[1][1], (*m)[1][2], (*m)[1][3],		  (*m)[2][0], (*m)[2][1], (*m)[2][2], (*m)[2][3],		  (*m)[3][0], (*m)[3][1], (*m)[3][2], (*m)[3][3]); 	} 	/* End Pixar */		if (TIFFFieldSet(tif,FIELD_TILEDIMENSIONS)) {		fprintf(fd, "  Tile Width: %lu Tile Length: %lu",		    (u_long) td->td_tilewidth, (u_long) td->td_tilelength);		if (TIFFFieldSet(tif,FIELD_TILEDEPTH))			fprintf(fd, " Tile Depth: %lu",			    (u_long) td->td_tiledepth);		fprintf(fd, "\n");	}	if (TIFFFieldSet(tif,FIELD_RESOLUTION)) {		fprintf(fd, "  Resolution: %g, %g",		    td->td_xresolution, td->td_yresolution);		if (TIFFFieldSet(tif,FIELD_RESOLUTIONUNIT)) {			switch (td->td_resolutionunit) {			case RESUNIT_NONE:				fprintf(fd, " (unitless)");				break;			case RESUNIT_INCH:				fprintf(fd, " pixels/inch");				break;			case RESUNIT_CENTIMETER:				fprintf(fd, " pixels/cm");				break;			default:				fprintf(fd, " (unit %u = 0x%x)",				    td->td_resolutionunit,				    td->td_resolutionunit);				break;			}		}		fprintf(fd, "\n");	}	if (TIFFFieldSet(tif,FIELD_POSITION))		fprintf(fd, "  Position: %g, %g\n",		    td->td_xposition, td->td_yposition);	if (TIFFFieldSet(tif,FIELD_BITSPERSAMPLE))		fprintf(fd, "  Bits/Sample: %u\n", td->td_bitspersample);	if (TIFFFieldSet(tif,FIELD_SAMPLEFORMAT)) {		fprintf(fd, "  Sample Format: ");		switch (td->td_sampleformat) {		case SAMPLEFORMAT_VOID:			fprintf(fd, "void\n");			break;		case SAMPLEFORMAT_INT:			fprintf(fd, "signed integer\n");			break;		case SAMPLEFORMAT_UINT:			fprintf(fd, "unsigned integer\n");			break;		case SAMPLEFORMAT_IEEEFP:			fprintf(fd, "IEEE floating point\n");			break;		case SAMPLEFORMAT_COMPLEXINT:			fprintf(fd, "complex signed integer\n");			break;		case SAMPLEFORMAT_COMPLEXIEEEFP:			fprintf(fd, "complex IEEE floating point\n");			break;		default:			fprintf(fd, "%u (0x%x)\n",			    td->td_sampleformat, td->td_sampleformat);			break;		}	}	if (TIFFFieldSet(tif,FIELD_COMPRESSION)) {		const TIFFCodec* c = TIFFFindCODEC(td->td_compression);		fprintf(fd, "  Compression Scheme: ");		if (c)			fprintf(fd, "%s\n", c->name);		else			fprintf(fd, "%u (0x%x)\n",			    td->td_compression, td->td_compression);	}	if (TIFFFieldSet(tif,FIELD_PHOTOMETRIC)) {		fprintf(fd, "  Photometric Interpretation: ");		if (td->td_photometric < NPHOTONAMES)			fprintf(fd, "%s\n", photoNames[td->td_photometric]);		else {			switch (td->td_photometric) {			case PHOTOMETRIC_LOGL:				fprintf(fd, "CIE Log2(L)\n");				break;			case PHOTOMETRIC_LOGLUV:				fprintf(fd, "CIE Log2(L) (u',v')\n");				break;			default:				fprintf(fd, "%u (0x%x)\n",				    td->td_photometric, td->td_photometric);				break;			}		}	}	if (TIFFFieldSet(tif,FIELD_EXTRASAMPLES) && td->td_extrasamples) {		fprintf(fd, "  Extra Samples: %u<", td->td_extrasamples);		sep = "";		for (i = 0; i < td->td_extrasamples; i++) {			switch (td->td_sampleinfo[i]) {			case EXTRASAMPLE_UNSPECIFIED:				fprintf(fd, "%sunspecified", sep);				break;			case EXTRASAMPLE_ASSOCALPHA:				fprintf(fd, "%sassoc-alpha", sep);				break;			case EXTRASAMPLE_UNASSALPHA:				fprintf(fd, "%sunassoc-alpha", sep);				break;			default:				fprintf(fd, "%s%u (0x%x)", sep,				    td->td_sampleinfo[i], td->td_sampleinfo[i]);				break;			}			sep = ", ";		}		fprintf(fd, ">\n");	}	if (TIFFFieldSet(tif,FIELD_STONITS)) {		fprintf(fd, "  Sample to Nits conversion factor: %.4e\n",				td->td_stonits);	}#ifdef CMYK_SUPPORT	if (TIFFFieldSet(tif,FIELD_INKSET)) {		fprintf(fd, "  Ink Set: ");		switch (td->td_inkset) {		case INKSET_CMYK:			fprintf(fd, "CMYK\n");			break;		default:			fprintf(fd, "%u (0x%x)\n",			    td->td_inkset, td->td_inkset);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -