[SCM] Rasmol packaging branch, p/gtkexport, updated. upstream/2.7.5-6-g31003b0

Teemu Ikonen tpikonen at gmail.com
Wed Sep 28 15:12:42 UTC 2011


The following commit has been merged in the p/gtkexport branch:
commit 31003b096ebf68e74e00567bbdd188a0ec27dbbd
Merge: b148295fb6a15ec7270e33226d5203b298911f62 0e65c857800f66c3fa254e27c27c9a8566d16b68
Author: Teemu Ikonen <tpikonen at gmail.com>
Date:   Tue Sep 27 19:40:25 2011 +0200

    Merge branch 'upstream' into p/gtkexport

diff --combined src/gtkwin.c
index 8772345,f5b70ac..2a324b3
--- a/src/gtkwin.c
+++ b/src/gtkwin.c
@@@ -155,7 -155,7 +155,7 @@@ enum 
  	RES_150,
  	RES_300
  };
 -int print_resolution = RES_CURRENT;
 +uintptr_t print_resolution = RES_CURRENT;
  GtkPrintSettings *print_settings = NULL;
  GtkPageSetup *print_pagesetup = NULL;
  
@@@ -392,116 -392,109 +392,116 @@@ void save_cb(GtkAction *action, gpointe
  	gtk_widget_destroy (dialog);
  }
  
 +
  /* Render the current image to a given memory buffer with a given size */
 -void render_buffer(Pixel *buf, int xsize, int ysize)
 -{	
 -	Pixel *old_fbuffer; 
 -	int old_xrange, old_yrange, old_hrange, old_wrange, old_range, old_interactive, dx;
 -	
 -	old_fbuffer = FBuffer;
 -	old_xrange = XRange;
 -	old_yrange = YRange;
 -	FBuffer = buf;
 -	XRange = xsize;
 -	YRange = ysize;
 -	
 -	if( (dx = XRange%4) )
 -    	XRange += 4-dx;
 -	
 -	old_hrange = HRange;
 -	old_wrange = WRange;
 -	old_range = Range;
 -	HRange = YRange>>1;	
 -    WRange = XRange>>1;
 -    Range = MinFun(XRange,YRange);
 -	
 -	ReDrawFlag |= RFReSize;
 -	old_interactive = Interactive;
 -	Interactive = False;
 -	RefreshScreen(); // *buf now contains the image
 -	Interactive = old_interactive;
 -	
 -	FBuffer = old_fbuffer;
 -	XRange = old_xrange;
 -	YRange = old_yrange;
 -	HRange = old_hrange;
 -	WRange = old_wrange;
 -	Range = old_range;
 -	
 -	ReDrawFlag |= RFReSize;
 -	RefreshScreen();
 -	ReDrawFlag = NextReDrawFlag;
 +void render_buffer(Pixel * buf, int xsize, int ysize)
 +{
 +    int old_xrange, old_yrange, old_hrange, old_wrange, old_range,
 +        old_interactive, dx;
 +
 +    old_xrange = XRange;
 +    old_yrange = YRange;
 +    XRange = xsize;
 +    YRange = ysize;
 +    if ((dx = XRange % 4))
 +        XRange += 4 - dx;
 +
 +    old_hrange = HRange;
 +    old_wrange = WRange;
 +    old_range = Range;
 +    HRange = YRange >> 1;
 +    WRange = XRange >> 1;
 +    Range = MinFun(XRange, YRange);
 +
 +    ReDrawFlag |= RFReSize;
 +    old_interactive = Interactive;
 +    Interactive = False;
 +    RefreshScreen();            // FBuffer now contains the image
 +    memcpy(buf, FBuffer, sizeof(Pixel) * xsize * ysize);
 +
 +    Interactive = old_interactive;
 +
 +    XRange = old_xrange;
 +    YRange = old_yrange;
 +    HRange = old_hrange;
 +    WRange = old_wrange;
 +    Range = old_range;
 +
 +    ReDrawFlag |= RFReSize;
 +    RefreshScreen();
 +    ReDrawFlag = NextReDrawFlag;
  }
  
 +
  gboolean sizespin_cb(GtkSpinButton button, gpointer data)
  {
 -	GtkLabel *header = NULL;
 -	char header_str[128];
 -	
 -	if(gtk_toggle_button_get_active(
 -		GTK_TOGGLE_BUTTON(gtk_builder_get_object(sizebuilder, "size_custom"))))
 -	{
 -		export_x = gtk_spin_button_get_value_as_int(
 -				GTK_SPIN_BUTTON(gtk_builder_get_object(sizebuilder, "custom_x")));
 -		export_y = gtk_spin_button_get_value_as_int(
 -				GTK_SPIN_BUTTON(gtk_builder_get_object(sizebuilder, "custom_y")));
 -	
 -		header = GTK_LABEL(gtk_builder_get_object(sizebuilder, "size_header"));
 -		snprintf(header_str, 127, "Size: %d x %d", export_x, export_y);
 -		gtk_label_set_text(header, header_str);
 -	}
 -	
 -	return FALSE;
 +    GtkLabel *header = NULL;
 +    char header_str[128];
 +
 +    if (gtk_toggle_button_get_active
 +        (GTK_TOGGLE_BUTTON
 +         (gtk_builder_get_object(sizebuilder, "size_custom")))) {
 +        export_x =
 +            gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON
 +                                             (gtk_builder_get_object
 +                                              (sizebuilder, "custom_x")));
 +        export_y =
 +            gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON
 +                                             (gtk_builder_get_object
 +                                              (sizebuilder, "custom_y")));
 +
 +        header = GTK_LABEL(gtk_builder_get_object(sizebuilder, "size_header"));
 +        snprintf(header_str, 127, "Size: %d x %d", export_x, export_y);
 +        gtk_label_set_text(header, header_str);
 +    }
 +
 +    return FALSE;
  }
  
 -gboolean sizeradio_cb(GtkButton *button, gpointer data)
 +
 +gboolean sizeradio_cb(GtkButton * button, gpointer data)
  {
 -	int radioid;
 -	GtkLabel *header = NULL;
 -	char header_str[128];
 -	
 -	radioid = (int) data;
 -	
 -	export_x = XRange;
 -	export_y = YRange;
 -	
 -	switch(radioid) {
 -		case RADIO_CURRENT:
 -			break;
 -		case RADIO_640:
 -			export_x = 640;
 -			export_y = 480;
 -			break;
 -		case RADIO_1024:
 -			export_x = 1024;
 -			export_y = 768;
 -			break;
 -		case RADIO_1600:
 -			export_x = 1600;
 -			export_y = 1200;
 -			break;
 -		case RADIO_CUSTOM:
 -			export_x = gtk_spin_button_get_value_as_int(
 -				GTK_SPIN_BUTTON(gtk_builder_get_object(sizebuilder, "custom_x")));
 -			export_y = gtk_spin_button_get_value_as_int(
 -				GTK_SPIN_BUTTON(gtk_builder_get_object(sizebuilder, "custom_y")));
 -			break;
 -		default:
 -			;
 -	}
 -	
 -	header = GTK_LABEL(gtk_builder_get_object(sizebuilder, "size_header"));
 -	snprintf(header_str, 127, "Size: %d x %d", export_x, export_y);
 -	gtk_label_set_text(header, header_str); 
 -	
 -	return FALSE;
 +    GtkLabel *header = NULL;
 +    char header_str[128];
 +    uintptr_t radioid = (uintptr_t) data;
 +
 +    export_x = XRange;
 +    export_y = YRange;
 +
 +    switch (radioid) {
 +    case RADIO_CURRENT:
 +        break;
 +    case RADIO_640:
 +        export_x = 640;
 +        export_y = 480;
 +        break;
 +    case RADIO_1024:
 +        export_x = 1024;
 +        export_y = 768;
 +        break;
 +    case RADIO_1600:
 +        export_x = 1600;
 +        export_y = 1200;
 +        break;
 +    case RADIO_CUSTOM:
 +        export_x =
 +            gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON
 +                                             (gtk_builder_get_object
 +                                              (sizebuilder, "custom_x")));
 +        export_y =
 +            gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON
 +                                             (gtk_builder_get_object
 +                                              (sizebuilder, "custom_y")));
 +        break;
 +    default:
 +        ;
 +    }
 +
 +    header = GTK_LABEL(gtk_builder_get_object(sizebuilder, "size_header"));
 +    snprintf(header_str, 127, "Size: %d x %d", export_x, export_y);
 +    gtk_label_set_text(header, header_str);
 +
 +    return FALSE;
  }
  
  
@@@ -567,117 -560,101 +567,117 @@@ void build_exportdialog(void
  		
  }
  
 -void export_cb(GtkAction *action, gpointer user_data)
 +
 +void export_cb(GtkAction * action, gpointer user_data)
  {
 -	static char *fname = NULL;
 +    static char *fname = NULL;
  
 -	if(!exportdialog) {
 -		build_exportdialog();
 -	}
 -	if(fname) {
 -		gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (exportdialog), fname);
 -		gtk_file_chooser_unselect_all(GTK_FILE_CHOOSER (exportdialog));
 -	}
 -	if(gtk_toggle_button_get_active(
 -		GTK_TOGGLE_BUTTON(gtk_builder_get_object(sizebuilder, "size_current")))) 
 -	{
 -		GtkLabel *header = NULL;
 -		char header_str[128];
 -	
 -		export_x = XRange;
 -		export_y = YRange;
 -		header = GTK_LABEL(gtk_builder_get_object(sizebuilder, "size_header"));
 -		snprintf(header_str, 127, "Size: %d x %d", export_x, export_y);
 -		gtk_label_set_text(header, header_str);
 -	}
 -	while(TRUE) {
 -		GtkWidget *question;
 -		GdkPixbuf *pbuf;
 -		GError *err = NULL;
 -		gboolean success = TRUE;
 -		guint format = 0;
 -		gchar *formatname = NULL;
 -		GSList *tmplist = NULL;
 -	    guchar *tmpbuf;
 -	   
 -		if (gtk_dialog_run (GTK_DIALOG (exportdialog)) != GTK_RESPONSE_ACCEPT) {
 -			break;
 -		}
 -		
 -		if(fname) {
 -			g_free (fname);
 -		}
 -	    fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (exportdialog));
 -		if(g_file_test(fname, G_FILE_TEST_EXISTS)) {
 -	    	gint resp;
 -			question = gtk_message_dialog_new(GTK_WINDOW(exportdialog), 
 -				GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, 
 -				GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, 
 -				"A file named \"%s\" already exists. Do you want to replace it?", 
 -				fname);
 -			resp = gtk_dialog_run(GTK_DIALOG(question));
 -			gtk_widget_destroy (question);
 -			if(resp != GTK_RESPONSE_YES) {
 -				continue;
 -			}
 -		}
 -		
 -		format = egg_file_format_chooser_get_format (
 -			EGG_FILE_FORMAT_CHOOSER(format_chooser), fname);
 -		if(!format) {
 -			char *tmp;
 -			question = gtk_message_dialog_new(GTK_WINDOW(exportdialog), 
 -				GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, 
 -				GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, 
 -				"Could not recognise format of output file \"%s\", please choose another format.", 
 -				((tmp = rindex(fname, '/')) != NULL) ? (tmp+1) : (fname));
 -			gtk_dialog_run(GTK_DIALOG(question));			   
 -			gtk_widget_destroy (question);
 -			continue;
 -		}
 -		formatname = (gchar *) egg_file_format_chooser_get_format_data(
 -			EGG_FILE_FORMAT_CHOOSER(format_chooser), format);
 -		
 -	    tmpbuf = g_new(guchar, 4*export_x*export_y);
 -	    render_buffer((Pixel *) tmpbuf, export_x, export_y); 
 -	    pbuf = gdk_pixbuf_new_from_data(tmpbuf,
 -			GDK_COLORSPACE_RGB,
 -			TRUE, 8,
 -			export_x, export_y, 4*export_x,
 -			NULL, NULL);
 -		success = gdk_pixbuf_save(pbuf, fname, formatname, &err, NULL);
 -	  	
 -		if(!success && (err != NULL) ) {
 -			question = gtk_message_dialog_new(GTK_WINDOW(exportdialog), 
 -				GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, 
 -				GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, "Error saving image: %s", 
 -				err->message);
 -			gtk_dialog_run(GTK_DIALOG(question));			   
 -			gtk_widget_destroy (question);				   
 -		}
 -		g_object_unref(pbuf);
 -	    g_free(tmpbuf);
 -	    break;
 -	}
 -	gtk_widget_hide (exportdialog);   
 +    if (!exportdialog) {
 +        build_exportdialog();
 +    }
 +    if (fname) {
 +        gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(exportdialog), fname);
 +        gtk_file_chooser_unselect_all(GTK_FILE_CHOOSER(exportdialog));
 +    }
 +    if (gtk_toggle_button_get_active
 +        (GTK_TOGGLE_BUTTON
 +         (gtk_builder_get_object(sizebuilder, "size_current")))) {
 +        GtkLabel *header = NULL;
 +        char header_str[128];
 +
 +        export_x = XRange;
 +        export_y = YRange;
 +        header = GTK_LABEL(gtk_builder_get_object(sizebuilder, "size_header"));
 +        snprintf(header_str, 127, "Size: %d x %d", export_x, export_y);
 +        gtk_label_set_text(header, header_str);
 +    }
 +    while (TRUE) {
 +        GtkWidget *question;
 +        GdkPixbuf *pbuf;
 +        GError *err = NULL;
 +        gboolean success = TRUE;
 +        guint format = 0;
 +        gchar *formatname = NULL;
 +        GSList *tmplist = NULL;
 +        Pixel *tmpbuf;
 +
 +        if (gtk_dialog_run(GTK_DIALOG(exportdialog)) != GTK_RESPONSE_ACCEPT) {
 +            break;
 +        }
 +
 +        if (fname) {
 +            g_free(fname);
 +        }
 +        fname = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(exportdialog));
 +        if (g_file_test(fname, G_FILE_TEST_EXISTS)) {
 +            gint resp;
 +            question = gtk_message_dialog_new(GTK_WINDOW(exportdialog),
 +                                              GTK_DIALOG_MODAL |
 +                                              GTK_DIALOG_DESTROY_WITH_PARENT,
 +                                              GTK_MESSAGE_QUESTION,
 +                                              GTK_BUTTONS_YES_NO,
 +                                              "A file named \"%s\" already exists. Do you want to replace it?",
 +                                              fname);
 +            resp = gtk_dialog_run(GTK_DIALOG(question));
 +            gtk_widget_destroy(question);
 +            if (resp != GTK_RESPONSE_YES) {
 +                continue;
 +            }
 +        }
 +
 +        format =
 +            egg_file_format_chooser_get_format(EGG_FILE_FORMAT_CHOOSER
 +                                               (format_chooser), fname);
 +        if (!format) {
 +            char *tmp;
 +            question = gtk_message_dialog_new(GTK_WINDOW(exportdialog),
 +                                              GTK_DIALOG_MODAL |
 +                                              GTK_DIALOG_DESTROY_WITH_PARENT,
 +                                              GTK_MESSAGE_WARNING,
 +                                              GTK_BUTTONS_OK,
 +                                              "Could not recognise format of output file \"%s\", please choose another format.",
 +                                              ((tmp =
 +                                                rindex(fname,
 +                                                       '/')) !=
 +                                               NULL) ? (tmp + 1) : (fname));
 +            gtk_dialog_run(GTK_DIALOG(question));
 +            gtk_widget_destroy(question);
 +            continue;
 +        }
 +        formatname =
 +            (gchar *)
 +            egg_file_format_chooser_get_format_data(EGG_FILE_FORMAT_CHOOSER
 +                                                    (format_chooser), format);
 +
 +        tmpbuf = g_new(Pixel, export_x * export_y);
 +        render_buffer(tmpbuf, export_x, export_y);
 +        pbuf = gdk_pixbuf_new_from_data((guchar *) tmpbuf,
 +                                        GDK_COLORSPACE_RGB,
 +                                        TRUE, 8,
 +                                        export_x, export_y,
 +                                        sizeof(Pixel) * export_x,
 +                                        NULL, NULL);
 +        success = gdk_pixbuf_save(pbuf, fname, formatname, &err, NULL);
 +
 +        if (!success && (err != NULL)) {
 +            question = gtk_message_dialog_new(GTK_WINDOW(exportdialog),
 +                                              GTK_DIALOG_MODAL |
 +                                              GTK_DIALOG_DESTROY_WITH_PARENT,
 +                                              GTK_MESSAGE_WARNING,
 +                                              GTK_BUTTONS_OK,
 +                                              "Error saving image: %s",
 +                                              err->message);
 +            gtk_dialog_run(GTK_DIALOG(question));
 +            gtk_widget_destroy(question);
 +        }
 +        g_object_unref(pbuf);
 +        g_free(tmpbuf);
 +        break;
 +    }
 +    gtk_widget_hide(exportdialog);
  }
  
 +
  void pagesetup_cb(GtkAction *action, gpointer user_data)
  {
  	if (print_pagesetup == NULL) {
@@@ -758,25 -735,21 +758,25 @@@ void print_draw(GtkPrintOperation *prin
      g_free(tmpbuf);
  }
  
 -void print_get_res_cb(GtkPrintOperation *print, GtkWidget *widget, gpointer rb)
 +
 +void print_get_res_cb(GtkPrintOperation * print, GtkWidget * widget,
 +                      gpointer rb)
  {
 -	GSList *el;
 -	
 -	el = gtk_radio_button_get_group(*((GtkRadioButton **)rb));
 -	while(el != NULL) {
 -		if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(el->data))) {
 -			print_resolution = (int) g_object_get_data(G_OBJECT(el->data), "res");
 -			return;
 -		} else
 -			el = el->next;
 -	}
 -	return;
 +    GSList *el;
 +
 +    el = gtk_radio_button_get_group(*((GtkRadioButton **) rb));
 +    while (el != NULL) {
 +        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(el->data))) {
 +            print_resolution =
 +                (uintptr_t) g_object_get_data(G_OBJECT(el->data), "res");
 +            return;
 +        } else
 +            el = el->next;
 +    }
 +    return;
  }
  
 +
  GObject *print_build_reswidget_cb(GtkPrintOperation *operation, gpointer radio_p) 
  {
  	GtkBuilder *b = NULL;
@@@ -1326,7 -1299,6 +1326,6 @@@ void UpdateScrollBars( void 
  		g_signal_handler_block(G_OBJECT(vscrollbar), vscr_handler);
  		gtk_range_set_value(GTK_RANGE(vscrollbar), new);
  		g_signal_handler_unblock(G_OBJECT(vscrollbar), vscr_handler);
- 		ReDrawFlag |= (1<<YScrlDial);
      }
  
      if ( (RotMode == RotBond) && BondSelected ) {
@@@ -1344,7 -1316,6 +1343,6 @@@
  		g_signal_handler_block(G_OBJECT(hscrollbar), hscr_handler);
  		gtk_range_set_value(GTK_RANGE(hscrollbar), new);
  		g_signal_handler_unblock(G_OBJECT(hscrollbar), hscr_handler);
- 		ReDrawFlag |= (1<<XScrlDial);
      }
  
  }
@@@ -1491,13 -1462,16 +1489,16 @@@ gboolean button_release_cb(GtkWidget *c
  {
      int stat;
  
- 	if (!dragging && event->button == 3 && event->type == GDK_BUTTON_RELEASE && !(event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK))) {
+     if (!dragging && event->button == 3 && event->type == GDK_BUTTON_RELEASE
+         && !(event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK))) {
  		do_popup_menu (canvas, event);
      } else {
      	stat = GetStatus(event->state);
      	ProcessMouseUp(event->x,event->y,stat);
  	}
- 
+     if( ReDrawFlag ) {
+         RefreshScreen();
+     }
  	dragging = FALSE;
  	
      return TRUE;
@@@ -1595,7 -1569,7 +1596,7 @@@ int OpenDisplay(void
  #ifdef THIRTYTWOBIT
      static ByteTest test;
  #endif
-     register int i,num;
+     int i;
      static char VersionStr[50];
      GError *gerr = NULL;
  
@@@ -1708,11 -1682,11 +1709,11 @@@
  
  int CreateImage( void )
  {
-     register long size;
-     register Pixel *ptr;
-   
- 	if( FBuffer ) 
+     long size;
+ 
+     if(FBuffer) {
  		_ffree(FBuffer);
+     }
  	size = (long)XRange*YRange*sizeof(Pixel);
  	FBuffer = (Pixel*)_fmalloc( size+32 );
  	

-- 
Rasmol packaging



More information about the debian-science-commits mailing list