diff --git a/src/buttons.c b/src/buttons.c index ea6b5610..355e4657 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -1550,64 +1550,24 @@ void Button_Skins(void) void Button_Page(void) { byte factor_index; - char Temp_buffer[256]; + T_Document temp_doc; 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(); + // First update the page descriptors before swapping them + Upload_infos_page(&Main); + Upload_infos_page(&Spare); - // Tilemap info - Swap_tilemap(); - - // On fait le reste du travail "à la main": -// TODO - SWAP_PBYTES(Main.visible_image.Image,Spare.visible_image.Image) - SWAP_WORDS (Main.visible_image.Width,Spare.visible_image.Width) - SWAP_WORDS (Main.visible_image.Height,Spare.visible_image.Height) - SWAP_SHORTS(Main.offset_X,Spare.offset_X) - SWAP_SHORTS(Main.offset_Y,Spare.offset_Y) - SWAP_SHORTS(Main.separator_position,Spare.separator_position) - SWAP_SHORTS(Main.X_zoom,Spare.X_zoom) - SWAP_FLOATS(Main.separator_proportion,Spare.separator_proportion) - SWAP_BYTES (Main.magnifier_mode,Spare.magnifier_mode) + // SWAP + memcpy(&temp_doc, &Main, sizeof(T_Document)); + memcpy(&Main, &Spare, sizeof(T_Document)); + memcpy(&Spare, &temp_doc, sizeof(T_Document)); Pixel_preview=(Main.magnifier_mode)?Pixel_preview_magnifier:Pixel_preview_normal; - SWAP_WORDS (Main.magnifier_factor,Spare.magnifier_factor) - SWAP_WORDS (Main.magnifier_height,Spare.magnifier_height) - SWAP_WORDS (Main.magnifier_width,Spare.magnifier_width) - SWAP_SHORTS(Main.magnifier_offset_X,Spare.magnifier_offset_X) - SWAP_SHORTS(Main.magnifier_offset_Y,Spare.magnifier_offset_Y) - // Swap du booléen "Image modifiée" - SWAP_BYTES (Main.image_is_modified,Spare.image_is_modified) - - // Swap fileselector data - SWAP_BYTES (Main.selector.Format_filter,Spare.selector.Format_filter) - SWAP_WORDS (Main.selector.Position,Spare.selector.Position) - SWAP_WORDS (Main.selector.Offset,Spare.selector.Offset) - strcpy(Temp_buffer ,Spare.selector.Directory); - strcpy(Spare.selector.Directory,Main.selector.Directory); - strcpy(Main.selector.Directory,Temp_buffer ); - - - SWAP_BYTES (Main.current_layer,Spare.current_layer) - SWAP_DWORDS(Main.layers_visible,Spare.layers_visible) - SWAP_DWORDS(Main.layers_visible_backup,Spare.layers_visible_backup) - - SWAP_DWORDS(Main.safety_number,Spare.safety_number) - SWAP_DWORDS(Main.edits_since_safety_backup,Spare.edits_since_safety_backup) - SWAP_BYTES(Main.safety_backup_prefix,Spare.safety_backup_prefix) - { - Uint32 a; - a=Main.time_of_safety_backup; - Main.time_of_safety_backup=Spare.time_of_safety_backup; - Spare.time_of_safety_backup=a; - } - //Redraw_layered_image(); // replaced by Update_buffers(Main.image_width, Main.image_height); diff --git a/src/pages.c b/src/pages.c index c8586e6e..27e629cc 100644 --- a/src/pages.c +++ b/src/pages.c @@ -1275,38 +1275,6 @@ void Free_current_page(void) End_of_modification(); } -void Exchange_main_and_spare(void) -{ - T_List_of_pages * temp_list; - - // On commence par mettre à jour dans les descripteurs les infos sur les - // pages qu'on s'apprête à échanger, pour qu'on se retrouve pas avec de - // vieilles valeurs qui datent de mathuzalem. - Upload_infos_page(&Main); - Upload_infos_page(&Spare); - - // On inverse les listes de pages -//TODO - temp_list=Main.backups; - Main.backups=Spare.backups; - Spare.backups=temp_list; - - // On extrait ensuite les infos sur les nouvelles pages courante, brouillon - // et backup. - - /* SECTION GROS CACA PROUT PROUT */ - // Auparavant on ruse en mettant déjà à jour les dimensions de la - // nouvelle page courante. Si on ne le fait pas, le "Download" va détecter - // un changement de dimensions et va bêtement sortir du mode loupe, alors - // que lors d'un changement de page, on veut bien conserver l'état du mode - // loupe du brouillon. - Main.image_width=Main.backups->Pages->Width; - Main.image_height=Main.backups->Pages->Height; - - Download_infos_page_main(Main.backups->Pages); - Download_infos_page_spare(Spare.backups->Pages); -} - void End_of_modification(void) { diff --git a/src/pages.h b/src/pages.h index d364c971..b56bb9b0 100644 --- a/src/pages.h +++ b/src/pages.h @@ -115,7 +115,6 @@ void Backup_layers(int layer); void Undo(void); void Redo(void); void Free_current_page(void); // 'Kill' button -void Exchange_main_and_spare(void); void End_of_modification(void); void Update_depth_buffer(void); diff --git a/src/tiles.c b/src/tiles.c index 4b110ebd..90f165bf 100644 --- a/src/tiles.c +++ b/src/tiles.c @@ -362,23 +362,6 @@ void Tilemap_update(void) } } -/// -/// This exchanges the tilemap settings of the main and spare, it should -/// be called when swapping pages. -void Swap_tilemap(void) -{ -//TODO - SWAP_BYTES(Main.tilemap_mode, Spare.tilemap_mode) - { - T_Tile * a; - a=Main.tilemap; - Main.tilemap=Spare.tilemap; - Spare.tilemap=a; - } - SWAP_SHORTS(Main.tilemap_width, Spare.tilemap_width) - SWAP_SHORTS(Main.tilemap_height, Spare.tilemap_height) -} - /// /// Clears all tilemap data and settings /// Safe to call again. diff --git a/src/tiles.h b/src/tiles.h index cad048ec..4c4762c4 100644 --- a/src/tiles.h +++ b/src/tiles.h @@ -32,11 +32,6 @@ void Tilemap_update(void); /// similar tiles of the layer, visible on the screen or not. void Tilemap_draw(word x, word y, byte color); -/// -/// This exchanges the tilemap settings of the main and spare, it should -/// be called when swapping pages. -void Swap_tilemap(void); - /// /// Clears all tilemap data and settings /// Safe to call again.