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

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

?? img.c

?? VC小波應用程序
?? C
字號:
#include "local.h"

/* PPM likes no more than about 70 characters per line */
#define MXN_PXL_PER_ROW 5

#if defined(ARCH_SUN4) && OSREL_MAJOR < 5
/* Why, oh, why aren't these declarations in stdio on SunOS 4 SPARCs????? */
extern rewind _PROTO((FILE *fp));
extern ungetc _PROTO((int ch, FILE *fp));
#endif

static int decimal_read _PROTO((FILE *fp));
static pixel pxlPpmAscii_read _PROTO((FILE *fp, int rgbMaxPpm));

/* decimal_read -- read an ASCII decimal number from a file */
static int decimal_read(fp)
	FILE *fp;
{
	int ch, val, state;

	state = 1;
	val = 0;
	for (;;) {
		ch = getc(fp);
		switch (state) {

		case 1:	/* normal */
			if (ch == '#')
				state = 2;
			else if (isascii(ch) && isdigit(ch)) {
				val = (ch - '0');
				state = 3;
			} else if (ch == EOF || !isascii(ch) || !isspace(ch))
				return EOF;
			break;

		case 2:	/* skip to end of line */
			if (ch == '\n')
				state = 1;
			else if (ch == EOF)
				return EOF;
			break;

		case 3:	/* accumulate and look for end of number */
			if (isascii(ch) && isdigit(ch))
				val = 10 * val + (ch - '0');
			else if (ch == EOF || (isascii(ch) && isspace(ch)))
				return val;
			else if (ch == '#')
				state = 4;
			break;

		case 4:	/* return value when end of line or file is reached */
			if (ch == EOF || ch == '\n')
				return val;
			break;

		default:
			NOT_REACHED;
		}
	}
}

/* img_delete -- delete a PPM image object */
void img_delete(img)
	image *img;
{
	assert(img != NULL);
	FREE_LINTOK(img->pxl[0]);
	FREE_LINTOK(img->pxl);
	img->pxl = NULL;
	return;
}

/* img_new -- create an image object */
image *img_new(npx, npy)
	int npx, npy;
{
	image *img;
	pixel *pxl;
	int py;

	/*
	 *	For convenience's sake, we adopt the pixel ordering used by SGI:
	 *	pxl[y][x].
	 */
	(void) MALLOC_LINTOK(img, 1, image);
	if (img == NULL)
		return NULL;
	img->npx = npx;
	img->npy = npy;
	if (MALLOC_LINTOK(img->pxl, npy, pixel *) == NULL) {
		FREE_LINTOK(img);
		return NULL;
	}
	if (MALLOC_LINTOK(pxl, npx * npy, pixel) == NULL) {
		FREE_LINTOK(img->pxl);
		FREE_LINTOK(img);
		return NULL;
	}
	for (py = 0; py < npy; py++)
		img->pxl[py] = &pxl[py * npx];
	return img;
}

/* img_read -- read an image file */
image *img_read(fp, whynot)
	FILE *fp;	/* in: open file (must be repositionable) */
	char **whynot;	/* out: (if not NULL) in case of error, set to reason why read failed */
{
	unsigned char *scnl;
	int px, npx, py, npy, zRes, rgbMaxPpm, iScnl, iRgb;
	int ch1, ch2, chR, chG, chB;
	int pxlR, pxlG, pxlB;
	image *img;
	register pixel pxl;
	bool isAscii;
	int _pxlval;
#define PXL_PPM_ASCII_READ(fp) \
	( (_pxlval = decimal_read(fp)) != EOF \
			&& 0 <= _pxlval && _pxlval <= rgbMaxPpm \
			? (_pxlval * PXL_RGBMAX) / rgbMaxPpm \
			: EOF )

	/*
	 *	Read the first two characters for magic cookies.
	 */
	if (fp == NULL) {
		if (whynot != NULL)
			*whynot = "NULL FILE pointer passed";
		return FALSE;
	}
	ch1 = getc(fp);
	ch2 = getc(fp);

	if (ch1 == 'P' && ch2 == '3')
		isAscii = TRUE;
	else if (ch1 == 'P' && ch2 == '6')
		isAscii = FALSE;
	else {
		if (whynot != NULL)
			*whynot = "unrecognized or unsupported file format";
		return NULL;
	}

	npx = decimal_read(fp);
	if (npx == EOF || npx < 1) {
		if (whynot != NULL)
			*whynot = "improperly coded image width";
		return NULL;
	}
	npy = decimal_read(fp);
	if (npy == EOF || npy < 1) {
		if (whynot != NULL)
			*whynot = "improperly coded image height";
		return NULL;
	}
	rgbMaxPpm = decimal_read(fp);
	if (rgbMaxPpm == EOF || rgbMaxPpm < 1) {
		if (whynot != NULL)
			*whynot = "improperly coded image max RGB value";
		return NULL;
	}

	img = img_new(npx, npy);
	if (img == NULL) {
		if (whynot != NULL)
			*whynot = "cannot allocate memory for image";
		return NULL;
	}

	if (isAscii) {
		for (py = npy - 1; py >= 0; py--) {
			for (px = 0; px < npx; px++) {
				pxlR = PXL_PPM_ASCII_READ(fp);
				pxlG = PXL_PPM_ASCII_READ(fp);
				pxlB = PXL_PPM_ASCII_READ(fp);
				if (pxlR == EOF || pxlG == EOF || pxlB == EOF) {
					img_delete(img);
					if (whynot != NULL)
						*whynot = "premature end-of-file reached";
					return NULL;
				}
				PXL_SET_RGB(IMG_PXL_AT_XY(img, px, py), pxlR, pxlG, pxlB);
			}
		}
	} else {
		for (py = npy - 1; py >= 0; py--) {
			for (px = 0; px < npx; px++) {
				chR = getc(fp);
				chG = getc(fp);
				chB = getc(fp);
				if (chR == EOF || chG == EOF || chB == EOF) {
					img_delete(img);
					if (whynot != NULL)
						*whynot = "premature end-of-file reached";
					return NULL;
				}
				pxlR = (chR * PXL_RGBMAX) / rgbMaxPpm;
				pxlG = (chG * PXL_RGBMAX) / rgbMaxPpm;
				pxlB = (chB * PXL_RGBMAX) / rgbMaxPpm;
				PXL_SET_RGB(IMG_PXL_AT_XY(img, px, py), pxlR, pxlG, pxlB);
			}
		}
	}
#undef PXL_PPM_ASCII_READ

	return img;
}


/* img_write -- write a img image to a file */
bool img_write(img, isAscii, fp)
	image *img;
	bool isAscii;
	FILE *fp;
{
	int px, py;
	int iScnl;
	unsigned char *scnl;


	assert(fp != NULL);

	if (isAscii) {
		(void) fprintf(fp, "P3\n");
		(void) fprintf(fp, "%d %d\n", img->npx, img->npy);
		(void) fprintf(fp, "%d\n", PXL_RGBMAX);
		for (py = img->npy - 1; py >= 0; py--) {
			(void) fprintf(fp, "# row %d:\n", py);
			for (px = 0; px < img->npx; px++) {
				(void) fprintf(fp,
						( (px + 1) % MXN_PXL_PER_ROW == 0
								|| px == img->npx - 1
							? "%d %d %d\n"
							: "%d %d %d  " ),
						R_OF_PXL(IMG_PXL_AT_XY(img, px, py)),
						G_OF_PXL(IMG_PXL_AT_XY(img, px, py)),
						B_OF_PXL(IMG_PXL_AT_XY(img, px, py)));
			}
		}
	} else {
		(void) fprintf(fp, "P6\n");
		(void) fprintf(fp, "%d %d\n", img->npx, img->npy);
		(void) fprintf(fp, "%d\n", PXL_RGBMAX);
		for (py = img->npy - 1; py >= 0; py--) {
			for (px = 0; px < img->npx; px++) {
				(void) putc(R_OF_PXL(IMG_PXL_AT_XY(img, px, py)), fp);
				(void) putc(G_OF_PXL(IMG_PXL_AT_XY(img, px, py)), fp);
				(void) putc(B_OF_PXL(IMG_PXL_AT_XY(img, px, py)), fp);
			}
		}
	}

	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本一道久久a久久精品| 久久99精品网久久| 最新久久zyz资源站| 国产三区在线成人av| 久久精品一二三| 2017欧美狠狠色| 国产人妖乱国产精品人妖| 久久九九久久九九| 中文字幕一区二区三区乱码在线| 欧美极品美女视频| 亚洲另类在线视频| 樱花影视一区二区| 爽好久久久欧美精品| 免费看欧美美女黄的网站| 极品销魂美女一区二区三区| 国产自产2019最新不卡| gogo大胆日本视频一区| 91麻豆123| 欧美精品自拍偷拍| 久久婷婷久久一区二区三区| 国产精品久久三| 午夜精品久久久久久久99樱桃| 青娱乐精品在线视频| 狠狠久久亚洲欧美| 91色婷婷久久久久合中文| 欧美日韩一卡二卡| 久久久国际精品| 亚洲美女免费在线| 久久精品av麻豆的观看方式| av亚洲精华国产精华精| 欧美午夜精品免费| 国产嫩草影院久久久久| 亚洲一区在线观看免费| 国产精品一区二区三区网站| 日本高清无吗v一区| 精品国产露脸精彩对白| 国产精品久久久久久久久晋中| 天堂一区二区在线| caoporm超碰国产精品| 日韩色在线观看| 国产精品国产三级国产专播品爱网| 日本视频在线一区| av影院午夜一区| 精品久久一区二区| 午夜欧美在线一二页| 丁香天五香天堂综合| 欧美成人午夜电影| 午夜精品在线看| 9久草视频在线视频精品| 日韩一区二区在线观看视频播放| 欧美日韩一区二区在线视频| 中文字幕一区在线观看视频| 国模冰冰炮一区二区| 成人国产精品免费| 欧美一区二区三区喷汁尤物| 一区二区视频在线| 国产91丝袜在线18| 久久综合久久鬼色中文字| 日本成人在线不卡视频| 在线免费观看一区| 国产精品黄色在线观看| 成人免费毛片片v| 久久久久久久综合色一本| 美腿丝袜亚洲一区| 69堂精品视频| 亚洲国产精品久久久男人的天堂| 色中色一区二区| 伊人一区二区三区| 93久久精品日日躁夜夜躁欧美| 国产欧美一区二区三区沐欲| 韩国精品主播一区二区在线观看| 成人一区在线观看| 欧美激情中文不卡| 国产尤物一区二区在线| 精品久久人人做人人爰| 美女网站色91| 精品国产乱码久久| 韩国精品主播一区二区在线观看| 欧美一区二区三区精品| 欧美aⅴ一区二区三区视频| 欧美艳星brazzers| 视频一区二区不卡| 欧美一区二区三区免费视频| 精品中文字幕一区二区| 久久嫩草精品久久久精品| 国产黄色精品网站| 亚洲天堂网中文字| 欧美日韩久久久久久| 喷白浆一区二区| 精品成人在线观看| 成人一区二区视频| 夜夜精品浪潮av一区二区三区| 在线播放日韩导航| 美女在线一区二区| 性久久久久久久久久久久| 日韩精品午夜视频| 欧美高清视频一二三区| 激情综合网av| 亚洲欧美影音先锋| 欧美私模裸体表演在线观看| 奇米777欧美一区二区| 日本一区二区三区电影| 欧美三区免费完整视频在线观看| 日本欧美在线观看| 自拍偷拍国产精品| 欧美不卡一二三| 91免费看视频| 国产一区在线观看麻豆| 一区二区三区美女| 精品欧美乱码久久久久久 | 欧美性大战久久| 奇米精品一区二区三区四区| 视频一区在线播放| 国产一区不卡视频| 5566中文字幕一区二区电影| 香蕉久久夜色精品国产使用方法| 亚洲精品在线电影| 欧美伊人久久久久久午夜久久久久| 国产最新精品免费| 亚洲高清在线视频| 日韩一区在线看| 精品国免费一区二区三区| 色www精品视频在线观看| 国产精品99久久久久久似苏梦涵| 亚洲成av人片在www色猫咪| 中文字幕 久热精品 视频在线| 日韩一区二区在线免费观看| 欧美在线啊v一区| 成人av在线看| 国产一区二区精品久久91| 奇米色一区二区三区四区| 亚洲午夜精品网| 中文字幕一区二区三区视频| 国产视频一区不卡| 欧美精品一区二区在线播放| 欧美久久久久免费| 欧美成人福利视频| av欧美精品.com| 久久er精品视频| 欧美色涩在线第一页| 国产精品一线二线三线精华| 日本亚洲欧美天堂免费| 亚洲高清不卡在线观看| 亚洲激情校园春色| 成人免费视频在线观看| 中文字幕一区二区不卡| 国产精品久久毛片a| 国产精品国产三级国产普通话99| 亚洲国产电影在线观看| 欧美日韩三级一区| 青娱乐精品视频在线| 日韩亚洲欧美在线观看| 精品一区二区三区视频在线观看| 久久精品人人做| 成人久久久精品乱码一区二区三区| 欧美另类高清zo欧美| 亚洲一区二区成人在线观看| 成人激情免费电影网址| 日韩一区二区电影| 日韩精品自拍偷拍| 欧洲另类一二三四区| 成人免费视频播放| 国产亚洲欧美日韩俺去了| 久久亚洲精精品中文字幕早川悠里 | 午夜精品一区二区三区三上悠亚| 一区二区三区资源| 亚洲高清免费在线| 日韩精品福利网| 国产美女一区二区三区| 成人综合婷婷国产精品久久蜜臀 | 亚洲午夜激情网页| 欧美一二三区在线| 久久精品网站免费观看| 日韩一区在线看| 亚欧色一区w666天堂| 精品一区二区三区在线播放视频| 国产91精品一区二区麻豆网站| av色综合久久天堂av综合| 欧美午夜一区二区三区 | 六月丁香婷婷色狠狠久久| 国产一区欧美一区| 色老头久久综合| 日韩视频免费观看高清在线视频| 国产人成亚洲第一网站在线播放| 亚洲免费观看视频| 狠狠网亚洲精品| 91精品福利视频| 精品国产污网站| 亚洲综合图片区| 国产激情一区二区三区桃花岛亚洲| 91官网在线观看| 国产午夜精品久久久久久久 | 国产黄色成人av| 欧洲av在线精品| 91精品国产91久久久久久最新毛片| 2欧美一区二区三区在线观看视频| 17c精品麻豆一区二区免费| 蜜桃视频在线观看一区二区| 丁香婷婷综合网| 精品少妇一区二区三区日产乱码 |