diff --git a/ChangeLog b/ChangeLog index 235357887d..2e1814900b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Sun Jul 19 12:48:00 BST 1998 Adam D. Moss + + * plug-ins/animationplay/animationplay.c: Adapted + to use GDKRGB when available - results in improved + speed and stability. + + * app/session.c + * app/session.h: GIMP compiles again with the latest + GTK. Sven will have to look at this fix, but it seems + to work. + Sat Jul 18 20:15:59 BST 1998 Adam D. Moss * plug-ins/gee/gee.c: About eight times faster with diff --git a/app/gui/session.c b/app/gui/session.c index f6cdc4ca8d..a37bd12210 100644 --- a/app/gui/session.c +++ b/app/gui/session.c @@ -46,13 +46,15 @@ #include #include +#include + #include "appenv.h" #include "commands.h" #include "gimprc.h" #include "session.h" static void sessionrc_write_info (SessionInfo *, FILE *); -static void session_open_dialog (SessionInfo *info); +static void session_open_dialog (gpointer unused, gpointer pinfo); static void session_reset_open_state (SessionInfo *info); GList *session_info_updates = NULL; @@ -61,19 +63,19 @@ GList *session_info_updates = NULL; SessionInfo toolbox_session_info = { "toolbox", NULL, 0, 0, 0, 0, FALSE }; SessionInfo lc_dialog_session_info = - { "lc-dialog", dialogs_lc_cmd_callback, 0, 400, 0, 0, FALSE }; + { "lc-dialog", (GtkItemFactoryCallback)dialogs_lc_cmd_callback, 0, 400, 0, 0, FALSE }; SessionInfo info_dialog_session_info = { "info-dialog", NULL, 165, 0, 0, 0, FALSE }; SessionInfo tool_options_session_info = - { "tool-options", dialogs_tools_options_cmd_callback, 0, 345, 0, 0, FALSE }; + { "tool-options", (GtkItemFactoryCallback)dialogs_tools_options_cmd_callback, 0, 345, 0, 0, FALSE }; SessionInfo palette_session_info = - { "palette", dialogs_palette_cmd_callback, 140, 180, 0, 0, FALSE }; + { "palette", (GtkItemFactoryCallback)dialogs_palette_cmd_callback, 140, 180, 0, 0, FALSE }; SessionInfo brush_select_session_info = - { "brush-select", dialogs_brushes_cmd_callback, 150, 180, 0, 0, FALSE }; + { "brush-select", (GtkItemFactoryCallback)dialogs_brushes_cmd_callback, 150, 180, 0, 0, FALSE }; SessionInfo pattern_select_session_info = - { "pattern-select", dialogs_patterns_cmd_callback, 160, 180, 0, 0, FALSE }; + { "pattern-select", (GtkItemFactoryCallback)dialogs_patterns_cmd_callback, 160, 180, 0, 0, FALSE }; SessionInfo gradient_editor_session_info = - { "gradient-editor", dialogs_gradient_editor_cmd_callback, 170, 180, 0, 0, FALSE }; + { "gradient-editor", (GtkItemFactoryCallback)dialogs_gradient_editor_cmd_callback, 170, 180, 0, 0, FALSE }; /* public functions */ void @@ -194,12 +196,14 @@ sessionrc_write_info (SessionInfo *info, FILE *fp) } static void -session_open_dialog (SessionInfo *info) +session_open_dialog (gpointer unused, gpointer pinfo) { + SessionInfo *info = (SessionInfo*) pinfo; + if (info == NULL || info->open == FALSE) return; - (info->open_callback) (NULL, NULL); + (info->open_callback) (); } static void diff --git a/app/gui/session.h b/app/gui/session.h index 106fa7c265..f33d92a0d6 100644 --- a/app/gui/session.h +++ b/app/gui/session.h @@ -19,6 +19,7 @@ #define __SESSION_H__ #include +#include /* Structures */ typedef struct _SessionInfo SessionInfo; diff --git a/app/session.c b/app/session.c index f6cdc4ca8d..a37bd12210 100644 --- a/app/session.c +++ b/app/session.c @@ -46,13 +46,15 @@ #include #include +#include + #include "appenv.h" #include "commands.h" #include "gimprc.h" #include "session.h" static void sessionrc_write_info (SessionInfo *, FILE *); -static void session_open_dialog (SessionInfo *info); +static void session_open_dialog (gpointer unused, gpointer pinfo); static void session_reset_open_state (SessionInfo *info); GList *session_info_updates = NULL; @@ -61,19 +63,19 @@ GList *session_info_updates = NULL; SessionInfo toolbox_session_info = { "toolbox", NULL, 0, 0, 0, 0, FALSE }; SessionInfo lc_dialog_session_info = - { "lc-dialog", dialogs_lc_cmd_callback, 0, 400, 0, 0, FALSE }; + { "lc-dialog", (GtkItemFactoryCallback)dialogs_lc_cmd_callback, 0, 400, 0, 0, FALSE }; SessionInfo info_dialog_session_info = { "info-dialog", NULL, 165, 0, 0, 0, FALSE }; SessionInfo tool_options_session_info = - { "tool-options", dialogs_tools_options_cmd_callback, 0, 345, 0, 0, FALSE }; + { "tool-options", (GtkItemFactoryCallback)dialogs_tools_options_cmd_callback, 0, 345, 0, 0, FALSE }; SessionInfo palette_session_info = - { "palette", dialogs_palette_cmd_callback, 140, 180, 0, 0, FALSE }; + { "palette", (GtkItemFactoryCallback)dialogs_palette_cmd_callback, 140, 180, 0, 0, FALSE }; SessionInfo brush_select_session_info = - { "brush-select", dialogs_brushes_cmd_callback, 150, 180, 0, 0, FALSE }; + { "brush-select", (GtkItemFactoryCallback)dialogs_brushes_cmd_callback, 150, 180, 0, 0, FALSE }; SessionInfo pattern_select_session_info = - { "pattern-select", dialogs_patterns_cmd_callback, 160, 180, 0, 0, FALSE }; + { "pattern-select", (GtkItemFactoryCallback)dialogs_patterns_cmd_callback, 160, 180, 0, 0, FALSE }; SessionInfo gradient_editor_session_info = - { "gradient-editor", dialogs_gradient_editor_cmd_callback, 170, 180, 0, 0, FALSE }; + { "gradient-editor", (GtkItemFactoryCallback)dialogs_gradient_editor_cmd_callback, 170, 180, 0, 0, FALSE }; /* public functions */ void @@ -194,12 +196,14 @@ sessionrc_write_info (SessionInfo *info, FILE *fp) } static void -session_open_dialog (SessionInfo *info) +session_open_dialog (gpointer unused, gpointer pinfo) { + SessionInfo *info = (SessionInfo*) pinfo; + if (info == NULL || info->open == FALSE) return; - (info->open_callback) (NULL, NULL); + (info->open_callback) (); } static void diff --git a/app/session.h b/app/session.h index 106fa7c265..f33d92a0d6 100644 --- a/app/session.h +++ b/app/session.h @@ -19,6 +19,7 @@ #define __SESSION_H__ #include +#include /* Structures */ typedef struct _SessionInfo SessionInfo; diff --git a/plug-ins/animationplay/animationplay.c b/plug-ins/animationplay/animationplay.c index 2e127e91db..6ae2c1975a 100644 --- a/plug-ins/animationplay/animationplay.c +++ b/plug-ins/animationplay/animationplay.c @@ -1,5 +1,5 @@ /* - * Animation Playback plug-in version 0.94.2 + * Animation Playback plug-in version 0.98.0 * * Adam D. Moss : 1997-98 : adam@gimp.org : adam@foxbox.org * @@ -11,6 +11,11 @@ /* * REVISION HISTORY: * + * 98.07.19 : version 0.98.0 + * Adapted to use GDKRGB (from recent GTK >= 1.1) if + * available - good speed and reliability improvement. + * Plus some minor tweaks. + * * 98.04.28 : version 0.94.2 * Fixed a time-parsing bug. * @@ -91,6 +96,15 @@ #include "gtk/gtk.h" +/* Test for GTK1.2-style gdkrgb code, else use old 'preview' code. */ +#ifdef __GDK_RGB_H__ +#define RAPH_IS_HOME yep +#define DITHERTYPE GDK_RGB_DITHER_NORMAL +#endif + + +/* #define I_AM_STUPID yesiam */ + typedef enum { @@ -124,11 +138,17 @@ static void rewind_callback (GtkWidget *widget, gpointer data); static void step_callback (GtkWidget *widget, gpointer data); +#ifdef RAPH_IS_HOME +static void repaint_sda (GtkWidget *darea, + gpointer data); +static void repaint_da (GtkWidget *darea, + gpointer data); +#endif static DisposeType get_frame_disposal (guint whichframe); static void render_frame (gint32 whichframe); static void show_frame (void); -static void total_alpha_preview (void); +static void total_alpha_preview (guchar* ptr); static void init_preview_misc (void); @@ -146,7 +166,14 @@ GPlugInInfo PLUG_IN_INFO = /* Global widgets'n'stuff */ guchar* preview_data; -static GtkPreview* preview = NULL; +#ifdef RAPH_IS_HOME +static GtkWidget* drawing_area = NULL; +static GtkWidget* shape_drawing_area = NULL; +guchar* shape_drawing_area_data = NULL; +guchar* drawing_area_data = NULL; +#else +static GtkPreview* preview = NULL; +#endif GtkProgressBar* progress; guint width,height; guchar* preview_alpha1_data; @@ -167,9 +194,12 @@ gint ncolours; /* for shaping */ gchar *shape_preview_mask; GtkWidget *shape_window; +#ifdef RAPH_IS_HOME +#else GtkWidget *shape_fixed; GtkPreview *shape_preview; GdkPixmap *shape_pixmap; +#endif typedef struct _cursoroffset {gint x,y;} CursorOffset; gint shaping = 0; static GdkWindow *root_win = NULL; @@ -335,11 +365,24 @@ shape_pressed (GtkWidget *widget, GdkEventButton *event) } +#ifdef RAPH_IS_HOME +static void +maybeblocked_expose (GtkWidget *widget, GdkEventExpose *event) +{ + if (playing) + gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "expose_event"); + else + repaint_sda (widget, event); +} +#else + + static void blocked_expose (GtkWidget *widget, GdkEventExpose *event) { gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "expose_event"); } +#endif #ifdef I_AM_STUPID @@ -437,15 +480,52 @@ shape_motion (GtkWidget *widget, } +#ifdef RAPH_IS_HOME +static void +repaint_da (GtkWidget *darea, gpointer data) +{ + /* printf("Repaint! Woohoo!\n");*/ + gdk_draw_rgb_image (drawing_area->window, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + drawing_area_data, width * 3); +} + + +static void +repaint_sda (GtkWidget *darea, gpointer data) +{ + /*printf("Repaint! Woohoo!\n");*/ + gdk_draw_rgb_image (shape_drawing_area->window, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + shape_drawing_area_data, width * 3); +} +#endif + + static void preview_pressed (GtkWidget *widget, GdkEventButton *event) { +#ifdef RAPH_IS_HOME +#else gint i; +#endif gint xp, yp; GdkModifierType mask; if (shaping) return; +#ifdef RAPH_IS_HOME + /* Create a total-alpha buffer merely for the not-shaped + drawing area to now display. */ + + drawing_area_data = g_malloc (width * height * 3); + total_alpha_preview (drawing_area_data); + +#else /* put current preview buf into shaped buf */ for (i=0;ix, yp - event->y); @@ -460,22 +542,31 @@ preview_pressed (GtkWidget *widget, GdkEventButton *event) gtk_widget_show (shape_window); gdk_window_set_back_pixmap(shape_window->window, NULL, 0); +#ifdef RAPH_IS_HOME + gdk_window_set_back_pixmap(shape_drawing_area->window, NULL, 1); +#else gdk_window_set_back_pixmap(shape_fixed->window, NULL, 1); +#endif - /* clear nonshaped preview widget */ - total_alpha_preview(); +#ifdef RAPH_IS_HOME +#else for (i=0;iwindow, width, height, gtk_preview_get_visual()->depth); +#endif gdk_window_set_back_pixmap(shape_window->window, NULL, 0); @@ -683,6 +799,7 @@ build_dialog(GImageType basetype, icon_pos = g_new (CursorOffset, 1); gtk_object_set_user_data(GTK_OBJECT(shape_window), icon_pos); } + /* gtk_widget_show (shape_window);*/ gtk_signal_connect (GTK_OBJECT (eventbox), "button_press_event", GTK_SIGNAL_FUNC (preview_pressed),NULL); @@ -691,8 +808,18 @@ build_dialog(GImageType basetype, gtk_signal_connect (GTK_OBJECT (shape_window), "expose_event", GTK_SIGNAL_FUNC (unblocked_expose),shape_window); #endif + +#ifdef RAPH_IS_HOME + gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event", + GTK_SIGNAL_FUNC (repaint_da), drawing_area); + + gtk_signal_connect (GTK_OBJECT (shape_drawing_area), "expose_event", + GTK_SIGNAL_FUNC (maybeblocked_expose), + shape_drawing_area); +#else gtk_signal_connect (GTK_OBJECT (shape_fixed), "expose_event", GTK_SIGNAL_FUNC (blocked_expose),shape_fixed); +#endif root_win = gdk_window_foreign_new (GDK_ROOT_WINDOW ()); } @@ -730,17 +857,27 @@ static void do_playback(void) gimp_tile_cache_size (0); init_preview_misc(); + build_dialog(gimp_image_base_type(image_id), gimp_image_get_filename(image_id)); /* Make sure that whole preview is dirtied with pure-alpha */ - total_alpha_preview(); + total_alpha_preview(preview_data); + +#ifdef RAPH_IS_HOME + /* gdk_draw_rgb_image (drawing_area->window, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3);*/ +#else for (i=0;iid)) { - total_alpha_preview(); + total_alpha_preview(preview_data); } @@ -897,21 +1034,39 @@ render_frame(gint32 whichframe) /* Display the preview buffer... finally. */ if (shaping) { +#ifdef RAPH_IS_HOME + reshape_from_bitmap (shape_preview_mask); + gdk_draw_rgb_image (shape_drawing_area->window, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + shape_drawing_area->style->white_gc, + 0, top, width, bottom-top, + DITHERTYPE, + &preview_data[3*top*width], width * 3); +#else for (i=rawy;i=0 && iwindow, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + drawing_area->style->white_gc, + 0, top, width, bottom-top, + DITHERTYPE, + &preview_data[3*top*width], width * 3); +#else for (i=rawy;i=0 && iwindow, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + shape_drawing_area->style->white_gc, + 0, top, width, bottom-top, + DITHERTYPE, + &preview_data[3*top*width], width * 3); +#else for (i=rawy;i=0 && iwindow, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + drawing_area->style->white_gc, + 0, top, width, bottom-top, + DITHERTYPE, + &preview_data[3*top*width], width * 3); +#else for (i=rawy;i=0 && iwindow, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;i= 1.1) if + * available - good speed and reliability improvement. + * Plus some minor tweaks. + * * 98.04.28 : version 0.94.2 * Fixed a time-parsing bug. * @@ -91,6 +96,15 @@ #include "gtk/gtk.h" +/* Test for GTK1.2-style gdkrgb code, else use old 'preview' code. */ +#ifdef __GDK_RGB_H__ +#define RAPH_IS_HOME yep +#define DITHERTYPE GDK_RGB_DITHER_NORMAL +#endif + + +/* #define I_AM_STUPID yesiam */ + typedef enum { @@ -124,11 +138,17 @@ static void rewind_callback (GtkWidget *widget, gpointer data); static void step_callback (GtkWidget *widget, gpointer data); +#ifdef RAPH_IS_HOME +static void repaint_sda (GtkWidget *darea, + gpointer data); +static void repaint_da (GtkWidget *darea, + gpointer data); +#endif static DisposeType get_frame_disposal (guint whichframe); static void render_frame (gint32 whichframe); static void show_frame (void); -static void total_alpha_preview (void); +static void total_alpha_preview (guchar* ptr); static void init_preview_misc (void); @@ -146,7 +166,14 @@ GPlugInInfo PLUG_IN_INFO = /* Global widgets'n'stuff */ guchar* preview_data; -static GtkPreview* preview = NULL; +#ifdef RAPH_IS_HOME +static GtkWidget* drawing_area = NULL; +static GtkWidget* shape_drawing_area = NULL; +guchar* shape_drawing_area_data = NULL; +guchar* drawing_area_data = NULL; +#else +static GtkPreview* preview = NULL; +#endif GtkProgressBar* progress; guint width,height; guchar* preview_alpha1_data; @@ -167,9 +194,12 @@ gint ncolours; /* for shaping */ gchar *shape_preview_mask; GtkWidget *shape_window; +#ifdef RAPH_IS_HOME +#else GtkWidget *shape_fixed; GtkPreview *shape_preview; GdkPixmap *shape_pixmap; +#endif typedef struct _cursoroffset {gint x,y;} CursorOffset; gint shaping = 0; static GdkWindow *root_win = NULL; @@ -335,11 +365,24 @@ shape_pressed (GtkWidget *widget, GdkEventButton *event) } +#ifdef RAPH_IS_HOME +static void +maybeblocked_expose (GtkWidget *widget, GdkEventExpose *event) +{ + if (playing) + gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "expose_event"); + else + repaint_sda (widget, event); +} +#else + + static void blocked_expose (GtkWidget *widget, GdkEventExpose *event) { gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "expose_event"); } +#endif #ifdef I_AM_STUPID @@ -437,15 +480,52 @@ shape_motion (GtkWidget *widget, } +#ifdef RAPH_IS_HOME +static void +repaint_da (GtkWidget *darea, gpointer data) +{ + /* printf("Repaint! Woohoo!\n");*/ + gdk_draw_rgb_image (drawing_area->window, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + drawing_area_data, width * 3); +} + + +static void +repaint_sda (GtkWidget *darea, gpointer data) +{ + /*printf("Repaint! Woohoo!\n");*/ + gdk_draw_rgb_image (shape_drawing_area->window, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + shape_drawing_area_data, width * 3); +} +#endif + + static void preview_pressed (GtkWidget *widget, GdkEventButton *event) { +#ifdef RAPH_IS_HOME +#else gint i; +#endif gint xp, yp; GdkModifierType mask; if (shaping) return; +#ifdef RAPH_IS_HOME + /* Create a total-alpha buffer merely for the not-shaped + drawing area to now display. */ + + drawing_area_data = g_malloc (width * height * 3); + total_alpha_preview (drawing_area_data); + +#else /* put current preview buf into shaped buf */ for (i=0;ix, yp - event->y); @@ -460,22 +542,31 @@ preview_pressed (GtkWidget *widget, GdkEventButton *event) gtk_widget_show (shape_window); gdk_window_set_back_pixmap(shape_window->window, NULL, 0); +#ifdef RAPH_IS_HOME + gdk_window_set_back_pixmap(shape_drawing_area->window, NULL, 1); +#else gdk_window_set_back_pixmap(shape_fixed->window, NULL, 1); +#endif - /* clear nonshaped preview widget */ - total_alpha_preview(); +#ifdef RAPH_IS_HOME +#else for (i=0;iwindow, width, height, gtk_preview_get_visual()->depth); +#endif gdk_window_set_back_pixmap(shape_window->window, NULL, 0); @@ -683,6 +799,7 @@ build_dialog(GImageType basetype, icon_pos = g_new (CursorOffset, 1); gtk_object_set_user_data(GTK_OBJECT(shape_window), icon_pos); } + /* gtk_widget_show (shape_window);*/ gtk_signal_connect (GTK_OBJECT (eventbox), "button_press_event", GTK_SIGNAL_FUNC (preview_pressed),NULL); @@ -691,8 +808,18 @@ build_dialog(GImageType basetype, gtk_signal_connect (GTK_OBJECT (shape_window), "expose_event", GTK_SIGNAL_FUNC (unblocked_expose),shape_window); #endif + +#ifdef RAPH_IS_HOME + gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event", + GTK_SIGNAL_FUNC (repaint_da), drawing_area); + + gtk_signal_connect (GTK_OBJECT (shape_drawing_area), "expose_event", + GTK_SIGNAL_FUNC (maybeblocked_expose), + shape_drawing_area); +#else gtk_signal_connect (GTK_OBJECT (shape_fixed), "expose_event", GTK_SIGNAL_FUNC (blocked_expose),shape_fixed); +#endif root_win = gdk_window_foreign_new (GDK_ROOT_WINDOW ()); } @@ -730,17 +857,27 @@ static void do_playback(void) gimp_tile_cache_size (0); init_preview_misc(); + build_dialog(gimp_image_base_type(image_id), gimp_image_get_filename(image_id)); /* Make sure that whole preview is dirtied with pure-alpha */ - total_alpha_preview(); + total_alpha_preview(preview_data); + +#ifdef RAPH_IS_HOME + /* gdk_draw_rgb_image (drawing_area->window, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3);*/ +#else for (i=0;iid)) { - total_alpha_preview(); + total_alpha_preview(preview_data); } @@ -897,21 +1034,39 @@ render_frame(gint32 whichframe) /* Display the preview buffer... finally. */ if (shaping) { +#ifdef RAPH_IS_HOME + reshape_from_bitmap (shape_preview_mask); + gdk_draw_rgb_image (shape_drawing_area->window, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + shape_drawing_area->style->white_gc, + 0, top, width, bottom-top, + DITHERTYPE, + &preview_data[3*top*width], width * 3); +#else for (i=rawy;i=0 && iwindow, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + drawing_area->style->white_gc, + 0, top, width, bottom-top, + DITHERTYPE, + &preview_data[3*top*width], width * 3); +#else for (i=rawy;i=0 && iwindow, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + shape_drawing_area->style->white_gc, + 0, top, width, bottom-top, + DITHERTYPE, + &preview_data[3*top*width], width * 3); +#else for (i=rawy;i=0 && iwindow, + shape_drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;iwindow, + drawing_area->style->white_gc, + 0, top, width, bottom-top, + DITHERTYPE, + &preview_data[3*top*width], width * 3); +#else for (i=rawy;i=0 && iwindow, + drawing_area->style->white_gc, + 0, 0, width, height, + DITHERTYPE, + preview_data, width * 3); +#else for (i=0;i