Mercurial > pidgin
comparison src/gtkimhtml.c @ 5046:44945824ba60
[gaim-migrate @ 5394]
javabsp fixed im image scaling
I fixed im image saving, and the button annoyingly staying toggled
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Sun, 06 Apr 2003 02:09:56 +0000 |
parents | 29c87c6e75d9 |
children | 04ded2f7253c |
comparison
equal
deleted
inserted
replaced
5045:ad42102dd85f | 5046:44945824ba60 |
---|---|
1431 GtkImage *image = GTK_IMAGE(gtk_image_new_from_pixbuf(img)); | 1431 GtkImage *image = GTK_IMAGE(gtk_image_new_from_pixbuf(img)); |
1432 | 1432 |
1433 GTK_IMHTML_SCALABLE(im_image)->scale = gaim_im_image_scale; | 1433 GTK_IMHTML_SCALABLE(im_image)->scale = gaim_im_image_scale; |
1434 GTK_IMHTML_SCALABLE(im_image)->add_to = gaim_im_image_add_to; | 1434 GTK_IMHTML_SCALABLE(im_image)->add_to = gaim_im_image_add_to; |
1435 GTK_IMHTML_SCALABLE(im_image)->free = gaim_im_image_free; | 1435 GTK_IMHTML_SCALABLE(im_image)->free = gaim_im_image_free; |
1436 | |
1437 im_image->pixbuf = img; | |
1436 im_image->image = image; | 1438 im_image->image = image; |
1437 im_image->width = gdk_pixbuf_get_width(img); | 1439 im_image->width = gdk_pixbuf_get_width(img); |
1438 im_image->height = gdk_pixbuf_get_height(img); | 1440 im_image->height = gdk_pixbuf_get_height(img); |
1439 im_image->mark = NULL; | 1441 im_image->mark = NULL; |
1440 im_image->filename = filename; | 1442 im_image->filename = filename; |
1441 | 1443 |
1444 g_object_ref(img); | |
1442 return GTK_IMHTML_SCALABLE(im_image); | 1445 return GTK_IMHTML_SCALABLE(im_image); |
1443 } | 1446 } |
1444 | 1447 |
1445 void gaim_im_image_scale(GtkIMHtmlScalable *scale, int width, int height) | 1448 void gaim_im_image_scale(GtkIMHtmlScalable *scale, int width, int height) |
1446 { | 1449 { |
1447 gaim_im_image *image = (gaim_im_image *)scale; | 1450 gaim_im_image *image = (gaim_im_image *)scale; |
1448 | 1451 |
1449 if(image->width > width || image->height > height){ | 1452 if(image->width > width || image->height > height){ |
1450 GdkPixbuf *old_image = gtk_image_get_pixbuf(image->image); | |
1451 GdkPixbuf *new_image = NULL; | 1453 GdkPixbuf *new_image = NULL; |
1452 float factor; | 1454 float factor; |
1453 int new_width = image->width, new_height = image->height; | 1455 int new_width = image->width, new_height = image->height; |
1454 | 1456 |
1455 if(image->width > width){ | 1457 if(image->width > width){ |
1461 factor = (float)(height)/new_height; | 1463 factor = (float)(height)/new_height; |
1462 new_height = height; | 1464 new_height = height; |
1463 new_width = new_width * factor; | 1465 new_width = new_width * factor; |
1464 } | 1466 } |
1465 | 1467 |
1466 new_image = gdk_pixbuf_scale_simple(old_image, new_width, new_height, GDK_INTERP_BILINEAR); | 1468 new_image = gdk_pixbuf_scale_simple(image->pixbuf, new_width, new_height, GDK_INTERP_BILINEAR); |
1467 gtk_image_set_from_pixbuf(image->image, new_image); | 1469 gtk_image_set_from_pixbuf(image->image, new_image); |
1468 g_object_unref(G_OBJECT(new_image)); | 1470 g_object_unref(G_OBJECT(new_image)); |
1469 } | 1471 } |
1470 } | 1472 } |
1471 | 1473 |
1472 void gaim_im_image_free(GtkIMHtmlScalable *scale) | 1474 void gaim_im_image_free(GtkIMHtmlScalable *scale) |
1473 { | 1475 { |
1474 gaim_im_image *image = (gaim_im_image *)scale; | 1476 gaim_im_image *image = (gaim_im_image *)scale; |
1475 /* | 1477 |
1476 g_object_unref(image->image); | 1478 g_object_unref(image->pixbuf); |
1477 */ | |
1478 g_free(image->filename); | 1479 g_free(image->filename); |
1479 g_free(scale); | 1480 g_free(scale); |
1480 } | 1481 } |
1481 | 1482 |
1482 void gaim_im_image_add_to(GtkIMHtmlScalable *scale, GtkIMHtml *imhtml, GtkTextIter *iter) | 1483 void gaim_im_image_add_to(GtkIMHtmlScalable *scale, GtkIMHtml *imhtml, GtkTextIter *iter) |
1585 gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, | 1586 gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, |
1586 _("Gaim was unable to guess the image type base on the file extension supplied. Defaulting to PNG.")); | 1587 _("Gaim was unable to guess the image type base on the file extension supplied. Defaulting to PNG.")); |
1587 type = g_strdup("png"); | 1588 type = g_strdup("png"); |
1588 } | 1589 } |
1589 | 1590 |
1590 gdk_pixbuf_save(gtk_image_get_pixbuf(image->image), filename, type, &error, NULL); | 1591 gdk_pixbuf_save(image->pixbuf, filename, type, &error, NULL); |
1591 | 1592 |
1592 if(error){ | 1593 if(error){ |
1593 gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, | 1594 gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, |
1594 _("Error saving image: %s"), error->message); | 1595 _("Error saving image: %s"), error->message); |
1595 g_error_free(error); | 1596 g_error_free(error); |