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

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

?? image.c

?? 兩幅圖像匹配算法
?? C
?? 第 1 頁 / 共 5 頁
字號:
    unsigned el_size;    char *startString;    char *startTag;    boolean maxvalPresent;    int i;    char *p;    char commentBuf[PBM_MAX_LINELEN];    assert(outFile != (FILE *)NULL);    assert(im != (void *)NULL);    assert(header != (ImageHeader *)NULL);    /*     * Get a pointer to the data area, the size of each element, and     * the format of the header. The header may include a dummy entry     * (some of the p*m formats have a maxval entry in the header - we     * just use the maximum value we can represent).     */    switch (header->tag) {      case IMAGE_GRAY: {	rect = (void *)	    &(((((GrayImage)im)->data)[header->ybase])[header->xbase]);	el_size = sizeof(unsigned char);	/* This is the start of an appropriate PGM file header */	startTag = TAG_GRAY;	startString = "%d %d %d\n";	maxvalPresent = TRUE;	break;	}	          case IMAGE_FLOAT: {	rect = (void *)	    &(((((FloatImage)im)->data)[header->ybase])[header->xbase]);	el_size = sizeof(float);	/*	 * Not a PGM or PBM or PanythingM header - make it look strange.	 */	startTag = TAG_FLOAT;	startString = "%d %d\n";	maxvalPresent = FALSE;	break;	}	          case IMAGE_RGB: {	rect = (void *)	    &(((((RGBImage)im)->data)[header->ybase])[header->xbase]);	el_size = sizeof(RGB);	/* A PPM header */	startTag = TAG_RGB;	startString = "%d %d %d\n";	maxvalPresent = TRUE;	break;	}      case IMAGE_DOUBLE: {	rect = (void *)	    &(((((DoubleImage)im)->data)[header->ybase])[header->xbase]);	el_size = sizeof(double);	/*	 * Not a PGM or PBM or PanythingM header - make it look strange.	 */	startTag = TAG_DOUBLE;	startString = "%d %d\n";	maxvalPresent = FALSE;	break;	}	          case IMAGE_BINARY: {	rect = (void *)	    &(((((BinaryImage)im)->data)[header->ybase])[header->xbase]);	el_size = 0;	startTag = TAG_BINARY;	startString = "%d %d\n";	maxvalPresent = FALSE;	break;	}	          case IMAGE_LONG: {	rect = (void *)	    &(((((LongImage)im)->data)[header->ybase])[header->xbase]);	el_size = sizeof(long);	/*	 * Not a PGM or PBM or PanythingM header - make it look strange.	 */	startTag = TAG_LONG;	startString = "%d %d\n";	maxvalPresent = FALSE;	break;	}      case IMAGE_PTR: {	panic("attempt to save pointer image");	break;	}      case IMAGE_SHORT: {	rect = (void *)	    &(((((ShortImage)im)->data)[header->ybase])[header->xbase]);	el_size = sizeof(short);	/*	 * Not a PGM or PBM or PanythingM header - make it look strange.	 */	startTag = TAG_SHORT;	startString = "%d %d\n";	maxvalPresent = FALSE;	break;	}      default: {	panic("bad image tag");	}      }        /* Write out the tag, and comments if any */    if (fprintf(outFile, "%s\n", startTag) == EOF) {	return(-1);	}    if (header->comment != (char *)NULL) {	p = header->comment;	while (*p != '\0') {	    /* Copy a line into commentBuf */	    for (i = 0;		 (i < PBM_MAX_LINELEN) && (p[i] != '\n') && (p[i] != '\0');		 i++) {		commentBuf[i] = p[i];		}	    if (i == PBM_MAX_LINELEN) {		/* The line was too long - search back for whitespace */		for (i = PBM_MAX_LINELEN - 1;		     (i >= 0) && (!isspace(commentBuf[i]));		     i--) {		    }		if (i < 0) {		    /* There was no whitespace. Break it how we like it... */		    commentBuf[PBM_MAX_LINELEN - 1] = '\0';		    i = PBM_MAX_LINELEN - 1;		    }		else {		    /* Break at the whitespace */		    commentBuf[i] = '\0';		    i++;		    }		}	    else {		commentBuf[i] = '\0';		}	    /*	     * At this point, commentBuf contains i characters to be	     * printed.	     */	    if (fprintf(outFile, "#%s\n", commentBuf) == EOF) {		return(-1);		}	    /* Advance the pointer */	    p += i;	    if (*p == '\n') {		p++;		}	    }	}    /* Write out the header info */    if (maxvalPresent) {	if (fprintf(outFile, startString, header->width, header->height,		    COLRNG - 1) == EOF) {	    return(-1);	    }	}    else {	if (fprintf(outFile, startString, header->width,		    header->height) == EOF) {	    return(-1);	    }	}	    /* Write out the data block */    if (header->tag != IMAGE_BINARY) {	if (fwrite((char *)rect, el_size,		   (header->width * header->height), outFile) !=	    header->width * header->height) {	    return(-1);	    }	}    else {	/* For binary images, have to write differently */	register int i, j, c, bitsleft, height, width;		height = (int)header->height + header->ybase;	width = (int)header->width + header->xbase;	for (i = header->ybase; i < height; i++) {	    bitsleft = 8;	    c = 0;	    for (j = header->xbase; j < width; j++) {		--bitsleft;		if (imRef((BinaryImage)im, j, i)) {		    c |= 1 << bitsleft;		    }		if ((bitsleft == 0) || (j == width - 1)) {		    if (putc(c, outFile) == EOF) {			return(-1);			}		    bitsleft = 8;		    c = 0;		    }		}	    }	}    /* and successfully return */    return(0);    }void *im_Dup_(void *im, ImageHeader *header, boolean copycomment){    void *dup;    unsigned el_size;    char *oldbase;    char *newbase;    ImageHeader *newheader;    assert(im != (void *)NULL);    assert(header != (ImageHeader *)NULL);    /* Make a copy. */    dup = imNewOffset(header->tag, header->width, header->height,		      header->xbase, header->ybase);    if (dup == (void *)NULL) {	return((void *)NULL);	}    switch(header->tag) {      case IMAGE_GRAY: {	oldbase = (void *)	    &(((GrayImage)im)->data[header->ybase][header->xbase]);	newbase = (void *)	    &(((GrayImage)dup)->data[header->ybase][header->xbase]);	el_size = sizeof(unsigned char);	newheader = ((GrayImage)dup)->header;		break;	}      case IMAGE_FLOAT: {	oldbase = (void *)	    &(((FloatImage)im)->data[header->ybase][header->xbase]);	newbase = (void *)	    &(((FloatImage)dup)->data[header->ybase][header->xbase]);	el_size = sizeof(float);	newheader = ((FloatImage)dup)->header;	break;	}      case IMAGE_RGB: {	oldbase = (void *)	    &(((RGBImage)im)->data[header->ybase][header->xbase]);	newbase = (void *)	    &(((RGBImage)dup)->data[header->ybase][header->xbase]);	el_size = sizeof(RGB);	newheader = ((RGBImage)dup)->header; 	break;	}      case IMAGE_DOUBLE: {	oldbase = (void *)	    &(((DoubleImage)im)->data[header->ybase][header->xbase]);	newbase = (void *)	    &(((DoubleImage)dup)->data[header->ybase][header->xbase]);	el_size = sizeof(double);	newheader = ((DoubleImage)dup)->header;	break;	}      case IMAGE_BINARY: {	oldbase = (void *)	    &(((BinaryImage)im)->data[header->ybase][header->xbase]);	newbase = (void *)	    &(((BinaryImage)dup)->data[header->ybase][header->xbase]);	el_size = sizeof(char);	newheader = ((BinaryImage)dup)->header;	break;	}      case IMAGE_LONG: {	oldbase = (void *)	    &(((LongImage)im)->data[header->ybase][header->xbase]);	newbase = (void *)	    &(((LongImage)dup)->data[header->ybase][header->xbase]);	el_size = sizeof(long);	newheader = ((LongImage)dup)->header;	break;	}      case IMAGE_PTR: {	oldbase = (void *)	    &(((PtrImage)im)->data[header->ybase][header->xbase]);	newbase = (void *)	    &(((PtrImage)dup)->data[header->ybase][header->xbase]);	el_size = sizeof(void *);	newheader = ((PtrImage)dup)->header;	break;	}      case IMAGE_SHORT: {	oldbase = (void *)	    &(((ShortImage)im)->data[header->ybase][header->xbase]);	newbase = (void *)	    &(((ShortImage)dup)->data[header->ybase][header->xbase]);	el_size = sizeof(short);	newheader = ((ShortImage)dup)->header;	break;	}      default: {	panic("bad image tag");	}      }    /* Copy the comment, if any, and if we're supposed to */    if (copycomment && (header->comment != (char *)NULL)) {	newheader->comment = strdup(header->comment);	if (newheader->comment == (char *)NULL) {	    /* Failed to copy */	    im_Free_(dup, newheader);	    return((void *)NULL);	    }	}    /* Do the copy */    (void)memcpy(newbase, oldbase,		 (el_size * header->width * header->height));    return(dup);    }void *im_Promote_(void *im, ImageHeader *header, ImageType promoteto){    ImageType origtype;    void *newim;    assert(im != (void *)NULL);    assert(header != (ImageHeader *)NULL);    origtype = header->tag;    if (!convertTable[origtype][promoteto].isPromotion) {	/* They just requested a non-promotion. Bad... */	panic("non-promotion request made to imPromote()");	}    assert(convertTable[origtype][promoteto].convertFunc !=	   (void * (*)(void *))NULL);    newim = (*convertTable[origtype][promoteto].convertFunc)(im);    return(newim);    }voidimSetPromotion(ImageType promotefrom, ImageType promoteto,	       double slope, double offset){    if (!convertTable[promotefrom][promoteto].isPromotion) {	panic("attempt made to imSetPromotion a non-promotion conversion");	}    convertTable[promotefrom][promoteto].slope = slope;    convertTable[promotefrom][promoteto].offset = offset;    }void *im_Demote_(void *im, ImageHeader *header, ImageType demoteto){    ImageType origtype;    void *newim;    assert(im != (void *)NULL);    assert(header != (ImageHeader *)NULL);    origtype = header->tag;    if (convertTable[origtype][demoteto].isPromotion) {	/* They just requested a promotion. Bad... */	panic("promotion request made to imDemote()");	}    else if (convertTable[origtype][demoteto].convertFunc == (void * (*)(void *))NULL) {	panic("impossible request made to imDemote()");	}    newim = (*convertTable[origtype][demoteto].convertFunc)(im);    return(newim);    }void *im_Convert_(void *im, ImageHeader *header, ImageType convertto){    ImageType origtype;    assert(im != (void *)NULL);    assert(header != (ImageHeader *)NULL);    origtype = header->tag;    if (origtype == convertto) {	/* They really just want a copy */	return(im_Dup_(im, header, FALSE));	}    else if (convertTable[origtype][convertto].isPromotion) {	/* It's a promotion */	return(im_Promote_(im, header, convertto));	}    else {	/* It's a demotion, or illegal - let imDemote handle it */	return(im_Demote_(im, header, convertto));	}    }booleanim_SetComment_(void *im, ImageHeader *header, char *newcomment){    char *newcopy;    assert(im != (void *)NULL);    assert(header != (ImageHeader *)NULL);    if (newcomment != (char *)NULL) {	newcopy = strdup(newcomment);	if (newcopy == (char *)NULL) {	    return(FALSE);	    }	}    else {	newcopy = (char *)NULL;	}    if (header->comment != (char *)NULL) {	/* Free the old comment */	free((void *)header->comment);	}    header->comment = newcopy;    return(TRUE);    }/* * Here are the actual file-reading routines. * * Each one is passed a FILE * and an ImageHeader **. It knows that the file * stream is positioned immediately after a P?M (or similar) magic number, * and implicitly what that magic number was (i.e. what form the file will * take). It then reads the file, creates an Image of the appropriate type, * and returns it as its return value, putting a pointer to its ImageHeader * into *readimHeader. */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品一区二区三区不卡| 另类小说图片综合网| 99久久精品国产导航| 亚洲美女精品一区| 亚洲色图视频网站| 精品一区二区久久| 国产精品中文字幕日韩精品| 在线视频欧美精品| 中文字幕免费观看一区| 亚洲 欧美综合在线网络| 免费美女久久99| 欧美日产国产精品| **网站欧美大片在线观看| 老司机免费视频一区二区三区| 欧美在线综合视频| 国产精品不卡一区| 国产精品69毛片高清亚洲| av一区二区三区在线| 久久精品一区二区三区四区| 奇米888四色在线精品| 欧美日韩视频在线一区二区| 亚洲第一在线综合网站| 日本韩国精品一区二区在线观看| 最新高清无码专区| av电影在线观看完整版一区二区| 国产欧美一区二区三区沐欲| 成人性生交大片免费看中文| 日韩欧美在线影院| 99精品桃花视频在线观看| 亚洲网友自拍偷拍| 中文字幕一区二区在线播放| 欧美一级国产精品| 国产婷婷精品av在线| 亚洲一区在线观看视频| 日本道色综合久久| 夜夜揉揉日日人人青青一国产精品 | 亚洲视频一区二区在线| 日韩区在线观看| 色综合久久久久综合体桃花网| av不卡在线播放| 精品一区二区久久久| 视频一区中文字幕国产| 1024国产精品| 欧美亚洲国产一区二区三区va| 亚洲最新在线观看| 精品免费一区二区三区| 欧美色精品在线视频| 国产自产高清不卡| 亚洲成人一二三| 一区二区三区高清在线| 国产精品―色哟哟| 久久伊99综合婷婷久久伊| 3d动漫精品啪啪1区2区免费 | 欧美性色黄大片| 国产黄人亚洲片| 日韩电影免费在线观看网站| 亚洲狼人国产精品| 亚洲天堂网中文字| 国产精品天美传媒沈樵| 久久久美女毛片| 久久免费美女视频| 久久久久久麻豆| 国产欧美精品一区二区色综合| 日韩一二三区视频| 精品国产乱码久久久久久夜甘婷婷| 91国产精品成人| 日韩欧美精品在线视频| 国产又黄又大久久| 99久免费精品视频在线观看| 国产一区二三区好的| 亚洲欧美一区二区三区极速播放 | 日韩欧美精品三级| 国产高清精品久久久久| 国产精品亚洲第一| 色综合天天综合网天天看片| 欧美日韩一区在线| 久久久久久电影| 一区二区三区欧美亚洲| 精品亚洲aⅴ乱码一区二区三区| 成人免费毛片app| 91猫先生在线| 精品国产第一区二区三区观看体验 | 在线视频国产一区| 精品成人a区在线观看| 综合久久久久久| 久久成人18免费观看| 91麻豆精品视频| 欧美一级精品大片| 亚洲免费观看高清完整版在线观看熊| 午夜免费久久看| aaa欧美大片| 亚洲精品在线免费播放| 一区二区三区精品在线| 国产精选一区二区三区| 欧美日韩精品二区第二页| 国产午夜精品久久| 日韩电影免费在线观看网站| 99精品视频在线播放观看| 精品免费视频.| 亚洲电影第三页| 91亚洲精品久久久蜜桃网站| 欧美va日韩va| 日日骚欧美日韩| 色88888久久久久久影院按摩| 亚洲在线视频免费观看| 国内精品伊人久久久久av影院| 在线欧美小视频| 国产女人18毛片水真多成人如厕 | eeuss鲁一区二区三区| 日韩欧美亚洲国产另类| 一区二区高清视频在线观看| 国产成人免费在线视频| 日韩一级免费观看| 天天影视涩香欲综合网| 在线观看91精品国产入口| 中文字幕在线播放不卡一区| 国产aⅴ综合色| 精品黑人一区二区三区久久| 午夜私人影院久久久久| 色婷婷综合久久久中文字幕| 国产精品欧美一区二区三区| 国产精品白丝jk白祙喷水网站| 日韩欧美123| 美女视频黄免费的久久 | 一本久久a久久精品亚洲| 日本一区二区电影| 国产成人8x视频一区二区| 亚洲精品一区二区三区蜜桃下载 | 成人av网站免费观看| 久久久久久免费| 国产精品影视在线| 久久免费电影网| 国产二区国产一区在线观看| 久久先锋影音av| 国产成人一级电影| 中文无字幕一区二区三区| 51精品国自产在线| 日韩av电影天堂| 日韩精品一区二区三区视频| 久久成人18免费观看| 久久综合色鬼综合色| 国产精品自在欧美一区| 欧美国产日韩a欧美在线观看| 成人性色生活片| 亚洲欧洲一区二区在线播放| 91小视频在线观看| 亚洲成人在线网站| 日韩欧美成人一区| 国产九色精品成人porny| 中日韩免费视频中文字幕| 93久久精品日日躁夜夜躁欧美| 亚洲视频免费在线| 欧美日产国产精品| 精一区二区三区| 国产欧美久久久精品影院| 波多野结衣中文一区| 亚洲一区av在线| 日韩一二三四区| 成人性生交大片免费看中文| 成人欧美一区二区三区小说| 色嗨嗨av一区二区三区| 日韩av一区二| 国产亚洲婷婷免费| 91福利在线看| 麻豆91精品视频| 国产精品乱码人人做人人爱| 欧美曰成人黄网| 国产揄拍国内精品对白| 亚洲欧美激情小说另类| 666欧美在线视频| 国产美女在线精品| 亚洲卡通欧美制服中文| 欧美va天堂va视频va在线| 99re亚洲国产精品| 奇米一区二区三区| 一色屋精品亚洲香蕉网站| 在线播放中文一区| 丁香六月综合激情| 日韩影院免费视频| 中文字幕av一区二区三区| 欧美精品日韩精品| 成人精品鲁一区一区二区| 日韩高清不卡一区二区| 国产精品久久久久久久久免费相片| 欧美揉bbbbb揉bbbbb| 盗摄精品av一区二区三区| 视频一区欧美精品| 国产精品的网站| 精品国产乱码久久| 欧美色电影在线| 成人理论电影网| 久久不见久久见免费视频7| 一区二区三区小说| 国产日韩欧美精品综合| 这里只有精品视频在线观看| 95精品视频在线| 国产不卡视频一区二区三区| 喷白浆一区二区| 亚洲国产wwwccc36天堂| 中文字幕在线不卡国产视频|