PNG format now saves the pixel ratio if the program is in /wide or /tall mode.
The ratio is also reloaded, but not used yet. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@615 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
e15b3194e0
commit
f00c58ade3
@ -3347,6 +3347,8 @@ void Load_picture(byte Image)
|
||||
}
|
||||
|
||||
Nouveau_mode=Meilleur_mode_video();
|
||||
// TODO : Utiliser içi Ratio_image_chargee pour passer dans la
|
||||
// bonne taille de pixels.
|
||||
if ((Config.Auto_set_res) && (Nouveau_mode!=Resolution_actuelle))
|
||||
{
|
||||
Initialiser_mode_video(
|
||||
@ -3435,6 +3437,8 @@ void Bouton_Reload(void)
|
||||
}
|
||||
|
||||
Nouveau_mode=Meilleur_mode_video();
|
||||
// TODO : Utiliser içi Ratio_image_chargee pour passer dans la
|
||||
// bonne taille de pixels.
|
||||
if ( ((Config.Auto_set_res) && (Nouveau_mode!=Resolution_actuelle)) &&
|
||||
(!Une_resolution_a_ete_passee_en_parametre) )
|
||||
{
|
||||
|
||||
40
loadsave.c
40
loadsave.c
@ -128,6 +128,10 @@ T_Format FormatFichier[NB_FORMATS_CONNUS] = {
|
||||
{"png", Test_PNG, Load_PNG, Save_PNG, 1, 1}
|
||||
};
|
||||
|
||||
// Cette variable est alimentée après chargement réussi d'une image.
|
||||
// Actuellement seul le format PNG peut donner autre chose que PIXEL_SIMPLE.
|
||||
enum PIXEL_RATIO Ratio_image_chargee=PIXEL_SIMPLE;
|
||||
|
||||
// Taille de fichier, en octets
|
||||
int FileLength(FILE * Fichier)
|
||||
{
|
||||
@ -613,6 +617,7 @@ void Charger_image(byte Image)
|
||||
{
|
||||
// On peut charger le fichier:
|
||||
Image_24b=0;
|
||||
Ratio_image_chargee=PIXEL_SIMPLE;
|
||||
// Dans certains cas il est possible que le chargement plante
|
||||
// après avoir modifié la palette. TODO
|
||||
FormatFichier[Format].Load();
|
||||
@ -5575,7 +5580,11 @@ void Load_PNG(void)
|
||||
int num_text;
|
||||
png_text *text_ptr;
|
||||
|
||||
// Commentaire
|
||||
int unit_type;
|
||||
png_uint_32 res_x;
|
||||
png_uint_32 res_y;
|
||||
|
||||
// Commentaire (tEXt)
|
||||
Principal_Commentaire[0]='\0'; // On efface le commentaire
|
||||
if ((num_text=png_get_text(png_ptr, info_ptr, &text_ptr, NULL)))
|
||||
{
|
||||
@ -5591,7 +5600,23 @@ void Load_PNG(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Pixel Ratio (pHYs)
|
||||
if (png_get_pHYs(png_ptr, info_ptr, &res_x, &res_y, &unit_type))
|
||||
{
|
||||
// Ignore unit, and use the X/Y ratio as a hint for
|
||||
// WIDE or TALL pixels
|
||||
if (res_x>0 && res_y>0)
|
||||
{
|
||||
if (res_y/res_x>1)
|
||||
{
|
||||
Ratio_image_chargee=PIXEL_WIDE;
|
||||
}
|
||||
else if (res_x/res_y>1)
|
||||
{
|
||||
Ratio_image_chargee=PIXEL_TALL;
|
||||
}
|
||||
}
|
||||
}
|
||||
Initialiser_preview(info_ptr->width,info_ptr->height,Taille_du_fichier,FORMAT_PNG);
|
||||
|
||||
if (Erreur_fichier==0)
|
||||
@ -5735,6 +5760,17 @@ void Save_PNG(void)
|
||||
}
|
||||
png_set_text(png_ptr, info_ptr, text_ptr, Nb_texte);
|
||||
}
|
||||
switch(Pixel_ratio)
|
||||
{
|
||||
case PIXEL_WIDE:
|
||||
png_set_pHYs(png_ptr, info_ptr, 3000, 6000, PNG_RESOLUTION_METER);
|
||||
break;
|
||||
case PIXEL_TALL:
|
||||
png_set_pHYs(png_ptr, info_ptr, 6000, 3000, PNG_RESOLUTION_METER);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
png_write_info(png_ptr, info_ptr);
|
||||
|
||||
/* ecriture des pixels de l'image */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user