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

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

?? geo_print.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
字號:
/********************************************************************** * *  geo_print.c  -- Key-dumping routines for GEOTIFF files. * *    Written By: Niles D. Ritter. * *  copyright (c) 1995   Niles D. Ritter * *  Permission granted to use this software, so long as this copyright *  notice accompanies any products derived therefrom. * *  Revision History; * *    20 June,  1995      Niles D. Ritter      New *     7 July,  1995      NDR                  Fix indexing *    27 July,  1995      NDR                  Added Import utils *    28 July,  1995      NDR                  Made parser more strict. *    29  Sep,  1995      NDR                  Fixed matrix printing. * * $Log: geo_print.c,v $ * Revision 1.9  2004/10/19 14:24:09  fwarmerdam * dynamically allocate tag list so large lists work: Oliver Colin * * Revision 1.8  2004/04/27 21:31:31  warmerda * avoid crash if gt_tif is NULL * * Revision 1.7  2003/10/21 19:19:53  warmerda * fixed bug with large message texts sometimes causing a crash * * Revision 1.6  2003/09/23 18:27:30  warmerda * fixed bug with long datum names: bug 399 * * Revision 1.5  2003/07/08 17:31:30  warmerda * cleanup various warnings * * Revision 1.4  2002/05/31 14:27:26  warmerda * added escaping in metadata for string key values * * Revision 1.3  1999/05/04 03:14:35  warmerda * avoid warnings * * Revision 1.2  1999/05/03 17:50:31  warmerda * avoid warnings on IRIX * * **********************************************************************/#include "geotiff.h"   /* public interface        */#include "geo_tiffp.h" /* external TIFF interface */#include "geo_keyp.h"  /* private interface       */#include "geokeys.h"#include <stdio.h>     /* for sprintf             */#define FMT_GEOTIFF "Geotiff_Information:"#define FMT_VERSION "Version: %hd"#define FMT_REV     "Key_Revision: %1hd.%hd"#define FMT_TAGS    "Tagged_Information:"#define FMT_TAGEND  "End_Of_Tags."#define FMT_KEYS    "Keyed_Information:"#define FMT_KEYEND  "End_Of_Keys."#define FMT_GEOEND  "End_Of_Geotiff."#define FMT_DOUBLE  "%-17.9g"#define FMT_SHORT   "%-11hd"static void DefaultPrint(char *string, void *aux);static void PrintKey(GeoKey *key, GTIFPrintMethod print,void *aux);static void PrintGeoTags(GTIF *gtif,GTIFReadMethod scan,void *aux);static void PrintTag(int tag, int nrows, double *data, int ncols, 					GTIFPrintMethod print,void *aux);static void DefaultRead(char *string, void *aux);static int  ReadKey(GTIF *gt, GTIFReadMethod scan, void *aux);static int  ReadTag(GTIF *gt,GTIFReadMethod scan,void *aux);/* * Print off the directory info, using whatever method is specified * (defaults to fprintf if null). The "aux" parameter is provided for user * defined method for passing parameters or whatever. * * The output format is a "GeoTIFF meta-data" file, which may be * used to import information with the GTIFFImport() routine. */ void GTIFPrint(GTIF *gtif, GTIFPrintMethod print,void *aux){    int i;    int numkeys = gtif->gt_num_keys;    GeoKey *key = gtif->gt_keys;    char message[1024];	    if (!print) print = (GTIFPrintMethod) &DefaultPrint;    if (!aux) aux=stdout;	    sprintf(message,FMT_GEOTIFF "\n");     print(message,aux);    sprintf(message, "Version: %hd" ,gtif->gt_version);    sprintf(message, FMT_VERSION,gtif->gt_version);    print("   ",aux); print(message,aux); print("\n",aux);    sprintf(message, FMT_REV,gtif->gt_rev_major,            gtif->gt_rev_minor);     print("   ",aux); print(message,aux); print("\n",aux);    sprintf(message,"   %s\n",FMT_TAGS); print(message,aux);    PrintGeoTags(gtif,print,aux);    sprintf(message,"      %s\n",FMT_TAGEND); print(message,aux);    sprintf(message,"   %s\n",FMT_KEYS); print(message,aux);    for (i=0; i<numkeys; i++)        PrintKey(++key,print,aux);    sprintf(message,"      %s\n",FMT_KEYEND); print(message,aux);    sprintf(message,"   %s\n",FMT_GEOEND); print(message,aux);}static void PrintGeoTags(GTIF *gt, GTIFPrintMethod print,void *aux){	double *data;	int count;	tiff_t *tif=gt->gt_tif;        if( tif == NULL )            return;	if ((gt->gt_methods.get)(tif, GTIFF_TIEPOINTS, &count, &data ))		PrintTag(GTIFF_TIEPOINTS,count/3, data, 3, print, aux);	if ((gt->gt_methods.get)(tif, GTIFF_PIXELSCALE, &count, &data ))		PrintTag(GTIFF_PIXELSCALE,count/3, data, 3, print, aux);	if ((gt->gt_methods.get)(tif, GTIFF_TRANSMATRIX, &count, &data ))		PrintTag(GTIFF_TRANSMATRIX,count/4, data, 4, print, aux);}static void PrintTag(int tag, int nrows, double *dptr, int ncols, 					GTIFPrintMethod print,void *aux){	int i,j;	double *data=dptr;        char message[1024];	print("      ",aux);	print(GTIFTagName(tag),aux);	sprintf(message," (%d,%d):\n",nrows,ncols);	print(message,aux);	for (i=0;i<nrows;i++)	{		print("         ",aux);		for (j=0;j<ncols;j++)		{			sprintf(message,FMT_DOUBLE,*data++);			print(message,aux);		}		print("\n",aux);	}	_GTIFFree(dptr); /* free up the allocated memory */}static void PrintKey(GeoKey *key, GTIFPrintMethod print, void *aux){    char *data;    geokey_t keyid = (geokey_t) key->gk_key;    int count = key->gk_count;    int vals_now,i;    pinfo_t *sptr;    double *dptr;    char message[40];    print("      ",aux);    print(GTIFKeyName(keyid),aux);	    sprintf(message," (%s,%d): ",GTIFTypeName(key->gk_type),count);    print(message,aux);	    if (key->gk_type==TYPE_SHORT && count==1)        data = (char *)&key->gk_data;    else        data = key->gk_data;		    switch (key->gk_type)    {      case TYPE_ASCII:       {          int  in_char, out_char;          print("\"",aux);          in_char = 0;          out_char = 0;          while( in_char < count-1 )          {              char ch = ((char *) data)[in_char++];              if( ch == '\n' )              {                  message[out_char++] = '\\';                  message[out_char++] = 'n';              }              else if( ch == '\\' )              {                  message[out_char++] = '\\';                  message[out_char++] = '\\';              }              else                  message[out_char++] = ch;              /* flush message if buffer full */              if( out_char >= sizeof(message)-3 )              {                  message[out_char] = '\0';                  print(message,aux);                  out_char = 0;              }          }          message[out_char]='\0';          print(message,aux);          print("\"\n",aux);      }      break;              case TYPE_DOUBLE:         for (dptr = (double *)data; count > 0; count-= vals_now)        {            vals_now = count > 3? 3: count;            for (i=0; i<vals_now; i++,dptr++)            {                sprintf(message,FMT_DOUBLE ,*dptr);                print(message,aux);            }            print("\n",aux);        }        break;              case TYPE_SHORT:         sptr = (pinfo_t *)data;        if (count==1)        {            print( GTIFValueName(keyid,*sptr), aux );            print( "\n", aux );        }        else            for (; count > 0; count-= vals_now)            {                vals_now = count > 3? 3: count;                for (i=0; i<vals_now; i++,sptr++)                {                    sprintf(message,FMT_SHORT,*sptr);                    print(message,aux);                }                print("\n",aux);            }        break;              default:         sprintf(message, "Unknown Type (%d)\n",key->gk_type);        print(message,aux);        break;    }}static void DefaultPrint(char *string, void *aux){    /* Pretty boring */    fprintf((FILE *)aux,string);}/* *  Importing metadata file *//* * Import the directory info, using whatever method is specified * (defaults to fscanf if null). The "aux" parameter is provided for user * defined method for passing file or whatever. * * The input format is a "GeoTIFF meta-data" file, which may be * generated by the GTIFFPrint() routine. */ int GTIFImport(GTIF *gtif, GTIFReadMethod scan,void *aux){    int status;    char message[1024];	    if (!scan) scan = (GTIFReadMethod) &DefaultRead;    if (!aux) aux=stdin;		    scan(message,aux);    if (strncmp(message,FMT_GEOTIFF,8)) return 0;     scan(message,aux);    if (!sscanf(message,FMT_VERSION,&gtif->gt_version)) return 0;    scan(message,aux);    if (sscanf(message,FMT_REV,&gtif->gt_rev_major,               &gtif->gt_rev_minor) !=2) return 0;    scan(message,aux);    if (strncmp(message,FMT_TAGS,8)) return 0;    while ((status=ReadTag(gtif,scan,aux))>0);    if (status < 0) return 0;    scan(message,aux);    if (strncmp(message,FMT_KEYS,8)) return 0;    while ((status=ReadKey(gtif,scan,aux))>0);	    return (status==0); /* success */}static int StringError(char *string){    fprintf(stderr,"Parsing Error at \'%s\'\n",string);    return -1;}#define SKIPWHITE(vptr) \  while (*vptr && (*vptr==' '||*vptr=='\t')) vptr++#define FINDCHAR(vptr,c) \  while (*vptr && *vptr!=(c)) vptr++static int ReadTag(GTIF *gt,GTIFReadMethod scan,void *aux){    int i,j,tag;    char *vptr;    char tagname[100];    double *data,*dptr;    int count,nrows,ncols,num;    char message[1024];    scan(message,aux);    if (!strncmp(message,FMT_TAGEND,8)) return 0;    num=sscanf(message,"%[^( ] (%d,%d):\n",tagname,&nrows,&ncols);    if (num!=3) return StringError(message);	    tag = GTIFTagCode(tagname);    if (tag < 0) return StringError(tagname);    count = nrows*ncols;    data = (double *) _GTIFcalloc(count * sizeof(double));    dptr = data;	    for (i=0;i<nrows;i++)    {        scan(message,aux);        vptr = message;        for (j=0;j<ncols;j++)        {            if (!sscanf(vptr,"%lg",dptr++))                return StringError(vptr);            FINDCHAR(vptr,' ');            SKIPWHITE(vptr);        }    }	    (gt->gt_methods.set)(gt->gt_tif, (pinfo_t) tag, count, data );	    _GTIFFree( data );    return 1;}static int ReadKey(GTIF *gt, GTIFReadMethod scan, void *aux){    tagtype_t ktype;    int count,outcount;    int vals_now,i;    geokey_t key;    int icode;    pinfo_t code;    short  *sptr;    char name[1000];    char type[20];    double data[100];    double *dptr;    char *vptr;    int num;    char message[2048];    scan(message,aux);     if (!strncmp(message,FMT_KEYEND,8)) return 0;    num=sscanf(message,"%[^( ] (%[^,],%d):\n",name,type,&count);    if (num!=3) return StringError(message);    vptr = message;    FINDCHAR(vptr,':');     if (!*vptr) return StringError(message);    vptr+=2;    if( GTIFKeyCode(name) < 0 )        return StringError(name);    else        key = (geokey_t) GTIFKeyCode(name);    if( GTIFTypeCode(type) < 0 )        return StringError(type);    else        ktype = (tagtype_t) GTIFTypeCode(type);    /* skip white space */    SKIPWHITE(vptr);    if (!*vptr) return StringError(message);			    switch (ktype)    {      case TYPE_ASCII:       {          char *cdata;          int out_char = 0;          FINDCHAR(vptr,'"');          if (!*vptr) return StringError(message);          cdata = (char *) _GTIFcalloc( count+1 );          vptr++;          while( out_char < count-1 )          {              if( *vptr == '\0' )                  break;              else if( vptr[0] == '\\' && vptr[1] == 'n' )              {                  cdata[out_char++] = '\n';                  vptr += 2;              }              else if( vptr[0] == '\\' && vptr[1] == '\\' )              {                  cdata[out_char++] = '\\';                  vptr += 2;              }              else                  cdata[out_char++] = *(vptr++);          }          if( out_char < count-1 ) return StringError(message);          if( *vptr != '"' ) return StringError(message);          cdata[count-1] = '\0';          GTIFKeySet(gt,key,ktype,count,cdata);          _GTIFFree( cdata );      }      break;              case TYPE_DOUBLE:         outcount = count;        for (dptr = data; count > 0; count-= vals_now)        {            vals_now = count > 3? 3: count;            for (i=0; i<vals_now; i++,dptr++)            {                if (!sscanf(vptr,"%lg" ,dptr))                    StringError(vptr);                FINDCHAR(vptr,' ');                SKIPWHITE(vptr);            }            if (vals_now<count)            {                scan(message,aux);                vptr = message;            }        }        if (outcount==1)            GTIFKeySet(gt,key,ktype,outcount,data[0]);        else            GTIFKeySet(gt,key,ktype,outcount,data);        break;              case TYPE_SHORT:         if (count==1)        {            icode = GTIFValueCode(key,vptr);            if (icode < 0) return StringError(vptr);            code = (pinfo_t) icode;            GTIFKeySet(gt,key,ktype,count,code);        }        else  /* multi-valued short - no such thing yet */        {            sptr = (short *)data;            outcount = count;            for (; count > 0; count-= vals_now)            {                vals_now = count > 3? 3: count;                for (i=0; i<vals_now; i++,sptr++)                {                    int		work_int;                    /* note: FMT_SHORT (%11hd) not supported on IRIX */                    sscanf(message,"%11d",&work_int);                    *sptr = (short) work_int;                    scan(message,aux);                }                if (vals_now<count)                {                    scan(message,aux);                    vptr = message;                }            }            GTIFKeySet(gt,key,ktype,outcount,sptr);			        }        break;              default:         return -1;    }    return 1;}static void DefaultRead(char *string, void *aux){	/* Pretty boring */	fscanf((FILE *)aux,"%[^\n]\n",string);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜av成人在线看| 欧美电影免费观看高清完整版在线| 五月激情六月综合| 中文字幕精品综合| 日韩一区二区免费电影| 波波电影院一区二区三区| 日本欧美在线观看| 亚洲最新在线观看| 中文字幕国产一区二区| 日韩三区在线观看| 欧美中文字幕不卡| 99久久免费精品高清特色大片| 美腿丝袜在线亚洲一区| 亚洲午夜一区二区三区| 国产精品色在线| www国产精品av| 91精品国产一区二区三区香蕉| 一本色道久久综合亚洲91| 国产激情偷乱视频一区二区三区| 日韩精彩视频在线观看| 亚洲激情在线播放| 成人免费一区二区三区在线观看| 久久这里只精品最新地址| 91精品国产一区二区人妖| 欧美性高清videossexo| 一本大道久久a久久精品综合| 国产一区不卡精品| 国产在线播放一区| 国产资源在线一区| 国产一区二区成人久久免费影院| 久久66热re国产| 麻豆精品在线观看| 极品瑜伽女神91| 精品一区二区久久| 国产精品亚洲成人| 国产成人免费9x9x人网站视频| 激情深爱一区二区| 激情六月婷婷久久| 精品制服美女丁香| 国产精品影视网| 国产精品一区二区在线观看网站 | 成人永久看片免费视频天堂| 精品中文av资源站在线观看| 极品少妇xxxx精品少妇| 久久国产精品色婷婷| 日本中文字幕一区二区视频| 男人的j进女人的j一区| 日本不卡一区二区三区高清视频| 日韩不卡手机在线v区| 蜜臀久久99精品久久久久宅男| 免费欧美高清视频| 国产一区二区中文字幕| 顶级嫩模精品视频在线看| 国产成人av电影免费在线观看| 国产91精品露脸国语对白| 91在线一区二区三区| 91精彩视频在线观看| 欧美巨大另类极品videosbest | 精品国产第一区二区三区观看体验 | 成人性生交大片免费| 99久久精品一区二区| 色狠狠桃花综合| 7777精品伊人久久久大香线蕉经典版下载 | 91国内精品野花午夜精品| 欧美日韩国产综合草草| 精品日韩一区二区三区免费视频| 26uuu国产在线精品一区二区| 国产嫩草影院久久久久| 亚洲欧洲精品一区二区三区| 午夜视黄欧洲亚洲| 国产一区二区不卡| 一本色道久久综合精品竹菊| 欧美乱熟臀69xxxxxx| 26uuu国产日韩综合| 亚洲精品综合在线| 久久www免费人成看片高清| 成人av免费在线播放| 欧美美女网站色| 国产精品女同一区二区三区| 亚洲国产精品一区二区www| 极品尤物av久久免费看| 色综合天天综合网天天看片| 日韩欧美成人午夜| 亚洲色图视频网| 精品一区二区三区免费毛片爱| 成人av网站免费观看| 日韩一区和二区| **欧美大码日韩| 激情文学综合插| 欧美午夜视频网站| 中文字幕免费不卡在线| 日韩av中文字幕一区二区| 成人激情小说乱人伦| 91精品国产综合久久久久久漫画 | 亚洲精品在线免费播放| 亚洲一区二三区| 国产91在线观看丝袜| 91精品国产一区二区| **性色生活片久久毛片| 国产精品一二三在| 欧美福利视频一区| 亚洲欧美偷拍卡通变态| 国产成人免费视频精品含羞草妖精| 欧美另类久久久品| 亚洲精品菠萝久久久久久久| 高清shemale亚洲人妖| 日韩欧美亚洲国产另类| 一区二区日韩av| 成人高清免费观看| 久久亚洲二区三区| 日本成人在线电影网| 色噜噜夜夜夜综合网| 欧美国产日韩亚洲一区| 九九热在线视频观看这里只有精品| 欧美三级视频在线播放| 亚洲免费在线观看| 成人app软件下载大全免费| 久久无码av三级| 免费在线观看日韩欧美| 欧美日韩在线精品一区二区三区激情 | 国产日韩欧美电影| 国产一区二区调教| 精品蜜桃在线看| 免费在线观看精品| 欧美电影免费观看高清完整版在线观看 | 91精品在线免费| 午夜电影一区二区三区| 欧美色倩网站大全免费| 亚洲一二三区不卡| 欧美三级韩国三级日本一级| 一区二区三区欧美日| 色婷婷综合久久久| 一区二区三区高清在线| 91一区在线观看| 国产精品福利av | 激情小说欧美图片| 欧美精品一区二区高清在线观看| 亚洲一区二区三区美女| 色综合 综合色| 亚洲色图视频网| 欧美在线观看一二区| 亚洲视频一区在线观看| 99久久久久久99| 亚洲欧洲精品一区二区三区| 色婷婷综合久久久久中文一区二区| 国产精品美女久久久久aⅴ国产馆| 国产精品亚洲人在线观看| 久久综合网色—综合色88| 亚洲男人天堂一区| 欧美性xxxxxx少妇| 一区二区三区**美女毛片| 91小视频在线| 亚洲精品国产第一综合99久久| 欧美午夜精品理论片a级按摩| 亚洲人成人一区二区在线观看 | 成年人国产精品| 国产精品视频九色porn| 色综合久久久久综合体桃花网| 日韩美女久久久| 欧美在线看片a免费观看| 亚洲电影一区二区三区| 91精品国模一区二区三区| 日本视频免费一区| 精品国内片67194| 国产一区二区三区免费播放| 精品国一区二区三区| 99久精品国产| 亚洲成人免费视| 日韩午夜在线观看视频| 青青草91视频| 中文字幕在线不卡一区二区三区| 高清久久久久久| 亚洲乱码日产精品bd | 久久久久久久久蜜桃| 国产精品白丝jk白祙喷水网站| 欧美激情在线观看视频免费| 91电影在线观看| 日本不卡一区二区三区| 久久精品欧美日韩| 色综合久久中文字幕综合网| 欧美aⅴ一区二区三区视频| 久久久久久夜精品精品免费| 不卡一区在线观看| 一区二区三区av电影| 久久夜色精品一区| 91在线国内视频| 婷婷久久综合九色国产成人| 精品国产a毛片| 欧美伊人久久久久久久久影院| 日本不卡视频在线| 国产精品久久久久永久免费观看| 色噜噜狠狠成人网p站| 国产精品资源在线看| 亚洲一区在线电影| 精品国产区一区| 国产aⅴ精品一区二区三区色成熟| 亚洲一区在线电影| 欧美激情一区三区| 91精品欧美综合在线观看最新| 精品在线播放免费|