This was something I needed a couple of weeks ago, and was surprised it
wasn't in the gimp already.
It allows a user to dnd a color from any color dnd source to the by color
select window to select that color.
Enjoy
Sam
===
Sam Phillips <[EMAIL PROTECTED]> http://www.usaworks.com/~sam
``Yeah, well I've got a dream too. But it's about singing and dancing and
making people happy. That's the kind of dream that gets better the more
people you share it with. And, I've found a whole bunch of friends who
have the same dream. And that kinda makes us like a family.''
-- Kermit The Frog
Index: app/by_color_select.c
===================================================================
RCS file: /cvs/gnome/gimp/app/by_color_select.c,v
retrieving revision 1.37
diff -u -r1.37 by_color_select.c
--- app/by_color_select.c 1999/09/27 17:58:07 1.37
+++ app/by_color_select.c 1999/10/09 17:16:38
@@ -32,6 +32,8 @@
#include "gdisplay.h"
#include "selection_options.h"
+#include "gimpdnd.h"
+
#include "libgimp/gimpintl.h"
#include "tile.h" /* ick. */
@@ -71,6 +73,15 @@
/* the by color selection dialog */
static ByColorDialog * by_color_dialog = NULL;
+/* dnd stuff */
+static GtkTargetEntry by_color_select_image_target_table[] =
+{
+ GIMP_TARGET_COLOR
+};
+static guint n_by_color_select_image_targets =
+ (sizeof (by_color_select_image_target_table) /
+ sizeof (by_color_select_image_target_table[0]));
+static void by_color_select_color_drop (GtkWidget*, guchar, guchar, guchar,
+gpointer);
/* by_color select action functions */
@@ -592,6 +603,17 @@
bcd);
gtk_container_add (GTK_CONTAINER (frame), bcd->preview);
+ /* dnd colors to the image window */
+ gtk_drag_dest_set (bcd->preview,
+ GTK_DEST_DEFAULT_HIGHLIGHT |
+ GTK_DEST_DEFAULT_MOTION |
+ GTK_DEST_DEFAULT_DROP,
+ by_color_select_image_target_table,
+ n_by_color_select_image_targets,
+ GDK_ACTION_COPY);
+ gimp_dnd_color_dest_set (bcd->preview, by_color_select_color_drop, bcd);
+
+
gtk_widget_show (bcd->preview);
gtk_widget_show (frame);
gtk_widget_show (util_box);
@@ -928,6 +950,43 @@
by_color_options->sample_merged);
tile_release (tile, FALSE);
+
+ /* show selection on all views */
+ gdisplays_flush ();
+
+ /* update the preview window */
+ by_color_select_render (bcd, bcd->gimage);
+ by_color_select_draw (bcd, bcd->gimage);
+}
+
+static void
+by_color_select_color_drop (GtkWidget *widget,
+ guchar r,
+ guchar g,
+ guchar b,
+ gpointer data)
+
+{
+ GimpDrawable *drawable;
+ ByColorDialog *bcd;
+ guchar col[3];
+
+ bcd = (ByColorDialog*) data;
+ drawable = gimage_active_drawable (bcd->gimage);
+
+ col[0] = r;
+ col[1] = g;
+ col[2] = b;
+
+ by_color_select (bcd->gimage,
+ drawable,
+ col,
+ bcd->threshold,
+ bcd->operation,
+ by_color_options->antialias,
+ by_color_options->feather,
+ by_color_options->feather_radius,
+ by_color_options->sample_merged);
/* show selection on all views */
gdisplays_flush ();