Add code to save XPM files.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1682 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									47a9efa2e6
								
							
						
					
					
						commit
						4e35de8611
					
				@ -120,6 +120,7 @@ enum FILE_FORMATS
 | 
			
		||||
  FORMAT_KCF,
 | 
			
		||||
  FORMAT_PAL,
 | 
			
		||||
  FORMAT_SCR,
 | 
			
		||||
  FORMAT_XPM,
 | 
			
		||||
  FORMAT_MISC, ///< Must be last of enum: others formats recognized by SDL_image
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -3437,6 +3437,44 @@ void Save_SCx(T_IO_Context * context)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////// XPM ////////////////////////////////////
 | 
			
		||||
void Save_XPM(T_IO_Context* context)
 | 
			
		||||
{
 | 
			
		||||
  FILE* file;
 | 
			
		||||
  char filename[MAX_PATH_CHARACTERS];
 | 
			
		||||
  int i,j;
 | 
			
		||||
 | 
			
		||||
  Get_full_filename(filename, context->File_name, context->File_directory);
 | 
			
		||||
  File_error = 0;
 | 
			
		||||
 | 
			
		||||
  file = fopen(filename, "w");
 | 
			
		||||
  if (file == NULL)
 | 
			
		||||
  {
 | 
			
		||||
    File_error = 1;
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  fprintf(file, "/* XPM */\nstatic char* pixmap[] = {\n");
 | 
			
		||||
  fprintf(file, "\"%d %d 256 2\",\n", context->Width, context->Height);
 | 
			
		||||
 | 
			
		||||
  for (i = 0; i < 256; i++)
 | 
			
		||||
  {
 | 
			
		||||
    fprintf(file,"\"%2.2X c #%2.2x%2.2x%2.2x\",\n", i, context->Palette[i].R, context->Palette[i].G,
 | 
			
		||||
      context->Palette[i].B);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (j = 0; j < context->Height; j++)
 | 
			
		||||
  {
 | 
			
		||||
    fprintf(file, "\"");
 | 
			
		||||
    for (i = 0; i < context->Width; i++)
 | 
			
		||||
    {
 | 
			
		||||
      fprintf(file, "%2.2X", Get_pixel(context, i, j));
 | 
			
		||||
    }
 | 
			
		||||
    fprintf(file,"\"\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  fclose(file);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////// PNG ////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -122,6 +122,10 @@ void Save_C64(T_IO_Context *);
 | 
			
		||||
// -- SCR (Amstrad CPC)
 | 
			
		||||
void Save_SCR(T_IO_Context *);
 | 
			
		||||
 | 
			
		||||
// -- XPM (X PixMap)
 | 
			
		||||
// Loading is done through SDL_Image 
 | 
			
		||||
void Save_XPM(T_IO_Context*);
 | 
			
		||||
 | 
			
		||||
// -- PNG -------------------------------------------------------------------
 | 
			
		||||
#ifndef __no_pnglib__
 | 
			
		||||
void Test_PNG(T_IO_Context *);
 | 
			
		||||
@ -155,6 +159,7 @@ T_Format File_formats[NB_KNOWN_FORMATS] = {
 | 
			
		||||
  {FORMAT_PAL, " pal", Test_PAL, Load_PAL, Save_PAL, 1, 0, 0, "pal", "pal"},
 | 
			
		||||
  {FORMAT_C64, " c64", Test_C64, Load_C64, Save_C64, 0, 1, 0, "c64", "c64;koa"},
 | 
			
		||||
  {FORMAT_SCR, " cpc", NULL,     NULL,     Save_SCR, 0, 0, 0, "cpc", "cpc;scr"},
 | 
			
		||||
  {FORMAT_XPM, " xpm", NULL,     NULL,     Save_XPM, 0, 0, 0, "xpm", "xpm"},
 | 
			
		||||
  {FORMAT_MISC,"misc.",NULL,     NULL,     NULL,     0, 0, 0, "",    "tga;pnm;xpm;xcf;jpg;jpeg;tif;tiff;ico"},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -710,6 +710,9 @@ int Init_program(int argc,char * argv[])
 | 
			
		||||
      SetWindowPos(pInfo.window, 0, Config.Window_pos_x, Config.Window_pos_y, 0, 0, SWP_NOSIZE);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Open a console for debugging...
 | 
			
		||||
  //ActivateConsole();
 | 
			
		||||
  #endif
 | 
			
		||||
  
 | 
			
		||||
  Main_image_width=Screen_width/Pixel_width;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user