Implemented issue 327: Having the magnifier settings identical for main and spare page

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1622 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2010-09-17 16:25:00 +00:00
parent 6d059e7234
commit e5703c0895
6 changed files with 52 additions and 24 deletions

View File

@ -928,7 +928,7 @@ void Button_Settings(void)
{"Separate colors:",1,&(selected_config.Separate_colors),0,1,0,Lookup_YesNo},
{"Safety colors:",1,&(selected_config.Safety_colors),0,1,0,Lookup_YesNo},
{"Grid XOR color:",1,&(selected_config.Grid_XOR_color),0,255,3,NULL},
{"",0,NULL,0,0,0,NULL},
{"Sync views:",1,&(selected_config.Sync_views),0,1,0,Lookup_YesNo},
{"",0,NULL,0,0,0,NULL},
{" --- Input ---",0,NULL,0,0,0,NULL},
@ -1513,6 +1513,9 @@ void Button_Page(void)
Hide_cursor();
if (Config.Sync_views)
Copy_view_to_spare();
// On dégrossit le travail avec les infos des listes de pages
Exchange_main_and_spare();
@ -1626,29 +1629,8 @@ void Copy_image_only(void)
Spare_image_width=Main_image_width;
Spare_image_height=Main_image_height;
*/
// Copie des décalages de la fenêtre principale (non zoomée) de l'image
Spare_offset_X=Main_offset_X;
Spare_offset_Y=Main_offset_Y;
// Copie du booléen "Mode loupe" de l'image
Spare_magnifier_mode=Main_magnifier_mode;
// Copie du facteur de zoom du brouillon
Spare_magnifier_factor=Main_magnifier_factor;
// Copie des dimensions de la fenêtre de zoom
Spare_magnifier_width=Main_magnifier_width;
Spare_magnifier_height=Main_magnifier_height;
// Copie des décalages de la fenêtre de zoom
Spare_magnifier_offset_X=Main_magnifier_offset_X;
Spare_magnifier_offset_Y=Main_magnifier_offset_Y;
// Copie des données du split du zoom
Spare_separator_position=Main_separator_position;
Spare_X_zoom=Main_X_zoom;
Spare_separator_proportion=Main_separator_proportion;
Copy_view_to_spare();
// Update the visible buffer of the spare.
// It's a bit complex because at the moment, to save memory,

View File

@ -902,7 +902,14 @@ int Load_INI(T_Config * conf)
conf->Right_click_colorpick=(values[0]!=0);
}
conf->Sync_views=1;
// Optional, synced view of main and spare (>=2.3)
if (!Load_INI_get_values (file,buffer,"Sync_views",1,values))
{
conf->Sync_views=(values[0]!=0);
}
// Insert new values here
fclose(file);

View File

@ -677,6 +677,12 @@ int Save_INI(T_Config * conf)
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Right_click_colorpick",1,values,1)))
goto Erreur_Retour;
values[0]=(conf->Sync_views);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Sync_views",1,values,1)))
goto Erreur_Retour;
// Insert new values here
Save_INI_flush(Ancien_fichier,Nouveau_fichier,buffer);
fclose(Nouveau_fichier);

View File

@ -332,6 +332,7 @@ typedef struct
word Double_key_speed; ///< Maximum delay for double-keypress, in ms.
byte Grid_XOR_color; ///< XOR value to apply for grid color.
byte Right_click_colorpick; ///< Boolean, true to enable a "tablet" mode, where RMB acts as instant colorpicker
byte Sync_views; ///< Boolean, true when the Main and Spare should share their viewport settings.
} T_Config;
// Structures utilisées pour les descriptions de pages et de liste de pages.

View File

@ -1812,7 +1812,36 @@ void Change_magnifier_factor(byte factor_index, byte point_at_mouse)
Compute_paintbrush_coordinates();
}
void Copy_view_to_spare(void)
{
// Don't do anything if the pictures have different dimensions
if (Main_image_width!=Spare_image_width || Main_image_height!=Spare_image_height)
return;
// Copie des décalages de la fenêtre principale (non zoomée) de l'image
Spare_offset_X=Main_offset_X;
Spare_offset_Y=Main_offset_Y;
// Copie du booléen "Mode loupe" de l'image
Spare_magnifier_mode=Main_magnifier_mode;
// Copie du facteur de zoom du brouillon
Spare_magnifier_factor=Main_magnifier_factor;
// Copie des dimensions de la fenêtre de zoom
Spare_magnifier_width=Main_magnifier_width;
Spare_magnifier_height=Main_magnifier_height;
// Copie des décalages de la fenêtre de zoom
Spare_magnifier_offset_X=Main_magnifier_offset_X;
Spare_magnifier_offset_Y=Main_magnifier_offset_Y;
// Copie des données du split du zoom
Spare_separator_position=Main_separator_position;
Spare_X_zoom=Main_X_zoom;
Spare_separator_proportion=Main_separator_proportion;
}
// -- Afficher la barre de séparation entre les parties zoomées ou non en
// mode Loupe --

View File

@ -109,4 +109,7 @@ void Change_magnifier_factor(byte factor_index, byte point_at_mouse);
/// Width of one layer button, in pixels before scaling
extern word Layer_button_width;
/// Copy viewport settings and offsets from the Main to the Spare.
void Copy_view_to_spare(void);
#endif