From f9f4411f537d2b0f6d873ae1e7a6d05f3bfc752b Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 18 Feb 2000 13:59:18 +0000 Subject: [PATCH] libgimp/Makefile.am simple widget which creates a pixmap from XPM data 2000-02-18 Michael Natterer * libgimp/Makefile.am * libgimp/gimppixmap.[ch]: simple widget which creates a pixmap from XPM data without the need to worry about it's parent's "realized" state and other stuff. * libgimp/gimpcolorbutton.c: removed a gtk-doc comment from an internal function. * libgimp/gimpwidgets.[ch]: new function gimp_pixmap_button_new(). * app/gimpui.h * libgimp/gimpui.h: include gimppixmap.h. * app/gradient.c * app/nav_window.c * app/palette.c * libgimp/gimpfileselection.[ch] * libgimp/gimppatheditor.c * libgimp/gimpquerybox.c * plug-ins/FractalExplorer/FractalExplorer.c: use GimpPixmaps. * plug-ins/Lighting/* * plug-ins/MapObject/*: some more cleanups: reduced # of includes, made private functions static, use GimpPixmaps. * plug-ins/libgck/Makefile.am * plug-ins/libgck/NEWS * plug-ins/libgck/README * plug-ins/libgck/TODO * plug-ins/libgck/docs/html/gck.html * plug-ins/libgck/docs/html/gck_application_window.html * plug-ins/libgck/docs/html/gck_dialog_window.html * plug-ins/libgck/docs/html/gckmath.html * plug-ins/libgck/docs/html/gckui.html * plug-ins/libgck/docs/html/gckvector.html: removed because they documented files which don't exist any more. --- ChangeLog | 41 +- app/display/gimpnavigationeditor.c | 52 +- app/display/gimpnavigationview.c | 52 +- app/gimpui.h | 1 + app/gradient.c | 50 +- app/gradient_editor.c | 50 +- app/gui/gradient-editor.c | 50 +- app/gui/palette-editor.c | 28 +- app/nav_window.c | 52 +- app/palette.c | 28 +- app/widgets/gimpgradienteditor.c | 50 +- app/widgets/gimppaletteeditor.c | 28 +- app/widgets/gimpwidgets-utils.h | 1 + libgimp/Makefile.am | 4 + libgimp/gimpcolorbutton.c | 25 +- libgimp/gimpfileselection.c | 107 ++- libgimp/gimpfileselection.h | 24 +- libgimp/gimppatheditor.c | 126 +--- libgimp/gimppixmap.c | 150 +++++ libgimp/gimppixmap.h | 52 ++ libgimp/gimpquerybox.c | 25 +- libgimp/gimpui.h | 1 + libgimp/gimpwidgets.c | 16 + libgimp/gimpwidgets.h | 2 + libgimpwidgets/gimpcolorbutton.c | 25 +- libgimpwidgets/gimpfileentry.c | 107 ++- libgimpwidgets/gimpfileentry.h | 24 +- libgimpwidgets/gimpfileselection.c | 107 ++- libgimpwidgets/gimpfileselection.h | 24 +- libgimpwidgets/gimppatheditor.c | 126 +--- libgimpwidgets/gimppixmap.c | 150 +++++ libgimpwidgets/gimppixmap.h | 52 ++ libgimpwidgets/gimpquerybox.c | 25 +- libgimpwidgets/gimpwidgets.c | 16 + libgimpwidgets/gimpwidgets.h | 2 + plug-ins/FractalExplorer/FractalExplorer.c | 23 +- plug-ins/Lighting/lighting_apply.c | 33 +- plug-ins/Lighting/lighting_apply.h | 21 +- plug-ins/Lighting/lighting_image.c | 9 +- plug-ins/Lighting/lighting_image.h | 79 ++- plug-ins/Lighting/lighting_main.c | 6 + plug-ins/Lighting/lighting_main.h | 7 +- plug-ins/Lighting/lighting_preview.c | 52 +- plug-ins/Lighting/lighting_preview.h | 28 +- plug-ins/Lighting/lighting_shade.c | 88 ++- plug-ins/Lighting/lighting_shade.h | 32 +- plug-ins/Lighting/lighting_ui.c | 121 +--- plug-ins/Lighting/lighting_ui.h | 8 +- plug-ins/MapObject/arcball.c | 290 +++++---- plug-ins/MapObject/arcball.h | 57 +- plug-ins/MapObject/mapobject_apply.c | 10 +- plug-ins/MapObject/mapobject_apply.h | 24 +- plug-ins/MapObject/mapobject_image.c | 97 ++- plug-ins/MapObject/mapobject_image.h | 65 +- plug-ins/MapObject/mapobject_main.c | 60 +- plug-ins/MapObject/mapobject_main.h | 19 - plug-ins/MapObject/mapobject_preview.c | 160 +++-- plug-ins/MapObject/mapobject_preview.h | 51 +- plug-ins/MapObject/mapobject_shade.c | 616 ++++++++++-------- plug-ins/MapObject/mapobject_shade.h | 44 +- plug-ins/MapObject/mapobject_ui.c | 177 +---- plug-ins/MapObject/mapobject_ui.h | 6 - plug-ins/libgck/ChangeLog | 90 --- plug-ins/libgck/Makefile.am | 13 +- plug-ins/libgck/NEWS | 0 plug-ins/libgck/README | 82 --- plug-ins/libgck/TODO | 13 - plug-ins/libgck/docs/html/gck.html | 76 --- .../docs/html/gck_application_window.html | 109 ---- .../libgck/docs/html/gck_dialog_window.html | 141 ---- plug-ins/libgck/docs/html/gckmath.html | 36 - plug-ins/libgck/docs/html/gckui.html | 192 ------ plug-ins/libgck/docs/html/gckvector.html | 92 --- 73 files changed, 1988 insertions(+), 2712 deletions(-) create mode 100644 libgimp/gimppixmap.c create mode 100644 libgimp/gimppixmap.h create mode 100644 libgimpwidgets/gimppixmap.c create mode 100644 libgimpwidgets/gimppixmap.h delete mode 100644 plug-ins/libgck/ChangeLog delete mode 100644 plug-ins/libgck/NEWS delete mode 100644 plug-ins/libgck/README delete mode 100644 plug-ins/libgck/TODO delete mode 100644 plug-ins/libgck/docs/html/gck.html delete mode 100644 plug-ins/libgck/docs/html/gck_application_window.html delete mode 100644 plug-ins/libgck/docs/html/gck_dialog_window.html delete mode 100644 plug-ins/libgck/docs/html/gckmath.html delete mode 100644 plug-ins/libgck/docs/html/gckui.html delete mode 100644 plug-ins/libgck/docs/html/gckvector.html diff --git a/ChangeLog b/ChangeLog index 70e5d03465..12191c98b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,42 @@ +2000-02-18 Michael Natterer + + * libgimp/Makefile.am + * libgimp/gimppixmap.[ch]: simple widget which creates a pixmap + from XPM data without the need to worry about it's parent's + "realized" state and other stuff. + + * libgimp/gimpcolorbutton.c: removed a gtk-doc comment from an + internal function. + + * libgimp/gimpwidgets.[ch]: new function gimp_pixmap_button_new(). + + * app/gimpui.h + * libgimp/gimpui.h: include gimppixmap.h. + + * app/gradient.c + * app/nav_window.c + * app/palette.c + * libgimp/gimpfileselection.[ch] + * libgimp/gimppatheditor.c + * libgimp/gimpquerybox.c + * plug-ins/FractalExplorer/FractalExplorer.c: use GimpPixmaps. + + * plug-ins/Lighting/* + * plug-ins/MapObject/*: some more cleanups: reduced # of includes, + made private functions static, use GimpPixmaps. + + * plug-ins/libgck/Makefile.am + * plug-ins/libgck/NEWS + * plug-ins/libgck/README + * plug-ins/libgck/TODO + * plug-ins/libgck/docs/html/gck.html + * plug-ins/libgck/docs/html/gck_application_window.html + * plug-ins/libgck/docs/html/gck_dialog_window.html + * plug-ins/libgck/docs/html/gckmath.html + * plug-ins/libgck/docs/html/gckui.html + * plug-ins/libgck/docs/html/gckvector.html: removed because they + documented files which don't exist any more. + Fri Feb 18 10:43:30 CET 2000 Sven Neumann * plug-ins/ifscompose/ifscompose.c: @@ -7,7 +46,7 @@ Fri Feb 18 10:43:30 CET 2000 Sven Neumann * libgimp/gimpcolorbutton.[ch]: new function gimp_color_button_double_new() which uses an array of gdouble - instead uf guchar to store the color. + instead of guchar to store the color. * libgimp/gimpwidgets.h: added macros for easier access of the scale_entries widgets. diff --git a/app/display/gimpnavigationeditor.c b/app/display/gimpnavigationeditor.c index 43e4d6e751..36df2f6619 100644 --- a/app/display/gimpnavigationeditor.c +++ b/app/display/gimpnavigationeditor.c @@ -1066,41 +1066,26 @@ zoom_adj_changed (GtkAdjustment *adj, static GtkWidget * nav_create_button_area (InfoDialog *info_win) { - GtkWidget *hbox1; - GtkWidget *vbox1; - GtkWidget *button; - GtkWidget *hscale1; - GtkWidget *label1; - GtkObject *adjustment; - GdkPixmap *pixmap; - GtkWidget *pixmapwid; - GdkBitmap *mask; - GtkStyle *style; + GtkWidget *hbox1; + GtkWidget *vbox1; + GtkWidget *button; + GtkWidget *hscale1; + GtkWidget *label1; + GtkObject *adjustment; NavWinData *iwd; - gchar scale_str[MAX_SCALE_BUF]; + gchar scale_str[MAX_SCALE_BUF]; - iwd = (NavWinData *)info_win->user_data; + iwd = (NavWinData *) info_win->user_data; hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); - style = gtk_widget_get_style (info_win->shell); - - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (navwindow_zoomout), (gpointer) info_win->user_data); + GTK_SIGNAL_FUNC (navwindow_zoomout), + (gpointer) info_win->user_data); gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (info_win->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); vbox1 = gtk_vbox_new (FALSE, 0); @@ -1130,21 +1115,12 @@ nav_create_button_area (InfoDialog *info_win) gtk_box_pack_start (GTK_BOX (vbox1), hscale1, TRUE, TRUE, 0); gtk_scale_set_draw_value (GTK_SCALE (hscale1), FALSE); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (navwindow_zoomin), (gpointer) info_win->user_data); + GTK_SIGNAL_FUNC (navwindow_zoomin), + (gpointer) info_win->user_data); gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (info_win->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); return vbox1; diff --git a/app/display/gimpnavigationview.c b/app/display/gimpnavigationview.c index 43e4d6e751..36df2f6619 100644 --- a/app/display/gimpnavigationview.c +++ b/app/display/gimpnavigationview.c @@ -1066,41 +1066,26 @@ zoom_adj_changed (GtkAdjustment *adj, static GtkWidget * nav_create_button_area (InfoDialog *info_win) { - GtkWidget *hbox1; - GtkWidget *vbox1; - GtkWidget *button; - GtkWidget *hscale1; - GtkWidget *label1; - GtkObject *adjustment; - GdkPixmap *pixmap; - GtkWidget *pixmapwid; - GdkBitmap *mask; - GtkStyle *style; + GtkWidget *hbox1; + GtkWidget *vbox1; + GtkWidget *button; + GtkWidget *hscale1; + GtkWidget *label1; + GtkObject *adjustment; NavWinData *iwd; - gchar scale_str[MAX_SCALE_BUF]; + gchar scale_str[MAX_SCALE_BUF]; - iwd = (NavWinData *)info_win->user_data; + iwd = (NavWinData *) info_win->user_data; hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); - style = gtk_widget_get_style (info_win->shell); - - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (navwindow_zoomout), (gpointer) info_win->user_data); + GTK_SIGNAL_FUNC (navwindow_zoomout), + (gpointer) info_win->user_data); gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (info_win->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); vbox1 = gtk_vbox_new (FALSE, 0); @@ -1130,21 +1115,12 @@ nav_create_button_area (InfoDialog *info_win) gtk_box_pack_start (GTK_BOX (vbox1), hscale1, TRUE, TRUE, 0); gtk_scale_set_draw_value (GTK_SCALE (hscale1), FALSE); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (navwindow_zoomin), (gpointer) info_win->user_data); + GTK_SIGNAL_FUNC (navwindow_zoomin), + (gpointer) info_win->user_data); gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (info_win->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); return vbox1; diff --git a/app/gimpui.h b/app/gimpui.h index baac331d9f..caf4801f41 100644 --- a/app/gimpui.h +++ b/app/gimpui.h @@ -26,6 +26,7 @@ #include "gimphelp.h" #include "libgimp/gimpdialog.h" +#include "libgimp/gimppixmap.h" #include "libgimp/gimpquerybox.h" #include "libgimp/gimpwidgets.h" diff --git a/app/gradient.c b/app/gradient.c index bb6e819288..eea51f11a0 100644 --- a/app/gradient.c +++ b/app/gradient.c @@ -759,21 +759,17 @@ gradient_get_color_at (gradient_t *gradient, void gradient_editor_create (void) { - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *gvbox; - GtkWidget *button; - GtkWidget *frame; - GtkWidget *scrolled_win; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *gvbox; + GtkWidget *button; + GtkWidget *frame; + GtkWidget *scrolled_win; GdkColormap *colormap; - GtkWidget *pixmapwid; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkStyle *style; - gchar *titles[2]; - gint column_width; - gint select_pos; - gint i; + gchar *titles[2]; + gint column_width; + gint select_pos; + gint i; /* If the editor already exists, just show it */ if (g_editor) @@ -934,42 +930,21 @@ gradient_editor_create (void) /* + and - buttons */ gtk_widget_realize (g_editor->shell); - style = gtk_widget_get_style (g_editor->shell); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (ed_zoom_in_callback), (gpointer) g_editor); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (g_editor->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (ed_zoom_out_callback), (gpointer) g_editor); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (g_editor->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); /* Scrollbar */ @@ -1278,6 +1253,7 @@ ed_create_button (gchar *label, GtkWidget *button; button = gtk_button_new_with_label (label); + gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0); gtk_widget_show (button); if (signal_func != NULL) diff --git a/app/gradient_editor.c b/app/gradient_editor.c index bb6e819288..eea51f11a0 100644 --- a/app/gradient_editor.c +++ b/app/gradient_editor.c @@ -759,21 +759,17 @@ gradient_get_color_at (gradient_t *gradient, void gradient_editor_create (void) { - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *gvbox; - GtkWidget *button; - GtkWidget *frame; - GtkWidget *scrolled_win; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *gvbox; + GtkWidget *button; + GtkWidget *frame; + GtkWidget *scrolled_win; GdkColormap *colormap; - GtkWidget *pixmapwid; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkStyle *style; - gchar *titles[2]; - gint column_width; - gint select_pos; - gint i; + gchar *titles[2]; + gint column_width; + gint select_pos; + gint i; /* If the editor already exists, just show it */ if (g_editor) @@ -934,42 +930,21 @@ gradient_editor_create (void) /* + and - buttons */ gtk_widget_realize (g_editor->shell); - style = gtk_widget_get_style (g_editor->shell); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (ed_zoom_in_callback), (gpointer) g_editor); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (g_editor->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (ed_zoom_out_callback), (gpointer) g_editor); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (g_editor->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); /* Scrollbar */ @@ -1278,6 +1253,7 @@ ed_create_button (gchar *label, GtkWidget *button; button = gtk_button_new_with_label (label); + gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0); gtk_widget_show (button); if (signal_func != NULL) diff --git a/app/gui/gradient-editor.c b/app/gui/gradient-editor.c index bb6e819288..eea51f11a0 100644 --- a/app/gui/gradient-editor.c +++ b/app/gui/gradient-editor.c @@ -759,21 +759,17 @@ gradient_get_color_at (gradient_t *gradient, void gradient_editor_create (void) { - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *gvbox; - GtkWidget *button; - GtkWidget *frame; - GtkWidget *scrolled_win; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *gvbox; + GtkWidget *button; + GtkWidget *frame; + GtkWidget *scrolled_win; GdkColormap *colormap; - GtkWidget *pixmapwid; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkStyle *style; - gchar *titles[2]; - gint column_width; - gint select_pos; - gint i; + gchar *titles[2]; + gint column_width; + gint select_pos; + gint i; /* If the editor already exists, just show it */ if (g_editor) @@ -934,42 +930,21 @@ gradient_editor_create (void) /* + and - buttons */ gtk_widget_realize (g_editor->shell); - style = gtk_widget_get_style (g_editor->shell); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (ed_zoom_in_callback), (gpointer) g_editor); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (g_editor->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (ed_zoom_out_callback), (gpointer) g_editor); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (g_editor->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); /* Scrollbar */ @@ -1278,6 +1253,7 @@ ed_create_button (gchar *label, GtkWidget *button; button = gtk_button_new_with_label (label); + gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0); gtk_widget_show (button); if (signal_func != NULL) diff --git a/app/gui/palette-editor.c b/app/gui/palette-editor.c index 1832687e03..887a83e1d8 100644 --- a/app/gui/palette-editor.c +++ b/app/gui/palette-editor.c @@ -2056,10 +2056,6 @@ palette_dialog_new (gint vert) GtkWidget *alignment; GtkWidget *frame; GtkWidget *button; - GtkWidget *pixmapwid; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkStyle *style; gchar *titles[3]; palette = g_new (PaletteDialog, 1); @@ -2190,36 +2186,18 @@ palette_dialog_new (gint vert) palette); /* + and - buttons */ - if (! GTK_WIDGET_REALIZED (palette->shell)) - gtk_widget_realize (palette->shell); - style = gtk_widget_get_style (palette->shell); - - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0); - pixmap = gdk_pixmap_create_from_xpm_d (palette->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gtk_container_add (GTK_CONTAINER (button), pixmapwid); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (palette_dialog_zoomin_callback), (gpointer) palette); - gtk_widget_show (pixmapwid); gtk_widget_show (button); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0); - pixmap = gdk_pixmap_create_from_xpm_d (palette->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gtk_container_add (GTK_CONTAINER (button), pixmapwid); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (palette_dialog_zoomout_callback), (gpointer) palette); - gtk_widget_show (pixmapwid); gtk_widget_show (button); /* clist preview of palettes */ @@ -2318,6 +2296,8 @@ palette_dialog_new (gint vert) gtk_widget_show (button); } + gtk_widget_realize (palette->shell); + palette->gc = gdk_gc_new (palette->shell->window); /* fill the clist */ diff --git a/app/nav_window.c b/app/nav_window.c index 43e4d6e751..36df2f6619 100644 --- a/app/nav_window.c +++ b/app/nav_window.c @@ -1066,41 +1066,26 @@ zoom_adj_changed (GtkAdjustment *adj, static GtkWidget * nav_create_button_area (InfoDialog *info_win) { - GtkWidget *hbox1; - GtkWidget *vbox1; - GtkWidget *button; - GtkWidget *hscale1; - GtkWidget *label1; - GtkObject *adjustment; - GdkPixmap *pixmap; - GtkWidget *pixmapwid; - GdkBitmap *mask; - GtkStyle *style; + GtkWidget *hbox1; + GtkWidget *vbox1; + GtkWidget *button; + GtkWidget *hscale1; + GtkWidget *label1; + GtkObject *adjustment; NavWinData *iwd; - gchar scale_str[MAX_SCALE_BUF]; + gchar scale_str[MAX_SCALE_BUF]; - iwd = (NavWinData *)info_win->user_data; + iwd = (NavWinData *) info_win->user_data; hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); - style = gtk_widget_get_style (info_win->shell); - - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (navwindow_zoomout), (gpointer) info_win->user_data); + GTK_SIGNAL_FUNC (navwindow_zoomout), + (gpointer) info_win->user_data); gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (info_win->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); vbox1 = gtk_vbox_new (FALSE, 0); @@ -1130,21 +1115,12 @@ nav_create_button_area (InfoDialog *info_win) gtk_box_pack_start (GTK_BOX (vbox1), hscale1, TRUE, TRUE, 0); gtk_scale_set_draw_value (GTK_SCALE (hscale1), FALSE); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (navwindow_zoomin), (gpointer) info_win->user_data); + GTK_SIGNAL_FUNC (navwindow_zoomin), + (gpointer) info_win->user_data); gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (info_win->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); return vbox1; diff --git a/app/palette.c b/app/palette.c index 1832687e03..887a83e1d8 100644 --- a/app/palette.c +++ b/app/palette.c @@ -2056,10 +2056,6 @@ palette_dialog_new (gint vert) GtkWidget *alignment; GtkWidget *frame; GtkWidget *button; - GtkWidget *pixmapwid; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkStyle *style; gchar *titles[3]; palette = g_new (PaletteDialog, 1); @@ -2190,36 +2186,18 @@ palette_dialog_new (gint vert) palette); /* + and - buttons */ - if (! GTK_WIDGET_REALIZED (palette->shell)) - gtk_widget_realize (palette->shell); - style = gtk_widget_get_style (palette->shell); - - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0); - pixmap = gdk_pixmap_create_from_xpm_d (palette->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gtk_container_add (GTK_CONTAINER (button), pixmapwid); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (palette_dialog_zoomin_callback), (gpointer) palette); - gtk_widget_show (pixmapwid); gtk_widget_show (button); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0); - pixmap = gdk_pixmap_create_from_xpm_d (palette->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gtk_container_add (GTK_CONTAINER (button), pixmapwid); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (palette_dialog_zoomout_callback), (gpointer) palette); - gtk_widget_show (pixmapwid); gtk_widget_show (button); /* clist preview of palettes */ @@ -2318,6 +2296,8 @@ palette_dialog_new (gint vert) gtk_widget_show (button); } + gtk_widget_realize (palette->shell); + palette->gc = gdk_gc_new (palette->shell->window); /* fill the clist */ diff --git a/app/widgets/gimpgradienteditor.c b/app/widgets/gimpgradienteditor.c index bb6e819288..eea51f11a0 100644 --- a/app/widgets/gimpgradienteditor.c +++ b/app/widgets/gimpgradienteditor.c @@ -759,21 +759,17 @@ gradient_get_color_at (gradient_t *gradient, void gradient_editor_create (void) { - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *gvbox; - GtkWidget *button; - GtkWidget *frame; - GtkWidget *scrolled_win; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *gvbox; + GtkWidget *button; + GtkWidget *frame; + GtkWidget *scrolled_win; GdkColormap *colormap; - GtkWidget *pixmapwid; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkStyle *style; - gchar *titles[2]; - gint column_width; - gint select_pos; - gint i; + gchar *titles[2]; + gint column_width; + gint select_pos; + gint i; /* If the editor already exists, just show it */ if (g_editor) @@ -934,42 +930,21 @@ gradient_editor_create (void) /* + and - buttons */ gtk_widget_realize (g_editor->shell); - style = gtk_widget_get_style (g_editor->shell); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (ed_zoom_in_callback), (gpointer) g_editor); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (g_editor->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (ed_zoom_out_callback), (gpointer) g_editor); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - pixmap = gdk_pixmap_create_from_xpm_d (g_editor->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - gtk_container_add (GTK_CONTAINER (button), pixmapwid); - gtk_widget_show (pixmapwid); gtk_widget_show (button); /* Scrollbar */ @@ -1278,6 +1253,7 @@ ed_create_button (gchar *label, GtkWidget *button; button = gtk_button_new_with_label (label); + gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0); gtk_widget_show (button); if (signal_func != NULL) diff --git a/app/widgets/gimppaletteeditor.c b/app/widgets/gimppaletteeditor.c index 1832687e03..887a83e1d8 100644 --- a/app/widgets/gimppaletteeditor.c +++ b/app/widgets/gimppaletteeditor.c @@ -2056,10 +2056,6 @@ palette_dialog_new (gint vert) GtkWidget *alignment; GtkWidget *frame; GtkWidget *button; - GtkWidget *pixmapwid; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkStyle *style; gchar *titles[3]; palette = g_new (PaletteDialog, 1); @@ -2190,36 +2186,18 @@ palette_dialog_new (gint vert) palette); /* + and - buttons */ - if (! GTK_WIDGET_REALIZED (palette->shell)) - gtk_widget_realize (palette->shell); - style = gtk_widget_get_style (palette->shell); - - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0); - pixmap = gdk_pixmap_create_from_xpm_d (palette->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gtk_container_add (GTK_CONTAINER (button), pixmapwid); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (palette_dialog_zoomin_callback), (gpointer) palette); - gtk_widget_show (pixmapwid); gtk_widget_show (button); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0); - pixmap = gdk_pixmap_create_from_xpm_d (palette->shell->window, &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmapwid = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gtk_container_add (GTK_CONTAINER (button), pixmapwid); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (palette_dialog_zoomout_callback), (gpointer) palette); - gtk_widget_show (pixmapwid); gtk_widget_show (button); /* clist preview of palettes */ @@ -2318,6 +2296,8 @@ palette_dialog_new (gint vert) gtk_widget_show (button); } + gtk_widget_realize (palette->shell); + palette->gc = gdk_gc_new (palette->shell->window); /* fill the clist */ diff --git a/app/widgets/gimpwidgets-utils.h b/app/widgets/gimpwidgets-utils.h index baac331d9f..caf4801f41 100644 --- a/app/widgets/gimpwidgets-utils.h +++ b/app/widgets/gimpwidgets-utils.h @@ -26,6 +26,7 @@ #include "gimphelp.h" #include "libgimp/gimpdialog.h" +#include "libgimp/gimppixmap.h" #include "libgimp/gimpquerybox.h" #include "libgimp/gimpwidgets.h" diff --git a/libgimp/Makefile.am b/libgimp/Makefile.am index 4cf3ef2fe3..63ccd55bdd 100644 --- a/libgimp/Makefile.am +++ b/libgimp/Makefile.am @@ -41,6 +41,8 @@ libgimpi_a_SOURCES = \ gimpmatrix.h \ gimppatheditor.c \ gimppatheditor.h \ + gimppixmap.c \ + gimppixmap.h \ gimpprotocol.c \ gimpprotocol.h \ gimpquerybox.c \ @@ -124,6 +126,7 @@ libgimpui_la_SOURCES = \ gimpfileselection.c \ gimphelpui.c \ gimppatheditor.c \ + gimppixmap.c \ gimpquerybox.c \ gimpsizeentry.c \ gimpunitmenu.c \ @@ -150,6 +153,7 @@ gimpinclude_HEADERS = \ gimpmenu.h \ gimpmodule.h \ gimppatheditor.h \ + gimppixmap.h \ gimpquerybox.h \ gimpsizeentry.h \ gimpui.h \ diff --git a/libgimp/gimpcolorbutton.c b/libgimp/gimpcolorbutton.c index 71585b6131..39ba3e8705 100644 --- a/libgimp/gimpcolorbutton.c +++ b/libgimp/gimpcolorbutton.c @@ -221,22 +221,6 @@ gimp_color_button_get_type (void) return gcb_type; } -/** - * gimp_color_button_new: - * @title: String that wil be used as title for the color_selector. - * @width: Width of the colorpreview in pixels. - * @height: Height of the colorpreview in pixels. - * @color: An array of guchar holding the color (RGB or RGBA) - * @bpp: May be 3 for RGB or 4 for RGBA. - * - * Creates a new GimpColorbutton widget. This returns a button with - * a preview showing the color. When the button is clicked a - * GtkColorSelectionDialog is opened. If the user changes the color - * the new color is written into the array that was used to pass - * the initial color and the "color_changed" signal is emitted. - * - * Returns: Pointer to the new GimpColorButton widget. - */ static GtkWidget * _gimp_color_button_new (gboolean double_color, gchar *title, @@ -511,7 +495,8 @@ gimp_color_button_paint (GimpColorButton *gcb) *p0++ = gcb->dcolor[i] * 255.999; } for (y = 0; y < gcb->height; y++) - gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->even, 0, y, gcb->width); + gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->even, + 0, y, gcb->width); } else /* gcb->bpp == 4 */ { @@ -536,9 +521,11 @@ gimp_color_button_paint (GimpColorButton *gcb) for (y = 0; y < gcb->height; y++) { if ((y / GIMP_CHECK_SIZE_SM) & 1) - gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->odd, 0, y, gcb->width); + gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->odd, + 0, y, gcb->width); else - gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->even, 0, y, gcb->width); + gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->even, + 0, y, gcb->width); } } diff --git a/libgimp/gimpfileselection.c b/libgimp/gimpfileselection.c index 53f0ad3a89..8eb0eea18b 100644 --- a/libgimp/gimpfileselection.c +++ b/libgimp/gimpfileselection.c @@ -47,14 +47,16 @@ #endif /* callbacks */ -static void gimp_file_selection_realize (GtkWidget *); -static void gimp_file_selection_entry_callback (GtkWidget *, gpointer); -static int gimp_file_selection_entry_focus_out_callback (GtkWidget *, - GdkEvent *, gpointer); -static void gimp_file_selection_browse_callback (GtkWidget *, gpointer); +static void gimp_file_selection_entry_callback (GtkWidget *widget, + gpointer data); +static gint gimp_file_selection_entry_focus_out_callback (GtkWidget *widget, + GdkEvent *event, + gpointer data); +static void gimp_file_selection_browse_callback (GtkWidget *widget, + gpointer data); /* private functions */ -static void gimp_file_selection_check_filename (GimpFileSelection *gfs); +static void gimp_file_selection_check_filename (GimpFileSelection *gfs); enum { @@ -82,16 +84,6 @@ gimp_file_selection_destroy (GtkObject *object) if (gfs->title) g_free (gfs->title); - if (gfs->yes_pixmap) - gdk_pixmap_unref (gfs->yes_pixmap); - if (gfs->yes_mask) - gdk_bitmap_unref (gfs->yes_mask); - - if (gfs->no_pixmap) - gdk_pixmap_unref (gfs->no_pixmap); - if (gfs->no_mask) - gdk_bitmap_unref (gfs->no_mask); - if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -100,10 +92,8 @@ static void gimp_file_selection_class_init (GimpFileSelectionClass *class) { GtkObjectClass *object_class; - GtkWidgetClass *widget_class; object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; parent_class = gtk_type_class (gtk_hbox_get_type ()); @@ -121,17 +111,17 @@ gimp_file_selection_class_init (GimpFileSelectionClass *class) class->filename_changed = NULL; object_class->destroy = gimp_file_selection_destroy; - - widget_class->realize = gimp_file_selection_realize; } static void gimp_file_selection_init (GimpFileSelection *gfs) { - gfs->title = NULL; + gfs->title = NULL; gfs->file_selection = NULL; - gfs->file_exists = FALSE; - gfs->check_valid = FALSE; + gfs->check_valid = FALSE; + + gfs->yes_pixmap = NULL; + gfs->no_pixmap = NULL; gtk_box_set_spacing (GTK_BOX (gfs), 2); gtk_box_set_homogeneous (GTK_BOX (gfs), FALSE); @@ -202,45 +192,26 @@ gimp_file_selection_new (gchar *title, gfs = gtk_type_new (gimp_file_selection_get_type ()); - gfs->title = g_strdup (title); - gfs->dir_only = dir_only; + gfs->title = g_strdup (title); + gfs->dir_only = dir_only; gfs->check_valid = check_valid; + + if (check_valid) + { + gfs->yes_pixmap = gimp_pixmap_new (yes_xpm); + gtk_box_pack_start (GTK_BOX (gfs), gfs->yes_pixmap, FALSE, FALSE, 0); + /* don't show */ + + gfs->no_pixmap = gimp_pixmap_new (no_xpm); + gtk_box_pack_start (GTK_BOX (gfs), gfs->no_pixmap, FALSE, FALSE, 0); + gtk_widget_show (gfs->no_pixmap); + } + gimp_file_selection_set_filename (gfs, filename); return GTK_WIDGET (gfs); } -static void -gimp_file_selection_realize (GtkWidget *widget) -{ - GimpFileSelection *gfs; - GtkStyle *style; - - gfs = GIMP_FILE_SELECTION (widget); - if (! gfs->check_valid) - return; - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - style = gtk_widget_get_style (widget); - - gfs->yes_pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &gfs->yes_mask, - &style->bg[GTK_STATE_NORMAL], - yes_xpm); - gfs->no_pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &gfs->no_mask, - &style->bg[GTK_STATE_NORMAL], - no_xpm); - - gfs->file_exists = gtk_pixmap_new (gfs->no_pixmap, gfs->no_mask); - gtk_box_pack_start (GTK_BOX (gfs), gfs->file_exists, FALSE, FALSE, 0); - - gimp_file_selection_check_filename (gfs); - gtk_widget_show (gfs->file_exists); -} - /** * gimp_file_selection_get_filename: * @gfs: The file selection you want to know the filename from. @@ -377,8 +348,10 @@ gimp_file_selection_browse_callback (GtkWidget *widget, gfs->file_selection = gtk_file_selection_new (_("Select File")); } - gtk_window_set_position (GTK_WINDOW (gfs->file_selection), GTK_WIN_POS_MOUSE); - gtk_window_set_wmclass (GTK_WINDOW (gfs->file_selection), "file_select", "Gimp"); + gtk_window_set_position (GTK_WINDOW (gfs->file_selection), + GTK_WIN_POS_MOUSE); + gtk_window_set_wmclass (GTK_WINDOW (gfs->file_selection), + "file_select", "Gimp"); /* slightly compress the dialog */ gtk_container_set_border_width (GTK_CONTAINER (gfs->file_selection), 2); @@ -428,20 +401,24 @@ gimp_file_selection_check_filename (GimpFileSelection *gfs) if (! gfs->check_valid) return; - if (gfs->file_exists == NULL) + if (gfs->yes_pixmap == NULL || gfs->no_pixmap == NULL) return; filename = gtk_editable_get_chars (GTK_EDITABLE (gfs->entry), 0, -1); if ((stat (filename, &statbuf) == 0) && - (gfs->dir_only ? S_ISDIR(statbuf.st_mode) : S_ISREG(statbuf.st_mode))) + (gfs->dir_only ? S_ISDIR (statbuf.st_mode) : S_ISREG (statbuf.st_mode))) { - gtk_pixmap_set (GTK_PIXMAP (gfs->file_exists), - gfs->yes_pixmap, gfs->yes_mask); + if (GTK_WIDGET_VISIBLE (gfs->no_pixmap)) + { + gtk_widget_hide (gfs->no_pixmap); + gtk_widget_show (gfs->yes_pixmap); + } } - else + else if (GTK_WIDGET_VISIBLE (gfs->yes_pixmap)) { - gtk_pixmap_set (GTK_PIXMAP (gfs->file_exists), - gfs->no_pixmap, gfs->no_mask); + gtk_widget_hide (gfs->yes_pixmap); + gtk_widget_show (gfs->no_pixmap); } + g_free (filename); } diff --git a/libgimp/gimpfileselection.h b/libgimp/gimpfileselection.h index 3f27fc0637..a73c6e53a6 100644 --- a/libgimp/gimpfileselection.h +++ b/libgimp/gimpfileselection.h @@ -25,6 +25,8 @@ #include +#include "gimppixmap.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -40,22 +42,18 @@ typedef struct _GimpFileSelectionClass GimpFileSelectionClass; struct _GimpFileSelection { - GtkHBox hbox; + GtkHBox hbox; - GtkWidget *file_exists; - GtkWidget *entry; - GtkWidget *browse_button; + GtkWidget *yes_pixmap; + GtkWidget *no_pixmap; + GtkWidget *entry; + GtkWidget *browse_button; - GtkWidget *file_selection; + GtkWidget *file_selection; - GdkPixmap *yes_pixmap; - GdkBitmap *yes_mask; - GdkPixmap *no_pixmap; - GdkBitmap *no_mask; - - gchar *title; - gboolean dir_only; - gboolean check_valid; + gchar *title; + gboolean dir_only; + gboolean check_valid; }; struct _GimpFileSelectionClass diff --git a/libgimp/gimppatheditor.c b/libgimp/gimppatheditor.c index 54548518a0..59e98a47d3 100644 --- a/libgimp/gimppatheditor.c +++ b/libgimp/gimppatheditor.c @@ -32,14 +32,18 @@ #include "pixmaps/lower.xpm" /* forward declaration */ -static void gimp_path_editor_realize (GtkWidget *widget); -static void gimp_path_editor_select_callback (GtkWidget *widget, gpointer data); +static void gimp_path_editor_select_callback (GtkWidget *widget, + gpointer data); static void gimp_path_editor_deselect_callback (GtkWidget *widget, - gpointer data); -static void gimp_path_editor_new_callback (GtkWidget *widget, gpointer data); -static void gimp_path_editor_move_callback (GtkWidget *widget, gpointer data); -static void gimp_path_editor_filesel_callback (GtkWidget *widget, gpointer data); -static void gimp_path_editor_delete_callback (GtkWidget *widget, gpointer data); + gpointer data); +static void gimp_path_editor_new_callback (GtkWidget *widget, + gpointer data); +static void gimp_path_editor_move_callback (GtkWidget *widget, + gpointer data); +static void gimp_path_editor_filesel_callback (GtkWidget *widget, + gpointer data); +static void gimp_path_editor_delete_callback (GtkWidget *widget, + gpointer data); enum { @@ -55,10 +59,8 @@ static void gimp_path_editor_class_init (GimpPathEditorClass *class) { GtkObjectClass *object_class; - GtkWidgetClass *widget_class; object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; parent_class = gtk_type_class (gtk_vbox_get_type ()); @@ -74,14 +76,13 @@ gimp_path_editor_class_init (GimpPathEditorClass *class) LAST_SIGNAL); class->path_changed = NULL; - - widget_class->realize = gimp_path_editor_realize; } static void gimp_path_editor_init (GimpPathEditor *gpe) { GtkWidget *button_box; + GtkWidget *button; GtkWidget *scrolled_window; gpe->file_selection = NULL; @@ -96,32 +97,36 @@ gimp_path_editor_init (GimpPathEditor *gpe) gtk_box_pack_start (GTK_BOX (gpe->upper_hbox), button_box, FALSE, TRUE, 0); gtk_widget_show (button_box); - gpe->new_button = gtk_button_new (); - gtk_box_pack_start (GTK_BOX (button_box), gpe->new_button, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (gpe->new_button), "clicked", + gpe->new_button = button = gimp_pixmap_button_new (new_xpm); + gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gimp_path_editor_new_callback), gpe); + gtk_widget_show (button); - gpe->up_button = gtk_button_new (); - gtk_widget_set_sensitive (gpe->up_button, FALSE); - gtk_box_pack_start (GTK_BOX (button_box), gpe->up_button, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (gpe->up_button), "clicked", + gpe->up_button = button = gimp_pixmap_button_new (raise_xpm); + gtk_widget_set_sensitive (button, FALSE); + gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gimp_path_editor_move_callback), gpe); + gtk_widget_show (button); - gpe->down_button = gtk_button_new (); - gtk_widget_set_sensitive (gpe->down_button, FALSE); - gtk_box_pack_start (GTK_BOX (button_box), gpe->down_button, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (gpe->down_button), "clicked", + gpe->down_button = button = gimp_pixmap_button_new (lower_xpm); + gtk_widget_set_sensitive (button, FALSE); + gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gimp_path_editor_move_callback), gpe); + gtk_widget_show (button); - gpe->delete_button = gtk_button_new (); - gtk_widget_set_sensitive (gpe->delete_button, FALSE); - gtk_box_pack_start (GTK_BOX (button_box), gpe->delete_button, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (gpe->delete_button), "clicked", + gpe->delete_button = button = gimp_pixmap_button_new (delete_xpm); + gtk_widget_set_sensitive (button, FALSE); + gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gimp_path_editor_delete_callback), gpe); + gtk_widget_show (button); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), @@ -242,71 +247,6 @@ gimp_path_editor_new (gchar *filesel_title, return GTK_WIDGET (gpe); } -static void -gimp_path_editor_realize (GtkWidget *widget) -{ - GimpPathEditor *gpe; - GtkStyle *style; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkWidget *gtk_pixmap; - - gpe = GIMP_PATH_EDITOR (widget); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - style = gtk_widget_get_style (widget); - - pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - new_xpm); - gtk_pixmap = gtk_pixmap_new (pixmap, mask); - gtk_container_add (GTK_CONTAINER (gpe->new_button), gtk_pixmap); - gtk_widget_show (gtk_pixmap); - gtk_widget_show (gpe->new_button); - - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - raise_xpm); - gtk_pixmap = gtk_pixmap_new (pixmap, mask); - gtk_container_add (GTK_CONTAINER (gpe->up_button), gtk_pixmap); - gtk_widget_show (gtk_pixmap); - gtk_widget_show (gpe->up_button); - - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - lower_xpm); - gtk_pixmap = gtk_pixmap_new (pixmap, mask); - gtk_container_add (GTK_CONTAINER (gpe->down_button), gtk_pixmap); - gtk_widget_show (gtk_pixmap); - gtk_widget_show (gpe->down_button); - - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - delete_xpm); - gtk_pixmap = gtk_pixmap_new (pixmap, mask); - gtk_container_add (GTK_CONTAINER (gpe->delete_button), gtk_pixmap); - gtk_widget_show (gtk_pixmap); - gtk_widget_show (gpe->delete_button); - - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); -} - /** * gimp_path_editor_get_path: * @gpe: The path editor you want to get the search path from. @@ -477,8 +417,8 @@ gimp_path_editor_delete_callback (GtkWidget *widget, gimp_file_selection_set_filename (GIMP_FILE_SELECTION (gpe->file_selection), ""); gtk_signal_handler_unblock_by_data (GTK_OBJECT (gpe->file_selection), gpe); gtk_widget_set_sensitive (gpe->delete_button, FALSE); - gtk_widget_set_sensitive (GIMP_FILE_SELECTION (gpe->file_selection)->entry, FALSE); - gtk_widget_set_sensitive (GIMP_FILE_SELECTION (gpe->file_selection)->browse_button, FALSE); + gtk_widget_set_sensitive (gpe->file_selection, FALSE); + return; } diff --git a/libgimp/gimppixmap.c b/libgimp/gimppixmap.c new file mode 100644 index 0000000000..ed40a1b48f --- /dev/null +++ b/libgimp/gimppixmap.c @@ -0,0 +1,150 @@ +/* LIBGIMP - The GIMP Library + * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball + * + * gimppixmap.c + * Copyright (C) 2000 Michael Natterer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "gimppixmap.h" + +struct _GimpPixmap +{ + GtkPixmap pixmap; + + gchar **xpm_data; +}; + +static void gimp_pixmap_destroy (GtkObject *object); +static void gimp_pixmap_realize (GtkWidget *widget); + +static GtkPixmapClass *parent_class = NULL; + +static void +gimp_pixmap_destroy (GtkObject *object) +{ + GimpPixmap *pixmap; + + g_return_if_fail (pixmap = GIMP_PIXMAP (object)); + + if (GTK_OBJECT_CLASS (parent_class)->destroy) + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); +} + +static void +gimp_pixmap_class_init (GimpPixmapClass *class) +{ + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + + object_class = (GtkObjectClass*) class; + widget_class = (GtkWidgetClass *) class; + + parent_class = gtk_type_class (gtk_pixmap_get_type ()); + + object_class->destroy = gimp_pixmap_destroy; + + widget_class->realize = gimp_pixmap_realize; +} + +static void +gimp_pixmap_init (GimpPixmap *pixmap) +{ + GtkPixmap *gtk_pixmap; + + gtk_pixmap = GTK_PIXMAP (pixmap); + + gtk_pixmap->pixmap_insensitive = NULL; + gtk_pixmap->build_insensitive = TRUE; +} + +GtkType +gimp_pixmap_get_type (void) +{ + static guint pixmap_type = 0; + + if (!pixmap_type) + { + GtkTypeInfo pixmap_info = + { + "GimpPixmap", + sizeof (GimpPixmap), + sizeof (GimpPixmapClass), + (GtkClassInitFunc) gimp_pixmap_class_init, + (GtkObjectInitFunc) gimp_pixmap_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL + }; + + pixmap_type = gtk_type_unique (gtk_pixmap_get_type (), &pixmap_info); + } + + return pixmap_type; +} + +/** + * gimp_pixmap_new: + * @xpm_data: A pointer to a XPM data structure as found in XPM files. + * + * Creates a new #GimpPixmap widget. + * + * Returns: A pointer to the new #GimpPixmap widget. + * + */ +GtkWidget * +gimp_pixmap_new (gchar **xpm_data) +{ + GimpPixmap *pixmap; + + g_return_val_if_fail (xpm_data != NULL, NULL); + + if (!xpm_data) + return NULL; + + pixmap = gtk_type_new (gimp_pixmap_get_type ()); + + pixmap->xpm_data = xpm_data; + + return GTK_WIDGET (pixmap); +} + +static void +gimp_pixmap_realize (GtkWidget *widget) +{ + GimpPixmap *pixmap; + GtkStyle *style; + GdkPixmap *gdk_pixmap; + GdkBitmap *mask; + + pixmap = GIMP_PIXMAP (widget); + + if (GTK_WIDGET_CLASS (parent_class)->realize) + (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); + + style = gtk_widget_get_style (widget); + + gdk_pixmap = gdk_pixmap_create_from_xpm_d (widget->window, + &mask, + &style->bg[GTK_STATE_NORMAL], + pixmap->xpm_data); + + gtk_pixmap_set (GTK_PIXMAP (pixmap), gdk_pixmap, mask); + + gdk_pixmap_unref (gdk_pixmap); + gdk_bitmap_unref (mask); +} diff --git a/libgimp/gimppixmap.h b/libgimp/gimppixmap.h new file mode 100644 index 0000000000..9d83d38a01 --- /dev/null +++ b/libgimp/gimppixmap.h @@ -0,0 +1,52 @@ +/* LIBGIMP - The GIMP Library + * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball + * + * gimppixmap.h + * Copyright (C) 2000 Michael Natterer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifndef __GIMP_PIXMAP_H__ +#define __GIMP_PIXMAP_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define GIMP_TYPE_PIXMAP (gimp_pixmap_get_type ()) +#define GIMP_PIXMAP(obj) (GTK_CHECK_CAST ((obj), GIMP_TYPE_PIXMAP, GimpPixmap)) +#define GIMP_PIXMAP_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PIXMAP, GimpPixmapClass)) +#define GIMP_IS_PIXMAP(obj) (GTK_CHECK_TYPE ((obj), GIMP_TYPE_PIXMAP)) +#define GIMP_IS_PIXMAP_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PIXMAP)) + +typedef struct _GimpPixmap GimpPixmap; +typedef struct _GimpPixmapClass GimpPixmapClass; + +struct _GimpPixmapClass +{ + GtkPixmapClass parent_class; +}; + +GtkType gimp_pixmap_get_type (void); +GtkWidget * gimp_pixmap_new (gchar **xpm_data); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __GIMP_PIXMAP_H__ */ diff --git a/libgimp/gimpquerybox.c b/libgimp/gimpquerybox.c index 55dbd60c32..04c05f449b 100644 --- a/libgimp/gimpquerybox.c +++ b/libgimp/gimpquerybox.c @@ -23,6 +23,7 @@ #include "gimpsizeentry.h" #include "gimpwidgets.h" +#include "config.h" #include "libgimp-intl.h" #include "pixmaps/eek.xpm" @@ -402,12 +403,9 @@ gimp_query_boolean_box (gchar *title, { QueryBox *query_box; GtkWidget *hbox; - GtkWidget *pixmap_widget; + GtkWidget *pixmap; GtkWidget *label; - static GdkPixmap *eek_pixmap = NULL; - static GdkBitmap *eek_mask = NULL; - query_box = create_query_box (title, help_func, help_data, boolean_query_box_true_callback, boolean_query_box_false_callback, @@ -424,22 +422,9 @@ gimp_query_boolean_box (gchar *title, gtk_container_add (GTK_CONTAINER (GTK_DIALOG (query_box->qbox)->vbox), hbox); gtk_widget_show (hbox); - if (!eek_pixmap) - { - GtkStyle *style; - - gtk_widget_realize (query_box->qbox); - style = gtk_widget_get_style (query_box->qbox); - - eek_pixmap = gdk_pixmap_create_from_xpm_d (query_box->qbox->window, - &eek_mask, - &style->bg[GTK_STATE_NORMAL], - eek_xpm); - } - - pixmap_widget = gtk_pixmap_new (eek_pixmap, eek_mask); - gtk_box_pack_start (GTK_BOX (hbox), pixmap_widget, FALSE, FALSE, 0); - gtk_widget_show (pixmap_widget); + pixmap = gimp_pixmap_new (eek_xpm); + gtk_box_pack_start (GTK_BOX (hbox), pixmap, FALSE, FALSE, 0); + gtk_widget_show (pixmap); label = gtk_label_new (message); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); diff --git a/libgimp/gimpui.h b/libgimp/gimpui.h index 48bd8ae665..dc46bd3232 100644 --- a/libgimp/gimpui.h +++ b/libgimp/gimpui.h @@ -29,6 +29,7 @@ #include "gimphelpui.h" #include "gimpmenu.h" #include "gimppatheditor.h" +#include "gimppixmap.h" #include "gimpquerybox.h" #include "gimpsizeentry.h" #include "gimpunitmenu.h" diff --git a/libgimp/gimpwidgets.c b/libgimp/gimpwidgets.c index 3d35296d4f..30ca522c59 100644 --- a/libgimp/gimpwidgets.c +++ b/libgimp/gimpwidgets.c @@ -24,6 +24,7 @@ #include "gimpchainbutton.h" #include "gimphelpui.h" +#include "gimppixmap.h" #include "gimpunitmenu.h" #include "gimpwidgets.h" #include "gimpmath.h" @@ -801,6 +802,21 @@ gimp_coordinates_new (GimpUnit unit, return sizeentry; } +GtkWidget * +gimp_pixmap_button_new (gchar **xpm_data) +{ + GtkWidget *button; + GtkWidget *pixmap; + + button = gtk_button_new (); + + pixmap = gimp_pixmap_new (xpm_data); + gtk_container_add (GTK_CONTAINER (button), pixmap); + gtk_widget_show (pixmap); + + return button; +} + /* * Standard Callbacks */ diff --git a/libgimp/gimpwidgets.h b/libgimp/gimpwidgets.h index 181efe3b8a..d3a4190050 100644 --- a/libgimp/gimpwidgets.h +++ b/libgimp/gimpwidgets.h @@ -171,6 +171,8 @@ GtkWidget * gimp_coordinates_new (GimpUnit unit, gdouble ysize_0, /* % */ gdouble ysize_100 /* % */); +GtkWidget * gimp_pixmap_button_new (gchar **xpm_data); + /* * Standard Callbacks */ diff --git a/libgimpwidgets/gimpcolorbutton.c b/libgimpwidgets/gimpcolorbutton.c index 71585b6131..39ba3e8705 100644 --- a/libgimpwidgets/gimpcolorbutton.c +++ b/libgimpwidgets/gimpcolorbutton.c @@ -221,22 +221,6 @@ gimp_color_button_get_type (void) return gcb_type; } -/** - * gimp_color_button_new: - * @title: String that wil be used as title for the color_selector. - * @width: Width of the colorpreview in pixels. - * @height: Height of the colorpreview in pixels. - * @color: An array of guchar holding the color (RGB or RGBA) - * @bpp: May be 3 for RGB or 4 for RGBA. - * - * Creates a new GimpColorbutton widget. This returns a button with - * a preview showing the color. When the button is clicked a - * GtkColorSelectionDialog is opened. If the user changes the color - * the new color is written into the array that was used to pass - * the initial color and the "color_changed" signal is emitted. - * - * Returns: Pointer to the new GimpColorButton widget. - */ static GtkWidget * _gimp_color_button_new (gboolean double_color, gchar *title, @@ -511,7 +495,8 @@ gimp_color_button_paint (GimpColorButton *gcb) *p0++ = gcb->dcolor[i] * 255.999; } for (y = 0; y < gcb->height; y++) - gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->even, 0, y, gcb->width); + gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->even, + 0, y, gcb->width); } else /* gcb->bpp == 4 */ { @@ -536,9 +521,11 @@ gimp_color_button_paint (GimpColorButton *gcb) for (y = 0; y < gcb->height; y++) { if ((y / GIMP_CHECK_SIZE_SM) & 1) - gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->odd, 0, y, gcb->width); + gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->odd, + 0, y, gcb->width); else - gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->even, 0, y, gcb->width); + gtk_preview_draw_row (GTK_PREVIEW (gcb->preview), gcb->even, + 0, y, gcb->width); } } diff --git a/libgimpwidgets/gimpfileentry.c b/libgimpwidgets/gimpfileentry.c index 53f0ad3a89..8eb0eea18b 100644 --- a/libgimpwidgets/gimpfileentry.c +++ b/libgimpwidgets/gimpfileentry.c @@ -47,14 +47,16 @@ #endif /* callbacks */ -static void gimp_file_selection_realize (GtkWidget *); -static void gimp_file_selection_entry_callback (GtkWidget *, gpointer); -static int gimp_file_selection_entry_focus_out_callback (GtkWidget *, - GdkEvent *, gpointer); -static void gimp_file_selection_browse_callback (GtkWidget *, gpointer); +static void gimp_file_selection_entry_callback (GtkWidget *widget, + gpointer data); +static gint gimp_file_selection_entry_focus_out_callback (GtkWidget *widget, + GdkEvent *event, + gpointer data); +static void gimp_file_selection_browse_callback (GtkWidget *widget, + gpointer data); /* private functions */ -static void gimp_file_selection_check_filename (GimpFileSelection *gfs); +static void gimp_file_selection_check_filename (GimpFileSelection *gfs); enum { @@ -82,16 +84,6 @@ gimp_file_selection_destroy (GtkObject *object) if (gfs->title) g_free (gfs->title); - if (gfs->yes_pixmap) - gdk_pixmap_unref (gfs->yes_pixmap); - if (gfs->yes_mask) - gdk_bitmap_unref (gfs->yes_mask); - - if (gfs->no_pixmap) - gdk_pixmap_unref (gfs->no_pixmap); - if (gfs->no_mask) - gdk_bitmap_unref (gfs->no_mask); - if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -100,10 +92,8 @@ static void gimp_file_selection_class_init (GimpFileSelectionClass *class) { GtkObjectClass *object_class; - GtkWidgetClass *widget_class; object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; parent_class = gtk_type_class (gtk_hbox_get_type ()); @@ -121,17 +111,17 @@ gimp_file_selection_class_init (GimpFileSelectionClass *class) class->filename_changed = NULL; object_class->destroy = gimp_file_selection_destroy; - - widget_class->realize = gimp_file_selection_realize; } static void gimp_file_selection_init (GimpFileSelection *gfs) { - gfs->title = NULL; + gfs->title = NULL; gfs->file_selection = NULL; - gfs->file_exists = FALSE; - gfs->check_valid = FALSE; + gfs->check_valid = FALSE; + + gfs->yes_pixmap = NULL; + gfs->no_pixmap = NULL; gtk_box_set_spacing (GTK_BOX (gfs), 2); gtk_box_set_homogeneous (GTK_BOX (gfs), FALSE); @@ -202,45 +192,26 @@ gimp_file_selection_new (gchar *title, gfs = gtk_type_new (gimp_file_selection_get_type ()); - gfs->title = g_strdup (title); - gfs->dir_only = dir_only; + gfs->title = g_strdup (title); + gfs->dir_only = dir_only; gfs->check_valid = check_valid; + + if (check_valid) + { + gfs->yes_pixmap = gimp_pixmap_new (yes_xpm); + gtk_box_pack_start (GTK_BOX (gfs), gfs->yes_pixmap, FALSE, FALSE, 0); + /* don't show */ + + gfs->no_pixmap = gimp_pixmap_new (no_xpm); + gtk_box_pack_start (GTK_BOX (gfs), gfs->no_pixmap, FALSE, FALSE, 0); + gtk_widget_show (gfs->no_pixmap); + } + gimp_file_selection_set_filename (gfs, filename); return GTK_WIDGET (gfs); } -static void -gimp_file_selection_realize (GtkWidget *widget) -{ - GimpFileSelection *gfs; - GtkStyle *style; - - gfs = GIMP_FILE_SELECTION (widget); - if (! gfs->check_valid) - return; - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - style = gtk_widget_get_style (widget); - - gfs->yes_pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &gfs->yes_mask, - &style->bg[GTK_STATE_NORMAL], - yes_xpm); - gfs->no_pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &gfs->no_mask, - &style->bg[GTK_STATE_NORMAL], - no_xpm); - - gfs->file_exists = gtk_pixmap_new (gfs->no_pixmap, gfs->no_mask); - gtk_box_pack_start (GTK_BOX (gfs), gfs->file_exists, FALSE, FALSE, 0); - - gimp_file_selection_check_filename (gfs); - gtk_widget_show (gfs->file_exists); -} - /** * gimp_file_selection_get_filename: * @gfs: The file selection you want to know the filename from. @@ -377,8 +348,10 @@ gimp_file_selection_browse_callback (GtkWidget *widget, gfs->file_selection = gtk_file_selection_new (_("Select File")); } - gtk_window_set_position (GTK_WINDOW (gfs->file_selection), GTK_WIN_POS_MOUSE); - gtk_window_set_wmclass (GTK_WINDOW (gfs->file_selection), "file_select", "Gimp"); + gtk_window_set_position (GTK_WINDOW (gfs->file_selection), + GTK_WIN_POS_MOUSE); + gtk_window_set_wmclass (GTK_WINDOW (gfs->file_selection), + "file_select", "Gimp"); /* slightly compress the dialog */ gtk_container_set_border_width (GTK_CONTAINER (gfs->file_selection), 2); @@ -428,20 +401,24 @@ gimp_file_selection_check_filename (GimpFileSelection *gfs) if (! gfs->check_valid) return; - if (gfs->file_exists == NULL) + if (gfs->yes_pixmap == NULL || gfs->no_pixmap == NULL) return; filename = gtk_editable_get_chars (GTK_EDITABLE (gfs->entry), 0, -1); if ((stat (filename, &statbuf) == 0) && - (gfs->dir_only ? S_ISDIR(statbuf.st_mode) : S_ISREG(statbuf.st_mode))) + (gfs->dir_only ? S_ISDIR (statbuf.st_mode) : S_ISREG (statbuf.st_mode))) { - gtk_pixmap_set (GTK_PIXMAP (gfs->file_exists), - gfs->yes_pixmap, gfs->yes_mask); + if (GTK_WIDGET_VISIBLE (gfs->no_pixmap)) + { + gtk_widget_hide (gfs->no_pixmap); + gtk_widget_show (gfs->yes_pixmap); + } } - else + else if (GTK_WIDGET_VISIBLE (gfs->yes_pixmap)) { - gtk_pixmap_set (GTK_PIXMAP (gfs->file_exists), - gfs->no_pixmap, gfs->no_mask); + gtk_widget_hide (gfs->yes_pixmap); + gtk_widget_show (gfs->no_pixmap); } + g_free (filename); } diff --git a/libgimpwidgets/gimpfileentry.h b/libgimpwidgets/gimpfileentry.h index 3f27fc0637..a73c6e53a6 100644 --- a/libgimpwidgets/gimpfileentry.h +++ b/libgimpwidgets/gimpfileentry.h @@ -25,6 +25,8 @@ #include +#include "gimppixmap.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -40,22 +42,18 @@ typedef struct _GimpFileSelectionClass GimpFileSelectionClass; struct _GimpFileSelection { - GtkHBox hbox; + GtkHBox hbox; - GtkWidget *file_exists; - GtkWidget *entry; - GtkWidget *browse_button; + GtkWidget *yes_pixmap; + GtkWidget *no_pixmap; + GtkWidget *entry; + GtkWidget *browse_button; - GtkWidget *file_selection; + GtkWidget *file_selection; - GdkPixmap *yes_pixmap; - GdkBitmap *yes_mask; - GdkPixmap *no_pixmap; - GdkBitmap *no_mask; - - gchar *title; - gboolean dir_only; - gboolean check_valid; + gchar *title; + gboolean dir_only; + gboolean check_valid; }; struct _GimpFileSelectionClass diff --git a/libgimpwidgets/gimpfileselection.c b/libgimpwidgets/gimpfileselection.c index 53f0ad3a89..8eb0eea18b 100644 --- a/libgimpwidgets/gimpfileselection.c +++ b/libgimpwidgets/gimpfileselection.c @@ -47,14 +47,16 @@ #endif /* callbacks */ -static void gimp_file_selection_realize (GtkWidget *); -static void gimp_file_selection_entry_callback (GtkWidget *, gpointer); -static int gimp_file_selection_entry_focus_out_callback (GtkWidget *, - GdkEvent *, gpointer); -static void gimp_file_selection_browse_callback (GtkWidget *, gpointer); +static void gimp_file_selection_entry_callback (GtkWidget *widget, + gpointer data); +static gint gimp_file_selection_entry_focus_out_callback (GtkWidget *widget, + GdkEvent *event, + gpointer data); +static void gimp_file_selection_browse_callback (GtkWidget *widget, + gpointer data); /* private functions */ -static void gimp_file_selection_check_filename (GimpFileSelection *gfs); +static void gimp_file_selection_check_filename (GimpFileSelection *gfs); enum { @@ -82,16 +84,6 @@ gimp_file_selection_destroy (GtkObject *object) if (gfs->title) g_free (gfs->title); - if (gfs->yes_pixmap) - gdk_pixmap_unref (gfs->yes_pixmap); - if (gfs->yes_mask) - gdk_bitmap_unref (gfs->yes_mask); - - if (gfs->no_pixmap) - gdk_pixmap_unref (gfs->no_pixmap); - if (gfs->no_mask) - gdk_bitmap_unref (gfs->no_mask); - if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -100,10 +92,8 @@ static void gimp_file_selection_class_init (GimpFileSelectionClass *class) { GtkObjectClass *object_class; - GtkWidgetClass *widget_class; object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; parent_class = gtk_type_class (gtk_hbox_get_type ()); @@ -121,17 +111,17 @@ gimp_file_selection_class_init (GimpFileSelectionClass *class) class->filename_changed = NULL; object_class->destroy = gimp_file_selection_destroy; - - widget_class->realize = gimp_file_selection_realize; } static void gimp_file_selection_init (GimpFileSelection *gfs) { - gfs->title = NULL; + gfs->title = NULL; gfs->file_selection = NULL; - gfs->file_exists = FALSE; - gfs->check_valid = FALSE; + gfs->check_valid = FALSE; + + gfs->yes_pixmap = NULL; + gfs->no_pixmap = NULL; gtk_box_set_spacing (GTK_BOX (gfs), 2); gtk_box_set_homogeneous (GTK_BOX (gfs), FALSE); @@ -202,45 +192,26 @@ gimp_file_selection_new (gchar *title, gfs = gtk_type_new (gimp_file_selection_get_type ()); - gfs->title = g_strdup (title); - gfs->dir_only = dir_only; + gfs->title = g_strdup (title); + gfs->dir_only = dir_only; gfs->check_valid = check_valid; + + if (check_valid) + { + gfs->yes_pixmap = gimp_pixmap_new (yes_xpm); + gtk_box_pack_start (GTK_BOX (gfs), gfs->yes_pixmap, FALSE, FALSE, 0); + /* don't show */ + + gfs->no_pixmap = gimp_pixmap_new (no_xpm); + gtk_box_pack_start (GTK_BOX (gfs), gfs->no_pixmap, FALSE, FALSE, 0); + gtk_widget_show (gfs->no_pixmap); + } + gimp_file_selection_set_filename (gfs, filename); return GTK_WIDGET (gfs); } -static void -gimp_file_selection_realize (GtkWidget *widget) -{ - GimpFileSelection *gfs; - GtkStyle *style; - - gfs = GIMP_FILE_SELECTION (widget); - if (! gfs->check_valid) - return; - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - style = gtk_widget_get_style (widget); - - gfs->yes_pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &gfs->yes_mask, - &style->bg[GTK_STATE_NORMAL], - yes_xpm); - gfs->no_pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &gfs->no_mask, - &style->bg[GTK_STATE_NORMAL], - no_xpm); - - gfs->file_exists = gtk_pixmap_new (gfs->no_pixmap, gfs->no_mask); - gtk_box_pack_start (GTK_BOX (gfs), gfs->file_exists, FALSE, FALSE, 0); - - gimp_file_selection_check_filename (gfs); - gtk_widget_show (gfs->file_exists); -} - /** * gimp_file_selection_get_filename: * @gfs: The file selection you want to know the filename from. @@ -377,8 +348,10 @@ gimp_file_selection_browse_callback (GtkWidget *widget, gfs->file_selection = gtk_file_selection_new (_("Select File")); } - gtk_window_set_position (GTK_WINDOW (gfs->file_selection), GTK_WIN_POS_MOUSE); - gtk_window_set_wmclass (GTK_WINDOW (gfs->file_selection), "file_select", "Gimp"); + gtk_window_set_position (GTK_WINDOW (gfs->file_selection), + GTK_WIN_POS_MOUSE); + gtk_window_set_wmclass (GTK_WINDOW (gfs->file_selection), + "file_select", "Gimp"); /* slightly compress the dialog */ gtk_container_set_border_width (GTK_CONTAINER (gfs->file_selection), 2); @@ -428,20 +401,24 @@ gimp_file_selection_check_filename (GimpFileSelection *gfs) if (! gfs->check_valid) return; - if (gfs->file_exists == NULL) + if (gfs->yes_pixmap == NULL || gfs->no_pixmap == NULL) return; filename = gtk_editable_get_chars (GTK_EDITABLE (gfs->entry), 0, -1); if ((stat (filename, &statbuf) == 0) && - (gfs->dir_only ? S_ISDIR(statbuf.st_mode) : S_ISREG(statbuf.st_mode))) + (gfs->dir_only ? S_ISDIR (statbuf.st_mode) : S_ISREG (statbuf.st_mode))) { - gtk_pixmap_set (GTK_PIXMAP (gfs->file_exists), - gfs->yes_pixmap, gfs->yes_mask); + if (GTK_WIDGET_VISIBLE (gfs->no_pixmap)) + { + gtk_widget_hide (gfs->no_pixmap); + gtk_widget_show (gfs->yes_pixmap); + } } - else + else if (GTK_WIDGET_VISIBLE (gfs->yes_pixmap)) { - gtk_pixmap_set (GTK_PIXMAP (gfs->file_exists), - gfs->no_pixmap, gfs->no_mask); + gtk_widget_hide (gfs->yes_pixmap); + gtk_widget_show (gfs->no_pixmap); } + g_free (filename); } diff --git a/libgimpwidgets/gimpfileselection.h b/libgimpwidgets/gimpfileselection.h index 3f27fc0637..a73c6e53a6 100644 --- a/libgimpwidgets/gimpfileselection.h +++ b/libgimpwidgets/gimpfileselection.h @@ -25,6 +25,8 @@ #include +#include "gimppixmap.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -40,22 +42,18 @@ typedef struct _GimpFileSelectionClass GimpFileSelectionClass; struct _GimpFileSelection { - GtkHBox hbox; + GtkHBox hbox; - GtkWidget *file_exists; - GtkWidget *entry; - GtkWidget *browse_button; + GtkWidget *yes_pixmap; + GtkWidget *no_pixmap; + GtkWidget *entry; + GtkWidget *browse_button; - GtkWidget *file_selection; + GtkWidget *file_selection; - GdkPixmap *yes_pixmap; - GdkBitmap *yes_mask; - GdkPixmap *no_pixmap; - GdkBitmap *no_mask; - - gchar *title; - gboolean dir_only; - gboolean check_valid; + gchar *title; + gboolean dir_only; + gboolean check_valid; }; struct _GimpFileSelectionClass diff --git a/libgimpwidgets/gimppatheditor.c b/libgimpwidgets/gimppatheditor.c index 54548518a0..59e98a47d3 100644 --- a/libgimpwidgets/gimppatheditor.c +++ b/libgimpwidgets/gimppatheditor.c @@ -32,14 +32,18 @@ #include "pixmaps/lower.xpm" /* forward declaration */ -static void gimp_path_editor_realize (GtkWidget *widget); -static void gimp_path_editor_select_callback (GtkWidget *widget, gpointer data); +static void gimp_path_editor_select_callback (GtkWidget *widget, + gpointer data); static void gimp_path_editor_deselect_callback (GtkWidget *widget, - gpointer data); -static void gimp_path_editor_new_callback (GtkWidget *widget, gpointer data); -static void gimp_path_editor_move_callback (GtkWidget *widget, gpointer data); -static void gimp_path_editor_filesel_callback (GtkWidget *widget, gpointer data); -static void gimp_path_editor_delete_callback (GtkWidget *widget, gpointer data); + gpointer data); +static void gimp_path_editor_new_callback (GtkWidget *widget, + gpointer data); +static void gimp_path_editor_move_callback (GtkWidget *widget, + gpointer data); +static void gimp_path_editor_filesel_callback (GtkWidget *widget, + gpointer data); +static void gimp_path_editor_delete_callback (GtkWidget *widget, + gpointer data); enum { @@ -55,10 +59,8 @@ static void gimp_path_editor_class_init (GimpPathEditorClass *class) { GtkObjectClass *object_class; - GtkWidgetClass *widget_class; object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; parent_class = gtk_type_class (gtk_vbox_get_type ()); @@ -74,14 +76,13 @@ gimp_path_editor_class_init (GimpPathEditorClass *class) LAST_SIGNAL); class->path_changed = NULL; - - widget_class->realize = gimp_path_editor_realize; } static void gimp_path_editor_init (GimpPathEditor *gpe) { GtkWidget *button_box; + GtkWidget *button; GtkWidget *scrolled_window; gpe->file_selection = NULL; @@ -96,32 +97,36 @@ gimp_path_editor_init (GimpPathEditor *gpe) gtk_box_pack_start (GTK_BOX (gpe->upper_hbox), button_box, FALSE, TRUE, 0); gtk_widget_show (button_box); - gpe->new_button = gtk_button_new (); - gtk_box_pack_start (GTK_BOX (button_box), gpe->new_button, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (gpe->new_button), "clicked", + gpe->new_button = button = gimp_pixmap_button_new (new_xpm); + gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gimp_path_editor_new_callback), gpe); + gtk_widget_show (button); - gpe->up_button = gtk_button_new (); - gtk_widget_set_sensitive (gpe->up_button, FALSE); - gtk_box_pack_start (GTK_BOX (button_box), gpe->up_button, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (gpe->up_button), "clicked", + gpe->up_button = button = gimp_pixmap_button_new (raise_xpm); + gtk_widget_set_sensitive (button, FALSE); + gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gimp_path_editor_move_callback), gpe); + gtk_widget_show (button); - gpe->down_button = gtk_button_new (); - gtk_widget_set_sensitive (gpe->down_button, FALSE); - gtk_box_pack_start (GTK_BOX (button_box), gpe->down_button, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (gpe->down_button), "clicked", + gpe->down_button = button = gimp_pixmap_button_new (lower_xpm); + gtk_widget_set_sensitive (button, FALSE); + gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gimp_path_editor_move_callback), gpe); + gtk_widget_show (button); - gpe->delete_button = gtk_button_new (); - gtk_widget_set_sensitive (gpe->delete_button, FALSE); - gtk_box_pack_start (GTK_BOX (button_box), gpe->delete_button, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (gpe->delete_button), "clicked", + gpe->delete_button = button = gimp_pixmap_button_new (delete_xpm); + gtk_widget_set_sensitive (button, FALSE); + gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gimp_path_editor_delete_callback), gpe); + gtk_widget_show (button); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), @@ -242,71 +247,6 @@ gimp_path_editor_new (gchar *filesel_title, return GTK_WIDGET (gpe); } -static void -gimp_path_editor_realize (GtkWidget *widget) -{ - GimpPathEditor *gpe; - GtkStyle *style; - GdkPixmap *pixmap; - GdkBitmap *mask; - GtkWidget *gtk_pixmap; - - gpe = GIMP_PATH_EDITOR (widget); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - style = gtk_widget_get_style (widget); - - pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - new_xpm); - gtk_pixmap = gtk_pixmap_new (pixmap, mask); - gtk_container_add (GTK_CONTAINER (gpe->new_button), gtk_pixmap); - gtk_widget_show (gtk_pixmap); - gtk_widget_show (gpe->new_button); - - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - raise_xpm); - gtk_pixmap = gtk_pixmap_new (pixmap, mask); - gtk_container_add (GTK_CONTAINER (gpe->up_button), gtk_pixmap); - gtk_widget_show (gtk_pixmap); - gtk_widget_show (gpe->up_button); - - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - lower_xpm); - gtk_pixmap = gtk_pixmap_new (pixmap, mask); - gtk_container_add (GTK_CONTAINER (gpe->down_button), gtk_pixmap); - gtk_widget_show (gtk_pixmap); - gtk_widget_show (gpe->down_button); - - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - - pixmap = gdk_pixmap_create_from_xpm_d (widget->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - delete_xpm); - gtk_pixmap = gtk_pixmap_new (pixmap, mask); - gtk_container_add (GTK_CONTAINER (gpe->delete_button), gtk_pixmap); - gtk_widget_show (gtk_pixmap); - gtk_widget_show (gpe->delete_button); - - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); -} - /** * gimp_path_editor_get_path: * @gpe: The path editor you want to get the search path from. @@ -477,8 +417,8 @@ gimp_path_editor_delete_callback (GtkWidget *widget, gimp_file_selection_set_filename (GIMP_FILE_SELECTION (gpe->file_selection), ""); gtk_signal_handler_unblock_by_data (GTK_OBJECT (gpe->file_selection), gpe); gtk_widget_set_sensitive (gpe->delete_button, FALSE); - gtk_widget_set_sensitive (GIMP_FILE_SELECTION (gpe->file_selection)->entry, FALSE); - gtk_widget_set_sensitive (GIMP_FILE_SELECTION (gpe->file_selection)->browse_button, FALSE); + gtk_widget_set_sensitive (gpe->file_selection, FALSE); + return; } diff --git a/libgimpwidgets/gimppixmap.c b/libgimpwidgets/gimppixmap.c new file mode 100644 index 0000000000..ed40a1b48f --- /dev/null +++ b/libgimpwidgets/gimppixmap.c @@ -0,0 +1,150 @@ +/* LIBGIMP - The GIMP Library + * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball + * + * gimppixmap.c + * Copyright (C) 2000 Michael Natterer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "gimppixmap.h" + +struct _GimpPixmap +{ + GtkPixmap pixmap; + + gchar **xpm_data; +}; + +static void gimp_pixmap_destroy (GtkObject *object); +static void gimp_pixmap_realize (GtkWidget *widget); + +static GtkPixmapClass *parent_class = NULL; + +static void +gimp_pixmap_destroy (GtkObject *object) +{ + GimpPixmap *pixmap; + + g_return_if_fail (pixmap = GIMP_PIXMAP (object)); + + if (GTK_OBJECT_CLASS (parent_class)->destroy) + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); +} + +static void +gimp_pixmap_class_init (GimpPixmapClass *class) +{ + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + + object_class = (GtkObjectClass*) class; + widget_class = (GtkWidgetClass *) class; + + parent_class = gtk_type_class (gtk_pixmap_get_type ()); + + object_class->destroy = gimp_pixmap_destroy; + + widget_class->realize = gimp_pixmap_realize; +} + +static void +gimp_pixmap_init (GimpPixmap *pixmap) +{ + GtkPixmap *gtk_pixmap; + + gtk_pixmap = GTK_PIXMAP (pixmap); + + gtk_pixmap->pixmap_insensitive = NULL; + gtk_pixmap->build_insensitive = TRUE; +} + +GtkType +gimp_pixmap_get_type (void) +{ + static guint pixmap_type = 0; + + if (!pixmap_type) + { + GtkTypeInfo pixmap_info = + { + "GimpPixmap", + sizeof (GimpPixmap), + sizeof (GimpPixmapClass), + (GtkClassInitFunc) gimp_pixmap_class_init, + (GtkObjectInitFunc) gimp_pixmap_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL + }; + + pixmap_type = gtk_type_unique (gtk_pixmap_get_type (), &pixmap_info); + } + + return pixmap_type; +} + +/** + * gimp_pixmap_new: + * @xpm_data: A pointer to a XPM data structure as found in XPM files. + * + * Creates a new #GimpPixmap widget. + * + * Returns: A pointer to the new #GimpPixmap widget. + * + */ +GtkWidget * +gimp_pixmap_new (gchar **xpm_data) +{ + GimpPixmap *pixmap; + + g_return_val_if_fail (xpm_data != NULL, NULL); + + if (!xpm_data) + return NULL; + + pixmap = gtk_type_new (gimp_pixmap_get_type ()); + + pixmap->xpm_data = xpm_data; + + return GTK_WIDGET (pixmap); +} + +static void +gimp_pixmap_realize (GtkWidget *widget) +{ + GimpPixmap *pixmap; + GtkStyle *style; + GdkPixmap *gdk_pixmap; + GdkBitmap *mask; + + pixmap = GIMP_PIXMAP (widget); + + if (GTK_WIDGET_CLASS (parent_class)->realize) + (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); + + style = gtk_widget_get_style (widget); + + gdk_pixmap = gdk_pixmap_create_from_xpm_d (widget->window, + &mask, + &style->bg[GTK_STATE_NORMAL], + pixmap->xpm_data); + + gtk_pixmap_set (GTK_PIXMAP (pixmap), gdk_pixmap, mask); + + gdk_pixmap_unref (gdk_pixmap); + gdk_bitmap_unref (mask); +} diff --git a/libgimpwidgets/gimppixmap.h b/libgimpwidgets/gimppixmap.h new file mode 100644 index 0000000000..9d83d38a01 --- /dev/null +++ b/libgimpwidgets/gimppixmap.h @@ -0,0 +1,52 @@ +/* LIBGIMP - The GIMP Library + * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball + * + * gimppixmap.h + * Copyright (C) 2000 Michael Natterer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifndef __GIMP_PIXMAP_H__ +#define __GIMP_PIXMAP_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define GIMP_TYPE_PIXMAP (gimp_pixmap_get_type ()) +#define GIMP_PIXMAP(obj) (GTK_CHECK_CAST ((obj), GIMP_TYPE_PIXMAP, GimpPixmap)) +#define GIMP_PIXMAP_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PIXMAP, GimpPixmapClass)) +#define GIMP_IS_PIXMAP(obj) (GTK_CHECK_TYPE ((obj), GIMP_TYPE_PIXMAP)) +#define GIMP_IS_PIXMAP_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PIXMAP)) + +typedef struct _GimpPixmap GimpPixmap; +typedef struct _GimpPixmapClass GimpPixmapClass; + +struct _GimpPixmapClass +{ + GtkPixmapClass parent_class; +}; + +GtkType gimp_pixmap_get_type (void); +GtkWidget * gimp_pixmap_new (gchar **xpm_data); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __GIMP_PIXMAP_H__ */ diff --git a/libgimpwidgets/gimpquerybox.c b/libgimpwidgets/gimpquerybox.c index 55dbd60c32..04c05f449b 100644 --- a/libgimpwidgets/gimpquerybox.c +++ b/libgimpwidgets/gimpquerybox.c @@ -23,6 +23,7 @@ #include "gimpsizeentry.h" #include "gimpwidgets.h" +#include "config.h" #include "libgimp-intl.h" #include "pixmaps/eek.xpm" @@ -402,12 +403,9 @@ gimp_query_boolean_box (gchar *title, { QueryBox *query_box; GtkWidget *hbox; - GtkWidget *pixmap_widget; + GtkWidget *pixmap; GtkWidget *label; - static GdkPixmap *eek_pixmap = NULL; - static GdkBitmap *eek_mask = NULL; - query_box = create_query_box (title, help_func, help_data, boolean_query_box_true_callback, boolean_query_box_false_callback, @@ -424,22 +422,9 @@ gimp_query_boolean_box (gchar *title, gtk_container_add (GTK_CONTAINER (GTK_DIALOG (query_box->qbox)->vbox), hbox); gtk_widget_show (hbox); - if (!eek_pixmap) - { - GtkStyle *style; - - gtk_widget_realize (query_box->qbox); - style = gtk_widget_get_style (query_box->qbox); - - eek_pixmap = gdk_pixmap_create_from_xpm_d (query_box->qbox->window, - &eek_mask, - &style->bg[GTK_STATE_NORMAL], - eek_xpm); - } - - pixmap_widget = gtk_pixmap_new (eek_pixmap, eek_mask); - gtk_box_pack_start (GTK_BOX (hbox), pixmap_widget, FALSE, FALSE, 0); - gtk_widget_show (pixmap_widget); + pixmap = gimp_pixmap_new (eek_xpm); + gtk_box_pack_start (GTK_BOX (hbox), pixmap, FALSE, FALSE, 0); + gtk_widget_show (pixmap); label = gtk_label_new (message); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); diff --git a/libgimpwidgets/gimpwidgets.c b/libgimpwidgets/gimpwidgets.c index 3d35296d4f..30ca522c59 100644 --- a/libgimpwidgets/gimpwidgets.c +++ b/libgimpwidgets/gimpwidgets.c @@ -24,6 +24,7 @@ #include "gimpchainbutton.h" #include "gimphelpui.h" +#include "gimppixmap.h" #include "gimpunitmenu.h" #include "gimpwidgets.h" #include "gimpmath.h" @@ -801,6 +802,21 @@ gimp_coordinates_new (GimpUnit unit, return sizeentry; } +GtkWidget * +gimp_pixmap_button_new (gchar **xpm_data) +{ + GtkWidget *button; + GtkWidget *pixmap; + + button = gtk_button_new (); + + pixmap = gimp_pixmap_new (xpm_data); + gtk_container_add (GTK_CONTAINER (button), pixmap); + gtk_widget_show (pixmap); + + return button; +} + /* * Standard Callbacks */ diff --git a/libgimpwidgets/gimpwidgets.h b/libgimpwidgets/gimpwidgets.h index 181efe3b8a..d3a4190050 100644 --- a/libgimpwidgets/gimpwidgets.h +++ b/libgimpwidgets/gimpwidgets.h @@ -171,6 +171,8 @@ GtkWidget * gimp_coordinates_new (GimpUnit unit, gdouble ysize_0, /* % */ gdouble ysize_100 /* % */); +GtkWidget * gimp_pixmap_button_new (gchar **xpm_data); + /* * Standard Callbacks */ diff --git a/plug-ins/FractalExplorer/FractalExplorer.c b/plug-ins/FractalExplorer/FractalExplorer.c index 5babc4bce3..16ac17b4d3 100644 --- a/plug-ins/FractalExplorer/FractalExplorer.c +++ b/plug-ins/FractalExplorer/FractalExplorer.c @@ -721,19 +721,18 @@ static gint delete_fractal_callback (GtkWidget *widget, gpointer data) { - GtkWidget *vbox; - GtkWidget *label; - GtkWidget *button; - char *str; - GtkWidget *list = (GtkWidget *)data; - GList * sellist; + gchar *str; + GtkWidget *list = (GtkWidget *) data; + GList *sellist; fractalexplorerOBJ * sel_obj; + if (delete_dialog) + return FALSE; + sellist = GTK_LIST(list)->selection; - sel_obj = (fractalexplorerOBJ *)gtk_object_get_user_data(GTK_OBJECT((GtkWidget *)(sellist->data))); - if(delete_dialog) - return(FALSE); + sel_obj = (fractalexplorerOBJ *) + gtk_object_get_user_data (GTK_OBJECT ((GtkWidget *) (sellist->data))); str = g_strdup_printf (_("Are you sure you want to delete\n" "\"%s\" from the list and from disk?"), @@ -746,9 +745,9 @@ delete_fractal_callback (GtkWidget *widget, str, _("Delete"), _("Cancel"), GTK_OBJECT (widget), "destroy", - (GimpQueryBooleanCallback)delete_dialog_callback, - data); - g_free(str); + delete_dialog_callback, + data); + g_free (str); gtk_widget_set_sensitive (GTK_WIDGET (delete_frame_to_freeze), FALSE); gtk_widget_show (delete_dialog); diff --git a/plug-ins/Lighting/lighting_apply.c b/plug-ins/Lighting/lighting_apply.c index 25a8003d6d..1f7bc616c9 100644 --- a/plug-ins/Lighting/lighting_apply.c +++ b/plug-ins/Lighting/lighting_apply.c @@ -2,6 +2,14 @@ /* Apply mapping and shading on the whole input image */ /******************************************************/ +#include + +#include + +#include + +#include "lighting_main.h" +#include "lighting_image.h" #include "lighting_shade.h" /*************/ @@ -10,11 +18,16 @@ get_ray_func ray_func; -void init_compute(void) +void +init_compute (void) { } -void render(gdouble x,gdouble y,GckRGB *col) +/* +static void +render (gdouble x, + gdouble y, + GckRGB *col) { GimpVector3 pos; @@ -23,12 +36,17 @@ void render(gdouble x,gdouble y,GckRGB *col) *col=(*ray_func)(&pos); } -void show_progress(gint min,gint max,gint curr) +static void +show_progress (gint min, + gint max, + gint curr) { - gimp_progress_update((gdouble)curr/(gdouble)max); + gimp_progress_update ((gdouble)curr / (gdouble)max); } +*/ -void compute_image(void) +void +compute_image (void) { gint xcount,ycount; GckRGB color; @@ -91,7 +109,7 @@ void compute_image(void) obpp=gimp_drawable_bpp(output_drawable->id); has_alpha=gimp_drawable_has_alpha(output_drawable->id); - row = (guchar *)malloc(sizeof(guchar)*(size_t)(obpp)*(size_t)(width)); + row = (guchar *)g_malloc(sizeof(guchar)*(size_t)(obpp)*(size_t)(width)); gimp_progress_init("Lighting Effects"); @@ -127,7 +145,7 @@ void compute_image(void) mapvals.pixel_treshold,render,poke,show_progress); */ if (row!=NULL) - free(row); + g_free(row); /* Update image */ /* ============ */ @@ -144,4 +162,3 @@ void compute_image(void) } } - diff --git a/plug-ins/Lighting/lighting_apply.h b/plug-ins/Lighting/lighting_apply.h index c9f47f26b8..304ef4a95e 100644 --- a/plug-ins/Lighting/lighting_apply.h +++ b/plug-ins/Lighting/lighting_apply.h @@ -1,18 +1,7 @@ -#ifndef LIGHTINGAPPLYH -#define LIGHTINGAPPLYH +#ifndef __LIGHTING_APPLY_H__ +#define __LIGHTING_APPLY_H__ -#include -#include -#include -#include -#include -#include -#include +void init_compute (void); +void compute_image (void); -#include "lighting_main.h" -#include "lighting_image.h" - -extern void init_compute (void); -extern void compute_image (void); - -#endif +#endif /* __LIGHTING_APPLY_H__ */ diff --git a/plug-ins/Lighting/lighting_image.c b/plug-ins/Lighting/lighting_image.c index 7cce695ff8..8fc4ac4b1e 100644 --- a/plug-ins/Lighting/lighting_image.c +++ b/plug-ins/Lighting/lighting_image.c @@ -2,6 +2,13 @@ /* GIMP image manipulation routines. */ /*************************************/ +#include + +#include + +#include + +#include "lighting_main.h" #include "lighting_image.h" #include "lighting_preview.h" #include "lighting_ui.h" @@ -291,7 +298,7 @@ get_map_value (GPixelRgn *region, return gck_bilinear (u, v, p); } -void +static void compute_maps (void) { gint x; diff --git a/plug-ins/Lighting/lighting_image.h b/plug-ins/Lighting/lighting_image.h index 848fba1b33..da3f681b81 100644 --- a/plug-ins/Lighting/lighting_image.h +++ b/plug-ins/Lighting/lighting_image.h @@ -1,49 +1,58 @@ -#ifndef LIGHTINGIMAGEH -#define LIGHTINGIMAGEH - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "lighting_main.h" +#ifndef __LIGHTING_IMAGE_H__ +#define __LIGHTING_IMAGE_H__ extern GDrawable *input_drawable,*output_drawable; -extern GPixelRgn source_region, dest_region; +extern GPixelRgn source_region, dest_region; extern GDrawable *bump_drawable; -extern GPixelRgn bump_region; +extern GPixelRgn bump_region; extern GDrawable *env_drawable; -extern GPixelRgn env_region; +extern GPixelRgn env_region; -extern guchar *preview_rgb_data; +extern guchar *preview_rgb_data; extern GdkImage *image; -extern glong maxcounter; -extern gint imgtype,width,height,env_width,env_height,in_channels,out_channels; +extern glong maxcounter; +extern gint imgtype,width,height,env_width,env_height,in_channels,out_channels; extern GckRGB background; -extern gint border_x1,border_y1,border_x2,border_y2; +extern gint border_x1,border_y1,border_x2,border_y2; -extern guchar sinemap[256],spheremap[256],logmap[256]; +extern guchar sinemap[256], spheremap[256], logmap[256]; -guchar peek_map (GPixelRgn *region,gint x,gint y); -GckRGB peek (gint x,gint y); -GckRGB peek_env_map (gint x,gint y); -void poke (gint x,gint y,GckRGB *color); -gint check_bounds (gint x,gint y); -GimpVector3 int_to_pos (gint x,gint y); -GimpVector3 int_to_posf (gdouble x,gdouble y); -extern void pos_to_int (gdouble x,gdouble y,gint *scr_x,gint *scr_y); -extern void pos_to_float (gdouble x,gdouble y,gdouble *xf,gdouble *yf); -extern GckRGB get_image_color (gdouble u,gdouble v,gint *inside); -extern gdouble get_map_value (GPixelRgn *region, gdouble u,gdouble v, gint *inside); -extern gint image_setup (GDrawable *drawable,gint interactive); +guchar peek_map (GPixelRgn *region, + gint x, + gint y); +GckRGB peek (gint x, + gint y); +GckRGB peek_env_map (gint x, + gint y); +void poke (gint x, + gint y, + GckRGB *color); +gint check_bounds (gint x, + gint y); +GimpVector3 int_to_pos (gint x, + gint y); +GimpVector3 int_to_posf (gdouble x, + gdouble y); +void pos_to_int (gdouble x, + gdouble y, + gint *scr_x, + gint *scr_y); +void pos_to_float (gdouble x, + gdouble y, + gdouble *xf, + gdouble *yf); +GckRGB get_image_color (gdouble u, + gdouble v, + gint *inside); +gdouble get_map_value (GPixelRgn *region, + gdouble u, + gdouble v, + gint *inside); +gint image_setup (GDrawable *drawable, + gint interactive); -#endif +#endif /* __LIGHTING_IMAGE_H__ */ diff --git a/plug-ins/Lighting/lighting_main.c b/plug-ins/Lighting/lighting_main.c index 482e14f514..e66037c5e6 100644 --- a/plug-ins/Lighting/lighting_main.c +++ b/plug-ins/Lighting/lighting_main.c @@ -20,6 +20,12 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include + +#include + +#include + #include "lighting_apply.h" #include "lighting_image.h" #include "lighting_main.h" diff --git a/plug-ins/Lighting/lighting_main.h b/plug-ins/Lighting/lighting_main.h index b396f6c4e8..56200476b3 100644 --- a/plug-ins/Lighting/lighting_main.h +++ b/plug-ins/Lighting/lighting_main.h @@ -1,11 +1,6 @@ #ifndef __LIGHTING_MAIN_H__ #define __LIGHTING_MAIN_H__ -#include -#include - -#include - /* Defines and stuff */ /* ================= */ @@ -104,4 +99,4 @@ typedef struct extern LightingValues mapvals; extern GckRGB background; -#endif +#endif /* __LIGHTING_MAIN_H__ */ diff --git a/plug-ins/Lighting/lighting_preview.c b/plug-ins/Lighting/lighting_preview.c index 38e99a5777..a9079df2b9 100644 --- a/plug-ins/Lighting/lighting_preview.c +++ b/plug-ins/Lighting/lighting_preview.c @@ -2,21 +2,34 @@ /* Compute a preview image and preview wireframe */ /*************************************************/ +#include + +#include + +#include + +#include "lighting_main.h" +#include "lighting_ui.h" +#include "lighting_image.h" +#include "lighting_apply.h" +#include "lighting_shade.h" + #include "lighting_preview.h" -gint lightx,lighty; -BackBuffer backbuf={0,0,0,0,NULL}; +gint lightx, lighty; +BackBuffer backbuf= { 0, 0, 0, 0, NULL }; /* g_free()'ed on exit */ -gdouble *xpostab=NULL,*ypostab=NULL; +gdouble *xpostab = NULL; +gdouble *ypostab = NULL; -gint xpostab_size = -1; /* if preview size change, do realloc */ -gint ypostab_size = -1; +static gint xpostab_size = -1; /* if preview size change, do realloc */ +static gint ypostab_size = -1; /* Protos */ /* ====== */ -void +static void compute_preview (gint startx, gint starty, gint w, @@ -162,9 +175,11 @@ compute_preview (gint startx, gck_rgb_to_gdkimage(visinfo, preview_rgb_data, image, PREVIEW_WIDTH, PREVIEW_HEIGHT); } -void +/* +static void blah (void) { +*/ /* First, compute the linear mapping (x,y,x+w,y+h) to (0,0,pw,ph) */ /* ============================================================== */ @@ -250,8 +265,9 @@ blah (void) /* ====================== */ /* gck_rgb_to_gdkimage(visinfo,preview_rgb_data,image,pw,ph); */ - +/* } +*/ /*************************************************/ /* Check if the given position is within the */ @@ -283,10 +299,12 @@ check_light_hit (gint xpos, /* Draw a marker to show light position */ /****************************************/ -void +/* +static void draw_light_marker (gint xpos, gint ypos) { +*/ /* gck_gc_set_foreground(visinfo,gc,0,50,255); gck_gc_set_background(visinfo,gc,0,0,0); @@ -322,9 +340,9 @@ draw_light_marker (gint xpos, backbuf.image=gdk_image_get(previewarea->window,backbuf.x,backbuf.y,backbuf.w,backbuf.h); gdk_draw_arc(previewarea->window,gc,TRUE,lightx-7,lighty-7,14,14,0,360*64); } */ -} +/*}*/ -void +static void clear_light_marker (void) { /* Restore background if it has been saved */ @@ -343,10 +361,11 @@ clear_light_marker (void) } */ } -void +/* +static void draw_lights (void) { -/* gdouble dxpos,dypos; + gdouble dxpos,dypos; gint xpos,ypos; clear_light_marker(); @@ -358,8 +377,8 @@ draw_lights (void) ypos=(gint)(dypos+0.5); if (xpos>=0 && xpos<=PREVIEW_WIDTH && ypos>=0 && ypos<=PREVIEW_HEIGHT) - draw_light_marker(xpos,ypos); */ -} + draw_light_marker(xpos,ypos); +}*/ /*************************************************/ /* Update light position given new screen coords */ @@ -382,7 +401,7 @@ update_light (gint xpos, draw_lights(startx,starty,pw,ph); */ } -void +static void compute_preview_rectangle (gint *xp, gint *yp, gint *wid, @@ -451,4 +470,3 @@ draw_preview_image (gint recompute) gdk_draw_image (previewarea->window, gc, image, 0, 0, 0, 0, PREVIEW_WIDTH, PREVIEW_HEIGHT); } - diff --git a/plug-ins/Lighting/lighting_preview.h b/plug-ins/Lighting/lighting_preview.h index 753b971bd8..a9ebdce53b 100644 --- a/plug-ins/Lighting/lighting_preview.h +++ b/plug-ins/Lighting/lighting_preview.h @@ -1,19 +1,5 @@ -#ifndef LIGHTINGPREVIEWH -#define LIGHTINGPREVIEWH - -#include -#include -#include -#include -#include -#include -#include - -#include "lighting_main.h" -#include "lighting_ui.h" -#include "lighting_image.h" -#include "lighting_apply.h" -#include "lighting_shade.h" +#ifndef __LIGHTING_PREVIEW_H__ +#define __LIGHTING_PREVIEW_H__ #define PREVIEW_WIDTH 300 #define PREVIEW_HEIGHT 300 @@ -34,8 +20,10 @@ extern gdouble *xpostab,*ypostab; /* Externally visible functions */ /* ============================ */ -extern void draw_preview_image (gint recompute); -extern gint check_light_hit (gint xpos,gint ypos); -extern void update_light (gint xpos,gint ypos); +void draw_preview_image (gint recompute); +gint check_light_hit (gint xpos, + gint ypos); +void update_light (gint xpos, + gint ypos); -#endif +#endif /* __LIGHTING_PREVIEW_H__ */ diff --git a/plug-ins/Lighting/lighting_shade.c b/plug-ins/Lighting/lighting_shade.c index e1b61d44a9..7dd527dc8e 100644 --- a/plug-ins/Lighting/lighting_shade.c +++ b/plug-ins/Lighting/lighting_shade.c @@ -2,25 +2,35 @@ /* Shading stuff */ /*****************/ +#include + +#include + +#include "lighting_main.h" +#include "lighting_image.h" #include "lighting_shade.h" -GimpVector3 *triangle_normals[2] = { NULL, NULL }; -GimpVector3 *vertex_normals[3] = { NULL, NULL, NULL }; -gdouble *heights[3] = { NULL, NULL, NULL }; -gdouble xstep,ystep; -guchar *bumprow=NULL; +static GimpVector3 *triangle_normals[2] = { NULL, NULL }; +static GimpVector3 *vertex_normals[3] = { NULL, NULL, NULL }; +static gdouble *heights[3] = { NULL, NULL, NULL }; +static gdouble xstep, ystep; +static guchar *bumprow = NULL; -gint pre_w=-1; -gint pre_h=-1; +static gint pre_w = -1; +static gint pre_h = -1; /*****************/ /* Phong shading */ /*****************/ -GckRGB phong_shade(GimpVector3 *position,GimpVector3 *viewpoint, - GimpVector3 *normal,GimpVector3 *lightposition, - GckRGB *diff_col,GckRGB *spec_col, - LightType light_type) +static GckRGB +phong_shade (GimpVector3 *position, + GimpVector3 *viewpoint, + GimpVector3 *normal, + GimpVector3 *lightposition, + GckRGB *diff_col, + GckRGB *spec_col, + LightType light_type) { GckRGB ambient_color,diffuse_color,specular_color; gdouble nl,rv,dist; @@ -83,7 +93,11 @@ GckRGB phong_shade(GimpVector3 *position,GimpVector3 *viewpoint, return(ambient_color); } -void get_normal(gdouble xf,gdouble yf,GimpVector3 *normal) +/* +static void +get_normal (gdouble xf, + gdouble yf, + GimpVector3 *normal) { GimpVector3 v1,v2,n; gint numvecs=0,x,y,f; @@ -162,8 +176,11 @@ void get_normal(gdouble xf,gdouble yf,GimpVector3 *normal) gimp_vector3_mul(normal,1.0/(gdouble)numvecs); gimp_vector3_normalize(normal); } +*/ -void precompute_init(gint w,gint h) +void +precompute_init (gint w, + gint h) { gint n; @@ -176,28 +193,28 @@ void precompute_init(gint w,gint h) for (n=0;n<3;n++) { if (vertex_normals[n]!=NULL) - free(vertex_normals[n]); + g_free(vertex_normals[n]); if (heights[n]!=NULL) - free(heights[n]); + g_free(heights[n]); - heights[n]=(gdouble *)malloc(sizeof(gdouble)*(size_t)w); - vertex_normals[n]=(GimpVector3 *)malloc(sizeof(GimpVector3)*(size_t)w); + heights[n]=(gdouble *)g_malloc(sizeof(gdouble)*(size_t)w); + vertex_normals[n]=(GimpVector3 *)g_malloc(sizeof(GimpVector3)*(size_t)w); } for (n=0;n<2;n++) if (triangle_normals[n]!=NULL) - free(triangle_normals[n]); + g_free(triangle_normals[n]); if (bumprow!=NULL) { - free(bumprow); + g_free(bumprow); bumprow=NULL; } - bumprow=(guchar *)malloc(sizeof(guchar)*(size_t)w); + bumprow=(guchar *)g_malloc(sizeof(guchar)*(size_t)w); - triangle_normals[0]=(GimpVector3 *)malloc(sizeof(GimpVector3)*(size_t)((w<<1)+2)); - triangle_normals[1]=(GimpVector3 *)malloc(sizeof(GimpVector3)*(size_t)((w<<1)+2)); + triangle_normals[0]=(GimpVector3 *)g_malloc(sizeof(GimpVector3)*(size_t)((w<<1)+2)); + triangle_normals[1]=(GimpVector3 *)g_malloc(sizeof(GimpVector3)*(size_t)((w<<1)+2)); for (n=0;n<(w<<1)+1;n++) { @@ -220,7 +237,10 @@ void precompute_init(gint w,gint h) /* Compute triangle and then vertex normals */ /********************************************/ -void precompute_normals(gint x1,gint x2,gint y) +void +precompute_normals (gint x1, + gint x2, + gint y) { GimpVector3 *tmpv,p1,p2,p3,normal; gdouble *tmpd; @@ -345,7 +365,9 @@ void precompute_normals(gint x1,gint x2,gint y) /* Compute the reflected ray given the normalized normal and ins. vec. */ /***********************************************************************/ -GimpVector3 compute_reflected_ray(GimpVector3 *normal,GimpVector3 *view) +static GimpVector3 +compute_reflected_ray (GimpVector3 *normal, + GimpVector3 *view) { GimpVector3 ref; gdouble nl; @@ -365,7 +387,10 @@ GimpVector3 compute_reflected_ray(GimpVector3 *normal,GimpVector3 *view) /* the conversion from spherical coordinates to image space coordinates */ /************************************************************************/ -void sphere_to_image(GimpVector3 *normal,gdouble *u,gdouble *v) +static void +sphere_to_image (GimpVector3 *normal, + gdouble *u, + gdouble *v) { static gdouble alpha,fac; static GimpVector3 cross_prod; @@ -402,7 +427,8 @@ void sphere_to_image(GimpVector3 *normal,gdouble *u,gdouble *v) /* These routines computes the color of the surface at a given point */ /*********************************************************************/ -GckRGB get_ray_color(GimpVector3 *position) +GckRGB +get_ray_color (GimpVector3 *position) { GckRGB color; gint x,f; @@ -449,7 +475,8 @@ GckRGB get_ray_color(GimpVector3 *position) return(color); } -GckRGB get_ray_color_ref(GimpVector3 *position) +GckRGB +get_ray_color_ref (GimpVector3 *position) { GckRGB color,env_color; gint x,f; @@ -507,7 +534,8 @@ GckRGB get_ray_color_ref(GimpVector3 *position) return(color); } -GckRGB get_ray_color_no_bilinear(GimpVector3 *position) +GckRGB +get_ray_color_no_bilinear (GimpVector3 *position) { GckRGB color; gint x; @@ -554,7 +582,8 @@ GckRGB get_ray_color_no_bilinear(GimpVector3 *position) return(color); } -GckRGB get_ray_color_no_bilinear_ref(GimpVector3 *position) +GckRGB +get_ray_color_no_bilinear_ref (GimpVector3 *position) { GckRGB color,env_color; gint x; @@ -631,4 +660,3 @@ GckRGB get_ray_color_no_bilinear_ref(GimpVector3 *position) return(color); } - diff --git a/plug-ins/Lighting/lighting_shade.h b/plug-ins/Lighting/lighting_shade.h index e7f52939f0..f9b49cf061 100644 --- a/plug-ins/Lighting/lighting_shade.h +++ b/plug-ins/Lighting/lighting_shade.h @@ -1,23 +1,17 @@ -#ifndef LIGHTINGSHADEH -#define LIGHTINGSHADEH +#ifndef __LIGHTING_SHADE_H__ +#define __LIGHTING_SHADE_H__ -#include -#include -#include -#include -#include +typedef GckRGB (* get_ray_func) (GimpVector3 *vector); -#include "lighting_main.h" -#include "lighting_image.h" +GckRGB get_ray_color (GimpVector3 *position); +GckRGB get_ray_color_no_bilinear (GimpVector3 *position); +GckRGB get_ray_color_ref (GimpVector3 *position); +GckRGB get_ray_color_no_bilinear_ref (GimpVector3 *position); -typedef GckRGB (*get_ray_func) (GimpVector3 *); +void precompute_init (gint w, + gint h); +void precompute_normals (gint x1, + gint x2, + gint y); -extern GckRGB get_ray_color (GimpVector3 *position); -extern GckRGB get_ray_color_no_bilinear (GimpVector3 *position); -extern GckRGB get_ray_color_ref (GimpVector3 *position); -extern GckRGB get_ray_color_no_bilinear_ref (GimpVector3 *position); - -extern void precompute_init (gint w,gint h); -extern void precompute_normals (gint x1,gint x2,gint y); - -#endif +#endif /* __LIGHTING_SHADE_H__ */ diff --git a/plug-ins/Lighting/lighting_ui.c b/plug-ins/Lighting/lighting_ui.c index 93f466083a..8300b6bd55 100644 --- a/plug-ins/Lighting/lighting_ui.c +++ b/plug-ins/Lighting/lighting_ui.c @@ -4,6 +4,7 @@ #include +#include #include #include @@ -713,10 +714,6 @@ create_material_page (void) GtkWidget *hbox; GtkWidget *spinbutton; GtkObject *adj; - - GdkPixmap *image; - GdkPixmap *mask; - GtkStyle *style; GtkWidget *pixmap; page = gtk_vbox_new (FALSE, 4); @@ -736,17 +733,9 @@ create_material_page (void) gtk_box_pack_start (GTK_BOX (hbox), table, FALSE, FALSE, 0); gtk_widget_show (table); - style = gtk_widget_get_style (table); - /* Ambient intensity */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - amb1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (amb1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 0, _("Ambient:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -764,26 +753,14 @@ create_material_page (void) _("Amount of original color to show where no " "direct light falls"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - amb2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (amb2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); /* Diffuse intensity */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - diffint1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (diffint1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 1, _("Diffuse:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -801,13 +778,7 @@ create_material_page (void) _("Intensity of original color when lit by a light " "source"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - diffint2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (diffint2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); @@ -826,17 +797,9 @@ create_material_page (void) gtk_box_pack_start (GTK_BOX (hbox), table, FALSE, FALSE, 0); gtk_widget_show (table); - style = gtk_widget_get_style (table); - /* Diffuse reflection */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - diffref1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (diffref1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 0, _("Diffuse:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -854,26 +817,14 @@ create_material_page (void) _("Higher values makes the object reflect more " "light (appear lighter)"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - diffref2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (diffref2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); /* Specular reflection */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - specref1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (specref1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 1, _("Specular:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -891,26 +842,14 @@ create_material_page (void) _("Controls how intense the highlights will be"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - specref2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (specref2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); /* Highlight */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - high1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (high1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 2, _("Highlight:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -928,13 +867,7 @@ create_material_page (void) _("Higher values makes the highlights more focused"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - high2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (high2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); @@ -1119,10 +1052,6 @@ main_dialog (GDrawable *drawable) GtkWidget *hbox; GtkWidget *frame; GtkWidget *button; - GdkPixmap *pixmap; - GdkPixmap *mask; - GtkStyle *style; - GtkWidget *pixmap_widget; gchar **argv; gint argc; @@ -1207,44 +1136,22 @@ main_dialog (GDrawable *drawable) gimp_help_set_help_data (button, _("Recompute preview image"), NULL); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (zoomout_callback), NULL); gtk_widget_show (button); - style = gtk_widget_get_style (button); - pixmap = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmap_widget = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - gtk_container_add (GTK_CONTAINER (button), pixmap_widget); - gtk_widget_show (pixmap_widget); - gimp_help_set_help_data (button, _("Zoom out (make image smaller)"), NULL); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (zoomin_callback), NULL); gtk_widget_show (button); - style = gtk_widget_get_style (button); - pixmap = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmap_widget = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - gtk_container_add (GTK_CONTAINER (button), pixmap_widget); - gtk_widget_show (pixmap_widget); - gimp_help_set_help_data (button, _("Zoom in (make image bigger)"), NULL); create_main_notebook (main_hbox); @@ -1268,7 +1175,7 @@ main_dialog (GDrawable *drawable) gtk_main (); if (preview_rgb_data != NULL) - free (preview_rgb_data); + g_free (preview_rgb_data); if (image != NULL) gdk_image_destroy (image); diff --git a/plug-ins/Lighting/lighting_ui.h b/plug-ins/Lighting/lighting_ui.h index a657d9194c..bbdafd3780 100644 --- a/plug-ins/Lighting/lighting_ui.h +++ b/plug-ins/Lighting/lighting_ui.h @@ -1,12 +1,6 @@ #ifndef __LIGHTING_UI_H__ #define __LIGHTING_UI_H__ -#include - -#include - -#include - /* Externally visible variables */ /* ============================ */ @@ -20,4 +14,4 @@ extern GtkWidget *previewarea; gboolean main_dialog (GDrawable *drawable); -#endif +#endif /* __LIGHTING_UI_H__ */ diff --git a/plug-ins/MapObject/arcball.c b/plug-ins/MapObject/arcball.c index 59695ad947..efa95b9533 100644 --- a/plug-ins/MapObject/arcball.c +++ b/plug-ins/MapObject/arcball.c @@ -3,71 +3,92 @@ /* Modified by Tom Bech, 1996 */ /************************************/ -#include #include + #include + #include "arcball.h" /* Gloval variables */ /* ================ */ -HVect center; -double radius; -Quat qNow, qDown, qDrag; -HVect vNow, vDown, vFrom, vTo, vrFrom, vrTo; -HMatrix mNow, mDown; -unsigned int showResult, dragging; -ConstraintSet sets[NSets]; -int setSizes[NSets]; -AxisSet axisSet; -int axisIndex; +Quat qOne = { 0, 0, 0, 1 }; -HMatrix mId = {{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}}; -double otherAxis[][4] = {{-0.48, 0.80, 0.36, 1}}; -Quat qOne = {0, 0, 0, 1}; +static HVect center; +static double radius; +static Quat qNow, qDown, qDrag; +static HVect vNow, vDown, vFrom, vTo, vrFrom, vrTo; +static HMatrix mNow, mDown; +static unsigned int showResult, dragging; +static ConstraintSet sets[NSets]; +static int setSizes[NSets]; +static AxisSet axisSet; +static int axisIndex; + +static HMatrix mId = +{ + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 0, 0, 0, 1 } +}; + +static double otherAxis[][4] = +{ + {-0.48, 0.80, 0.36, 1} +}; /* Externally visible methods */ /* ========================== */ -void ArcBall_Init(); -void ArcBall_Place(HVect Center, double Radius); -void ArcBall_UseSet(AxisSet axis_Set); -void ArcBall_Update(void); -void ArcBall_Value(HMatrix m_Now); -void ArcBall_Values(double *alpha,double *beta,double *gamma); -void ArcBall_BeginDrag(void); -void ArcBall_EndDrag(void); -void ArcBall_Mouse(HVect v_Now); -void ArcBall_CopyMat(HMatrix inm,HMatrix outm); +void ArcBall_Init (void); +void ArcBall_Place (HVect Center, + double Radius); +void ArcBall_UseSet (AxisSet axis_Set); +void ArcBall_Update (void); +void ArcBall_Value (HMatrix m_Now); +void ArcBall_Values (double *alpha, + double *beta, + double *gamma); +void ArcBall_BeginDrag (void); +void ArcBall_EndDrag (void); +void ArcBall_Mouse (HVect v_Now); +void ArcBall_CopyMat (HMatrix inm, + HMatrix outm); /* Internal methods */ /* ================ */ -void Qt_ToMatrix(Quat q,HMatrix out); -Quat Qt_Conj(Quat q); -Quat Qt_Mul(Quat qL, Quat qR); -Quat Qt_FromBallPoints(HVect from, HVect to); -void Qt_ToBallPoints(Quat q, HVect *arcFrom, HVect *arcTo); +static void Qt_ToMatrix(Quat q,HMatrix out); +static Quat Qt_Conj(Quat q); +static Quat Qt_Mul(Quat qL, Quat qR); +static Quat Qt_FromBallPoints(HVect from, HVect to); +static void Qt_ToBallPoints(Quat q, HVect *arcFrom, HVect *arcTo); -HVect V3_(double x, double y, double z); -double V3_Norm(HVect v); -HVect V3_Unit(HVect v); -HVect V3_Scale(HVect v, double s); -HVect V3_Negate(HVect v); -HVect V3_Add(HVect v1, HVect v2); -HVect V3_Sub(HVect v1, HVect v2); -double V3_Dot(HVect v1, HVect v2); -HVect V3_Cross(HVect v1, HVect v2); -HVect V3_Bisect(HVect v0, HVect v1); +static HVect V3_(double x, double y, double z); +static double V3_Norm(HVect v); +static HVect V3_Unit(HVect v); +static HVect V3_Scale(HVect v, double s); +static HVect V3_Negate(HVect v); +/* +static HVect V3_Add(HVect v1, HVect v2); +*/ +static HVect V3_Sub(HVect v1, HVect v2); +static double V3_Dot(HVect v1, HVect v2); +/* +static HVect V3_Cross(HVect v1, HVect v2); +static HVect V3_Bisect(HVect v0, HVect v1); +*/ -HVect MouseOnSphere(HVect mouse, HVect ballCenter, double ballRadius); -HVect ConstrainToAxis(HVect loose, HVect axis); -int NearestConstraintAxis(HVect loose, HVect *axes, int nAxes); +static HVect MouseOnSphere(HVect mouse, HVect ballCenter, double ballRadius); +static HVect ConstrainToAxis(HVect loose, HVect axis); +static int NearestConstraintAxis(HVect loose, HVect *axes, int nAxes); /* Establish reasonable initial values for controller. */ /* =================================================== */ -void ArcBall_Init(void) +void +ArcBall_Init (void) { int i; @@ -75,7 +96,8 @@ void ArcBall_Init(void) radius = 1.0; vDown = vNow = qOne; qDown = qNow = qOne; - for (i=15; i>=0; i--) ((double *)mNow)[i] = ((double *)mDown)[i] = ((double *)mId)[i]; + for (i=15; i>=0; i--) + ((double *)mNow)[i] = ((double *)mDown)[i] = ((double *)mId)[i]; showResult = dragging = FALSE; axisSet = NoAxes; @@ -90,7 +112,9 @@ void ArcBall_Init(void) /* Set the center and size of the controller. */ /* ========================================== */ -void ArcBall_Place(HVect Center, double Radius) +void +ArcBall_Place (HVect Center, + double Radius) { center = Center; radius = Radius; @@ -99,7 +123,8 @@ void ArcBall_Place(HVect Center, double Radius) /* Incorporate new mouse position. */ /* =============================== */ -void ArcBall_Mouse(HVect v_Now) +void +ArcBall_Mouse (HVect v_Now) { vNow = v_Now; } @@ -107,16 +132,17 @@ void ArcBall_Mouse(HVect v_Now) /* Choose a constraint set, or none. */ /* ================================= */ -void ArcBall_UseSet(AxisSet axis_Set) +void +ArcBall_UseSet (AxisSet axis_Set) { if (!dragging) axisSet = axis_Set; } - /* Using vDown, vNow, dragging, and axisSet, compute rotation etc. */ /* =============================================================== */ -void ArcBall_Update(void) +void +ArcBall_Update (void) { int setSize = setSizes[axisSet]; HVect *set = (HVect *)(sets[axisSet]); @@ -124,19 +150,19 @@ void ArcBall_Update(void) vFrom = MouseOnSphere(vDown, center, radius); vTo = MouseOnSphere(vNow, center, radius); if (dragging) - { - if (axisSet!=NoAxes) - { - vFrom = ConstrainToAxis(vFrom, set[axisIndex]); - vTo = ConstrainToAxis(vTo, set[axisIndex]); - } - qDrag = Qt_FromBallPoints(vFrom, vTo); - qNow = Qt_Mul(qDrag, qDown); - } + { + if (axisSet!=NoAxes) + { + vFrom = ConstrainToAxis(vFrom, set[axisIndex]); + vTo = ConstrainToAxis(vTo, set[axisIndex]); + } + qDrag = Qt_FromBallPoints(vFrom, vTo); + qNow = Qt_Mul(qDrag, qDown); + } else - { - if (axisSet!=NoAxes) axisIndex = NearestConstraintAxis(vTo, set, setSize); - } + { + if (axisSet!=NoAxes) axisIndex = NearestConstraintAxis(vTo, set, setSize); + } Qt_ToBallPoints(qDown, &vrFrom, &vrTo); Qt_ToMatrix(Qt_Conj(qNow), mNow); /* Gives transpose for GL. */ } @@ -144,15 +170,19 @@ void ArcBall_Update(void) /* Return rotation matrix defined by controller use. */ /* ================================================= */ -void ArcBall_Value(HMatrix m_Now) +void +ArcBall_Value (HMatrix m_Now) { - ArcBall_CopyMat(mNow,m_Now); + ArcBall_CopyMat (mNow, m_Now); } /* Extract rotation angles from matrix */ /* =================================== */ -void ArcBall_Values(double *alpha,double *beta,double *gamma) +void +ArcBall_Values (double *alpha, + double *beta, + double *gamma) { if ((*beta=asin(-mNow[0][2]))!=0.0) { @@ -169,7 +199,8 @@ void ArcBall_Values(double *alpha,double *beta,double *gamma) /* Begin drag sequence. */ /* ==================== */ -void ArcBall_BeginDrag(void) +void +ArcBall_BeginDrag (void) { dragging = TRUE; vDown = vNow; @@ -178,12 +209,13 @@ void ArcBall_BeginDrag(void) /* Stop drag sequence. */ /* =================== */ -void ArcBall_EndDrag(void) +void +ArcBall_EndDrag (void) { dragging = FALSE; qDown = qNow; - - ArcBall_CopyMat(mNow,mDown); + + ArcBall_CopyMat (mNow, mDown); } /*===================*/ @@ -195,7 +227,9 @@ void ArcBall_EndDrag(void) /* which gives the effect of rotating by qFirst then qSecond. */ /* ============================================================= */ -Quat Qt_Mul(Quat qL, Quat qR) +static Quat +Qt_Mul (Quat qL, + Quat qR) { Quat qq; qq.w = qL.w*qR.w - qL.x*qR.x - qL.y*qR.y - qL.z*qR.z; @@ -211,7 +245,9 @@ Quat Qt_Mul(Quat qL, Quat qR) /* system and right-handed rotations. */ /* ============================================================== */ -void Qt_ToMatrix(Quat q, HMatrix out) +static void +Qt_ToMatrix (Quat q, + HMatrix out) { double Nq = q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w; double s = (Nq > 0.0) ? (2.0 / Nq) : 0.0; @@ -229,7 +265,8 @@ void Qt_ToMatrix(Quat q, HMatrix out) /* Return conjugate of quaternion. */ /* =============================== */ -Quat Qt_Conj(Quat q) +static Quat +Qt_Conj (Quat q) { Quat qq; qq.x = -q.x; qq.y = -q.y; qq.z = -q.z; qq.w = q.w; @@ -239,7 +276,10 @@ Quat Qt_Conj(Quat q) /* Return vector formed from components */ /* ==================================== */ -HVect V3_(double x, double y, double z) +static HVect +V3_ (double x, + double y, + double z) { HVect v; v.x = x; v.y = y; v.z = z; v.w = 0; @@ -249,7 +289,8 @@ HVect V3_(double x, double y, double z) /* Return norm of v, defined as sum of squares of components */ /* ========================================================= */ -double V3_Norm(HVect v) +static double +V3_Norm (HVect v) { return ( v.x*v.x + v.y*v.y + v.z*v.z ); } @@ -257,7 +298,8 @@ double V3_Norm(HVect v) /* Return unit magnitude vector in direction of v */ /* ============================================== */ -HVect V3_Unit(HVect v) +static HVect +V3_Unit (HVect v) { static HVect u = {0, 0, 0, 0}; double vlen = sqrt(V3_Norm(v)); @@ -269,7 +311,9 @@ HVect V3_Unit(HVect v) /* Return version of v scaled by s */ /* =============================== */ -HVect V3_Scale(HVect v, double s) +static HVect +V3_Scale (HVect v, + double s) { HVect u; u.x = s*v.x; u.y = s*v.y; u.z = s*v.z; u.w = v.w; @@ -279,7 +323,8 @@ HVect V3_Scale(HVect v, double s) /* Return negative of v */ /* ==================== */ -HVect V3_Negate(HVect v) +static HVect +V3_Negate (HVect v) { static HVect u = {0, 0, 0, 0}; u.x = -v.x; u.y = -v.y; u.z = -v.z; @@ -288,18 +333,22 @@ HVect V3_Negate(HVect v) /* Return sum of v1 and v2 */ /* ======================= */ - -HVect V3_Add(HVect v1, HVect v2) +/* +static HVect +V3_Add (HVect v1, + HVect v2) { static HVect v = {0, 0, 0, 0}; v.x = v1.x+v2.x; v.y = v1.y+v2.y; v.z = v1.z+v2.z; return (v); } - +*/ /* Return difference of v1 minus v2 */ /* ================================ */ -HVect V3_Sub(HVect v1, HVect v2) +static HVect +V3_Sub (HVect v1, + HVect v2) { static HVect v = {0, 0, 0, 0}; v.x = v1.x-v2.x; v.y = v1.y-v2.y; v.z = v1.z-v2.z; @@ -308,23 +357,28 @@ HVect V3_Sub(HVect v1, HVect v2) /* Halve arc between unit vectors v0 and v1. */ /* ========================================= */ - -HVect V3_Bisect(HVect v0, HVect v1) +/* +static HVect +V3_Bisect (HVect v0, + HVect v1) { HVect v = {0, 0, 0, 0}; double Nv; - + v = V3_Add(v0, v1); Nv = V3_Norm(v); if (Nv < 1.0e-5) v = V3_(0, 0, 1); else v = V3_Scale(v, 1/sqrt(Nv)); return (v); } +*/ /* Return dot product of v1 and v2 */ /* =============================== */ -double V3_Dot(HVect v1, HVect v2) +static double +V3_Dot (HVect v1, + HVect v2) { return (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); } @@ -332,8 +386,10 @@ double V3_Dot(HVect v1, HVect v2) /* Return cross product, v1 x v2 */ /* ============================= */ - -HVect V3_Cross(HVect v1, HVect v2) +/* +static HVect +V3_Cross (HVect v1, + HVect v2) { static HVect v = {0, 0, 0, 0}; v.x = v1.y*v2.z-v1.z*v2.y; @@ -341,18 +397,21 @@ HVect V3_Cross(HVect v1, HVect v2) v.z = v1.x*v2.y-v1.y*v2.x; return (v); } +*/ -void ArcBall_CopyMat(HMatrix inm,HMatrix outm) +void +ArcBall_CopyMat (HMatrix inm, + HMatrix outm) { int x=0,y=0; for (x=0;x<4;x++) - { - for (y=0;y<4;y++) - { - outm[y][x]=inm[y][x]; - } - } + { + for (y=0;y<4;y++) + { + outm[y][x]=inm[y][x]; + } + } } /*=====================================================*/ @@ -362,7 +421,10 @@ void ArcBall_CopyMat(HMatrix inm,HMatrix outm) /* Convert window coordinates to sphere coordinates. */ /* ================================================= */ -HVect MouseOnSphere(HVect mouse, HVect ballCenter, double ballRadius) +static HVect +MouseOnSphere (HVect mouse, + HVect ballCenter, + double ballRadius) { HVect ballMouse; register double mag; @@ -371,10 +433,10 @@ HVect MouseOnSphere(HVect mouse, HVect ballCenter, double ballRadius) ballMouse.y = (mouse.y - ballCenter.y) / ballRadius; mag = ballMouse.x*ballMouse.x + ballMouse.y*ballMouse.y; if (mag > 1.0) - { - register double scale = 1.0/sqrt(mag); - ballMouse.x *= scale; ballMouse.y *= scale; - ballMouse.z = 0.0; + { + register double scale = 1.0/sqrt(mag); + ballMouse.x *= scale; ballMouse.y *= scale; + ballMouse.z = 0.0; } else ballMouse.z = sqrt(1 - mag); ballMouse.w = 0.0; @@ -384,7 +446,9 @@ HVect MouseOnSphere(HVect mouse, HVect ballCenter, double ballRadius) /* Construct a unit quaternion from two points on unit sphere */ /* ========================================================== */ -Quat Qt_FromBallPoints(HVect from, HVect to) +static Quat +Qt_FromBallPoints (HVect from, + HVect to) { Quat qu; qu.x = from.y*to.z - from.z*to.y; @@ -397,7 +461,10 @@ Quat Qt_FromBallPoints(HVect from, HVect to) /* Convert a unit quaternion to two points on unit sphere */ /* ====================================================== */ -void Qt_ToBallPoints(Quat q, HVect *arcFrom, HVect *arcTo) +static void +Qt_ToBallPoints (Quat q, + HVect *arcFrom, + HVect *arcTo) { double s; @@ -413,7 +480,9 @@ void Qt_ToBallPoints(Quat q, HVect *arcFrom, HVect *arcTo) /* Force sphere point to be perpendicular to axis. */ /* =============================================== */ -HVect ConstrainToAxis(HVect loose, HVect axis) +static HVect +ConstrainToAxis (HVect loose, + HVect axis) { HVect onPlane; register double norm; @@ -422,8 +491,8 @@ HVect ConstrainToAxis(HVect loose, HVect axis) norm = V3_Norm(onPlane); if (norm > 0.0) { - if (onPlane.z < 0.0) onPlane = V3_Negate(onPlane); - return ( V3_Scale(onPlane, 1/sqrt(norm)) ); + if (onPlane.z < 0.0) onPlane = V3_Negate(onPlane); + return ( V3_Scale(onPlane, 1/sqrt(norm)) ); } /* else drop through */ /* ================= */ @@ -436,7 +505,10 @@ HVect ConstrainToAxis(HVect loose, HVect axis) /* Find the index of nearest arc of axis set. */ /* ========================================== */ -int NearestConstraintAxis(HVect loose, HVect *axes, int nAxes) +static int +NearestConstraintAxis (HVect loose, + HVect *axes, + int nAxes) { HVect onPlane; register double max, dot; @@ -446,11 +518,11 @@ int NearestConstraintAxis(HVect loose, HVect *axes, int nAxes) for (i=0; imax) - { - max = dot; nearest = i; - } + dot = V3_Dot(onPlane, loose); + if (dot>max) + { + max = dot; nearest = i; + } } return (nearest); } diff --git a/plug-ins/MapObject/arcball.h b/plug-ins/MapObject/arcball.h index c622a51721..5cb611555b 100644 --- a/plug-ins/MapObject/arcball.h +++ b/plug-ins/MapObject/arcball.h @@ -1,25 +1,50 @@ -#ifndef ARCBALLH -#define ARCBALLH +#ifndef __ARCBALL_H__ +#define __ARCBALL_H__ + +typedef struct +{ + double x, y, z, w; +} Quat; + +enum QuatPart +{ + X, + Y, + Z, + W, + QuatLen +}; -typedef struct {double x, y, z, w;} Quat; -enum QuatPart {X, Y, Z, W, QuatLen}; typedef Quat HVect; + typedef double HMatrix[QuatLen][QuatLen]; -typedef enum AxisSet{NoAxes, CameraAxes, BodyAxes, OtherAxes, NSets} AxisSet; +typedef enum AxisSet +{ + NoAxes, + CameraAxes, + BodyAxes, + OtherAxes, + NSets +} AxisSet; + typedef double *ConstraintSet; extern Quat qOne; -extern void ArcBall_Init(); -extern void ArcBall_Place(HVect Center, double Radius); -extern void ArcBall_UseSet(AxisSet axis_Set); -extern void ArcBall_Update(void); -extern void ArcBall_Value(HMatrix m_Now); -extern void ArcBall_Values(double *alpha,double *beta,double *gamma); -extern void ArcBall_BeginDrag(void); -extern void ArcBall_EndDrag(void); -extern void ArcBall_Mouse(HVect v_Now); -extern void ArcBall_CopyMat(HMatrix inm,HMatrix outm); +void ArcBall_Init (void); +void ArcBall_Place (HVect Center, + double Radius); +void ArcBall_UseSet (AxisSet axis_Set); +void ArcBall_Update (void); +void ArcBall_Value (HMatrix m_Now); +void ArcBall_Values (double *alpha, + double *beta, + double *gamma); +void ArcBall_BeginDrag (void); +void ArcBall_EndDrag (void); +void ArcBall_Mouse (HVect v_Now); +void ArcBall_CopyMat (HMatrix inm, + HMatrix outm); -#endif +#endif /* __ARCBALL_H__ */ diff --git a/plug-ins/MapObject/mapobject_apply.c b/plug-ins/MapObject/mapobject_apply.c index 48655d2b0b..6539fd9364 100644 --- a/plug-ins/MapObject/mapobject_apply.c +++ b/plug-ins/MapObject/mapobject_apply.c @@ -2,6 +2,14 @@ /* Apply mapping and shading on the whole input image */ /******************************************************/ +#include + +#include + +#include + +#include "mapobject_main.h" +#include "mapobject_image.h" #include "mapobject_shade.h" /*************/ @@ -9,7 +17,7 @@ /*************/ gdouble imat[4][4]; -gfloat rotmat[16], a[16], b[16]; +gfloat rotmat[16], a[16], b[16]; void init_compute(void) { diff --git a/plug-ins/MapObject/mapobject_apply.h b/plug-ins/MapObject/mapobject_apply.h index d7a5c48217..7b06eda06b 100644 --- a/plug-ins/MapObject/mapobject_apply.h +++ b/plug-ins/MapObject/mapobject_apply.h @@ -1,20 +1,10 @@ -#ifndef MAPOBJECTAPPLYH -#define MAPOBJECTAPPLYH - -#include -#include -#include -#include -#include -#include -#include - -#include "mapobject_main.h" -#include "mapobject_image.h" +#ifndef __MAPOBJECT_APPLY_H__ +#define __MAPOBJECT_APPLY_H__ extern gdouble imat[4][4]; -extern gfloat rotmat[16]; -extern void init_compute(void); -extern void compute_image(void); +extern gfloat rotmat[16]; -#endif +void init_compute (void); +void compute_image (void); + +#endif /* __MAPOBJECT_APPLY_H__ */ diff --git a/plug-ins/MapObject/mapobject_image.c b/plug-ins/MapObject/mapobject_image.c index 1455b43507..1986c6ac08 100644 --- a/plug-ins/MapObject/mapobject_image.c +++ b/plug-ins/MapObject/mapobject_image.c @@ -5,6 +5,14 @@ /* mapobject_preview.c and mapobject_apply.c */ /*********************************************************/ +#include + +#include + +#include "mapobject_main.h" +#include "mapobject_preview.h" +#include "mapobject_shade.h" +#include "mapobject_ui.h" #include "mapobject_image.h" GDrawable *input_drawable,*output_drawable; @@ -16,12 +24,12 @@ GPixelRgn box_regions[6]; GDrawable *cylinder_drawables[2]; GPixelRgn cylinder_regions[2]; -guchar *preview_rgb_data = NULL; +guchar *preview_rgb_data = NULL; GdkImage *image = NULL; -glong maxcounter,old_depth,max_depth; -gint imgtype,width,height,in_channels,out_channels; -GckRGB background; +glong maxcounter,old_depth,max_depth; +gint imgtype,width,height,in_channels,out_channels; +GckRGB background; gdouble oldtreshold; gint border_x1,border_y1,border_x2,border_y2; @@ -30,7 +38,9 @@ gint border_x1,border_y1,border_x2,border_y2; /* Implementation */ /******************/ -GckRGB peek(gint x,gint y) +GckRGB +peek (gint x, + gint y) { static guchar data[4]; GckRGB color; @@ -54,7 +64,10 @@ GckRGB peek(gint x,gint y) return(color); } -GckRGB peek_box_image(gint image, gint x,gint y) +static GckRGB +peek_box_image (gint image, + gint x, + gint y) { static guchar data[4]; GckRGB color; @@ -78,7 +91,10 @@ GckRGB peek_box_image(gint image, gint x,gint y) return(color); } -GckRGB peek_cylinder_image(gint image, gint x,gint y) +static GckRGB +peek_cylinder_image (gint image, + gint x, + gint y) { static guchar data[4]; GckRGB color; @@ -102,7 +118,10 @@ GckRGB peek_cylinder_image(gint image, gint x,gint y) return(color); } -void poke(gint x,gint y,GckRGB *color) +void +poke (gint x, + gint y, + GckRGB *color) { static guchar data[4]; @@ -114,7 +133,9 @@ void poke(gint x,gint y,GckRGB *color) gimp_pixel_rgn_set_pixel(&dest_region,data,x,y); } -gint checkbounds(gint x,gint y) +gint +checkbounds (gint x, + gint y) { if (x=border_x2 || y>=border_y2) return(FALSE); @@ -122,7 +143,10 @@ gint checkbounds(gint x,gint y) return(TRUE); } -gint checkbounds_box_image(gint image, gint x,gint y) +static gint +checkbounds_box_image (gint image, + gint x, + gint y) { gint w,h; @@ -135,7 +159,10 @@ gint checkbounds_box_image(gint image, gint x,gint y) return(TRUE); } -gint checkbounds_cylinder_image(gint image, gint x,gint y) +static gint +checkbounds_cylinder_image (gint image, + gint x, + gint y) { gint w,h; @@ -148,7 +175,9 @@ gint checkbounds_cylinder_image(gint image, gint x,gint y) return(TRUE); } -GimpVector3 int_to_pos(gint x,gint y) +GimpVector3 +int_to_pos (gint x, + gint y) { GimpVector3 pos; @@ -159,7 +188,11 @@ GimpVector3 int_to_pos(gint x,gint y) return(pos); } -void pos_to_int(gdouble x,gdouble y,gint *scr_x,gint *scr_y) +void +pos_to_int (gdouble x, + gdouble y, + gint *scr_x, + gint *scr_y) { *scr_x=(gint)((x*(gdouble)width)); *scr_y=(gint)((y*(gdouble)height)); @@ -170,7 +203,10 @@ void pos_to_int(gdouble x,gdouble y,gint *scr_x,gint *scr_y) /* Quartics bilinear interpolation stuff. */ /**********************************************/ -GckRGB get_image_color(gdouble u,gdouble v,gint *inside) +GckRGB +get_image_color (gdouble u, + gdouble v, + gint *inside) { gint x1, y1, x2, y2; GckRGB p[4]; @@ -219,7 +255,10 @@ GckRGB get_image_color(gdouble u,gdouble v,gint *inside) return(gck_bilinear_rgba(u * width, v * height, p)); } -GckRGB get_box_image_color(gint image,gdouble u,gdouble v) +GckRGB +get_box_image_color (gint image, + gdouble u, + gdouble v) { gint w,h, x1, y1, x2, y2; GckRGB p[4]; @@ -247,7 +286,10 @@ GckRGB get_box_image_color(gint image,gdouble u,gdouble v) return(gck_bilinear_rgba(u*w, v*h, p)); } -GckRGB get_cylinder_image_color(gint image,gdouble u,gdouble v) +GckRGB +get_cylinder_image_color (gint image, + gdouble u, + gdouble v) { gint w,h, x1, y1, x2, y2; GckRGB p[4]; @@ -279,15 +321,17 @@ GckRGB get_cylinder_image_color(gint image,gdouble u,gdouble v) /* Allocate memory for temporary images */ /****************************************/ -gint image_setup(GDrawable *drawable,gint interactive) +gint +image_setup (GDrawable *drawable, + gint interactive) { glong numbytes; /* Set the tile cache size */ /* ======================= */ - gimp_tile_cache_ntiles((drawable->width + gimp_tile_width() - 1) / - gimp_tile_width()); + gimp_tile_cache_ntiles ((drawable->width + gimp_tile_width() - 1) / + gimp_tile_width()); /* Get some useful info on the input drawable */ /* ========================================== */ @@ -295,12 +339,14 @@ gint image_setup(GDrawable *drawable,gint interactive) input_drawable=drawable; output_drawable=drawable; - gimp_drawable_mask_bounds (drawable->id, &border_x1, &border_y1, &border_x2, &border_y2); + gimp_drawable_mask_bounds (drawable->id, + &border_x1, &border_y1, &border_x2, &border_y2); width=input_drawable->width; height=input_drawable->height; - gimp_pixel_rgn_init (&source_region, input_drawable, 0, 0, width, height, FALSE, FALSE); + gimp_pixel_rgn_init (&source_region, input_drawable, + 0, 0, width, height, FALSE, FALSE); maxcounter=(glong)width*(glong)height; @@ -318,11 +364,12 @@ gint image_setup(GDrawable *drawable,gint interactive) numbytes=PREVIEW_HEIGHT*PREVIEW_WIDTH*3; - image=gdk_image_new(GDK_IMAGE_FASTEST,visinfo->visual,PREVIEW_WIDTH,PREVIEW_HEIGHT); + image=gdk_image_new(GDK_IMAGE_FASTEST,visinfo->visual, + PREVIEW_WIDTH,PREVIEW_HEIGHT); if (image==NULL) return(FALSE); - preview_rgb_data=(guchar *)malloc((size_t)numbytes); + preview_rgb_data=(guchar *)g_malloc((size_t)numbytes); if (preview_rgb_data==NULL) return(FALSE); memset(preview_rgb_data,0,numbytes); @@ -330,9 +377,9 @@ gint image_setup(GDrawable *drawable,gint interactive) /* Convert from raw RGB to GdkImage */ /* ================================ */ - gck_rgb_to_gdkimage(visinfo,preview_rgb_data,image,PREVIEW_WIDTH,PREVIEW_HEIGHT); + gck_rgb_to_gdkimage(visinfo,preview_rgb_data,image, + PREVIEW_WIDTH,PREVIEW_HEIGHT); } return(TRUE); } - diff --git a/plug-ins/MapObject/mapobject_image.h b/plug-ins/MapObject/mapobject_image.h index 181d4a8ea9..597342ccb4 100644 --- a/plug-ins/MapObject/mapobject_image.h +++ b/plug-ins/MapObject/mapobject_image.h @@ -1,19 +1,6 @@ #ifndef __MAPOBJECT_IMAGE_H__ #define __MAPOBJECT_IMAGE_H__ -#include -#include -#include - -#include - -#include - -#include "mapobject_main.h" -#include "mapobject_preview.h" -#include "mapobject_shade.h" -#include "mapobject_ui.h" - /* Externally visible variables */ /* ============================ */ @@ -41,34 +28,34 @@ extern GTile *current_in_tile, *current_out_tile; /* Externally visible functions */ /* ============================ */ -extern gint image_setup (GDrawable *drawable, - gint interactive); -extern glong in_xy_to_index (gint x, - gint y); -extern glong out_xy_to_index (gint x, - gint y); -extern gint checkbounds (gint x, - gint y); -extern GckRGB peek (gint x, - gint y); -extern void poke (gint x, - gint y, - GckRGB *color); +extern gint image_setup (GDrawable *drawable, + gint interactive); +extern glong in_xy_to_index (gint x, + gint y); +extern glong out_xy_to_index (gint x, + gint y); +extern gint checkbounds (gint x, + gint y); +extern GckRGB peek (gint x, + gint y); +extern void poke (gint x, + gint y, + GckRGB *color); extern GimpVector3 int_to_pos (gint x, gint y); -extern void pos_to_int (gdouble x, - gdouble y, - gint *scr_x, - gint *scr_y); +extern void pos_to_int (gdouble x, + gdouble y, + gint *scr_x, + gint *scr_y); -extern GckRGB get_image_color (gdouble u, - gdouble v, - gint *inside); -extern GckRGB get_box_image_color (gint image, - gdouble u, - gdouble v); -extern GckRGB get_cylinder_image_color (gint image, - gdouble u, - gdouble v); +extern GckRGB get_image_color (gdouble u, + gdouble v, + gint *inside); +extern GckRGB get_box_image_color (gint image, + gdouble u, + gdouble v); +extern GckRGB get_cylinder_image_color (gint image, + gdouble u, + gdouble v); #endif /* __MAPOBJECT_IMAGE_H__ */ diff --git a/plug-ins/MapObject/mapobject_main.c b/plug-ins/MapObject/mapobject_main.c index 41e69d8dff..fea4f2fc27 100644 --- a/plug-ins/MapObject/mapobject_main.c +++ b/plug-ins/MapObject/mapobject_main.c @@ -1,29 +1,43 @@ -/*********************************************************************************/ -/* MapObject 1.2.0 -- image filter plug-in for The Gimp program */ -/* Copyright (C) 1996-98 Tom Bech */ -/* Copyright (C) 1996-98 Federico Mena Quintero */ -/*===============================================================================*/ -/* E-mail: tomb@gimp.org (Tom) or quartic@gimp.org (Federico) */ -/* You can contact the original The Gimp authors at gimp@xcf.berkeley.edu */ -/*===============================================================================*/ -/* This program is free software; you can redistribute it and/or modify it under */ -/* the terms of the GNU General Public License as published by the Free Software */ -/* Foundation; either version 2 of the License, or (at your option) any later */ -/* version. */ -/*===============================================================================*/ -/* This program is distributed in the hope that it will be useful, but WITHOUT */ -/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS */ -/* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.*/ -/*===============================================================================*/ -/* You should have received a copy of the GNU General Public License along with */ -/* this program (read the "COPYING" file); if not, write to the Free Software */ -/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/*===============================================================================*/ -/* In other words, you can't sue us for whatever happens while using this ;) */ -/*********************************************************************************/ +/* MapObject 1.2.0 -- image filter plug-in for The Gimp program + * + * Copyright (C) 1996-98 Tom Bech + * Copyright (C) 1996-98 Federico Mena Quintero + * + * E-mail: tomb@gimp.org (Tom) or quartic@gimp.org (Federico) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +#include + +#include + +#include +#include + +#include "arcball.h" +#include "mapobject_ui.h" +#include "mapobject_image.h" +#include "mapobject_apply.h" +#include "mapobject_preview.h" #include "mapobject_main.h" +#include "config.h" +#include "libgimp/stdplugins-intl.h" + + /* Global variables */ /* ================ */ diff --git a/plug-ins/MapObject/mapobject_main.h b/plug-ins/MapObject/mapobject_main.h index ec4831f557..f2055fafb7 100644 --- a/plug-ins/MapObject/mapobject_main.h +++ b/plug-ins/MapObject/mapobject_main.h @@ -1,25 +1,6 @@ #ifndef __MAPOBJECT_MAIN_H__ #define __MAPOBJECT_MAIN_H__ -#include -#include - -#include - -#include - -#include -#include - -#include "arcball.h" -#include "mapobject_ui.h" -#include "mapobject_image.h" -#include "mapobject_apply.h" -#include "mapobject_preview.h" - -#include "config.h" -#include "libgimp/stdplugins-intl.h" - /* Defines and stuff */ /* ================= */ diff --git a/plug-ins/MapObject/mapobject_preview.c b/plug-ins/MapObject/mapobject_preview.c index 51e9a4e405..044e391ba5 100644 --- a/plug-ins/MapObject/mapobject_preview.c +++ b/plug-ins/MapObject/mapobject_preview.c @@ -2,31 +2,61 @@ /* Compute a preview image and preview wireframe */ /*************************************************/ +#include + +#include + +#include + +#include "arcball.h" +#include "mapobject_main.h" +#include "mapobject_ui.h" +#include "mapobject_image.h" +#include "mapobject_apply.h" +#include "mapobject_shade.h" #include "mapobject_preview.h" line linetab[WIRESIZE*2+8]; gdouble mat[3][4]; -gint lightx,lighty; +gint lightx,lighty; BackBuffer backbuf={0,0,0,0,NULL}; /* Protos */ /* ====== */ -void update_light (gint xpos,gint ypos); -void draw_light_marker (gint xpos,gint ypos); -void clear_light_marker (void); +static void draw_light_marker (gint xpos, + gint ypos); +static void clear_light_marker (void); -gint draw_line (gint n, gint startx,gint starty,gint pw,gint ph, - gdouble cx1, gdouble cy1, gdouble cx2, gdouble cy2, - GimpVector3 a,GimpVector3 b); +static gint draw_line (gint n, + gint startx, + gint starty, + gint pw, + gint ph, + gdouble cx1, + gdouble cy1, + gdouble cx2, + gdouble cy2, + GimpVector3 a, + GimpVector3 b); -void draw_wireframe_plane (gint startx,gint starty,gint pw,gint ph); -void draw_wireframe_sphere (gint startx,gint starty,gint pw,gint ph); -void draw_wireframe_box (gint startx,gint starty,gint pw,gint ph); -void draw_wireframe_cylinder (gint startx,gint starty,gint pw,gint ph); - -void clear_wireframe (void); +static void draw_wireframe_plane (gint startx, + gint starty, + gint pw, + gint ph); +static void draw_wireframe_sphere (gint startx, + gint starty, + gint pw, + gint ph); +static void draw_wireframe_box (gint startx, + gint starty, + gint pw, + gint ph); +static void draw_wireframe_cylinder (gint startx, + gint starty, + gint pw, + gint ph); /*************************************************/ /* Quick and dirty (and slow) line clip routine. */ @@ -118,7 +148,13 @@ clip_line (gdouble *x1, /* dimensions (w,h), placing the result in preview_RGB_data. */ /**************************************************************/ -void compute_preview(gint x,gint y,gint w,gint h,gint pw,gint ph) +void +compute_preview (gint x, + gint y, + gint w, + gint h, + gint pw, + gint ph) { gdouble xpostab[PREVIEW_WIDTH],ypostab[PREVIEW_HEIGHT],realw,realh; GimpVector3 p1,p2; @@ -221,7 +257,9 @@ void compute_preview(gint x,gint y,gint w,gint h,gint pw,gint ph) /* light marker. Return TRUE if so, FALSE if not */ /*************************************************/ -gint check_light_hit(gint xpos,gint ypos) +gint +check_light_hit (gint xpos, + gint ypos) { gdouble dx,dy,r; @@ -243,7 +281,9 @@ gint check_light_hit(gint xpos,gint ypos) /* Draw a marker to show light position */ /****************************************/ -void draw_light_marker(gint xpos,gint ypos) +static void +draw_light_marker (gint xpos, + gint ypos) { gck_gc_set_foreground(visinfo,gc,0,50,255); gck_gc_set_background(visinfo,gc,0,0,0); @@ -281,7 +321,8 @@ void draw_light_marker(gint xpos,gint ypos) } } -void clear_light_marker() +static void +clear_light_marker (void) { /* Restore background if it has been saved */ /* ======================================= */ @@ -299,7 +340,11 @@ void clear_light_marker() } } -void draw_lights(gint startx,gint starty,gint pw,gint ph) +static void +draw_lights (gint startx, + gint starty, + gint pw, + gint ph) { gdouble dxpos,dypos; gint xpos,ypos; @@ -319,7 +364,9 @@ void draw_lights(gint startx,gint starty,gint pw,gint ph) /* Update light position given new screen coords */ /*************************************************/ -void update_light(gint xpos,gint ypos) +void +update_light (gint xpos, + gint ypos) { gint startx,starty,pw,ph; @@ -382,7 +429,8 @@ draw_preview_image (gint docompute) /* Draw preview wireframe */ /**************************/ -void draw_preview_wireframe(void) +void +draw_preview_wireframe (void) { gint startx,starty,pw,ph; @@ -404,26 +452,34 @@ void draw_preview_wireframe(void) /* Draw a wireframe preview */ /****************************/ -void draw_wireframe(gint startx,gint starty,gint pw,gint ph) +void +draw_wireframe (gint startx, + gint starty, + gint pw, + gint ph) { switch (mapvals.maptype) { - case MAP_PLANE: - draw_wireframe_plane(startx,starty,pw,ph); - break; - case MAP_SPHERE: - draw_wireframe_sphere(startx,starty,pw,ph); - break; - case MAP_BOX: - draw_wireframe_box(startx,starty,pw,ph); - break; - case MAP_CYLINDER: - draw_wireframe_cylinder(startx,starty,pw,ph); - break; + case MAP_PLANE: + draw_wireframe_plane(startx,starty,pw,ph); + break; + case MAP_SPHERE: + draw_wireframe_sphere(startx,starty,pw,ph); + break; + case MAP_BOX: + draw_wireframe_box(startx,starty,pw,ph); + break; + case MAP_CYLINDER: + draw_wireframe_cylinder(startx,starty,pw,ph); + break; } } -void draw_wireframe_plane(gint startx,gint starty,gint pw,gint ph) +static void +draw_wireframe_plane (gint startx, + gint starty, + gint pw, + gint ph) { GimpVector3 v1,v2,a,b,c,d,dir1,dir2; gint cnt,n=0; @@ -507,7 +563,11 @@ void draw_wireframe_plane(gint startx,gint starty,gint pw,gint ph) linetab[n].x1=-1; } -void draw_wireframe_sphere(gint startx,gint starty,gint pw,gint ph) +static void +draw_wireframe_sphere (gint startx, + gint starty, + gint pw, + gint ph) { GimpVector3 p[2*(WIRESIZE+5)]; gint cnt,cnt2,n=0; @@ -630,9 +690,18 @@ void draw_wireframe_sphere(gint startx,gint starty,gint pw,gint ph) linetab[n].x1=-1; } -gint draw_line(gint n, gint startx,gint starty,gint pw,gint ph, - gdouble cx1, gdouble cy1, gdouble cx2, gdouble cy2, - GimpVector3 a,GimpVector3 b) +static gint +draw_line (gint n, + gint startx, + gint starty, + gint pw, + gint ph, + gdouble cx1, + gdouble cy1, + gdouble cx2, + gdouble cy2, + GimpVector3 a, + GimpVector3 b) { gdouble x1,y1,x2,y2; gint i = n; @@ -658,7 +727,11 @@ gint draw_line(gint n, gint startx,gint starty,gint pw,gint ph, return(i); } -void draw_wireframe_box(gint startx,gint starty,gint pw,gint ph) +static void +draw_wireframe_box (gint startx, + gint starty, + gint pw, + gint ph) { GimpVector3 p[8], tmp, scale; gint n=0,i; @@ -720,7 +793,11 @@ void draw_wireframe_box(gint startx,gint starty,gint pw,gint ph) linetab[n].x1=-1; } -void draw_wireframe_cylinder(gint startx,gint starty,gint pw,gint ph) +static void +draw_wireframe_cylinder (gint startx, + gint starty, + gint pw, + gint ph) { GimpVector3 p[2*8], a, axis, scale; gint n=0,i; @@ -789,7 +866,8 @@ void draw_wireframe_cylinder(gint startx,gint starty,gint pw,gint ph) linetab[n].x1=-1; } -void clear_wireframe(void) +void +clear_wireframe (void) { gint n=0; diff --git a/plug-ins/MapObject/mapobject_preview.h b/plug-ins/MapObject/mapobject_preview.h index 16ab8242b2..dfb9254349 100644 --- a/plug-ins/MapObject/mapobject_preview.h +++ b/plug-ins/MapObject/mapobject_preview.h @@ -1,20 +1,5 @@ -#ifndef MAPOBJECTPREVIEWH -#define MAPOBJECTPREVIEWH - -#include -#include -#include -#include -#include -#include -#include - -#include "arcball.h" -#include "mapobject_main.h" -#include "mapobject_ui.h" -#include "mapobject_image.h" -#include "mapobject_apply.h" -#include "mapobject_shade.h" +#ifndef __MAPOBJECT_PREVIEW_H__ +#define __MAPOBJECT_PREVIEW_H__ #define PREVIEW_WIDTH 200 #define PREVIEW_HEIGHT 200 @@ -23,14 +8,14 @@ typedef struct { - gint x1,y1,x2,y2; - gint linewidth; + gint x1, y1, x2, y2; + gint linewidth; GdkLineStyle linestyle; } line; typedef struct { - gint x,y,w,h; + gint x, y, w, h; GdkImage *image; } BackBuffer; @@ -45,12 +30,22 @@ extern BackBuffer backbuf; /* Externally visible functions */ /* ============================ */ -extern void compute_preview (gint x,gint y,gint w,gint h,gint pw,gint ph); -extern void draw_wireframe (gint startx,gint starty,gint pw,gint ph); -extern void clear_wireframe (void); -extern void draw_preview_image (gint docompute); -extern void draw_preview_wireframe (void); -extern gint check_light_hit (gint xpos,gint ypos); -extern void update_light (gint xpos,gint ypos); +void compute_preview (gint x, + gint y, + gint w, + gint h, + gint pw, + gint ph); +void draw_wireframe (gint startx, + gint starty, + gint pw, + gint ph); +void clear_wireframe (void); +void draw_preview_image (gint docompute); +void draw_preview_wireframe (void); +gint check_light_hit (gint xpos, + gint ypos); +void update_light (gint xpos, + gint ypos); -#endif +#endif /* __MAPOBJECT_PREVIEW_H__ */ diff --git a/plug-ins/MapObject/mapobject_shade.c b/plug-ins/MapObject/mapobject_shade.c index 7abeafdd40..5a72dea1c7 100644 --- a/plug-ins/MapObject/mapobject_shade.c +++ b/plug-ins/MapObject/mapobject_shade.c @@ -2,183 +2,222 @@ /* Shading stuff */ /*****************/ +#include + +#include + +#include "mapobject_apply.h" +#include "mapobject_main.h" +#include "mapobject_image.h" #include "mapobject_shade.h" -gdouble bx1,by1,bx2,by2; +gdouble bx1, by1, bx2, by2; get_ray_color_func get_ray_color; -typedef struct { - gdouble u,v; - gdouble t; +typedef struct +{ + gdouble u, v; + gdouble t; GimpVector3 s; GimpVector3 n; - gint face; + gint face; } FaceIntersectInfo; /*****************/ /* Phong shading */ /*****************/ -GckRGB phong_shade(GimpVector3 *pos,GimpVector3 *viewpoint,GimpVector3 *normal,GimpVector3 *light, - GckRGB *diff_col,GckRGB *spec_col,gint type) +static GckRGB +phong_shade (GimpVector3 *pos, + GimpVector3 *viewpoint, + GimpVector3 *normal, + GimpVector3 *light, + GckRGB *diff_col, + GckRGB *spec_col, + gint type) { - GckRGB ambientcolor,diffusecolor,specularcolor; - gdouble NL,RV,dist; - GimpVector3 L,NN,V,N; + GckRGB ambientcolor, diffusecolor, specularcolor; + gdouble NL, RV, dist; + GimpVector3 L, NN, V, N; /* Compute ambient intensity */ /* ========================= */ - N=*normal; - ambientcolor=*diff_col; - gck_rgb_mul(&ambientcolor,mapvals.material.ambient_int); + N = *normal; + ambientcolor = *diff_col; + gck_rgb_mul (&ambientcolor, mapvals.material.ambient_int); /* Compute (N*L) term of Phong's equation */ /* ====================================== */ - if (type==POINT_LIGHT) - gimp_vector3_sub(&L,light,pos); + if (type == POINT_LIGHT) + gimp_vector3_sub (&L, light, pos); else - L=*light; + L = *light; - dist=gimp_vector3_length(&L); + dist = gimp_vector3_length (&L); - if (dist!=0.0) - gimp_vector3_mul(&L,1.0/dist); + if (dist != 0.0) + gimp_vector3_mul (&L, 1.0 / dist); - NL=2.0*gimp_vector3_inner_product(&N,&L); + NL = 2.0 * gimp_vector3_inner_product (&N, &L); - if (NL>=0.0) + if (NL >= 0.0) { /* Compute (R*V)^alpha term of Phong's equation */ /* ============================================ */ - gimp_vector3_sub(&V,viewpoint,pos); - gimp_vector3_normalize(&V); + gimp_vector3_sub (&V, viewpoint, pos); + gimp_vector3_normalize (&V); - gimp_vector3_mul(&N,NL); - gimp_vector3_sub(&NN,&N,&L); - RV=gimp_vector3_inner_product(&NN,&V); - RV=pow(RV,mapvals.material.highlight); + gimp_vector3_mul (&N, NL); + gimp_vector3_sub (&NN, &N, &L); + RV = gimp_vector3_inner_product (&NN, &V); + RV = pow (RV, mapvals.material.highlight); /* Compute diffuse and specular intensity contribution */ /* =================================================== */ - diffusecolor=*diff_col; - gck_rgb_mul(&diffusecolor,mapvals.material.diffuse_ref); - gck_rgb_mul(&diffusecolor,NL); + diffusecolor = *diff_col; + gck_rgb_mul (&diffusecolor, mapvals.material.diffuse_ref); + gck_rgb_mul (&diffusecolor, NL); - specularcolor=*spec_col; - gck_rgb_mul(&specularcolor,mapvals.material.specular_ref); - gck_rgb_mul(&specularcolor,RV); + specularcolor = *spec_col; + gck_rgb_mul (&specularcolor, mapvals.material.specular_ref); + gck_rgb_mul (&specularcolor, RV); - gck_rgb_add(&diffusecolor,&specularcolor); - gck_rgb_mul(&diffusecolor,mapvals.material.diffuse_int); - gck_rgb_clamp(&diffusecolor); + gck_rgb_add (&diffusecolor, &specularcolor); + gck_rgb_mul (&diffusecolor, mapvals.material.diffuse_int); + gck_rgb_clamp (&diffusecolor); - gck_rgb_add(&ambientcolor,&diffusecolor); + gck_rgb_add (&ambientcolor, &diffusecolor); } - return(ambientcolor); + return ambientcolor; } -gint plane_intersect(GimpVector3 *dir,GimpVector3 *viewp,GimpVector3 *ipos,gdouble *u,gdouble *v) +static gint +plane_intersect (GimpVector3 *dir, + GimpVector3 *viewp, + GimpVector3 *ipos, + gdouble *u, + gdouble *v) { - static gdouble det,det1,det2,det3,t; - - imat[0][0]=dir->x; imat[1][0]=dir->y; imat[2][0]=dir->z; + static gdouble det, det1, det2, det3, t; + + imat[0][0] = dir->x; + imat[1][0] = dir->y; + imat[2][0] = dir->z; /* Compute determinant of the first 3x3 sub matrix (denominator) */ /* ============================================================= */ - det=imat[0][0]*imat[1][1]*imat[2][2]+imat[0][1]*imat[1][2]*imat[2][0]+ - imat[0][2]*imat[1][0]*imat[2][1]-imat[0][2]*imat[1][1]*imat[2][0]- - imat[0][0]*imat[1][2]*imat[2][1]-imat[2][2]*imat[0][1]*imat[1][0]; + det = (imat[0][0] * imat[1][1] * imat[2][2] + + imat[0][1] * imat[1][2] * imat[2][0] + + imat[0][2] * imat[1][0] * imat[2][1] - + imat[0][2] * imat[1][1] * imat[2][0] - + imat[0][0] * imat[1][2] * imat[2][1] - + imat[2][2] * imat[0][1] * imat[1][0]); /* If the determinant is non-zero, a intersection point exists */ /* =========================================================== */ - if (det!=0.0) + if (det != 0.0) { /* Now, lets compute the numerator determinants (wow ;) */ /* ==================================================== */ - - det1=imat[0][3]*imat[1][1]*imat[2][2]+imat[0][1]*imat[1][2]*imat[2][3]+ - imat[0][2]*imat[1][3]*imat[2][1]-imat[0][2]*imat[1][1]*imat[2][3]- - imat[1][2]*imat[2][1]*imat[0][3]-imat[2][2]*imat[0][1]*imat[1][3]; + + det1 = (imat[0][3] * imat[1][1] * imat[2][2] + + imat[0][1] * imat[1][2] * imat[2][3] + + imat[0][2] * imat[1][3] * imat[2][1] - + imat[0][2] * imat[1][1] * imat[2][3] - + imat[1][2] * imat[2][1] * imat[0][3] - + imat[2][2] * imat[0][1] * imat[1][3]); - det2=imat[0][0]*imat[1][3]*imat[2][2]+imat[0][3]*imat[1][2]*imat[2][0]+ - imat[0][2]*imat[1][0]*imat[2][3]-imat[0][2]*imat[1][3]*imat[2][0]- - imat[1][2]*imat[2][3]*imat[0][0]-imat[2][2]*imat[0][3]*imat[1][0]; + det2 = (imat[0][0] * imat[1][3] * imat[2][2] + + imat[0][3] * imat[1][2] * imat[2][0] + + imat[0][2] * imat[1][0] * imat[2][3] - + imat[0][2] * imat[1][3] * imat[2][0] - + imat[1][2] * imat[2][3] * imat[0][0] - + imat[2][2] * imat[0][3] * imat[1][0]); - det3=imat[0][0]*imat[1][1]*imat[2][3]+imat[0][1]*imat[1][3]*imat[2][0]+ - imat[0][3]*imat[1][0]*imat[2][1]-imat[0][3]*imat[1][1]*imat[2][0]- - imat[1][3]*imat[2][1]*imat[0][0]-imat[2][3]*imat[0][1]*imat[1][0]; + det3 = (imat[0][0] * imat[1][1] * imat[2][3] + + imat[0][1] * imat[1][3] * imat[2][0] + + imat[0][3] * imat[1][0] * imat[2][1] - + imat[0][3] * imat[1][1] * imat[2][0] - + imat[1][3] * imat[2][1] * imat[0][0] - + imat[2][3] * imat[0][1] * imat[1][0]); /* Now we have the simultanous solutions. Lets compute the unknowns */ /* (skip u&v if t is <0, this means the intersection is behind us) */ /* ================================================================ */ - t=det1/det; + t = det1 / det; - if (t>0.0) + if (t > 0.0) { - *u=1.0+((det2/det)-0.5); - *v=1.0+((det3/det)-0.5); + *u = 1.0 + ((det2 / det) - 0.5); + *v = 1.0 + ((det3 / det) - 0.5); - ipos->x=viewp->x+t*dir->x; - ipos->y=viewp->y+t*dir->y; - ipos->z=viewp->z+t*dir->z; - - return(TRUE); + ipos->x = viewp->x + t * dir->x; + ipos->y = viewp->y + t * dir->y; + ipos->z = viewp->z + t * dir->z; + + return TRUE; } } - return(FALSE); + return FALSE; } -/**********************************************************************************/ -/* These routines computes the color of the surface of the plane at a given point */ -/**********************************************************************************/ +/***************************************************************************** + * These routines computes the color of the surface + * of the plane at a given point + *****************************************************************************/ -GckRGB get_ray_color_plane(GimpVector3 *pos) +GckRGB +get_ray_color_plane (GimpVector3 *pos) { - GckRGB color=background; - static gint inside=FALSE; - static GimpVector3 ray,spos; - static gdouble vx,vy; + GckRGB color = background; + static gint inside = FALSE; + static GimpVector3 ray, spos; + static gdouble vx, vy; /* Construct a line from our VP to the point */ /* ========================================= */ - gimp_vector3_sub(&ray,pos,&mapvals.viewpoint); - gimp_vector3_normalize(&ray); + gimp_vector3_sub (&ray, pos, &mapvals.viewpoint); + gimp_vector3_normalize (&ray); /* Check for intersection. This is a quasi ray-tracer. */ /* =================================================== */ - if (plane_intersect(&ray,&mapvals.viewpoint,&spos,&vx,&vy)==TRUE) + if (plane_intersect (&ray, &mapvals.viewpoint, &spos, &vx, &vy) == TRUE) { - color=get_image_color(vx,vy,&inside); + color = get_image_color (vx, vy, &inside); - if (color.a!=0.0 && inside==TRUE && mapvals.lightsource.type!=NO_LIGHT) + if (color.a!=0.0 && inside == TRUE && + mapvals.lightsource.type != NO_LIGHT) { /* Compute shading at this point */ /* ============================= */ - color=phong_shade(&spos,&mapvals.viewpoint,&mapvals.normal, - &mapvals.lightsource.position,&color, - &mapvals.lightsource.color,mapvals.lightsource.type); + color = phong_shade (&spos, + &mapvals.viewpoint, + &mapvals.normal, + &mapvals.lightsource.position, + &color, + &mapvals.lightsource.color, + mapvals.lightsource.type); - gck_rgb_clamp(&color); + gck_rgb_clamp (&color); } } + + if (color.a == 0.0) + color = background; - - if (color.a==0.0) - color=background; - - return(color); + return color; } /***********************************************************************/ @@ -186,34 +225,37 @@ GckRGB get_ray_color_plane(GimpVector3 *pos) /* the conversion from spherical oordinates to image space coordinates */ /***********************************************************************/ -void sphere_to_image(GimpVector3 *normal,gdouble *u,gdouble *v) +static void +sphere_to_image (GimpVector3 *normal, + gdouble *u, + gdouble *v) { - static gdouble alpha,fac; + static gdouble alpha, fac; static GimpVector3 cross_prod; - alpha=acos(-gimp_vector3_inner_product(&mapvals.secondaxis,normal)); + alpha = acos (-gimp_vector3_inner_product (&mapvals.secondaxis, normal)); - *v=alpha/G_PI; + *v = alpha / G_PI; - if (*v==0.0 || *v==1.0) *u=0.0; + if (*v == 0.0 || *v == 1.0) + *u = 0.0; else { - fac=gimp_vector3_inner_product(&mapvals.firstaxis,normal)/sin(alpha); + fac = (gimp_vector3_inner_product (&mapvals.firstaxis, normal) / + sin (alpha)); /* Make sure that we map to -1.0..1.0 (take care of rounding errors) */ /* ================================================================= */ - if (fac>1.0) - fac=1.0; - else if (fac<-1.0) - fac=-1.0; + fac = CLAMP (fac, -1.0, 1.0); - *u=acos(fac)/(2.0*G_PI); - - cross_prod=gimp_vector3_cross_product(&mapvals.secondaxis,&mapvals.firstaxis); - - if (gimp_vector3_inner_product(&cross_prod,normal)<0.0) - *u=1.0-*u; + *u = acos (fac) / (2.0 * G_PI); + + cross_prod = gimp_vector3_cross_product (&mapvals.secondaxis, + &mapvals.firstaxis); + + if (gimp_vector3_inner_product (&cross_prod, normal) < 0.0) + *u = 1.0 - *u; } } @@ -221,49 +263,55 @@ void sphere_to_image(GimpVector3 *normal,gdouble *u,gdouble *v) /* Compute intersection point with sphere (if any) */ /***************************************************/ -gint sphere_intersect(GimpVector3 *dir,GimpVector3 *viewp,GimpVector3 *spos1,GimpVector3 *spos2) +static gint +sphere_intersect (GimpVector3 *dir, + GimpVector3 *viewp, + GimpVector3 *spos1, + GimpVector3 *spos2) { - static gdouble alpha,beta,tau,s1,s2,tmp; + static gdouble alpha, beta, tau, s1, s2, tmp; static GimpVector3 t; - gimp_vector3_sub(&t,&mapvals.position,viewp); + gimp_vector3_sub (&t, &mapvals.position, viewp); - alpha=gimp_vector3_inner_product(dir,&t); - beta=gimp_vector3_inner_product(&t,&t); + alpha = gimp_vector3_inner_product (dir, &t); + beta = gimp_vector3_inner_product (&t, &t); - tau=alpha*alpha-beta+mapvals.radius*mapvals.radius; + tau = alpha * alpha - beta + mapvals.radius * mapvals.radius; - if (tau>=0.0) + if (tau >= 0.0) { - tau=sqrt(tau); - s1=alpha+tau; - s2=alpha-tau; + tau = sqrt (tau); + s1 = alpha + tau; + s2 = alpha - tau; - if (s2x=viewp->x+s1*dir->x; - spos1->y=viewp->y+s1*dir->y; - spos1->z=viewp->z+s1*dir->z; - spos2->x=viewp->x+s2*dir->x; - spos2->y=viewp->y+s2*dir->y; - spos2->z=viewp->z+s2*dir->z; - - return(TRUE); + spos1->x = viewp->x + s1 * dir->x; + spos1->y = viewp->y + s1 * dir->y; + spos1->z = viewp->z + s1 * dir->z; + spos2->x = viewp->x + s2 * dir->x; + spos2->y = viewp->y + s2 * dir->y; + spos2->z = viewp->z + s2 * dir->z; + + return TRUE ; } - return(FALSE); + return FALSE; } -/***********************************************************************************/ -/* These routines computes the color of the surface of the sphere at a given point */ -/***********************************************************************************/ +/***************************************************************************** + * These routines computes the color of the surface + * of the sphere at a given point + *****************************************************************************/ -GckRGB get_ray_color_sphere(GimpVector3 *pos) +GckRGB +get_ray_color_sphere (GimpVector3 *pos) { GckRGB color=background; static GckRGB color2; @@ -280,62 +328,62 @@ GckRGB get_ray_color_sphere(GimpVector3 *pos) /* Construct a line from our VP to the point */ /* ========================================= */ - gimp_vector3_sub(&ray,pos,&mapvals.viewpoint); - gimp_vector3_normalize(&ray); + gimp_vector3_sub (&ray, pos, &mapvals.viewpoint); + gimp_vector3_normalize (&ray); /* Check for intersection. This is a quasi ray-tracer. */ /* =================================================== */ - if (sphere_intersect(&ray,&mapvals.viewpoint,&spos1,&spos2)==TRUE) + if (sphere_intersect (&ray, &mapvals.viewpoint, &spos1, &spos2) == TRUE) { /* Compute spherical to rectangular mapping */ /* ======================================== */ - - gimp_vector3_sub(&normal,&spos1,&mapvals.position); - gimp_vector3_normalize(&normal); - sphere_to_image(&normal,&vx,&vy); - color=get_image_color(vx,vy,&inside); + + gimp_vector3_sub (&normal, &spos1, &mapvals.position); + gimp_vector3_normalize (&normal); + sphere_to_image (&normal, &vx, &vy); + color=get_image_color (vx, vy, &inside); /* Check for total transparency... */ /* =============================== */ - if (color.a<1.0) + if (color.a < 1.0) { /* Hey, we can see through here! */ /* Lets see what's on the other side.. */ /* =================================== */ - - color=phong_shade(&spos1, - &mapvals.viewpoint, - &normal, - &mapvals.lightsource.position, - &color, - &mapvals.lightsource.color, - mapvals.lightsource.type); - gck_rgba_clamp(&color); + color = phong_shade (&spos1, + &mapvals.viewpoint, + &normal, + &mapvals.lightsource.position, + &color, + &mapvals.lightsource.color, + mapvals.lightsource.type); - gimp_vector3_sub(&normal,&spos2,&mapvals.position); - gimp_vector3_normalize(&normal); - sphere_to_image(&normal,&vx,&vy); - color2=get_image_color(vx,vy,&inside); + gck_rgba_clamp (&color); + + gimp_vector3_sub (&normal, &spos2, &mapvals.position); + gimp_vector3_normalize (&normal); + sphere_to_image (&normal, &vx, &vy); + color2 = get_image_color (vx, vy, &inside); /* Make the normal point inwards */ /* ============================= */ - gimp_vector3_mul(&normal,-1.0); + gimp_vector3_mul (&normal, -1.0); - color2=phong_shade(&spos2, - &mapvals.viewpoint, - &normal, - &mapvals.lightsource.position, - &color2, - &mapvals.lightsource.color, - mapvals.lightsource.type); + color2=phong_shade (&spos2, + &mapvals.viewpoint, + &normal, + &mapvals.lightsource.position, + &color2, + &mapvals.lightsource.color, + mapvals.lightsource.type); - gck_rgba_clamp(&color2); - - if (mapvals.transparent_background==FALSE && color2.a<1.0) + gck_rgba_clamp (&color2); + + if (mapvals.transparent_background == FALSE && color2.a < 1.0) { color2.r = (color2.r*color2.a)+(background.r*(1.0-color2.a)); color2.g = (color2.g*color2.a)+(background.g*(1.0-color2.a)); @@ -351,36 +399,39 @@ GckRGB get_ray_color_sphere(GimpVector3 *pos) color.b = color.b*color.a+(1.0-color.a)*color2.b; color.a = color.a+color2.a; - gck_rgba_clamp(&color); + gck_rgba_clamp (&color); } - else if (color.a!=0.0 && inside==TRUE && mapvals.lightsource.type!=NO_LIGHT) + else if (color.a!=0.0 && + inside==TRUE && + mapvals.lightsource.type!=NO_LIGHT) { /* Compute shading at this point */ /* ============================= */ - color=phong_shade(&spos1, - &mapvals.viewpoint, - &normal, - &mapvals.lightsource.position, - &color, - &mapvals.lightsource.color, - mapvals.lightsource.type); + color = phong_shade (&spos1, + &mapvals.viewpoint, + &normal, + &mapvals.lightsource.position, + &color, + &mapvals.lightsource.color, + mapvals.lightsource.type); - gck_rgba_clamp(&color); + gck_rgba_clamp (&color); } } - if (color.a==0.0) - color=background; + if (color.a == 0.0) + color = background; - return(color); + return color; } /***************************************************/ /* Transform the corners of the bounding box to 2D */ /***************************************************/ -void compute_bounding_box(void) +void +compute_bounding_box (void) { GimpVector3 p1,p2; gdouble t; @@ -394,8 +445,8 @@ void compute_bounding_box(void) p2.x+=(mapvals.radius+0.01); p2.y+=(mapvals.radius+0.01); - gimp_vector3_sub(&dir,&p1,&mapvals.viewpoint); - gimp_vector3_normalize(&dir); + gimp_vector3_sub (&dir, &p1, &mapvals.viewpoint); + gimp_vector3_normalize (&dir); if (dir.z!=0.0) { @@ -404,8 +455,8 @@ void compute_bounding_box(void) p1.y=(mapvals.viewpoint.y+t*dir.y); } - gimp_vector3_sub(&dir,&p2,&mapvals.viewpoint); - gimp_vector3_normalize(&dir); + gimp_vector3_sub (&dir, &p2, &mapvals.viewpoint); + gimp_vector3_normalize (&dir); if (dir.z!=0.0) { @@ -427,7 +478,10 @@ void compute_bounding_box(void) /* about the given axis. */ /* ============================================================ */ -void vecmulmat(GimpVector3 *u,GimpVector3 *v,gfloat m[16]) +void +vecmulmat (GimpVector3 *u, + GimpVector3 *v, + gfloat m[16]) { gfloat v0=v->x, v1=v->y, v2=v->z; #define M(row,col) m[col*4+row] @@ -437,7 +491,10 @@ void vecmulmat(GimpVector3 *u,GimpVector3 *v,gfloat m[16]) #undef M } -void rotatemat(gfloat angle,GimpVector3 *v,gfloat m[16]) +void +rotatemat (gfloat angle, + GimpVector3 *v, + gfloat m[16]) { /* This function contributed by Erich Boleyn (erich@uruk.org) */ gfloat mag, s, c; @@ -509,7 +566,8 @@ void rotatemat(gfloat angle,GimpVector3 *v,gfloat m[16]) /* this is equal to the inverse of the matrix. */ /* ==================================================================== */ -void transpose_mat(gfloat m[16]) +void +transpose_mat (gfloat m[16]) { gint i,j; gfloat t; @@ -528,7 +586,10 @@ void transpose_mat(gfloat m[16]) /* Compute the matrix product c=a*b */ /* ================================ */ -void matmul(gfloat a[16],gfloat b[16],gfloat c[16]) +void +matmul (gfloat a[16], + gfloat b[16], + gfloat c[16]) { gint i,j,k; gfloat value; @@ -554,7 +615,8 @@ void matmul(gfloat a[16],gfloat b[16],gfloat c[16]) #undef C } -void ident_mat(gfloat m[16]) +void +ident_mat (gfloat m[16]) { gint i,j; @@ -574,9 +636,13 @@ void ident_mat(gfloat m[16]) #undef M } -gboolean intersect_rect(gdouble u,gdouble v,gdouble w, - GimpVector3 viewp,GimpVector3 dir, - FaceIntersectInfo *face_info) +static gboolean +intersect_rect (gdouble u, + gdouble v, + gdouble w, + GimpVector3 viewp, + GimpVector3 dir, + FaceIntersectInfo *face_info) { gboolean result = FALSE; gdouble u2,v2; @@ -603,8 +669,11 @@ gboolean intersect_rect(gdouble u,gdouble v,gdouble w, return(result); } -gboolean intersect_box(GimpVector3 scale, GimpVector3 viewp, GimpVector3 dir, - FaceIntersectInfo *face_intersect) +static gboolean +intersect_box (GimpVector3 scale, + GimpVector3 viewp, + GimpVector3 dir, + FaceIntersectInfo *face_intersect) { GimpVector3 v,d,tmp,axis[3]; FaceIntersectInfo face_tmp; @@ -756,7 +825,8 @@ gboolean intersect_box(GimpVector3 scale, GimpVector3 viewp, GimpVector3 dir, return(result); } -GckRGB get_ray_color_box(GimpVector3 *pos) +GckRGB +get_ray_color_box (GimpVector3 *pos) { GimpVector3 lvp,ldir,vp,p,dir,ns,nn; GckRGB color, color2; @@ -837,14 +907,13 @@ GckRGB get_ray_color_box(GimpVector3 *pos) /* Lets see what's on the other side.. */ /* =================================== */ - color=phong_shade( - &face_intersect[0].s, - &mapvals.viewpoint, - &face_intersect[0].n, - &mapvals.lightsource.position, - &color, - &mapvals.lightsource.color, - mapvals.lightsource.type); + color = phong_shade (&face_intersect[0].s, + &mapvals.viewpoint, + &face_intersect[0].n, + &mapvals.lightsource.position, + &color, + &mapvals.lightsource.color, + mapvals.lightsource.type); gck_rgba_clamp(&color); @@ -856,14 +925,13 @@ GckRGB get_ray_color_box(GimpVector3 *pos) gimp_vector3_mul(&face_intersect[1].n,-1.0); - color2=phong_shade( - &face_intersect[1].s, - &mapvals.viewpoint, - &face_intersect[1].n, - &mapvals.lightsource.position, - &color2, - &mapvals.lightsource.color, - mapvals.lightsource.type); + color2 = phong_shade (&face_intersect[1].s, + &mapvals.viewpoint, + &face_intersect[1].n, + &mapvals.lightsource.position, + &color2, + &mapvals.lightsource.color, + mapvals.lightsource.type); gck_rgba_clamp(&color2); @@ -887,29 +955,31 @@ GckRGB get_ray_color_box(GimpVector3 *pos) } else if (color.a!=0.0 && mapvals.lightsource.type!=NO_LIGHT) { - color=phong_shade( - &face_intersect[0].s, - &mapvals.viewpoint, - &face_intersect[0].n, - &mapvals.lightsource.position, - &color, - &mapvals.lightsource.color, - mapvals.lightsource.type); + color = phong_shade (&face_intersect[0].s, + &mapvals.viewpoint, + &face_intersect[0].n, + &mapvals.lightsource.position, + &color, + &mapvals.lightsource.color, + mapvals.lightsource.type); - gck_rgba_clamp(&color); + gck_rgba_clamp (&color); } } else { - if (mapvals.transparent_background==TRUE) + if (mapvals.transparent_background == TRUE) color.a = 0.0; } - - return(color); + + return color; } -gboolean intersect_circle(GimpVector3 vp,GimpVector3 dir,gdouble w, - FaceIntersectInfo *face_info) +static gboolean +intersect_circle (GimpVector3 vp, + GimpVector3 dir, + gdouble w, + FaceIntersectInfo *face_info) { gboolean result = FALSE; gdouble r,d; @@ -939,7 +1009,9 @@ gboolean intersect_circle(GimpVector3 vp,GimpVector3 dir,gdouble w, return(result); } -gdouble compute_angle(gdouble x,gdouble y) +static gdouble +compute_angle (gdouble x, + gdouble y) { gdouble a = 0; @@ -976,7 +1048,10 @@ gdouble compute_angle(gdouble x,gdouble y) return(a); } -gboolean intersect_cylinder(GimpVector3 vp,GimpVector3 dir,FaceIntersectInfo *face_intersect) +static gboolean +intersect_cylinder (GimpVector3 vp, + GimpVector3 dir, + FaceIntersectInfo *face_intersect) { gdouble a,b,c,d,e,f,tmp,l; gboolean result = FALSE; @@ -1066,7 +1141,10 @@ gboolean intersect_cylinder(GimpVector3 vp,GimpVector3 dir,FaceIntersectInfo *fa return(result); } -GckRGB get_cylinder_color(gint face, gdouble u, gdouble v) +static GckRGB +get_cylinder_color (gint face, + gdouble u, + gdouble v) { GckRGB color; gint inside; @@ -1079,7 +1157,8 @@ GckRGB get_cylinder_color(gint face, gdouble u, gdouble v) return(color); } -GckRGB get_ray_color_cylinder(GimpVector3 *pos) +GckRGB +get_ray_color_cylinder (GimpVector3 *pos) { GimpVector3 lvp,ldir,vp,p,dir,ns,nn; GckRGB color, color2; @@ -1148,74 +1227,71 @@ GckRGB get_ray_color_cylinder(GimpVector3 *pos) /* Lets see what's on the other side.. */ /* =================================== */ - color=phong_shade( - &face_intersect[0].s, - &mapvals.viewpoint, - &face_intersect[0].n, - &mapvals.lightsource.position, - &color, - &mapvals.lightsource.color, - mapvals.lightsource.type); + color = phong_shade (&face_intersect[0].s, + &mapvals.viewpoint, + &face_intersect[0].n, + &mapvals.lightsource.position, + &color, + &mapvals.lightsource.color, + mapvals.lightsource.type); - gck_rgba_clamp(&color); + gck_rgba_clamp (&color); - color2 = get_cylinder_color(face_intersect[1].face, - face_intersect[1].u,face_intersect[1].v); + color2 = get_cylinder_color (face_intersect[1].face, + face_intersect[1].u, + face_intersect[1].v); /* Make the normal point inwards */ /* ============================= */ - gimp_vector3_mul(&face_intersect[1].n,-1.0); + gimp_vector3_mul (&face_intersect[1].n, -1.0); - color2=phong_shade( - &face_intersect[1].s, - &mapvals.viewpoint, - &face_intersect[1].n, - &mapvals.lightsource.position, - &color2, - &mapvals.lightsource.color, - mapvals.lightsource.type); + color2 = phong_shade (&face_intersect[1].s, + &mapvals.viewpoint, + &face_intersect[1].n, + &mapvals.lightsource.position, + &color2, + &mapvals.lightsource.color, + mapvals.lightsource.type); - gck_rgba_clamp(&color2); + gck_rgba_clamp (&color2); - if (mapvals.transparent_background==FALSE && color2.a<1.0) + if (mapvals.transparent_background == FALSE && color2.a < 1.0) { - color2.r = (color2.r*color2.a)+(background.r*(1.0-color2.a)); - color2.g = (color2.g*color2.a)+(background.g*(1.0-color2.a)); - color2.b = (color2.b*color2.a)+(background.b*(1.0-color2.a)); + color2.r = (color2.r*color2.a) + (background.r*(1.0-color2.a)); + color2.g = (color2.g*color2.a) + (background.g*(1.0-color2.a)); + color2.b = (color2.b*color2.a) + (background.b*(1.0-color2.a)); color2.a = 1.0; } /* Compute a mix of the first and second colors */ /* ============================================ */ - color.r = color.r*color.a+(1.0-color.a)*color2.r; - color.g = color.g*color.a+(1.0-color.a)*color2.g; - color.b = color.b*color.a+(1.0-color.a)*color2.b; + color.r = color.r*color.a + (1.0-color.a)*color2.r; + color.g = color.g*color.a + (1.0-color.a)*color2.g; + color.b = color.b*color.a + (1.0-color.a)*color2.b; color.a = color.a+color2.a; - gck_rgba_clamp(&color); + gck_rgba_clamp (&color); } - else if (color.a!=0.0 && mapvals.lightsource.type!=NO_LIGHT) + else if (color.a != 0.0 && mapvals.lightsource.type != NO_LIGHT) { - color=phong_shade( - &face_intersect[0].s, - &mapvals.viewpoint, - &face_intersect[0].n, - &mapvals.lightsource.position, - &color, - &mapvals.lightsource.color, - mapvals.lightsource.type); - - gck_rgba_clamp(&color); + color = phong_shade (&face_intersect[0].s, + &mapvals.viewpoint, + &face_intersect[0].n, + &mapvals.lightsource.position, + &color, + &mapvals.lightsource.color, + mapvals.lightsource.type); + + gck_rgba_clamp (&color); } } else { - if (mapvals.transparent_background==TRUE) + if (mapvals.transparent_background == TRUE) color.a = 0.0; } - return(color); + return color; } - diff --git a/plug-ins/MapObject/mapobject_shade.h b/plug-ins/MapObject/mapobject_shade.h index 19e28388a8..3491c54f42 100644 --- a/plug-ins/MapObject/mapobject_shade.h +++ b/plug-ins/MapObject/mapobject_shade.h @@ -1,28 +1,26 @@ -#ifndef MAPOBJECTSHADEH -#define MAPOBJECTSHADEH +#ifndef __MAPOBJECT_SHADE_H__ +#define __MAPOBJECT_SHADE_H__ -#include -#include -#include -#include -#include - -#include "mapobject_main.h" -#include "mapobject_image.h" - -typedef GckRGB (*get_ray_color_func)(GimpVector3 *pos); +typedef GckRGB (* get_ray_color_func) (GimpVector3 *pos); extern get_ray_color_func get_ray_color; -extern GckRGB get_ray_color_plane (GimpVector3 *pos); -extern GckRGB get_ray_color_sphere (GimpVector3 *pos); -extern GckRGB get_ray_color_box (GimpVector3 *pos); -extern GckRGB get_ray_color_cylinder (GimpVector3 *pos); -extern void compute_bounding_box (void); -extern void vecmulmat (GimpVector3 *u,GimpVector3 *v,gfloat m[16]); -extern void rotatemat (gfloat angle,GimpVector3 *v,gfloat m[16]); -extern void transpose_mat (gfloat m[16]); -extern void matmul (gfloat a[16],gfloat b[16],gfloat c[16]); -extern void ident_mat (gfloat m[16]); +GckRGB get_ray_color_plane (GimpVector3 *pos); +GckRGB get_ray_color_sphere (GimpVector3 *pos); +GckRGB get_ray_color_box (GimpVector3 *pos); +GckRGB get_ray_color_cylinder (GimpVector3 *pos); +void compute_bounding_box (void); -#endif +void vecmulmat (GimpVector3 *u, + GimpVector3 *v, + gfloat m[16]); +void rotatemat (gfloat angle, + GimpVector3 *v, + gfloat m[16]); +void transpose_mat (gfloat m[16]); +void matmul (gfloat a[16], + gfloat b[16], + gfloat c[16]); +void ident_mat (gfloat m[16]); + +#endif /* __MAPOBJECT_SHADE_H__ */ diff --git a/plug-ins/MapObject/mapobject_ui.c b/plug-ins/MapObject/mapobject_ui.c index 9ad47239c1..f1a3c1e897 100644 --- a/plug-ins/MapObject/mapobject_ui.c +++ b/plug-ins/MapObject/mapobject_ui.c @@ -2,13 +2,17 @@ /* Dialog creation and updaters, callbacks and event-handlers */ /**************************************************************/ +#include #include +#include + #include "arcball.h" #include "mapobject_ui.h" #include "mapobject_image.h" #include "mapobject_apply.h" #include "mapobject_preview.h" +#include "mapobject_main.h" #include "config.h" #include "libgimp/stdplugins-intl.h" @@ -59,12 +63,11 @@ static void update_light_pos_entries (void); static void double_adjustment_update (GtkAdjustment *adjustment, gpointer data); +static void toggle_update (GtkWidget *widget, + gpointer data); + static void togglegrid_update (GtkWidget *widget, gpointer data); -static void toggletrans_update (GtkWidget *widget, - gpointer data); -static void toggletile_update (GtkWidget *widget, - gpointer data); static void toggletips_update (GtkWidget *widget, gpointer data); @@ -135,6 +138,20 @@ update_light_pos_entries (void) &mapvals.lightsource.position.z); } +/**********************/ +/* Std. toggle update */ +/**********************/ + +static void +toggle_update (GtkWidget *widget, + gpointer data) +{ + gimp_toggle_button_update (widget, data); + + draw_preview_image (TRUE); + linetab[0].x1 = -1; +} + /***************************/ /* Show grid toggle update */ /***************************/ @@ -159,20 +176,6 @@ togglegrid_update (GtkWidget *widget, } } -/****************************/ -/* Tile image toggle update */ -/****************************/ - -static void -toggletile_update (GtkWidget *widget, - gpointer data) -{ - gimp_toggle_button_update (widget, data); - - draw_preview_image (TRUE); - linetab[0].x1 = -1; -} - /**************************/ /* Tooltips toggle update */ /**************************/ @@ -189,20 +192,6 @@ toggletips_update (GtkWidget *widget, gimp_help_disable_tooltips (); } -/****************************************/ -/* Transparent background toggle update */ -/****************************************/ - -static void -toggletrans_update (GtkWidget *widget, - gpointer data) -{ - gimp_toggle_button_update (widget, data); - - draw_preview_image (TRUE); - linetab[0].x1 = -1; -} - /*****************************************/ /* Main window light type menu callback. */ /*****************************************/ @@ -578,7 +567,7 @@ create_options_page (void) mapvals.transparent_background); gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (toggletrans_update), + GTK_SIGNAL_FUNC (toggle_update), &mapvals.transparent_background); gtk_widget_show (toggle); @@ -590,7 +579,7 @@ create_options_page (void) mapvals.tiled); gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (toggletile_update), + GTK_SIGNAL_FUNC (toggle_update), &mapvals.tiled); gtk_widget_show (toggle); @@ -858,10 +847,6 @@ create_material_page (void) GtkWidget *hbox; GtkWidget *spinbutton; GtkObject *adj; - - GdkPixmap *image; - GdkPixmap *mask; - GtkStyle *style; GtkWidget *pixmap; page = gtk_vbox_new (FALSE, 4); @@ -881,17 +866,9 @@ create_material_page (void) gtk_box_pack_start (GTK_BOX (hbox), table, FALSE, FALSE, 0); gtk_widget_show (table); - style = gtk_widget_get_style (table); - /* Ambient intensity */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - amb1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (amb1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 0, _("Ambient:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -909,26 +886,14 @@ create_material_page (void) _("Amount of original color to show where no " "direct light falls"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - amb2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (amb2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); /* Diffuse intensity */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - diffint1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (diffint1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 1, _("Diffuse:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -946,13 +911,7 @@ create_material_page (void) _("Intensity of original color when lit by a light " "source"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - diffint2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (diffint2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); @@ -971,17 +930,9 @@ create_material_page (void) gtk_box_pack_start (GTK_BOX (hbox), table, FALSE, FALSE, 0); gtk_widget_show (table); - style = gtk_widget_get_style (table); - /* Diffuse reflection */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - diffref1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (diffref1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 0, _("Diffuse:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -999,26 +950,14 @@ create_material_page (void) _("Higher values makes the object reflect more " "light (appear lighter)"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - diffref2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (diffref2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); /* Specular reflection */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - specref1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (specref1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 1, _("Specular:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -1036,26 +975,14 @@ create_material_page (void) _("Controls how intense the highlights will be"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - specref2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (specref2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); /* Highlight */ - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - high1_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (high1_xpm); gimp_table_attach_aligned (GTK_TABLE (table), 0, 2, _("Highlight:"), 1.0, 0.5, pixmap, 1, FALSE); @@ -1073,13 +1000,7 @@ create_material_page (void) _("Higher values makes the highlights more focused"), NULL); - image = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - high2_xpm); - pixmap = gtk_pixmap_new (image, mask); - gdk_pixmap_unref (image); - gdk_bitmap_unref (mask); + pixmap = gimp_pixmap_new (high2_xpm); gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (pixmap); @@ -1433,10 +1354,6 @@ main_dialog (GDrawable *drawable) GtkWidget *frame; GtkWidget *button; GtkWidget *toggle; - GdkPixmap *pixmap; - GdkPixmap *mask; - GtkStyle *style; - GtkWidget *pixmap_widget; gchar **argv; gint argc; @@ -1523,44 +1440,22 @@ main_dialog (GDrawable *drawable) gimp_help_set_help_data (button, _("Recompute preview image"), NULL); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_out_xpm); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (zoomout_callback), NULL); gtk_widget_show (button); - style = gtk_widget_get_style (button); - pixmap = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_out_xpm); - pixmap_widget = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - gtk_container_add (GTK_CONTAINER (button), pixmap_widget); - gtk_widget_show (pixmap_widget); - gimp_help_set_help_data (button, _("Zoom out (make image smaller)"), NULL); - button = gtk_button_new (); + button = gimp_pixmap_button_new (zoom_in_xpm); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (zoomin_callback), NULL); gtk_widget_show (button); - style = gtk_widget_get_style (button); - pixmap = gdk_pixmap_create_from_xpm_d (appwin->window, - &mask, - &style->bg[GTK_STATE_NORMAL], - zoom_in_xpm); - pixmap_widget = gtk_pixmap_new (pixmap, mask); - gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); - gtk_container_add (GTK_CONTAINER (button), pixmap_widget); - gtk_widget_show (pixmap_widget); - gimp_help_set_help_data (button, _("Zoom in (make image bigger)"), NULL); toggle = gtk_check_button_new_with_label (_("Show Preview Wireframe")); @@ -1598,7 +1493,7 @@ main_dialog (GDrawable *drawable) gtk_main (); if (preview_rgb_data != NULL) - free (preview_rgb_data); + g_free (preview_rgb_data); if (image != NULL) gdk_image_destroy (image); diff --git a/plug-ins/MapObject/mapobject_ui.h b/plug-ins/MapObject/mapobject_ui.h index 635920cea0..c508e77122 100644 --- a/plug-ins/MapObject/mapobject_ui.h +++ b/plug-ins/MapObject/mapobject_ui.h @@ -1,12 +1,6 @@ #ifndef __MAPOBJECT_UI_H__ #define __MAPOBJECT_UI_H__ -#include - -#include - -#include - /* Externally visible variables */ /* ============================ */ diff --git a/plug-ins/libgck/ChangeLog b/plug-ins/libgck/ChangeLog deleted file mode 100644 index f148e287b9..0000000000 --- a/plug-ins/libgck/ChangeLog +++ /dev/null @@ -1,90 +0,0 @@ - - -GCK changes (post 0.02) -======================= - - * plug-ins/libgck/gck/gckui.c (gck_application_window_new): - Removed 2 obsolete statements causing OS/2 to crash. - The code was trying to update a static const structure! - --> 1.0.0 - -* Fixed RINT stuff (Quartic) -* Kicked out GckNotebook.c/.h -* Fixed refcounting problems and automake things. -* Libtoolized to libtool 1.1 - --> 0.1.4 - -* Fixed some .deps sillyness, revised to 0.99.13 - --> 0.1.3 - -* Cleanup. Revised to GTK/GIMP 0.99.11. - --> 0.1.2 - -* GckColorSelectionWindow, GckPixmap and GckToolTipsWidget replaced with - GDK/GTK counterparts and is thus removed. GckNotebook is also a potentional - candidate for removal. Revised to new GTK API (as for GIMP 0.99.10). Examples - removed until revised. Added autoconf, automake and libtool stuff. - --> 0.1.1 - -* Fixed bugs, added option_menu example. Changed OpenGL sample prog. to - respond to window size changes. Fixed a serious bug in the notebook. - --> 0.1.0 - -* Changed all UI functions to reflect the new GDK/GTK API. Too many changes - to specify here. - --> 0.0.7: - -* Added gck_gc_set_bacground() and gck_gc_set_foreground() to set a - GdkGC back/foreground color directly using RGB values. -* Fixed a silly bug in the 8-bit FS dither; forgot to compute the - invmap tables.. -* Added gck_pixmap widget and support for reading XPM files into a GdkImage - or GdkPixmap (doesn't use the xpm library). -* Made gck_pushbutton_pixmap_new() function. Guess what it does :) - --> 0.0.6: - -* Changed gck_entryfield_new(); it now takes a double as the initial - value, and not a pointer to a double. The function won't fiddle with the - user_data field of the observer, but leaves this to the user. -* Added gck_tooltipswidget. Handy a-la MS and Netscape widget tips. Added a - small example on its usage. -* Changed the behaviour of gdk_rgb_to_gdkcolor() a bit. The returned - pointer to the GdkColor structure is now malloced, so remember to free it - when you're done with it. -* Added two more gtk widgets; gck_menu and gck_menu_bar. See the examples. -* Added gck_list_box widget - convenience routines for handling lists. Included - a couple of examples to show it off. - --> 0.0.5: - -* Added some stuff to the include files so C++ don't choke on them -* Added additional debug stuff (g_assert() and g_enter/leave_function()) -* Changed a couple of UI functions to include a user_data field. This will - set the user_data field of the widget(s) and can be retrieved with the - gtk_widget_get_user_data() call - very useful when dealing with (static) - callbacks in C++. -* All gckui functions will now accept NULL containers; be sure to call - gck_auto_show(FALSE) first. -* GNU-ified the sources with GNU indent. - --> 0.0.4: - -* More notebook stuff; nicer look, page-tabs positioning + other things. -* Fixed gck_optionmenu_new(); didn't make label widget if name!=NULL. - --> 0.0.3: - -* Fixed a couple of bugs, cleaned up things a bit. Added first - version of the notebook (see ./examples/misc/notebook.c). -* Started fooling around with docs. -* First public release - - diff --git a/plug-ins/libgck/Makefile.am b/plug-ins/libgck/Makefile.am index 2e39f0c091..ebdc8db8af 100644 --- a/plug-ins/libgck/Makefile.am +++ b/plug-ins/libgck/Makefile.am @@ -2,18 +2,7 @@ SUBDIRS = gck -EXTRA_DIST = \ - ChangeLog \ - NEWS \ - README \ - TODO \ - docs/html/gck.html \ - docs/html/gck_application_window.html \ - docs/html/gck_dialog_window.html \ - docs/html/gckcolor.html \ - docs/html/gckmath.html \ - docs/html/gckui.html \ - docs/html/gckvector.html +EXTRA_DIST = docs/html/gckcolor.html .PHONY: files diff --git a/plug-ins/libgck/NEWS b/plug-ins/libgck/NEWS deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/plug-ins/libgck/README b/plug-ins/libgck/README deleted file mode 100644 index 4cd8d6c709..0000000000 --- a/plug-ins/libgck/README +++ /dev/null @@ -1,82 +0,0 @@ - -The General Convenience Kit (GCK) 1.0.0 -======================================= - -Copyright (C) 1996-98 Tom Bech (tomb@gimp.org) -Copyright (C) 1996-98 Federico Mena Quintero (quartic@gimp.org) - -The General Drawing Kit (GDK), The General Toolkit (GTK) and The GIMP was -developed and is (C) by Peter Mattis and Spencer Kimball. You can contact -them at gimp@xcf.berkeley.edu, or visit the GIMP home page which is located -at http://www.gimp.org - -There's additional GIMP stuff on my home page: - -http://www.ii.uib.no/~tomb/gimp.html - -Legal stuff -=========== - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; either version 2 of the License, or (at your option) any later -version. - -This program is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program (see the "COPYING" file); if not, write to the Free Software Foundation, -Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -In other words, you can't sue us for whatever happens while using this ;) - -Description -=========== - -Short: This library is a collection of more or less useful stuff for GIMP plug-in -writers and/or users of GDK/GTK. - -I must point out that this is not an attempt to enhance GDK|GTK in any way; there's nothing -in it that can't be done using GDK|GTK alone. IMHO, improvements or new functionality -should be integrated with GDK|GTK, not added on top. - -Here's a quick description of each file; - -./gck/ -gckcommon.c : Common variables and defines -gckmath.c : Useful math routines not in math.h -gckcolor.c : Conversion routines from raw RGB(A) to GdkImage (RGB to - 32/24/16/8 bpp). Basic RGB operations (add,sub etc.), super- - sampling routines, bilinear interpolation and other color-related - functions (color-space conversions etc.) -gckui.c : Convenience routines for creating various UI elements - (dialogs, buttons, sliders, container-boxes etc.). Almost like - the libgimp calls, but with more options and the possibility to - mix it with other GDK|GTK things if you want -gckcolor_select : Source for the GCK color select window -gckvector.c : 2d and 3d vector operations (2d->3d, 3d->2d, add, sub, cross-product, - rotate etc.) - -./examples/misc/* : Various small examples of how to use the library -./examples/gimp/* : GIMP plug-in examples. -./examples/opengl/* : Examples of binding OpenGL and GDK/GTK. - -Hopefully this will grow with time. The goal is to provide GIMP plug-in writers -and GDK/GTK users with a library to ease the writing of applications and UIs. - -Some things may become obsolete as the GIMP/GDK/GTK API evolves, and in the long -run the whole library may be unnecessary. Until I get around to writing some kind -of documentation you'll have to dig around in the sources on your own. - -Take a look at the examples and the plug-ins I've written using this library, -and you'll soon get the hang of it. Feel free to modify and/or add new things -to the library, but remember to send me a patch if you do :) - -Check out the TODO file for things missing and in the works. - -Have fun, - -Tom - diff --git a/plug-ins/libgck/TODO b/plug-ins/libgck/TODO deleted file mode 100644 index cd9b29af12..0000000000 --- a/plug-ins/libgck/TODO +++ /dev/null @@ -1,13 +0,0 @@ - -The General Convenience Kit (GCK) 1.0.0 TODO list -================================================= - -* More colorspace conversions (RGB<->HWB among others) -* Conversion support for grayscale-and *A images -* Documentation and more examples -* More math stuff (fast square root, smoothing stuff, spline - functions etc.) -* Create gckconvolve.c -* Add more basic functions - - diff --git a/plug-ins/libgck/docs/html/gck.html b/plug-ins/libgck/docs/html/gck.html deleted file mode 100644 index c9b63763ba..0000000000 --- a/plug-ins/libgck/docs/html/gck.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - The General Convenience Kit (GCK) - - - - - - - -

The General Convenience Kit (GCK) -



-
Latest version: 0.06 alpha
-
Last updated: 12-Feb-1997
-
Tested platforms: Linux 2.0.18, Linux 2.0.27
-
GDK/GTK version: 0.61

- -

You can download it [here] -( 274613 bytes). This includes the sourcecode and precompiled static and -shared Linux ELF libraries.

- -

-


- -

What is it?

- -

GCK is meant as a general convenience kit for GIMP plug-in writers and -users of the GDK/GTK libraries. It's basically a collection of stuff for -UI construction, color- and image handling, vector operations, math funcs -etc. (see below). Please note that GCK is still a pre-alpha version; many -things doesn't work properly and the API is not completely stable yet. -When the API is stable ,GCK will enter beta. Check it out and give -me some feedback.

- -

What's new in 0.06?

- -
    -
  • Changed gck_entryfield_new(); it now takes a double as the -initial value, and not a pointer to a double. The function won't fiddle -with the user_data field of the observer, but leaves this to the -user.
  • - -
  • Added gck_tooltipswidget. Handy a-la MS and Netscape widget -tips. Added a small example on its usage.
  • - -
  • Changed the behaviour of gdk_rgb_to_gdkcolor() a bit. The -returned pointer to the GdkColor structure is now malloced, so -remember to free it when you're done with it.
  • - -
  • Added two more gtk widgets; gck_menu and gck_menu_bar. -Again, see the examples.
  • - -
  • Added gck_list_box widget - convenience routines for handling -lists. I've included a couple of examples to show it off.
  • -
- -

Contents

- - - -

-


Last changed 12-Feb-1997 by Tom -Bech (tomb@ii.uib.no) -

- - - diff --git a/plug-ins/libgck/docs/html/gck_application_window.html b/plug-ins/libgck/docs/html/gck_application_window.html deleted file mode 100644 index 54613356b5..0000000000 --- a/plug-ins/libgck/docs/html/gck_application_window.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - -

GCK - General UI functions - Application Window

- -

-


- -

GckApplicationWindow -*gck_application_window_new(name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeVariableDescription
Input:charnameName of application window. This will be the title of the toplevel -window.
Output:  GckApplicationWindow -*A pointer to a initialized GckApplicationWindow structure.
This function will create and initialize a GckApplicationWindow -structure. This involves creating a top level window, selecting and setting -up a visual and the companion colormap. It also creates a new style and -sets its defaults to GIMP standard. Usually called when the UI of your -application is to be set up.
- -

-


- -

void gck_application_window_destroy(appwin)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeVariableDescription
Input:GckApplicationWindow *appwinPointer to the GckApplicationWindow structure to be destroyed.
Output:voidThis function doesn't return any value.
Frees all memory associated with the GckApplicationWindow -structure and destroys the top level window. This function is typically -called when your application terminates.
- -

-


- -

Last changed 16-Dec-1996 by Tom Bech (tomb@ii.uib.no)

- - - diff --git a/plug-ins/libgck/docs/html/gck_dialog_window.html b/plug-ins/libgck/docs/html/gck_dialog_window.html deleted file mode 100644 index 239506eb62..0000000000 --- a/plug-ins/libgck/docs/html/gck_dialog_window.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - -

GCK - General UI functions - Dialog Window

- -

-


- -

GckDialogWindow *gck_dialog_window_new(name, -ok_cb, cancel_cb, help_cb)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeVariableDescription
Input:charnameName of the dialog window. This will also be the title of the window.
GtkCallbackok_cbCallback function to invoke when the dialog window "Ok" button -is pressed.
GtkCallbackcancel_cbCallback function to invoke when the dialog window "Cancel" -button is pressed.
GtkCallbackhelp_cbCallback function to invoke when the dialog window "Help" -button is pressed.
Output:  GckDialogWindow -*A pointer to a initialized GckDialogWindow structure.
This function creates and initializes a GckDialogWindow -structure. This involves creating a dialog window with a work- and actionarea. -Three buttons are created in the actionarea; "Ok", "Cancel" -and "Help". The workarea is left empty.
- -

-


- -

void gck_application_window_destroy(dialog)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeVariableDescription
Input:GckDialogWindow -*dialogPointer to the GckDialogWindow structure to be destroyed.
Output:voidThis function doesn't return any value.
Frees all memory associated with the GckDialogWindow structure -and destroys the window. This function is typically called when the user -has hit the "Ok" or "Cancel" button.
- -

-


- -

Last changed 16-Dec-1996 by Tom Bech (tomb@ii.uib.no)

- - - diff --git a/plug-ins/libgck/docs/html/gckmath.html b/plug-ins/libgck/docs/html/gckmath.html deleted file mode 100644 index 0aaa20e15f..0000000000 --- a/plug-ins/libgck/docs/html/gckmath.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - GCK - UI releated functions - - - - - - - -

GCK - Math functions -

- -

Description..

- -

-


- -
    -
  • gck_deg_to_rad
  • - -
  • gck_rad_to_deg
  • - -
  • gck_mat_to_deg
  • - -
  • gck_clip_line
  • -
- -

-


Last changed 13-Feb-1997 by Tom -Bech (tomb@ii.uib.no) -

- - - diff --git a/plug-ins/libgck/docs/html/gckui.html b/plug-ins/libgck/docs/html/gckui.html deleted file mode 100644 index 23e7166247..0000000000 --- a/plug-ins/libgck/docs/html/gckui.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - GCK - UI releated functions - - - - - - - -

GCK - UI related functions -

- -

Description..

- -

-

- -
  • General UI
  • - -
  • Listbox
  • - -
  • Color selector
  • - -
  • Notebook
  • - -
  • Tooltips widget
  • - -

    -



    -General UI functions

    - - - -

    Listbox functions

    - -
      -
    • gck_listbox_new
    • - -
    • gck_listbox_destroy
    • - -
    • gck_listbox_get
    • - -
    • gck_listbox_prepend_item
    • - -
    • gck_listbox_prepend_items
    • - -
    • gck_listbox_append_item
    • - -
    • gck_listbox_append_items
    • - -
    • gck_listbox_insert_item
    • - -
    • gck_listbox_insert_items
    • - -
    • gck_listbox_get_current_selection
    • - -
    • gck_listbox_set_current_selection
    • - -
    • gck_listbox_item_find_by_position
    • - -
    • gck_listbox_item_find_by_label
    • - -
    • gck_listbox_item_find_by_user_data
    • - -
    • gck_listbox_delete_item_by_position
    • - -
    • gck_listbox_delete_item_by_label
    • - -
    • gck_listbox_delete_items_by_label
    • - -
    • gck_listbox_delete_item_by_user_data
    • - -
    • gck_listbox_delete_items_by_user_data
    • - -
    • gck_listbox_clear_items
    • - -
    • gck_listbox_select_item_by_position
    • - -
    • gck_listbox_select_item_by_label
    • - -
    • gck_listbox_select_item_by_user_data
    • - -
    • gck_listbox_unselect_item_by_position
    • - -
    • gck_listbox_unselect_item_by_label
    • - -
    • gck_listbox_unselect_item_by_user_data
    • - -
    • gck_listbox_select_all
    • - -
    • gck_listbox_unselect_all
    • -
    - -

    Color selector functions

    - -
      -
    • gck_colorselect_window_new
    • - -
    • gck_colorselect_window_destroy
    • -
    - -

    Notebook functions

    - -
      -
    • gck_notebook_new
    • - -
    • gck_notebook_destroy
    • - -
    • gck_notebook_page_new
    • - -
    • gck_notebook_insert_page
    • - -
    • gck_notebook_append_page
    • - -
    • gck_notebook_prepend_page
    • - -
    • gck_notebook_remove_page
    • - -
    • gck_notebook_get_page
    • - -
    • gck_notebook_set_page
    • -
    - -

    Tooltips widget

    - -
      -
    • gck_tooltipswidget_new
    • - -
    • gck_tooltipswidget_destroy
    • - -
    • gck_tooltipswidget_enable
    • - -
    • gck_tooltipswidget_disable
    • - -
    • gck_tooltipswidget_set_delay
    • - -
    • gck_tooltipswidget_set_tips
    • - -
    • gck_tooltipswidget_set_colors
    • -
    - -

    -


    Last changed 13-Feb-1997 by Tom -Bech (tomb@ii.uib.no) -

    - - - diff --git a/plug-ins/libgck/docs/html/gckvector.html b/plug-ins/libgck/docs/html/gckvector.html deleted file mode 100644 index bb94f51c19..0000000000 --- a/plug-ins/libgck/docs/html/gckvector.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - GCK - UI releated functions - - - - - - - -

    GCK - Vector functions -

    - -

    Description..

    - -

    -

    - -
  • 2D vector functions
  • - -
  • 3D vector functions
  • - -
  • Projections
  • - -

    -



    -2D vector functions

    - -
      -
    • gck_vector2_inner_product
    • - -
    • gck_vector2_cross_product
    • - -
    • gck_vector2_length
    • - -
    • gck_vector2_normalize
    • - -
    • gck_vector2_mul
    • - -
    • gck_vector2_sub
    • - -
    • gck_vector2_set
    • - -
    • gck_vector2_add
    • - -
    • gck_vector2_neg
    • - -
    • gck_vector2_rotate
    • -
    - -


    -3D vector functions

    - -
      -
    • gck_vector3_inner_product
    • - -
    • gck_vector3_cross_product
    • - -
    • gck_vector3_length
    • - -
    • gck_vector3_normalize
    • - -
    • gck_vector3_mul
    • - -
    • gck_vector3_sub
    • - -
    • gck_vector3_set
    • - -
    • gck_vector2_add
    • - -
    • gck_vector3_neg
    • - -
    • gck_vector3_rotate
    • -
    - -


    -Projections

    - -
      -
    • gck_2d_to_3d
    • - -
    • gck_3d_to_2d
    • -
    - -

    -


    Last changed 13-Feb-1997 by Tom -Bech (tomb@ii.uib.no) -

    - - -