Use Open_file_write() in Save_GPL() Save_PAL() and Save_XPM()
They are Text format, correctly handle line endings according to the type
This commit is contained in:
parent
d1426c61c5
commit
3d4f39fe36
@ -5124,20 +5124,21 @@ void Save_SCx(T_IO_Context * context)
|
||||
//////////////////////////////////// XPM ////////////////////////////////////
|
||||
void Save_XPM(T_IO_Context* context)
|
||||
{
|
||||
// XPM are unix files, so use LF '\n' line endings
|
||||
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");
|
||||
file = Open_file_write(context);
|
||||
if (file == NULL)
|
||||
{
|
||||
File_error = 1;
|
||||
return;
|
||||
}
|
||||
setvbuf(file, NULL, _IOFBF, 64*1024);
|
||||
// in case there are less colors than 256, we could
|
||||
// optimize, and use only 1 character per pixel if possible
|
||||
fprintf(file, "/* XPM */\nstatic char* pixmap[] = {\n");
|
||||
fprintf(file, "\"%d %d 256 2\",\n", context->Width, context->Height);
|
||||
|
||||
|
||||
@ -212,15 +212,13 @@ void Load_GPL(T_IO_Context * context)
|
||||
void
|
||||
Save_GPL (T_IO_Context * context)
|
||||
{
|
||||
// Gimp is a unix program, so use Unix file endings (LF aka '\n')
|
||||
FILE *file;
|
||||
char filename[MAX_PATH_CHARACTERS]; // full filename
|
||||
|
||||
Get_full_filename(filename, context->File_name, context->File_directory);
|
||||
|
||||
File_error=0;
|
||||
|
||||
// Open output file
|
||||
if ((file=fopen(filename,"w"))){
|
||||
if ((file=Open_file_write(context)) != NULL ){
|
||||
int i;
|
||||
fprintf (file, "GIMP Palette\n");
|
||||
fprintf (file, "Name: %s\n", context->File_name);
|
||||
@ -251,9 +249,6 @@ Save_GPL (T_IO_Context * context)
|
||||
void Load_PAL(T_IO_Context * context)
|
||||
{
|
||||
FILE *file; // Fichier du fichier
|
||||
char filename[MAX_PATH_CHARACTERS]; // Nom complet du fichier
|
||||
//long file_size; // Taille du fichier
|
||||
|
||||
|
||||
File_error=0;
|
||||
|
||||
@ -276,8 +271,10 @@ void Load_PAL(T_IO_Context * context)
|
||||
else
|
||||
File_error = 2;
|
||||
} else {
|
||||
fread(filename, 1, 8, file);
|
||||
if (strncmp(filename,"JASC-PAL",8) == 0)
|
||||
char buffer[16];
|
||||
fread(buffer, 1, 8, file);
|
||||
buffer[8] = '\0';
|
||||
if (strncmp(buffer,"JASC-PAL",8) == 0)
|
||||
{
|
||||
int i, n, r, g, b;
|
||||
fscanf(file, "%d",&n);
|
||||
@ -296,13 +293,14 @@ void Load_PAL(T_IO_Context * context)
|
||||
context->Palette[i].G = g;
|
||||
context->Palette[i].B = b;
|
||||
}
|
||||
} else if(strncmp(filename, "RIFF", 4) == 0) {
|
||||
}
|
||||
else if(strncmp(buffer, "RIFF", 4) == 0)
|
||||
{
|
||||
// Microsoft RIFF format.
|
||||
fseek(file, 8, SEEK_SET);
|
||||
fread(filename, 1, 8, file);
|
||||
if (strncmp(filename, "PAL data", 8) == 0)
|
||||
fread(buffer, 1, 8, file);
|
||||
if (strncmp(buffer, "PAL data", 8) == 0)
|
||||
{
|
||||
char buffer[4];
|
||||
word color_count;
|
||||
word i = 0;
|
||||
|
||||
@ -319,10 +317,8 @@ void Load_PAL(T_IO_Context * context)
|
||||
} else File_error = 2;
|
||||
} else
|
||||
File_error = 2;
|
||||
|
||||
}
|
||||
|
||||
// Fermeture du fichier
|
||||
fclose(file);
|
||||
}
|
||||
else
|
||||
@ -334,25 +330,23 @@ void Load_PAL(T_IO_Context * context)
|
||||
// -- Sauver un fichier au format PAL ---------------------------------------
|
||||
void Save_PAL(T_IO_Context * context)
|
||||
{
|
||||
// JASC-PAL is a DOS/Windows format, so use CRLF line endings "\r\n"
|
||||
FILE *file;
|
||||
char filename[MAX_PATH_CHARACTERS]; ///< full filename
|
||||
|
||||
Get_full_filename(filename, context->File_name, context->File_directory);
|
||||
|
||||
File_error=0;
|
||||
|
||||
// Open output file
|
||||
if ((file=fopen(filename,"w")))
|
||||
if ((file=Open_file_write(context)) != NULL)
|
||||
{
|
||||
int i;
|
||||
|
||||
setvbuf(file, NULL, _IOFBF, 64*1024);
|
||||
|
||||
if (fputs("JASC-PAL\n0100\n256\n", file)==EOF)
|
||||
if (fputs("JASC-PAL\r\n0100\r\n256\r\n", file)==EOF)
|
||||
File_error=1;
|
||||
for (i = 0; i < 256 && File_error==0; i++)
|
||||
{
|
||||
if (fprintf(file,"%d %d %d\n",context->Palette[i].R, context->Palette[i].G, context->Palette[i].B) <= 0)
|
||||
if (fprintf(file,"%d %d %d\r\n",context->Palette[i].R, context->Palette[i].G, context->Palette[i].B) <= 0)
|
||||
File_error=1;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user