/* xmp2lbl.c reads an '.xmp' file and makes a '.tga' file xmp2lbl 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 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 file_range { float maxlat,minlat; float maxlon,minlon; }; struct pattern { int status; char pattern[8][8]; }; 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=0,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.lbl",argv[1]); fpout=fopen(string,"wt"); if(!fpout) { printf("Could not open '%s' to write.\n\n",string); exit(0); } fread((char *)&M,sizeof(struct map),1,fpin); offset=sizeof(struct map); for(i=0;i0) offset+=(long)sizeof(struct pattern)*(long)240; fprintf(fpout,"FILE_TYPE = IMAGE\n"); fprintf(fpout,"IMAGE_LINES = 480\n"); fprintf(fpout,"LINE_SAMPLES = 640\n"); fprintf(fpout,"HEADER_BYTES = %ld\n",offset); fprintf(fpout,"IMAGE_POINTER = '%s.xmp'\n",argv[1]); fprintf(fpout,"PAL_POINTER = '%s.pal'\n",argv[1]); fprintf(fpout,"PALETTE_POINTER = '%s.pal'\n",argv[1]); fclose(fpout); sprintf(string,"%s.pal",argv[1]); fpout=fopen(string,"wt"); if(!fpout) { printf("Could not open '%s' to write.\n\n",string); exit(0); } for(i=0;i<256;i++) fprintf(fpout,"%4d %3d %3d %3d\n",i,M.lut[i].r,M.lut[i].g,M.lut[i].b); fclose(fpout); fclose(fpin); }