/* xmp2tga.c reads an '.xmp' file and makes a '.tga' file xmp2tga name */ #include #include #define NUM_TYPE 25 #define NUM_SIZE 25 #define NUM_PLACE 3 #define NUM_PSIZE 3 #define NUM_FILL 5 #define MAX_COLORS 16 #define STR_LEN 100 #define ROW 480 #define COL 640 #define SYM_SIZE 11 int Range; struct file_range { float maxlat,minlat; float maxlon,minlon; }; int Pattern; struct pattern { int status; char pattern[8][8]; }; unsigned char Buffer[COL],OutBuff[COL][4]; int Hdr[9]={0,2,0,0,0,0,COL,ROW,32}; struct Color { unsigned char r, g, b; }; struct map { int KeyPlotted; char Fill_Name[256][20]; int Fill_In; int Fill_After; int Fill_Color[256][2]; int Max_Fill; int Fill_Color_RGB[256][3]; float Fill_Color_IHS[256][3]; int Fill_Order[256]; int Comp_Color[256]; int Num_Fill; float FI_min[NUM_FILL],FI_max[NUM_FILL]; char Fill_In_Name[NUM_FILL][STR_LEN]; int White,Num_Color; int screen_xs,screen_ys; int Num_Type,Out; float Pixsize,Clat,Clon,Space; int Mback,Text,High,Back,Grat; int GratOn; int LatLon,Black; char Color_Name[MAX_COLORS][30]; int Color_Val[MAX_COLORS][3]; int Type; int Ns[NUM_TYPE]; int Mm[NUM_TYPE]; int NumSymbol; int Range; int Pattern; char Group_Name[NUM_TYPE][30]; struct line_name { char filename[54]; float max_pix,min_pix; int color; }MapFile[NUM_TYPE][NUM_SIZE]; struct place_name { char *name,*filename; float max_pix,min_pix; int color; }PlaceFile[3][3]; /* size = 18*3*3 = 162 bytes */ struct Color lut[256]; }M; struct symbol_name { char name[50],filename[50]; float max_pix,min_pix; int color; char on; char Symbol[SYM_SIZE][SYM_SIZE]; }; main(argc,argv) int argc; char *argv[]; { int i,j,k,c; char string[100]; FILE *fpin,*fpout; int val; char cval; long offset,end_offset,lcol=COL,lrow=ROW,li; sprintf(string,"%s.xmp",argv[1]); fpin=fopen(string,"rb"); if(!fpin) { printf("could not open '%s'\n",string); exit(0); } sprintf(string,"%s.tga",argv[1]); fpout=fopen(string,"wb"); fwrite((char *)Hdr,sizeof(int),9,fpout); fread((char *)&M,sizeof(struct map),1,fpin); end_offset=lcol*lrow; end_offset+=sizeof(struct map); for(i=0;i0) end_offset+=(long)sizeof(struct pattern)*(long)240; printf("file size = %ld\n",end_offset); for(i=0;i