Bit of a large checkin this - it's basically three things: 1 - GimpModules

Sun Jan 11 00:24:21 GMT 1999  Austin Donnelly  <austin@greenend.org.uk>

	Bit of a large checkin this - it's basically three things:
	  1 - GimpModules using gmodules to dynamically load and
	       initialise modules at gimp start of day.
	  2 - Color selectors now register themselves with a color
	       notebook.
	  3 - progress bars have been cleaned up a bit, so now have
	       progress indictations on all transform tool and gradient
	       fill operations.  Not done bucket fill, but that seems to
	       be the next candidate.

	New directories:
	* modules/: new directory for dynamically loadable modules.

	New files:
	* modules/.cvsignore
	* modules/Makefile.am
	* modules/colorsel_gtk.c: GTK color selector wrapped up as a
	    color selector the gimp can use.

	* app/gimpprogress.[ch]: progress bars within gimp core, either as
	    popups, or in the status bar.  This is mainly code moved out
	    of plug-in.c

	* app/color_notebook.[ch]: color selector notebook, implementing
	    very similar interface to color_select.h so it can be used as
	    a drop-in replacement for it.

	* libgimp/color_selector.h: API color selectors need to implement
	    to become a page in the color_notebook.

	* libgimp/gimpmodule.h: API gimp modules need to implement to be
	    initialised by gimp at start of day.

	Modified files:
	* Makefile.am: add modules/ to SUBDIRS
	* libgimp/Makefile.am: install gimpmodule.h and color_selector.h
	* app/gimprc.[ch]: recognise module-path variable.
	* gimprc.in: set module-path variable to something sensible
	    (currently "${gimp_dir}/modules:${gimp_plugin_dir}/modules").
	* app/Makefile.am: build color notebook and gimpprogress
	* app/app_procs.c: register internal GIMP color selector with
	    color notebook.
	* app/asupsample.c: call progress function less frequently for
	    better performance.
	* app/asupsample.h: progress_func_t typedef moved to gimpprogress.h
	* app/blend.c: make callbacks to a progress function
	* app/color_area.c: use a color notebook rather than a color selector
	* app/color_panel.c: ditto
	* app/color_select.c: export color selector interface for notebook
	* app/color_select.h: color_select_init() prototype
	* app/flip_tool.c: flip the image every time, rather than every
	    second click.
	* app/interface.c: move progress bar stuff out to
	    gimpprogress.c.  Make the code actually work while we're at it.
	* app/interface.h: move prototypes for progress functions out to
	    gimpprogress.h
	* app/plug_in.c: load and initialise modules (if possible). Move
	    progress bar handling code out to gimpprogress.c
	* app/plug_in.h: keep only a gimp_progress * for each plugin, not
	    a whole bunch of GtkWidgets.
	* app/scale_tool.c
	* app/rotate_tool.c
	* app/shear_tool.c
	* app/perspective_tool.c: progress bar during operation.
	    De-sensitise the dialog to discourage the user from running
	    two transforms in parallel.
	* app/transform_core.c: recalculate grid coords when bounding box
	    changes.  Only initialise the action area of the dialog once,
	    to avoid multiple "ok" / "reset" buttons appearing.  Undraw
	    transform tool with correct matrix to get rid of handle
	    remains on screen.  Call a progress function as we apply the
	    transform matrix.  A few new i18n markups.  Invalidate
	    floating selection marching ants after applying matrix.
	* app/transform_core.h: transform_core_do() takes an optional
	    progress callback argument (and data).
	* plug-ins/oilify/oilify.c: send progress bar updates after every
	    pixel region, not only if they processed a multiple of 5
	    pixels (which was quite unlikely, and therefore gave a jerky
	    progress indication).
This commit is contained in:
GMT 1999 Austin Donnelly
1999-01-11 00:57:33 +00:00
committed by Austin Donnelly
parent bf0dbb2018
commit d8be79f036
99 changed files with 6448 additions and 3557 deletions

7
modules/.cvsignore Normal file
View File

@ -0,0 +1,7 @@
Makefile.in
Makefile
.deps
*.lo
_libs
.libs
*.la

14
modules/Makefile.am Normal file
View File

@ -0,0 +1,14 @@
## Process this file with automake to produce Makefile.in
moduledir = $(gimpplugindir)/modules
INCLUDES = \
-I$(top_srcdir) \
-I$(top_srcdir)/intl \
$(GTK_CFLAGS) \
-I$(includedir)
module_LTLIBRARIES = libcolorsel_gtk.la
libcolorsel_gtk_la_SOURCES = colorsel_gtk.c

135
modules/colorsel_gtk.c Normal file
View File

@ -0,0 +1,135 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* colorsel_gtk module (C) 1998 Austin Donnelly <austin@greenend.org.uk>
*
* 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 <stdio.h>
#include <gtk/gtk.h>
#include <libgimp/color_selector.h>
#include <libgimp/gimpmodule.h>
/* prototypes */
static GtkWidget * colorsel_gtk_new (int, int, int,
GimpColorSelector_Callback, void *,
void **);
static void colorsel_gtk_free (void *);
static void colorsel_gtk_setcolor (void *, int, int, int, int);
static void colorsel_gtk_update (GtkWidget *, gpointer);
/* local methods */
static GimpColorSelectorMethods methods =
{
colorsel_gtk_new,
colorsel_gtk_free,
colorsel_gtk_setcolor
};
/* globaly exported init function */
G_MODULE_EXPORT GimpModuleStatus
module_init (void)
{
if (gimp_color_selector_register ("GTK", &methods))
return GIMP_MODULE_OK;
else
return GIMP_MODULE_UNLOAD;
}
/**************************************************************/
/* GTK colour selector methods */
typedef struct {
GtkWidget *selector;
GimpColorSelector_Callback callback;
void *client_data;
} ColorselGtk;
static GtkWidget *
colorsel_gtk_new (int r, int g, int b,
GimpColorSelector_Callback callback, void *client_data,
/* RETURNS: */
void **selector_data)
{
ColorselGtk *p;
p = g_malloc (sizeof (ColorselGtk));
p->selector = gtk_color_selection_new ();
p->callback = callback;
p->client_data = client_data;
colorsel_gtk_setcolor (p, r, g, b, FALSE);
gtk_signal_connect (GTK_OBJECT (p->selector), "color_changed",
(GtkSignalFunc) colorsel_gtk_update, p);
(*selector_data) = p;
return p->selector;
}
static void
colorsel_gtk_free (void *data)
{
ColorselGtk *p = data;
/* don't need to gtk_widget_destroy() the selector, since that's
* done for us. */
g_free (p);
}
static void
colorsel_gtk_setcolor (void *data,
int r, int g, int b, int set_current)
{
ColorselGtk *p = data;
double color[3];
color[0] = ((gdouble) r) / 255.999;
color[1] = ((gdouble) g) / 255.999;
color[2] = ((gdouble) b) / 255.999;
gtk_color_selection_set_color (GTK_COLOR_SELECTION (p->selector), color);
}
static void
colorsel_gtk_update (GtkWidget *widget, gpointer data)
{
ColorselGtk *p = data;
int r;
int g;
int b;
double color[3];
gtk_color_selection_get_color (GTK_COLOR_SELECTION (p->selector), color);
r = (int) (color[0] * 255.999);
g = (int) (color[1] * 255.999);
b = (int) (color[2] * 255.999);
p->callback (p->client_data, r, g, b);
}
/* End of colorsel_gtk.c */