root/patches/use-gtkimageview-in-eog2.patch
| Revision 409, 26.2 kB (checked in by bjourne, 6 years ago) |
|---|
-
src/eog-image.h
old new 148 148 149 149 GdkPixbuf* eog_image_get_pixbuf (EogImage *img); 150 150 151 GdkPixbufAnimation *eog_image_get_anim (EogImage *img); 152 151 153 GdkPixbuf* eog_image_get_thumbnail (EogImage *img); 152 154 153 155 void eog_image_get_size (EogImage *img, -
src/eog-image-private.h
old new 1 /* Eye Of Gnome - Image Private Data1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; coding: utf-8 -*- 2 2 * 3 * Eye Of Gnome - Image Private Data 4 * 3 5 * Copyright (C) 2007 The Free Software Foundation 4 6 * 5 7 * Author: Lucas Rocha <lucasr@gnome.org> … … 31 33 32 34 EogImageStatus status; 33 35 34 GdkPixbuf *image; 36 GdkPixbufAnimation *anim; 37 35 38 GdkPixbuf *thumbnail; 36 39 37 40 gint width; -
src/eog-image-jpeg.c
old new 329 329 struct error_handler_data jerr; 330 330 331 331 g_return_val_if_fail (EOG_IS_IMAGE (image), FALSE); 332 g_return_val_if_fail (EOG_IMAGE (image)->priv-> image!= NULL, FALSE);332 g_return_val_if_fail (EOG_IMAGE (image)->priv->anim != NULL, FALSE); 333 333 334 334 priv = image->priv; 335 pixbuf = priv->image;335 pixbuf = gdk_pixbuf_animation_get_static_image (priv->anim); 336 336 337 337 outfile = fopen (file, "wb"); 338 338 if (outfile == NULL) { -
src/eog-window.c
old new 1 /* Eye Of Gnome - Main Window1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; coding: utf-8 -*- 2 2 * 3 * Eye Of Gnome - Main Window 4 * 3 5 * Copyright (C) 2000-2006 The Free Software Foundation 4 6 * 5 7 * Author: Lucas Rocha <lucasr@gnome.org> … … 32 34 #include <math.h> 33 35 34 36 #include "eog-window.h" 35 #include "eog-scroll-view.h"36 37 #include "eog-debug.h" 37 38 #include "eog-file-chooser.h" 38 39 #include "eog-thumb-view.h" … … 62 63 #include <glib-object.h> 63 64 #include <glib/gi18n.h> 64 65 #include <gdk/gdkkeysyms.h> 66 #include <gtkimageview/gtkanimview.h> 67 #include <gtkimageview/gtkimageview.h> 68 #include <gtkimageview/gtkimagescrollwin.h> 69 #include <gtkimageview/gtkzooms.h> 65 70 #ifdef GDK_WINDOWING_X11 66 71 #include <gdk/gdkx.h> 67 72 #endif … … 135 140 GtkWidget *box; 136 141 GtkWidget *layout; 137 142 GtkWidget *cbox; 143 GtkWidget *scroll_win; 138 144 GtkWidget *view; 139 145 GtkWidget *sidebar; 140 146 GtkWidget *thumbview; … … 220 226 eog_debug (DEBUG_PREFERENCES); 221 227 222 228 g_return_if_fail (EOG_IS_WINDOW (user_data)); 223 229 224 230 priv = EOG_WINDOW (user_data)->priv; 225 231 226 g_return_if_fail ( EOG_IS_SCROLL_VIEW (priv->view));232 g_return_if_fail (GTK_IMAGE_VIEW (priv->view)); 227 233 228 234 if (entry->value != NULL && entry->value->type == GCONF_VALUE_BOOL) { 229 235 interpolate = gconf_value_get_bool (entry->value); 230 236 } 231 237 232 eog_scroll_view_set_antialiasing (EOG_SCROLL_VIEW (priv->view), 233 interpolate); 238 GdkInterpType interp = GDK_INTERP_NEAREST; 239 if (interpolate) { 240 interp = GDK_INTERP_BILINEAR; 241 } 242 gtk_image_view_set_interpolation (GTK_IMAGE_VIEW (priv->view), 243 interp); 234 244 } 235 245 236 246 static void … … 239 249 GConfEntry *entry, 240 250 gpointer user_data) 241 251 { 242 EogWindowPrivate *priv; 243 gboolean scroll_wheel_zoom = FALSE; 244 245 eog_debug (DEBUG_PREFERENCES); 246 247 g_return_if_fail (EOG_IS_WINDOW (user_data)); 248 249 priv = EOG_WINDOW (user_data)->priv; 250 251 g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view)); 252 253 if (entry->value != NULL && entry->value->type == GCONF_VALUE_BOOL) { 254 scroll_wheel_zoom = gconf_value_get_bool (entry->value); 255 } 256 257 eog_scroll_view_set_scroll_wheel_zoom (EOG_SCROLL_VIEW (priv->view), 258 scroll_wheel_zoom); 252 printf ("THIS SETTING IS NOT SUPPORTED AT ALL!\n"); 259 253 } 260 254 261 255 static void … … 264 258 GConfEntry *entry, 265 259 gpointer user_data) 266 260 { 267 EogWindowPrivate *priv; 268 gdouble multiplier = 0.05; 269 270 eog_debug (DEBUG_PREFERENCES); 271 272 g_return_if_fail (EOG_IS_WINDOW (user_data)); 273 274 priv = EOG_WINDOW (user_data)->priv; 275 276 g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view)); 277 278 if (entry->value != NULL && entry->value->type == GCONF_VALUE_FLOAT) { 279 multiplier = gconf_value_get_float (entry->value); 280 } 281 282 eog_scroll_view_set_zoom_multiplier (EOG_SCROLL_VIEW (priv->view), 283 multiplier); 261 printf ("THIS SETTING IS NOT SUPPORTED AT ALL!\n"); 284 262 } 285 263 286 264 static void … … 298 276 299 277 priv = EOG_WINDOW (user_data)->priv; 300 278 301 g_return_if_fail ( EOG_IS_SCROLL_VIEW (priv->view));279 g_return_if_fail (GTK_IMAGE_VIEW (priv->view)); 302 280 303 281 if (entry->value != NULL && entry->value->type == GCONF_VALUE_STRING) { 304 282 value = gconf_value_get_string (entry->value); … … 313 291 color_str = gconf_client_get_string (priv->client, 314 292 EOG_CONF_VIEW_TRANS_COLOR, NULL); 315 293 if (gdk_color_parse (color_str, &color)) { 316 eog_scroll_view_set_transparency (EOG_SCROLL_VIEW (priv->view), 317 EOG_TRANSP_COLOR, &color); 294 printf ("FIXME: Color conversion needed.\n"); 295 gtk_image_view_set_transp (GTK_IMAGE_VIEW (priv->view), 296 GTK_IMAGE_TRANSP_COLOR, 297 (0xff000000 298 | ((color.red >> 8) << 16) 299 | ((color.green >> 8) << 8) 300 | (color.blue >> 8))); 318 301 } 319 302 g_free (color_str); 320 303 } else if (g_ascii_strcasecmp (value, "CHECK_PATTERN") == 0) { 321 eog_scroll_view_set_transparency (EOG_SCROLL_VIEW (priv->view),322 EOG_TRANSP_CHECKED, 0);304 gtk_image_view_set_transp (GTK_IMAGE_VIEW (priv->view), 305 GTK_IMAGE_TRANSP_GRID, 0); 323 306 } else { 324 eog_scroll_view_set_transparency (EOG_SCROLL_VIEW (priv->view),325 EOG_TRANSP_BACKGROUND, 0);307 gtk_image_view_set_transp (GTK_IMAGE_VIEW (priv->view), 308 GTK_IMAGE_TRANSP_BACKGROUND, 0); 326 309 } 327 310 } 328 311 … … 343 326 344 327 priv = EOG_WINDOW (user_data)->priv; 345 328 346 g_return_if_fail ( EOG_IS_SCROLL_VIEW (priv->view));329 g_return_if_fail (GTK_IS_IMAGE_VIEW (priv->view)); 347 330 348 331 value = gconf_client_get_string (priv->client, 349 332 EOG_CONF_VIEW_TRANSPARENCY, … … 358 341 color_str = gconf_value_get_string (entry->value); 359 342 360 343 if (gdk_color_parse (color_str, &color)) { 361 eog_scroll_view_set_transparency (EOG_SCROLL_VIEW (priv->view), 362 EOG_TRANSP_COLOR, &color); 344 printf ("FIXME: Not sure about this\n"); 345 gtk_image_view_set_transp (GTK_IMAGE_VIEW (priv->view), 346 GTK_IMAGE_TRANSP_COLOR, 347 (0xff000000 348 | ((color.red >> 8) << 16) 349 | ((color.green >> 8) << 8) 350 | (color.blue >> 8))); 363 351 } 364 352 } 365 353 g_free (value); … … 380 368 381 369 priv = EOG_WINDOW (user_data)->priv; 382 370 383 g_return_if_fail ( EOG_IS_SCROLL_VIEW (priv->view));371 g_return_if_fail (GTK_IS_IMAGE_VIEW (priv->view)); 384 372 385 373 if (entry->value != NULL && entry->value->type == GCONF_VALUE_BOOL) { 386 374 show_buttons = gconf_value_get_bool (entry->value); … … 586 574 EogWindowPrivate *priv; 587 575 char *str = NULL; 588 576 577 printf ("update_status_bar\n"); 578 589 579 g_return_if_fail (EOG_IS_WINDOW (window)); 590 580 591 581 eog_debug (DEBUG_WINDOW); … … 597 587 int zoom, width, height; 598 588 GnomeVFSFileSize bytes = 0; 599 589 600 zoom = floor (100 * eog_scroll_view_get_zoom (EOG_SCROLL_VIEW (priv->view)) + 0.5);590 zoom = floor (100 * gtk_image_view_get_zoom (GTK_IMAGE_VIEW (priv->view)) + 0.5); 601 591 602 592 eog_image_get_size (priv->image, &width, &height); 603 593 … … 605 595 606 596 if ((width > 0) && (height > 0)) { 607 597 char *size_string; 608 598 609 599 size_string = gnome_vfs_format_file_size_for_display (bytes); 610 600 611 601 /* [image width] x [image height] pixels [bytes] [zoom in percent] */ … … 629 619 priv->image_info_message_cid, str ? str : ""); 630 620 631 621 g_free (str); 622 printf ("update_status_bar:done\n"); 632 623 } 633 624 634 625 static void … … 759 750 priv->mode != EOG_WINDOW_MODE_SLIDESHOW; 760 751 761 752 gtk_widget_show (priv->layout); 762 gtk_widget_show_all (priv-> view->parent);753 gtk_widget_show_all (priv->scroll_win->parent); 763 754 764 755 if (show_image_collection) 765 756 gtk_widget_show (priv->nav); … … 917 908 EogWindowPrivate *priv; 918 909 GnomeVFSURI *uri; 919 910 911 printf ("eog_window_display_image\n"); 912 920 913 g_return_if_fail (EOG_IS_WINDOW (window)); 921 914 g_return_if_fail (EOG_IS_IMAGE (image)); 922 915 … … 935 928 image_thumb_changed_cb (image, window); 936 929 } 937 930 938 eog_scroll_view_set_image (EOG_SCROLL_VIEW (priv->view), image); 931 gtk_anim_view_set_anim (GTK_ANIM_VIEW (priv->view), 932 eog_image_get_anim (image)); 939 933 940 934 gtk_window_set_title (GTK_WINDOW (window), eog_image_get_caption (image)); 941 935 … … 1247 1241 EogWindow *window; 1248 1242 EogWindowPrivate *priv; 1249 1243 1244 printf ("eog_job_load_cb:start\n"); 1245 1250 1246 g_return_if_fail (EOG_IS_WINDOW (data)); 1251 1247 1252 1248 eog_debug (DEBUG_WINDOW); … … 1303 1299 1304 1300 update_status_bar (window); 1305 1301 1306 eog_scroll_view_set_image (EOG_SCROLL_VIEW (priv->view), NULL);1302 gtk_anim_view_set_anim (GTK_ANIM_VIEW (priv->view), NULL); 1307 1303 1308 1304 if (window->priv->status == EOG_WINDOW_STATUS_INIT) { 1309 1305 update_action_groups_state (window); … … 1326 1322 } 1327 1323 1328 1324 g_object_unref (job->image); 1325 printf ("eog_job_load_cb:end\n"); 1329 1326 } 1330 1327 1331 1328 static void … … 1349 1346 eog_job_transform_cb (EogJobTransform *job, gpointer data) 1350 1347 { 1351 1348 EogWindow *window; 1349 1350 printf ("eog_job_transform_cb\n"); 1352 1351 1353 1352 g_return_if_fail (EOG_IS_WINDOW (data)); 1354 1353 1355 1354 window = EOG_WINDOW (data); 1356 1355 1357 1356 eog_window_clear_transform_job (window); 1357 1358 gtk_anim_view_set_anim (GTK_ANIM_VIEW (window->priv->view), 1359 eog_image_get_anim (window->priv->image)); 1358 1360 } 1359 1361 1360 1362 static void … … 1449 1451 } 1450 1452 1451 1453 static void 1452 view_zoom_changed_cb (GtkWidget *widget, double zoom,gpointer user_data)1454 view_zoom_changed_cb (GtkWidget *widget, gpointer user_data) 1453 1455 { 1454 1456 EogWindow *window; 1455 1457 GtkAction *action_zoom_in; 1456 1458 GtkAction *action_zoom_out; 1459 gdouble zoom; 1457 1460 1458 1461 g_return_if_fail (EOG_IS_WINDOW (user_data)); 1459 1462 1460 1463 window = EOG_WINDOW (user_data); 1461 1464 1462 1465 update_status_bar (window); … … 1469 1472 gtk_action_group_get_action (window->priv->actions_image, 1470 1473 "ViewZoomOut"); 1471 1474 1475 zoom = gtk_image_view_get_zoom (GTK_IMAGE_VIEW (window->priv->view)); 1472 1476 gtk_action_set_sensitive (action_zoom_in, 1473 !eog_scroll_view_get_zoom_is_max (EOG_SCROLL_VIEW (window->priv->view)));1477 zoom < gtk_zooms_get_max_zoom ()); 1474 1478 gtk_action_set_sensitive (action_zoom_out, 1475 !eog_scroll_view_get_zoom_is_min (EOG_SCROLL_VIEW (window->priv->view)));1479 zoom > gtk_zooms_get_min_zoom ()); 1476 1480 } 1477 1481 1478 1482 static void … … 1604 1608 1605 1609 gtk_widget_hide_all (window->priv->fullscreen_popup); 1606 1610 1607 eog_scroll_view_hide_cursor (EOG_SCROLL_VIEW (window->priv->view)); 1611 gtk_image_view_set_show_cursor (GTK_IMAGE_VIEW (window->priv->view), 1612 FALSE); 1608 1613 1609 1614 fullscreen_clear_timeout (window); 1610 1615 … … 1673 1678 1674 1679 window->priv->fullscreen_timeout_source = source; 1675 1680 1676 eog_scroll_view_show_cursor (EOG_SCROLL_VIEW (window->priv->view)); 1681 gtk_image_view_set_show_cursor (GTK_IMAGE_VIEW (window->priv->view), 1682 TRUE); 1677 1683 } 1678 1684 1679 1685 static void … … 1900 1906 { 1901 1907 EogWindowPrivate *priv; 1902 1908 GtkWidget *menubar; 1903 gboolean upscale;1904 1909 1905 1910 eog_debug (DEBUG_WINDOW); 1906 1911 … … 1922 1927 g_assert (GTK_IS_WIDGET (menubar)); 1923 1928 gtk_widget_hide (menubar); 1924 1929 1925 g_object_set (G_OBJECT (gtk_widget_get_parent (priv-> view)),1930 g_object_set (G_OBJECT (gtk_widget_get_parent (priv->scroll_win)), 1926 1931 "shadow-type", GTK_SHADOW_NONE, 1927 1932 NULL); 1928 1933 … … 1962 1967 slideshow_set_timeout (window); 1963 1968 } 1964 1969 1965 upscale = gconf_client_get_bool (priv->client, 1966 EOG_CONF_FULLSCREEN_UPSCALE, 1967 NULL); 1970 gtk_widget_grab_focus (priv->view); 1968 1971 1969 eog_scroll_view_set_zoom_upscale (EOG_SCROLL_VIEW (priv->view), 1970 upscale); 1972 1971 1973 1972 gtk_widget_grab_focus (priv->view); 1973 1974 gtk_widget_modify_bg (window->priv->view, GTK_STATE_NORMAL, 1974 gtk_widget_modify_bg (window->priv->view, GTK_STATE_NORMAL, 1975 1975 &(GTK_WIDGET (window)->style->black)); 1976 gtk_image_view_set_show_frame (GTK_IMAGE_VIEW (priv->view), FALSE); 1976 1977 1977 1978 { 1979 /* Make the border of the frame the scroll_win is 1980 added to invisible. */ 1978 1981 GtkStyle *style; 1982 GtkWidget *frame; 1979 1983 1980 style = gtk_style_copy (gtk_widget_get_style (priv->view->parent));1984 frame = priv->scroll_win->parent; 1981 1985 1986 style = gtk_style_copy (gtk_widget_get_style (frame)); 1982 1987 style->xthickness = 0; 1983 1988 style->ythickness = 0; 1984 1989 1985 gtk_widget_set_style (priv->view->parent, style); 1986 1990 gtk_widget_set_style (frame, style); 1987 1991 g_object_unref (style); 1988 1992 } 1989 1993 … … 2019 2023 if (slideshow) { 2020 2024 slideshow_clear_timeout (window); 2021 2025 } 2022 2023 g_object_set (G_OBJECT (gtk_widget_get_parent (priv-> view)),2026 2027 g_object_set (G_OBJECT (gtk_widget_get_parent (priv->scroll_win)), 2024 2028 "shadow-type", GTK_SHADOW_IN, 2025 NULL); 2029 NULL); 2026 2030 2027 2031 g_signal_handlers_disconnect_by_func (priv->view, 2028 2032 (gpointer) fullscreen_motion_notify_cb, … … 2045 2049 menubar = gtk_ui_manager_get_widget (priv->ui_mgr, "/MainMenu"); 2046 2050 g_assert (GTK_IS_WIDGET (menubar)); 2047 2051 gtk_widget_show (menubar); 2048 2049 eog_scroll_view_set_zoom_upscale (EOG_SCROLL_VIEW (priv->view), FALSE);2050 2052 2051 gtk_widget_modify_bg (window->priv->view, GTK_STATE_NORMAL, NULL);2052 gtk_widget_set_style (window->priv->view->parent, NULL);2053 2053 gtk_window_unfullscreen (GTK_WINDOW (window)); 2054 2054 2055 gtk_widget_modify_bg (window->priv->view, GTK_STATE_NORMAL, NULL); 2056 gtk_image_view_set_show_frame (GTK_IMAGE_VIEW (priv->view), TRUE); 2057 gtk_image_view_set_show_cursor (GTK_IMAGE_VIEW (priv->view), TRUE); 2058 2055 2059 if (slideshow) { 2056 2060 eog_window_update_slideshow_action (window); 2057 2061 } else { 2058 2062 eog_window_update_fullscreen_action (window); 2059 2063 } 2060 2061 eog_scroll_view_show_cursor (EOG_SCROLL_VIEW (priv->view));2062 2063 2064 eog_application_screensaver_enable (EOG_APP); 2064 2065 } 2065 2066 … … 3072 3073 priv = EOG_WINDOW (user_data)->priv; 3073 3074 3074 3075 if (priv->view) { 3075 eog_scroll_view_zoom_in (EOG_SCROLL_VIEW (priv->view), FALSE);3076 gtk_image_view_zoom_in (GTK_IMAGE_VIEW (priv->view)); 3076 3077 } 3077 3078 } 3078 3079 … … 3088 3089 priv = EOG_WINDOW (user_data)->priv; 3089 3090 3090 3091 if (priv->view) { 3091 eog_scroll_view_zoom_out (EOG_SCROLL_VIEW (priv->view), FALSE);3092 gtk_image_view_zoom_out (GTK_IMAGE_VIEW (priv->view)); 3092 3093 } 3093 3094 } 3094 3095 … … 3104 3105 priv = EOG_WINDOW (user_data)->priv; 3105 3106 3106 3107 if (priv->view) { 3107 eog_scroll_view_set_zoom (EOG_SCROLL_VIEW (priv->view), 1.0);3108 gtk_image_view_set_zoom (GTK_IMAGE_VIEW (priv->view), 1.0); 3108 3109 } 3109 3110 } 3110 3111 … … 3120 3121 priv = EOG_WINDOW (user_data)->priv; 3121 3122 3122 3123 if (priv->view) { 3123 eog_scroll_view_zoom_fit (EOG_SCROLL_VIEW (priv->view));3124 gtk_image_view_set_fitting (GTK_IMAGE_VIEW (priv->view), TRUE); 3124 3125 } 3125 3126 } 3126 3127 … … 3807 3808 G_CALLBACK (eog_window_sidebar_page_removed), 3808 3809 window); 3809 3810 3810 priv->view = eog_scroll_view_new (); 3811 gtk_widget_set_size_request (GTK_WIDGET (priv->view), 100, 100); 3811 priv->view = gtk_anim_view_new (); 3812 priv->scroll_win = 3813 gtk_image_scroll_win_new (GTK_IMAGE_VIEW (priv->view)); 3814 gtk_widget_set_size_request (priv->view, 100, 100); 3812 3815 g_signal_connect (G_OBJECT (priv->view), 3813 3816 "zoom_changed", 3814 3817 G_CALLBACK (view_zoom_changed_cb), … … 3818 3821 "shadow-type", GTK_SHADOW_IN, 3819 3822 NULL); 3820 3823 3821 gtk_container_add (GTK_CONTAINER (frame), priv-> view);3824 gtk_container_add (GTK_CONTAINER (frame), priv->scroll_win); 3822 3825 3823 3826 gtk_paned_pack1 (GTK_PANED (hpaned), 3824 3827 priv->sidebar, … … 4195 4198 if (tbcontainer->focus_child != NULL) 4196 4199 break; 4197 4200 case GDK_Page_Up: 4198 if (!eog_scroll_view_scrollbars_visible (EOG_SCROLL_VIEW (EOG_WINDOW (widget)->priv->view))) { 4199 eog_thumb_view_select_single (EOG_THUMB_VIEW (EOG_WINDOW (widget)->priv->thumbview), 4200 EOG_THUMB_VIEW_SELECT_LEFT); 4201 result = TRUE; 4202 } 4201 printf ("FIXME: Not sure about this\n"); 4202 /* if (!eog_scroll_view_scrollbars_visible (EOG_SCROLL_VIEW (EOG_WINDOW (widget)->priv->view))) { */ 4203 /* eog_thumb_view_select_single (EOG_THUMB_VIEW (EOG_WINDOW (widget)->priv->thumbview), */ 4204 /* EOG_THUMB_VIEW_SELECT_LEFT); */ 4205 /* result = TRUE; */ 4206 /* } */ 4203 4207 4204 if (EOG_WINDOW (widget)->priv->mode == EOG_WINDOW_MODE_SLIDESHOW) { 4205 slideshow_set_timeout (EOG_WINDOW (widget)); 4206 } 4208 /* if (EOG_WINDOW (widget)->priv->mode == EOG_WINDOW_MODE_SLIDESHOW) { */ 4209 /* slideshow_set_timeout (EOG_WINDOW (widget)); */ 4210 /* } */ 4207 4211 4208 4212 break; 4209 4213 case GDK_Down: … … 4211 4215 if (tbcontainer->focus_child != NULL) 4212 4216 break; 4213 4217 case GDK_Page_Down: 4214 if (!eog_scroll_view_scrollbars_visible (EOG_SCROLL_VIEW (EOG_WINDOW (widget)->priv->view))) { 4215 eog_thumb_view_select_single (EOG_THUMB_VIEW (EOG_WINDOW (widget)->priv->thumbview), 4216 EOG_THUMB_VIEW_SELECT_RIGHT); 4217 result = TRUE; 4218 } 4218 printf ("FIXME: Not sure about this\n"); 4219 /* if (!eog_scroll_view_scrollbars_visible (EOG_SCROLL_VIEW (EOG_WINDOW (widget)->priv->view))) { */ 4220 /* eog_thumb_view_select_single (EOG_THUMB_VIEW (EOG_WINDOW (widget)->priv->thumbview), */ 4221 /* EOG_THUMB_VIEW_SELECT_RIGHT); */ 4222 /* result = TRUE; */ 4223 /* } */ 4219 4224 4220 if (EOG_WINDOW (widget)->priv->mode == EOG_WINDOW_MODE_SLIDESHOW) { 4221 slideshow_set_timeout (EOG_WINDOW (widget)); 4222 } 4225 /* if (EOG_WINDOW (widget)->priv->mode == EOG_WINDOW_MODE_SLIDESHOW) { */ 4226 /* slideshow_set_timeout (EOG_WINDOW (widget)); */ 4227 /* } */ 4223 4228 4224 4229 break; 4225 4230 } -
src/eog-image.c
old new 1 /* Eye Of Gnome - Image1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; coding: utf-8 -*- 2 2 * 3 * Eye Of Gnome - Image 4 * 3 5 * Copyright (C) 2006 The Free Software Foundation 4 6 * 5 7 * Author: Lucas Rocha <lucasr@gnome.org> … … 23 25 #include "config.h" 24 26 #endif 25 27 28 /* Define needed to get the gdk_pixbuf_non_anim_new() function. */ 29 #define GDK_PIXBUF_ENABLE_BACKEND 30 26 31 #include "eog-image.h" 27 32 #include "eog-image-private.h" 28 33 #include "eog-debug.h" … … 41 46 42 47 #include <unistd.h> 43 48 49 50 44 51 #include <glib.h> 45 52 #include <glib-object.h> 46 53 #include <glib/gi18n.h> 47 54 #include <gtk/gtk.h> 48 55 #include <gdk-pixbuf/gdk-pixbuf.h> 56 #include <gdk-pixbuf/gdk-pixbuf-animation.h> 49 57 #include <libgnomevfs/gnome-vfs.h> 50 58 #include <libgnomeui/gnome-thumbnail.h> 51 59 … … 91 99 if (priv->status == EOG_IMAGE_STATUS_LOADING) { 92 100 eog_image_cancel_load (image); 93 101 } else { 94 if (priv-> image!= NULL) {95 g_object_unref (priv-> image);96 priv-> image= NULL;102 if (priv->anim != NULL) { 103 g_object_unref (priv->anim); 104 priv->anim = NULL; 97 105 } 98 106 99 107 #ifdef HAVE_EXIF … … 231 239 img->priv = EOG_IMAGE_GET_PRIVATE (img); 232 240 233 241 img->priv->uri = NULL; 234 img->priv-> image= NULL;242 img->priv->anim = NULL; 235 243 img->priv->thumbnail = NULL; 236 244 img->priv->width = -1; 237 245 img->priv->height = -1; … … 342 350 GdkPixbuf *transformed; 343 351 gboolean modified = FALSE; 344 352 353 printf ("eog_image_real_transform\n"); 354 345 355 g_return_if_fail (EOG_IS_IMAGE (img)); 346 356 g_return_if_fail (EOG_IS_TRANSFORM (trans)); 347 357 348 358 priv = img->priv; 349 359 350 if (priv->image != NULL) { 351 transformed = eog_transform_apply (trans, priv->image, job); 360 /* Transformations cannot be applied to animations. */ 361 if (priv->anim != NULL && 362 gdk_pixbuf_animation_is_static_image (priv->anim) == TRUE) { 363 364 printf ("Making transform!\n"); 352 365 353 g_object_unref (priv->image); 354 priv->image = transformed; 366 /* Take the static frame, transform it, and then 367 repackage it in the animation. */ 368 GdkPixbuf *pixbuf; 355 369 370 pixbuf = gdk_pixbuf_animation_get_static_image (priv->anim); 371 transformed = eog_transform_apply (trans, pixbuf, job); 372 g_object_unref (priv->anim); 373 374 priv->anim = gdk_pixbuf_non_anim_new (transformed); 356 375 priv->width = gdk_pixbuf_get_width (transformed); 357 376 priv->height = gdk_pixbuf_get_height (transformed); 358 359 377 modified = TRUE; 360 378 } 361 379 … … 459 477 return TRUE; 460 478 } 461 479 462 if (priv-> image== NULL) {480 if (priv->anim == NULL) { 463 481 g_set_error (error, 464 482 EOG_IMAGE_ERROR, 465 483 EOG_IMAGE_ERROR_NOT_LOADED, … … 468 486 return FALSE; 469 487 } 470 488 471 if (priv->trans != NULL) { 472 transformed = eog_transform_apply (priv->trans, priv->image, NULL); 489 /* Transformations can only be applied to images, not 490 animations. */ 491 if (gdk_pixbuf_animation_is_static_image (priv->anim) && 492 priv->trans != NULL) { 493 /* Take the static frame, transform it, and then 494 repackage it in the animation. */ 495 GdkPixbuf *pixbuf; 496 497 pixbuf = gdk_pixbuf_animation_get_static_image (priv->anim); 498 transformed = eog_transform_apply (priv->trans, pixbuf, NULL); 499 g_object_unref (priv->anim); 500 501 priv->anim = gdk_pixbuf_non_anim_new (transformed); 502 priv->width = gdk_pixbuf_get_width (transformed); 503 priv->height = gdk_pixbuf_get_height (transformed); 473 504 } 474 505 475 g_object_unref (priv->image); 476 priv->image = transformed; 477 478 if (transformed != NULL) { 479 priv->width = gdk_pixbuf_get_width (priv->image); 480 priv->height = gdk_pixbuf_get_height (priv->image); 481 } else { 506 if (transformed == NULL) { 482 507 g_set_error (error, 483 508 EOG_IMAGE_ERROR, 484 509 EOG_IMAGE_ERROR_GENERIC, … … 529 554 cmsHTRANSFORM transform; 530 555 gint row, width, rows, stride; 531 556 guchar *p; 557 GdkPixbuf *pixbuf; 532 558 533 559 g_return_if_fail (img != NULL); 534 560 535 561 priv = img->priv; 536 562 537 if (screen == NULL || priv->profile == NULL) return; 563 if (screen == NULL || 564 priv->profile == NULL || 565 gdk_pixbuf_animation_is_static_image (priv->anim) == FALSE) 566 return; 538 567 539 568 transform = cmsCreateTransform (priv->profile, 540 569 TYPE_RGB_8, … … 542 571 TYPE_RGB_8, 543 572 INTENT_PERCEPTUAL, 544 573 0); 574 575 pixbuf = gdk_pixbuf_animation_get_static_image (priv->anim); 545 576 546 rows = gdk_pixbuf_get_height(p riv->image);547 width = gdk_pixbuf_get_width (p riv->image);548 stride = gdk_pixbuf_get_rowstride (p riv->image);549 p = gdk_pixbuf_get_pixels (p riv->image);577 rows = gdk_pixbuf_get_height(pixbuf); 578 width = gdk_pixbuf_get_width (pixbuf); 579 stride = gdk_pixbuf_get_rowstride (pixbuf); 580 p = gdk_pixbuf_get_pixels (pixbuf); 550 581 551 582 for (row = 0; row < rows; ++row) { 552 583 cmsDoTransform(transform, p, p, width); … … 870 901 871 902 priv = img->priv; 872 903 873 g_assert (!read_image_data || priv-> image== NULL);904 g_assert (!read_image_data || priv->anim == NULL); 874 905 875 906 if (read_image_data && priv->file_type != NULL) { 876 907 g_free (priv->file_type); … … 1031 1062 } 1032 1063 } else { 1033 1064 if (read_image_data) { 1034 if (priv-> image!= NULL) {1035 g_object_unref (priv-> image);1065 if (priv->anim != NULL) { 1066 g_object_unref (priv->anim); 1036 1067 } 1037 1068 1038 priv-> image = gdk_pixbuf_loader_get_pixbuf(loader);1069 priv->anim = gdk_pixbuf_loader_get_animation (loader); 1039 1070 1040 g_assert (priv-> image!= NULL);1071 g_assert (priv->anim != NULL); 1041 1072 1042 g_object_ref (priv-> image);1073 g_object_ref (priv->anim); 1043 1074 1044 priv->width = gdk_pixbuf_get_width (priv->image); 1045 priv->height = gdk_pixbuf_get_height (priv->image); 1075 priv->width = 1076 gdk_pixbuf_animation_get_width (priv->anim); 1077 priv->height = 1078 gdk_pixbuf_animation_get_height (priv->anim); 1046 1079 1047 1080 format = gdk_pixbuf_loader_get_format (loader); 1048 1081 … … 1084 1117 1085 1118 if ((req_data & EOG_IMAGE_DATA_IMAGE) > 0) { 1086 1119 req_data = (req_data & !EOG_IMAGE_DATA_IMAGE); 1087 has_data = has_data && (priv-> image!= NULL);1120 has_data = has_data && (priv->anim != NULL); 1088 1121 } 1089 1122 1090 1123 if ((req_data & EOG_IMAGE_DATA_DIMENSION) > 0 ) { … … 1198 1231 g_return_val_if_fail (EOG_IS_IMAGE (img), NULL); 1199 1232 1200 1233 g_mutex_lock (img->priv->status_mutex); 1201 image = img->priv->image;1234 image = gdk_pixbuf_animation_get_static_image (img->priv->anim); 1202 1235 g_mutex_unlock (img->priv->status_mutex); 1203 1236 1204 1237 if (image != NULL) { … … 1208 1241 return image; 1209 1242 } 1210 1243 1244 GdkPixbufAnimation * 1245 eog_image_get_anim (EogImage *img) 1246 { 1247 GdkPixbufAnimation *anim; 1248 1249 g_return_val_if_fail (EOG_IS_IMAGE (img), NULL); 1250 1251 g_mutex_lock (img->priv->status_mutex); 1252 anim = img->priv->anim; 1253 g_mutex_unlock (img->priv->status_mutex); 1254 1255 if (anim != NULL) { 1256 g_object_ref (anim); 1257 } 1258 1259 return anim; 1260 } 1261 1211 1262 #ifdef HAVE_LCMS 1212 1263 cmsHPROFILE 1213 1264 eog_image_get_profile (EogImage *img) … … 1481 1532 } 1482 1533 1483 1534 /* fail if there is no image to save */ 1484 if (priv-> image== NULL) {1535 if (priv->anim == NULL) { 1485 1536 g_set_error (error, EOG_IMAGE_ERROR, 1486 1537 EOG_IMAGE_ERROR_NOT_LOADED, 1487 1538 _("No image loaded.")); … … 1507 1558 #endif 1508 1559 1509 1560 if (!success && (*error == NULL)) { 1510 success = gdk_pixbuf_save (priv->image, tmpfile, source->format, error, NULL); 1561 success = gdk_pixbuf_save 1562 (gdk_pixbuf_animation_get_static_image (priv->anim), 1563 tmpfile, 1564 source->format, 1565 error, 1566 NULL); 1511 1567 } 1512 1568 1513 1569 if (success) { … … 1609 1665 priv = img->priv; 1610 1666 1611 1667 /* fail if there is no image to save */ 1612 if (priv-> image== NULL) {1668 if (priv->anim == NULL) { 1613 1669 g_set_error (error, 1614 1670 EOG_IMAGE_ERROR, 1615 1671 EOG_IMAGE_ERROR_NOT_LOADED, … … 1645 1701 #endif 1646 1702 1647 1703 if (!success && (*error == NULL)) { 1648 success = gdk_pixbuf_save (priv->image, tmpfile, target->format, error, NULL); 1704 success = gdk_pixbuf_save 1705 (gdk_pixbuf_animation_get_static_image (priv->anim), 1706 tmpfile, 1707 target->format, 1708 error, 1709 NULL); 1649 1710 } 1650 1711 1651 1712 if (success && !direct_copy) { /* not required if we alredy copied the file directly */ -
configure.ac
old new 76 76 GNOME_ICON_THEME_REQUIRED=2.19.1 77 77 SHARED_MIME_INFO_REQUIRED=0.20 78 78 EXEMPI_REQUIRED=1.99.2 79 GTKIMAGEVIEW_REQUIRED=1.4.0 79 80 80 81 81 82 EOG_MODULES="gtk+-2.0 >= $GTK_REQUIRED \ … … 89 90 gnome-desktop-2.0 >= $GNOME_DESKTOP_REQUIRED \ 90 91 gtk+-unix-print-2.0 >= $GTK_PRINT_REQUIRED \ 91 92 gnome-icon-theme >= $GNOME_ICON_THEME_REQUIRED \ 92 shared-mime-info >= $SHARED_MIME_INFO_REQUIRED" 93 shared-mime-info >= $SHARED_MIME_INFO_REQUIRED \ 94 gtkimageview >= $GTKIMAGEVIEW_REQUIRED" 93 95 94 96 # *************** 95 97 # EXIF (optional)
Note: See TracBrowser for help on using the browser.
