Implemented basic Cut-and-paste in Palette: Ctrl-C / Ctrl-V. It doesn't use the clipboard, but you can copy in one page and paste in another.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1518 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									93c711205c
								
							
						
					
					
						commit
						8160a8ab90
					
				@ -2254,6 +2254,28 @@ void Button_Palette(void)
 | 
			
		||||
          // Close (confirm)
 | 
			
		||||
          clicked_button=14;
 | 
			
		||||
        }
 | 
			
		||||
        else if (Key == (SDLK_c|MOD_CTRL)) // Ctrl-C
 | 
			
		||||
        {
 | 
			
		||||
          Set_clipboard_colors(block_end+1-block_start,working_palette + block_start);
 | 
			
		||||
        }
 | 
			
		||||
        else if (Key == (SDLK_v|MOD_CTRL)) // Ctrl-V
 | 
			
		||||
        {
 | 
			
		||||
          int nb_colors;
 | 
			
		||||
 | 
			
		||||
          Hide_cursor();
 | 
			
		||||
          // Backup
 | 
			
		||||
          memcpy(backup_palette,working_palette,sizeof(T_Palette));
 | 
			
		||||
          
 | 
			
		||||
          nb_colors = Get_clipboard_colors(working_palette, block_start);
 | 
			
		||||
          if (nb_colors>0)
 | 
			
		||||
          {
 | 
			
		||||
            memcpy(temp_palette,working_palette,sizeof(T_Palette));
 | 
			
		||||
            Set_palette(working_palette);
 | 
			
		||||
            need_to_remap=1;
 | 
			
		||||
            Display_cursor();
 | 
			
		||||
            Draw_all_palette_sliders(red_slider,green_slider,blue_slider,working_palette,block_start,block_end);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (need_to_remap)
 | 
			
		||||
@ -2478,3 +2500,39 @@ void Button_Secondary_palette(void)
 | 
			
		||||
    Draw_menu_button(BUTTON_PAL_RIGHT,BUTTON_RELEASED);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ========= Clipboard management ==============
 | 
			
		||||
 | 
			
		||||
int Palette_clipboard_count=0;
 | 
			
		||||
T_Palette Palette_clipboard;
 | 
			
		||||
 | 
			
		||||
/// Put some colors in the clipboard.
 | 
			
		||||
/// @param nb_colors Number of colors to push
 | 
			
		||||
/// @param colors First color of the input array
 | 
			
		||||
void Set_clipboard_colors(int nb_colors, T_Components *colors)
 | 
			
		||||
{
 | 
			
		||||
  Palette_clipboard_count=nb_colors;
 | 
			
		||||
  if (nb_colors)
 | 
			
		||||
  {
 | 
			
		||||
    memcpy(Palette_clipboard, colors, nb_colors*sizeof(T_Components));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Get some RGB colors from clipboard.
 | 
			
		||||
/// @param palette Target palette
 | 
			
		||||
/// @param start_color  Index of first color to replace
 | 
			
		||||
/// @return        Number of colors retrieved (0-256)
 | 
			
		||||
int Get_clipboard_colors(T_Palette palette, byte start_color)
 | 
			
		||||
{
 | 
			
		||||
  int nb_colors = Palette_clipboard_count;
 | 
			
		||||
  
 | 
			
		||||
  if (nb_colors==0)
 | 
			
		||||
    return 0;
 | 
			
		||||
 | 
			
		||||
  if (start_color+nb_colors > 256)
 | 
			
		||||
  {
 | 
			
		||||
    nb_colors=256-start_color;
 | 
			
		||||
  }
 | 
			
		||||
  memcpy(palette+start_color, Palette_clipboard, nb_colors*sizeof(T_Components));
 | 
			
		||||
  return nb_colors;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -42,3 +42,14 @@ byte Round_palette_component(byte comp);
 | 
			
		||||
  @param not_picture 0 if the caller is the palette screen, 1 if it's a preview in the file selector.
 | 
			
		||||
*/
 | 
			
		||||
void Set_nice_menu_colors(dword * color_usage,int not_picture);
 | 
			
		||||
 | 
			
		||||
/// Put some colors in the clipboard.
 | 
			
		||||
/// @param nb_colors Number of colors to push
 | 
			
		||||
/// @param colors First color of the input array
 | 
			
		||||
void Set_clipboard_colors(int nb_colors, T_Components *colors);
 | 
			
		||||
 | 
			
		||||
/// Get some RGB colors from clipboard.
 | 
			
		||||
/// @param palette Target palette
 | 
			
		||||
/// @param start_color  Index of first color to replace
 | 
			
		||||
/// @return        Number of colors retrieved (0-256)
 | 
			
		||||
int Get_clipboard_colors(T_Palette palette, byte start_color);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user