diff -u --recursive --new-file gimp-0.99.10/Makefile.in gimp-0.99.pre11/Makefile.in --- gimp-0.99.10/Makefile.in Sat Jun 7 00:26:22 1997 +++ gimp-0.99.pre11/Makefile.in Wed Aug 13 23:22:23 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,15 +42,25 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBJPEG_INC = @LIBJPEG_INC@ LIBJPEG_LIB = @LIBJPEG_LIB@ +LIBPNG_INC = @LIBPNG_INC@ +LIBPNG_LIB = @LIBPNG_LIB@ LIBTIFF_INC = @LIBTIFF_INC@ LIBTIFF_LIB = @LIBTIFF_LIB@ LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -68,8 +78,6 @@ scriptdata = ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -CONFIG_HEADER_IN = config.h.in -CONFIG_HEADER_FULL = config.h mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = gimprc @@ -97,40 +105,40 @@ cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -$(srcdir)/aclocal.m4: configure.in +$(ACLOCAL_M4): configure.in cd $(srcdir) && $(ACLOCAL) -config.status: configure +config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck -$(srcdir)/configure: configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) -$(CONFIG_HEADER): stamp-h -stamp-h: $(CONFIG_HEADER_IN) $(top_builddir)/config.status +config.h: stamp-h +stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=$(CONFIG_HEADER_FULL) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h \ $(SHELL) ./config.status @echo timestamp > stamp-h -$(srcdir)/$(CONFIG_HEADER_IN): stamp-h.in +$(srcdir)/config.h.in: $(srcdir)/stamp-h.in $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h cd $(top_srcdir) && $(AUTOHEADER) - echo timestamp > $(srcdir)/stamp-h.in + @echo timestamp > $(srcdir)/stamp-h.in mostlyclean-hdr: clean-hdr: distclean-hdr: - rm -f $(CONFIG_HEADER) + rm -f config.h maintainer-clean-hdr: gimprc: $(top_builddir)/config.status gimprc.in cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status install-gimpdataSCRIPTS: $(gimpdata_SCRIPTS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(gimpdatadir) - @list="$(gimpdata_SCRIPTS)"; for p in $$list; do \ + @list='$(gimpdata_SCRIPTS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(INSTALL_SCRIPT) $$p $(gimpdatadir)/`echo $$p|sed '$(transform)'`"; \ $(INSTALL_SCRIPT) $$p $(gimpdatadir)/`echo $$p|sed '$(transform)'`; \ @@ -141,14 +149,15 @@ done uninstall-gimpdataSCRIPTS: - list="$(gimpdata_SCRIPTS)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(gimpdata_SCRIPTS)'; for p in $$list; do \ rm -f $(gimpdatadir)/`echo $$p|sed '$(transform)'`; \ done install-gimpdataDATA: $(gimpdata_DATA) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(gimpdatadir) - @list="$(gimpdata_DATA)"; for p in $$list; do \ + @list='$(gimpdata_DATA)'; for p in $$list; do \ if test -f $(srcdir)/$$p; then \ echo " $(INSTALL_DATA) $(srcdir)/$$p $(gimpdatadir)/$$p"; \ $(INSTALL_DATA) $(srcdir)/$$p $(gimpdatadir)/$$p; \ @@ -159,7 +168,8 @@ done uninstall-gimpdataDATA: - list="$(gimpdata_DATA)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(gimpdata_DATA)'; for p in $$list; do \ rm -f $(gimpdatadir)/$$p; \ done @@ -174,17 +184,27 @@ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + for subdir in $(SUBDIRS); do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" + mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @for subdir in $(SUBDIRS); do \ + @set fnord $(MAKEFLAGS); amf=$$2; \ + rev=''; for subdir in $(SUBDIRS); do rev="$$rev $$subdir"; done; \ + for subdir in $$rev; do \ target=`echo $@ | sed s/-recursive//`; \ echo "Making $$target in $$subdir"; \ (cd $$subdir && $(MAKE) $$target) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: - list="$(SUBDIRS)"; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ (cd $$subdir && $(MAKE) tags); \ done @@ -196,11 +216,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ done; \ test -z "$(ETAGS_ARGS)config.h.in$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -212,6 +232,8 @@ maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. @@ -244,7 +266,11 @@ distdir: $(DISTFILES) rm -rf $(distdir) mkdir $(distdir) - -chmod 755 $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ @@ -255,8 +281,8 @@ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ - chmod 755 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) distdir=../$(distdir)/$$subdir distdir) \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ done info: info-recursive @@ -264,20 +290,20 @@ check: all-am $(MAKE) check-recursive installcheck: installcheck-recursive -all-recursive-am: $(CONFIG_HEADER) +all-recursive-am: config.h $(MAKE) all-recursive -all-am: $(SCRIPTS) $(DATA) Makefile config.h +all-am: Makefile $(SCRIPTS) $(DATA) config.h install-data-am: install-gimpdataSCRIPTS install-gimpdataDATA uninstall-am: uninstall-gimpdataSCRIPTS uninstall-gimpdataDATA install-exec: install-exec-recursive - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-data-recursive install-data-am - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-recursive install-data-am @: @@ -287,7 +313,7 @@ all: all-recursive-am all-am install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: installdirs-recursive $(mkinstalldirs) $(gimpdatadir) $(gimpdatadir) @@ -300,7 +326,7 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: diff -u --recursive --new-file gimp-0.99.10/app/Makefile gimp-0.99.pre11/app/Makefile --- gimp-0.99.10/app/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/app/Makefile Thu Aug 14 01:25:51 1997 @@ -0,0 +1,669 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# These 3 variables are declared here so that Automake doesn't +# give warnings. The "include" directive that follows them +# includes the gtk+ configuration file which contains the +# actual definitions of the 3 variables. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gimp +pkglibdir = $(libdir)/gimp +pkgincludedir = $(includedir)/gimp + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBJPEG_INC = +LIBJPEG_LIB = +LIBPNG_INC = +LIBPNG_LIB = +LIBTIFF_INC = +LIBTIFF_LIB = +LIBTOOL = $(top_builddir)/libtool +LN_S = ln -s +MAKEINFO = makeinfo +PACKAGE = gimp +RANLIB = ranlib +VERSION = 0.99.10 +gimpdatadir = ${prefix}/share/gimp/0.99.10 +gimpdir = .gimp +gimpplugindir = ${exec_prefix}/lib/gimp/0.99.10 + +X_CFLAGS = +X_LDFLAGS = +X_LIBS = + +GTK_XCONFIG = $(top_builddir)/gtk+/gtk+.xconfig + +scriptdata = + +bin_PROGRAMS = gimp + +gimp_SOURCES = \ + about_dialog.c \ + about_dialog.h \ + actionarea.c \ + actionarea.h \ + airbrush.c \ + airbrush.h \ + app_procs.c \ + app_procs.h \ + appenv.h \ + asupsample.c \ + asupsample.h \ + batch.c \ + batch.h \ + bezier_select.c \ + bezier_select.h \ + bezier_selectP.h \ + blend.c \ + blend.h \ + boundary.c \ + boundary.h \ + brightness_contrast.c \ + brightness_contrast.h \ + brush_header.h \ + brush_select.c \ + brush_select.h \ + brushes.c \ + brushes.h \ + bucket_fill.c \ + bucket_fill.h \ + buildmenu.c \ + buildmenu.h \ + by_color_select.c \ + by_color_select.h \ + channel.c \ + channel.h \ + channel_cmds.c \ + channel_cmds.h \ + channels_dialog.c \ + channels_dialog.h \ + channel_ops.c \ + channel_ops.h \ + clone.c \ + clone.h \ + color_area.c \ + color_area.h \ + color_balance.c \ + color_balance.h \ + color_panel.c \ + color_panel.h \ + color_picker.c \ + color_picker.h \ + color_select.c \ + color_select.h \ + color_transfer.c \ + color_transfer.h \ + colormaps.c \ + colormaps.h \ + commands.c \ + commands.h \ + convert.c \ + convert.h \ + convolve.c \ + convolve.h \ + crop.c \ + crop.h \ + cursorutil.c \ + cursorutil.h \ + curves.c \ + curves.h \ + datafiles.c \ + datafiles.h \ + desaturate.c \ + desaturate.h \ + dialog_types.h \ + disp_callbacks.c \ + disp_callbacks.h \ + draw_core.c \ + draw_core.h \ + drawable.c \ + drawable.h \ + drawable_cmds.c \ + drawable_cmds.h \ + edit_cmds.c \ + edit_cmds.h \ + edit_selection.c \ + edit_selection.h \ + ellipse_select.c \ + ellipse_select.h \ + eraser.c \ + eraser.h \ + errors.c \ + errors.h \ + equalize.c \ + equalize.h \ + fileops.c \ + fileops.h \ + flip_tool.c \ + flip_tool.h \ + floating_sel.c \ + floating_sel.h \ + floating_sel_cmds.c \ + floating_sel_cmds.h \ + frac.c \ + frac.h \ + free_select.c \ + free_select.h \ + fsdither.h \ + fuzzy_select.c \ + fuzzy_select.h \ + gdisplay.c \ + gdisplay.h \ + gdisplayP.h \ + gdisplay_cmds.c \ + gdisplay_cmds.h \ + gdisplay_ops.c \ + gdisplay_ops.h \ + general.c \ + general.h \ + gimage.c \ + gimage.h \ + gimage_cmds.c \ + gimage_cmds.h \ + gimage_mask.c \ + gimage_mask.h \ + gimage_mask_cmds.c \ + gimage_mask_cmds.h \ + gimprc.c \ + gimprc.h \ + global_edit.c \ + global_edit.h \ + gradient.c \ + gradient.h \ + gximage.c \ + gximage.h \ + histogram.c \ + histogram.h \ + histogram_tool.c \ + histogram_tool.h \ + hue_saturation.c \ + hue_saturation.h \ + image_map.c \ + image_map.h \ + image_render.c \ + image_render.h \ + indexed_palette.c \ + indexed_palette.h \ + info_dialog.c \ + info_dialog.h \ + info_window.c \ + info_window.h \ + install.c \ + install.h \ + interface.c \ + interface.h \ + internal_procs.c \ + internal_procs.h \ + invert.c \ + invert.h \ + iscissors.c \ + iscissors.h \ + layer.c \ + layer.h \ + layer_cmds.c \ + layer_cmds.h \ + layer_select.c \ + layer_select.h \ + layers_dialog.c \ + layers_dialog.h \ + layers_dialogP.h \ + levels.c \ + levels.h \ + linked.c \ + linked.h \ + magnify.c \ + magnify.h \ + main.c \ + marching_ants.h \ + menus.c \ + menus.h \ + move.c \ + move.h \ + palette.c \ + palette.h \ + paint_core.c \ + paint_core.h \ + paint_funcs.c \ + paint_funcs.h \ + paintbrush.c \ + paintbrush.h \ + pattern_header.h \ + pattern_select.c \ + pattern_select.h \ + patterns.c \ + patterns.h \ + pencil.c \ + pencil.h \ + perspective_tool.c \ + perspective_tool.h \ + pixel_region.c \ + pixel_region.h \ + pixmaps.h \ + plug_in.c \ + plug_in.h \ + posterize.c \ + posterize.h \ + procedural_db.c \ + procedural_db.h \ + rect_select.c \ + rect_select.h \ + rect_selectP.h \ + resize.c \ + resize.h \ + rotate_tool.c \ + rotate_tool.h \ + scale.c \ + scale.h \ + scale_tool.c \ + scale_tool.h \ + scroll.c \ + scroll.h \ + selection.c \ + selection.h \ + shear_tool.c \ + shear_tool.h \ + temp_buf.c \ + temp_buf.h \ + text_tool.c \ + text_tool.h \ + threshold.c \ + threshold.h \ + tile.c \ + tile.h \ + tile_cache.c \ + tile_cache.h \ + tile_manager.c \ + tile_manager.h \ + tile_swap.c \ + tile_swap.h \ + tools.c \ + tools.h \ + transform_core.c \ + transform_core.h \ + transform_tool.c \ + transform_tool.h \ + undo.c \ + undo.h \ + undo_cmds.c \ + undo_cmds.h \ + xcf.c \ + xcf.h + +EXTRA_DIST = \ + tools/channel.xbm \ + tools/eye.xbm \ + tools/layer.xbm \ + tools/linked.xbm \ + tools/mask.xbm + +CPPFLAGS = \ + -DLIBDIR=\""$(gimpplugindir)"\" \ + -DDATADIR=\""$(gimpdatadir)"\" \ + -DGIMPDIR=\""$(gimpdir)"\" \ + -DVERSION=\"$(VERSION)\" + +INCLUDES = \ + $(X_CFLAGS) \ + -I$(top_srcdir)/gtk+ \ + -I$(top_srcdir)/gtk+/glib \ + -I$(top_srcdir) + +gimp_LDADD = \ + $(top_builddir)/gtk+/gtk/libgtk.la \ + $(top_builddir)/gtk+/gdk/libgdk.la \ + $(X_LDFLAGS) \ + $(X_LIBS) \ + $(top_builddir)/libgimp/libgimpi.a \ + $(top_builddir)/gtk+/glib/libglib.la \ + -lm + +DEPS = \ + $(top_builddir)/libgimp/libgimpi.a \ + $(top_builddir)/gtk+/gtk/libgtk.la \ + $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/gtk+/glib/libglib.la + +gimp_DEPENDENCIES = $(DEPS) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.. +LDFLAGS = +LIBS = +gimp_OBJECTS = about_dialog.o actionarea.o airbrush.o app_procs.o \ +asupsample.o batch.o bezier_select.o blend.o boundary.o \ +brightness_contrast.o brush_select.o brushes.o bucket_fill.o \ +buildmenu.o by_color_select.o channel.o channel_cmds.o \ +channels_dialog.o channel_ops.o clone.o color_area.o color_balance.o \ +color_panel.o color_picker.o color_select.o color_transfer.o \ +colormaps.o commands.o convert.o convolve.o crop.o cursorutil.o \ +curves.o datafiles.o desaturate.o disp_callbacks.o draw_core.o \ +drawable.o drawable_cmds.o edit_cmds.o edit_selection.o \ +ellipse_select.o eraser.o errors.o equalize.o fileops.o flip_tool.o \ +floating_sel.o floating_sel_cmds.o frac.o free_select.o fuzzy_select.o \ +gdisplay.o gdisplay_cmds.o gdisplay_ops.o general.o gimage.o \ +gimage_cmds.o gimage_mask.o gimage_mask_cmds.o gimprc.o global_edit.o \ +gradient.o gximage.o histogram.o histogram_tool.o hue_saturation.o \ +image_map.o image_render.o indexed_palette.o info_dialog.o \ +info_window.o install.o interface.o internal_procs.o invert.o \ +iscissors.o layer.o layer_cmds.o layer_select.o layers_dialog.o \ +levels.o linked.o magnify.o main.o menus.o move.o palette.o \ +paint_core.o paint_funcs.o paintbrush.o pattern_select.o patterns.o \ +pencil.o perspective_tool.o pixel_region.o plug_in.o posterize.o \ +procedural_db.o rect_select.o resize.o rotate_tool.o scale.o \ +scale_tool.o scroll.o selection.o shear_tool.o temp_buf.o text_tool.o \ +threshold.o tile.o tile_cache.o tile_manager.o tile_swap.o tools.o \ +transform_core.o transform_tool.o undo.o undo_cmds.o xcf.o +gimp_LDFLAGS = +CFLAGS = -g -O2 -Wall +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = Makefile.am Makefile.in TODO + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +DEP_FILES = .deps/about_dialog.P .deps/actionarea.P .deps/airbrush.P \ +.deps/app_procs.P .deps/asupsample.P .deps/batch.P \ +.deps/bezier_select.P .deps/blend.P .deps/boundary.P \ +.deps/brightness_contrast.P .deps/brush_select.P .deps/brushes.P \ +.deps/bucket_fill.P .deps/buildmenu.P .deps/by_color_select.P \ +.deps/channel.P .deps/channel_cmds.P .deps/channel_ops.P \ +.deps/channels_dialog.P .deps/clone.P .deps/color_area.P \ +.deps/color_balance.P .deps/color_panel.P .deps/color_picker.P \ +.deps/color_select.P .deps/color_transfer.P .deps/colormaps.P \ +.deps/commands.P .deps/convert.P .deps/convolve.P .deps/crop.P \ +.deps/cursorutil.P .deps/curves.P .deps/datafiles.P .deps/desaturate.P \ +.deps/disp_callbacks.P .deps/draw_core.P .deps/drawable.P \ +.deps/drawable_cmds.P .deps/edit_cmds.P .deps/edit_selection.P \ +.deps/ellipse_select.P .deps/equalize.P .deps/eraser.P .deps/errors.P \ +.deps/fileops.P .deps/flip_tool.P .deps/floating_sel.P \ +.deps/floating_sel_cmds.P .deps/frac.P .deps/free_select.P \ +.deps/fuzzy_select.P .deps/gdisplay.P .deps/gdisplay_cmds.P \ +.deps/gdisplay_ops.P .deps/general.P .deps/gimage.P .deps/gimage_cmds.P \ +.deps/gimage_mask.P .deps/gimage_mask_cmds.P .deps/gimprc.P \ +.deps/global_edit.P .deps/gradient.P .deps/gximage.P .deps/histogram.P \ +.deps/histogram_tool.P .deps/hue_saturation.P .deps/image_map.P \ +.deps/image_render.P .deps/indexed_palette.P .deps/info_dialog.P \ +.deps/info_window.P .deps/install.P .deps/interface.P \ +.deps/internal_procs.P .deps/invert.P .deps/iscissors.P .deps/layer.P \ +.deps/layer_cmds.P .deps/layer_select.P .deps/layers_dialog.P \ +.deps/levels.P .deps/linked.P .deps/magnify.P .deps/main.P \ +.deps/menus.P .deps/move.P .deps/paint_core.P .deps/paint_funcs.P \ +.deps/paintbrush.P .deps/palette.P .deps/pattern_select.P \ +.deps/patterns.P .deps/pencil.P .deps/perspective_tool.P \ +.deps/pixel_region.P .deps/plug_in.P .deps/posterize.P \ +.deps/procedural_db.P .deps/rect_select.P .deps/resize.P \ +.deps/rotate_tool.P .deps/scale.P .deps/scale_tool.P .deps/scroll.P \ +.deps/selection.P .deps/shear_tool.P .deps/temp_buf.P .deps/text_tool.P \ +.deps/threshold.P .deps/tile.P .deps/tile_cache.P .deps/tile_manager.P \ +.deps/tile_swap.P .deps/tools.P .deps/transform_core.P \ +.deps/transform_tool.P .deps/undo.P .deps/undo_cmds.P .deps/xcf.P +SOURCES = $(gimp_SOURCES) +OBJECTS = $(gimp_OBJECTS) + +default: all + +.SUFFIXES: +.SUFFIXES: .c .lo .o +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu app/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + $(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \ + done + +.c.o: + $(COMPILE) -c $< + +mostlyclean-compile: + rm -f *.o core + +clean-compile: + +distclean-compile: + rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + rm -f *.lo + +clean-libtool: + rm -rf .libs + +distclean-libtool: + +maintainer-clean-libtool: + +gimp: $(gimp_OBJECTS) $(gimp_DEPENDENCIES) + @rm -f gimp + $(LINK) $(gimp_LDFLAGS) $(gimp_OBJECTS) $(gimp_LDADD) $(LIBS) + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) + here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = app + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu app/Makefile + $(mkinstalldirs) $(distdir)/tools + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp +info: +dvi: +check: all + $(MAKE) +installcheck: +install-exec: install-binPROGRAMS + @$(NORMAL_INSTALL) + +install-data: + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: uninstall-binPROGRAMS + +all: Makefile $(PROGRAMS) + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + $(mkinstalldirs) $(bindir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +clean: clean-binPROGRAMS clean-compile clean-libtool clean-tags \ + clean-depend clean-generic mostlyclean + +distclean: distclean-binPROGRAMS distclean-compile distclean-libtool \ + distclean-tags distclean-depend distclean-generic clean + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-binPROGRAMS maintainer-clean-compile \ + maintainer-clean-libtool maintainer-clean-tags \ + maintainer-clean-depend maintainer-clean-generic \ + distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default mostlyclean-binPROGRAMS distclean-binPROGRAMS \ +clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \ +install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile mostlyclean-libtool distclean-libtool \ +clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck install-exec install-data \ +install uninstall all installdirs mostlyclean-generic distclean-generic \ +clean-generic maintainer-clean-generic clean mostlyclean distclean \ +maintainer-clean + +include $(GTK_XCONFIG) + +.PHONY: files + +files: + @files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \ + echo $$p; \ + done + +$(GTK_XCONFIG): + touch $(GTK_XCONFIG) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/app/Makefile.in gimp-0.99.pre11/app/Makefile.in --- gimp-0.99.10/app/Makefile.in Sat Jun 7 00:26:38 1997 +++ gimp-0.99.pre11/app/Makefile.in Wed Aug 13 23:35:28 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -47,15 +47,25 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBJPEG_INC = @LIBJPEG_INC@ LIBJPEG_LIB = @LIBJPEG_LIB@ +LIBPNG_INC = @LIBPNG_INC@ +LIBPNG_LIB = @LIBPNG_LIB@ LIBTIFF_INC = @LIBTIFF_INC@ LIBTIFF_LIB = @LIBTIFF_LIB@ LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -397,7 +407,7 @@ CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = Makefile.am Makefile.in TODO @@ -405,13 +415,49 @@ TAR = tar GZIP = --best +DEP_FILES = .deps/about_dialog.P .deps/actionarea.P .deps/airbrush.P \ +.deps/app_procs.P .deps/asupsample.P .deps/batch.P \ +.deps/bezier_select.P .deps/blend.P .deps/boundary.P \ +.deps/brightness_contrast.P .deps/brush_select.P .deps/brushes.P \ +.deps/bucket_fill.P .deps/buildmenu.P .deps/by_color_select.P \ +.deps/channel.P .deps/channel_cmds.P .deps/channel_ops.P \ +.deps/channels_dialog.P .deps/clone.P .deps/color_area.P \ +.deps/color_balance.P .deps/color_panel.P .deps/color_picker.P \ +.deps/color_select.P .deps/color_transfer.P .deps/colormaps.P \ +.deps/commands.P .deps/convert.P .deps/convolve.P .deps/crop.P \ +.deps/cursorutil.P .deps/curves.P .deps/datafiles.P .deps/desaturate.P \ +.deps/disp_callbacks.P .deps/draw_core.P .deps/drawable.P \ +.deps/drawable_cmds.P .deps/edit_cmds.P .deps/edit_selection.P \ +.deps/ellipse_select.P .deps/equalize.P .deps/eraser.P .deps/errors.P \ +.deps/fileops.P .deps/flip_tool.P .deps/floating_sel.P \ +.deps/floating_sel_cmds.P .deps/frac.P .deps/free_select.P \ +.deps/fuzzy_select.P .deps/gdisplay.P .deps/gdisplay_cmds.P \ +.deps/gdisplay_ops.P .deps/general.P .deps/gimage.P .deps/gimage_cmds.P \ +.deps/gimage_mask.P .deps/gimage_mask_cmds.P .deps/gimprc.P \ +.deps/global_edit.P .deps/gradient.P .deps/gximage.P .deps/histogram.P \ +.deps/histogram_tool.P .deps/hue_saturation.P .deps/image_map.P \ +.deps/image_render.P .deps/indexed_palette.P .deps/info_dialog.P \ +.deps/info_window.P .deps/install.P .deps/interface.P \ +.deps/internal_procs.P .deps/invert.P .deps/iscissors.P .deps/layer.P \ +.deps/layer_cmds.P .deps/layer_select.P .deps/layers_dialog.P \ +.deps/levels.P .deps/linked.P .deps/magnify.P .deps/main.P \ +.deps/menus.P .deps/move.P .deps/paint_core.P .deps/paint_funcs.P \ +.deps/paintbrush.P .deps/palette.P .deps/pattern_select.P \ +.deps/patterns.P .deps/pencil.P .deps/perspective_tool.P \ +.deps/pixel_region.P .deps/plug_in.P .deps/posterize.P \ +.deps/procedural_db.P .deps/rect_select.P .deps/resize.P \ +.deps/rotate_tool.P .deps/scale.P .deps/scale_tool.P .deps/scroll.P \ +.deps/selection.P .deps/shear_tool.P .deps/temp_buf.P .deps/text_tool.P \ +.deps/threshold.P .deps/tile.P .deps/tile_cache.P .deps/tile_manager.P \ +.deps/tile_swap.P .deps/tools.P .deps/transform_core.P \ +.deps/transform_tool.P .deps/undo.P .deps/undo_cmds.P .deps/xcf.P SOURCES = $(gimp_SOURCES) OBJECTS = $(gimp_OBJECTS) default: all .SUFFIXES: -.SUFFIXES: .c .o .lo +.SUFFIXES: .c .lo .o $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu app/Makefile @@ -430,9 +476,9 @@ maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(bindir) - @list="$(bin_PROGRAMS)"; for p in $$list; do \ + @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`"; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \ @@ -440,7 +486,8 @@ done uninstall-binPROGRAMS: - list="$(bin_PROGRAMS)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \ done @@ -469,9 +516,9 @@ distclean-libtool: maintainer-clean-libtool: -$(gimp_OBJECTS): ../config.h gimp: $(gimp_OBJECTS) $(gimp_DEPENDENCIES) + @rm -f gimp $(LINK) $(gimp_LDFLAGS) $(gimp_OBJECTS) $(gimp_LDADD) $(LIBS) tags: TAGS @@ -482,11 +529,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - done; \ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -500,7 +544,12 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = app + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu app/Makefile $(mkinstalldirs) $(distdir)/tools @for file in $(DISTFILES); do \ d=$(srcdir); \ @@ -508,4868 +557,52 @@ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done -about_dialog.o about_dialog.lo: about_dialog.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - about_dialog.h interface.h -actionarea.o actionarea.lo: actionarea.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h -airbrush.o airbrush.lo: airbrush.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h errors.h gdisplay.h info_dialog.h selection.h \ - paint_core.h draw_core.h tools.h palette.h airbrush.h -app_procs.o app_procs.lo: app_procs.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h app_procs.h \ - batch.h brushes.h linked.h procedural_db.h temp_buf.h \ - color_transfer.h curves.h tools.h gdisplay.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h info_dialog.h selection.h colormaps.h \ - fileops.h gimprc.h global_edit.h gradient.h gximage.h \ - hue_saturation.h image_render.h interface.h internal_procs.h \ - layers_dialog.h levels.h menus.h palette.h patterns.h plug_in.h \ - tile_swap.h undo.h xcf.h -asupsample.o asupsample.lo: asupsample.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - asupsample.h -batch.o batch.lo: batch.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h app_procs.h \ - batch.h procedural_db.h -bezier_select.o bezier_select.lo: bezier_select.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - bezier_select.h tools.h bezier_selectP.h draw_core.h \ - edit_selection.h errors.h gdisplay.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h info_dialog.h selection.h \ - gimage_mask.h rect_select.h procedural_db.h -blend.o blend.lo: blend.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - asupsample.h blend.h tools.h procedural_db.h brush_select.h \ - buildmenu.h draw_core.h drawable.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h errors.h fuzzy_select.h gdisplay.h \ - info_dialog.h selection.h gimage_mask.h gradient.h interface.h \ - palette.h undo.h -boundary.o boundary.lo: boundary.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h errors.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h -brightness_contrast.o brightness_contrast.lo: brightness_contrast.c \ - appenv.h ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h brightness_contrast.h tools.h procedural_db.h \ - drawable.h gimage.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h layer.h linked.h \ - general.h gimage_mask.h gdisplay.h info_dialog.h selection.h \ - image_map.h interface.h -brush_select.o brush_select.lo: brush_select.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h brushes.h linked.h procedural_db.h temp_buf.h \ - brush_select.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - layer.h disp_callbacks.h errors.h -brushes.o brushes.lo: brushes.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h brush_header.h \ - brush_select.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - layer.h datafiles.h errors.h general.h gimprc.h menus.h -bucket_fill.o bucket_fill.lo: bucket_fill.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - brush_select.h buildmenu.h bucket_fill.h tools.h \ - procedural_db.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h fuzzy_select.h gdisplay.h info_dialog.h \ - selection.h gimage_mask.h interface.h palette.h patterns.h \ - undo.h -buildmenu.o buildmenu.lo: buildmenu.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h buildmenu.h \ - interface.h -by_color_select.o by_color_select.lo: by_color_select.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h \ - by_color_select.h tools.h procedural_db.h colormaps.h gimage.h \ - channel.h temp_buf.h layer.h linked.h drawable.h draw_core.h \ - general.h gimage_mask.h gimprc.h gdisplay.h info_dialog.h \ - selection.h rect_select.h -channel.o channel.lo: channel.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h channel.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - temp_buf.h drawable.h gimage.h layer.h linked.h errors.h \ - gimage_mask.h undo.h -channel_cmds.o channel_cmds.lo: channel_cmds.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h general.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h channel_cmds.h \ - procedural_db.h -channel_ops.o channel_ops.lo: channel_ops.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h channel_ops.h procedural_db.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h temp_buf.h layer.h linked.h floating_sel.h general.h \ - gdisplay.h info_dialog.h selection.h interface.h palette.h -channels_dialog.o channels_dialog.lo: channels_dialog.c \ - ../gtk+/gdk/gdkkeysyms.h appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h buildmenu.h channels_dialog.h colormaps.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h temp_buf.h layer.h linked.h color_panel.h drawable.h \ - errors.h gdisplay.h info_dialog.h selection.h gimage_mask.h \ - gimprc.h procedural_db.h general.h interface.h layers_dialogP.h \ - palette.h resize.h tools/eye.xbm tools/channel.xbm -clone.o clone.lo: clone.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h errors.h gdisplay.h info_dialog.h selection.h \ - gimage_mask.h interface.h paint_core.h draw_core.h tools.h \ - patterns.h clone.h -color_area.o color_area.lo: color_area.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - color_area.h color_select.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h palette.h procedural_db.h -color_balance.o color_balance.lo: color_balance.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h color_balance.h tools.h procedural_db.h \ - color_transfer.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h general.h gimage_mask.h gdisplay.h \ - info_dialog.h selection.h image_map.h interface.h -color_panel.o color_panel.lo: color_panel.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - color_panel.h color_select.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h -color_picker.o color_picker.lo: color_picker.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - color_picker.h procedural_db.h tools.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h temp_buf.h layer.h linked.h gdisplay.h info_dialog.h \ - selection.h palette.h -color_select.o color_select.lo: color_select.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h color_select.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h errors.h gimprc.h procedural_db.h -color_transfer.o color_transfer.lo: color_transfer.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - color_transfer.h -colormaps.o colormaps.lo: colormaps.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h app_procs.h \ - colormaps.h gimage.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h layer.h linked.h \ - errors.h general.h gimprc.h procedural_db.h -commands.o commands.lo: commands.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - about_dialog.h actionarea.h app_procs.h brightness_contrast.h \ - tools.h procedural_db.h brushes.h linked.h temp_buf.h \ - by_color_select.h channels_dialog.h colormaps.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h color_balance.h commands.h convert.h curves.h \ - desaturate.h channel_ops.h drawable.h equalize.h fileops.h \ - floating_sel.h gdisplay_ops.h gdisplay.h info_dialog.h \ - selection.h general.h gimage_mask.h gimprc.h global_edit.h \ - gradient.h histogram_tool.h hue_saturation.h image_render.h \ - indexed_palette.h info_window.h interface.h invert.h \ - layers_dialog.h levels.h palette.h patterns.h plug_in.h \ - posterize.h resize.h scale.h threshold.h undo.h -convert.o convert.lo: convert.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h convert.h procedural_db.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h temp_buf.h layer.h linked.h floating_sel.h fsdither.h \ - gdisplay.h info_dialog.h selection.h indexed_palette.h \ - interface.h undo.h -convolve.o convolve.lo: convolve.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h errors.h convolve.h paint_core.h draw_core.h \ - tools.h gdisplay.h info_dialog.h selection.h -crop.o crop.lo: crop.c ../gtk+/gdk/gdkkeysyms.h appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h draw_core.h tools.h drawable.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h floating_sel.h gdisplay.h \ - info_dialog.h selection.h gimage_mask.h crop.h procedural_db.h \ - undo.h -cursorutil.o cursorutil.lo: cursorutil.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - cursorutil.h -curves.o curves.lo: curves.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h cursorutil.h drawable.h general.h \ - gdisplay.h info_dialog.h selection.h histogram.h image_map.h \ - interface.h curves.h tools.h procedural_db.h -datafiles.o datafiles.lo: datafiles.c ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h datafiles.h errors.h general.h \ - gimprc.h linked.h procedural_db.h -desaturate.o desaturate.lo: desaturate.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h desaturate.h \ - procedural_db.h interface.h -disp_callbacks.o disp_callbacks.lo: disp_callbacks.c \ - ../gtk+/gdk/gdkkeysyms.h appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h colormaps.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h cursorutil.h \ - disp_callbacks.h gdisplay.h info_dialog.h selection.h general.h \ - gimprc.h procedural_db.h interface.h layer_select.h move.h \ - tools.h scale.h scroll.h -draw_core.o draw_core.lo: draw_core.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h draw_core.h \ - tools.h -drawable.o drawable.lo: drawable.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h channel.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - temp_buf.h drawable.h gimage.h layer.h linked.h errors.h \ - floating_sel.h gimage_mask.h gdisplay.h info_dialog.h \ - selection.h palette.h procedural_db.h -drawable_cmds.o drawable_cmds.lo: drawable_cmds.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h general.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h drawable.h \ - drawable_cmds.h procedural_db.h -edit_cmds.o edit_cmds.lo: edit_cmds.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h gimage_mask.h \ - global_edit.h edit_cmds.h procedural_db.h -edit_selection.o edit_selection.lo: edit_selection.c \ - ../gtk+/gdk/gdkkeysyms.h appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h draw_core.h \ - tools.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h edit_selection.h floating_sel.h gimage_mask.h \ - gdisplay.h info_dialog.h selection.h undo.h -ellipse_select.o ellipse_select.lo: ellipse_select.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - edit_selection.h tools.h ellipse_select.h procedural_db.h \ - gdisplay.h gimage.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h layer.h linked.h \ - info_dialog.h selection.h gimage_mask.h rect_select.h \ - rect_selectP.h draw_core.h -equalize.o equalize.lo: equalize.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h equalize.h \ - procedural_db.h interface.h -eraser.o eraser.lo: eraser.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h errors.h gdisplay.h info_dialog.h selection.h \ - paint_core.h draw_core.h tools.h palette.h eraser.h -errors.o errors.lo: errors.c ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h app_procs.h errors.h -fileops.o fileops.lo: fileops.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h gdisplay.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h info_dialog.h selection.h general.h fileops.h \ - interface.h menus.h plug_in.h procedural_db.h gimprc.h -flip_tool.o flip_tool.lo: flip_tool.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - cursorutil.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h flip_tool.h tools.h procedural_db.h gdisplay.h \ - info_dialog.h selection.h transform_core.h draw_core.h undo.h -floating_sel.o floating_sel.lo: floating_sel.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - channels_dialog.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h errors.h floating_sel.h gimage_mask.h \ - interface.h undo.h -floating_sel_cmds.o floating_sel_cmds.lo: floating_sel_cmds.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h general.h \ - floating_sel.h floating_sel_cmds.h procedural_db.h -frac.o frac.lo: frac.c tile.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h channel.h temp_buf.h layer.h \ - linked.h xcf.h frac.h -free_select.o free_select.lo: free_select.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h draw_core.h \ - tools.h edit_selection.h errors.h free_select.h procedural_db.h \ - gimage_mask.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h gimage.h channel.h temp_buf.h layer.h \ - linked.h gdisplay.h info_dialog.h selection.h rect_select.h -fuzzy_select.o fuzzy_select.lo: fuzzy_select.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h draw_core.h \ - tools.h drawable.h gimage.h channel.h temp_buf.h layer.h \ - linked.h edit_selection.h fuzzy_select.h procedural_db.h \ - gimage_mask.h gimprc.h gdisplay.h info_dialog.h selection.h \ - rect_select.h -gdisplay.o gdisplay.lo: gdisplay.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h buildmenu.h \ - channels_dialog.h colormaps.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h cursorutil.h disp_callbacks.h drawable.h \ - gdisplay.h info_dialog.h selection.h gdisplayP.h gdisplay_ops.h \ - general.h gimage_mask.h gimprc.h procedural_db.h gximage.h \ - image_render.h info_window.h interface.h layers_dialog.h \ - menus.h plug_in.h scale.h scroll.h tools.h undo.h -gdisplay_cmds.o gdisplay_cmds.lo: gdisplay_cmds.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h general.h \ - gdisplay.h gimage.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h layer.h linked.h \ - info_dialog.h selection.h gdisplay_cmds.h procedural_db.h -gdisplay_ops.o gdisplay_ops.lo: gdisplay_ops.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h colormaps.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h cursorutil.h fileops.h gdisplay_ops.h \ - gdisplay.h info_dialog.h selection.h general.h gximage.h \ - interface.h menus.h scale.h -general.o general.lo: general.c ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h general.h -gimage.o gimage.lo: gimage.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - channels_dialog.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h errors.h floating_sel.h gdisplay.h \ - info_dialog.h selection.h general.h gimage_mask.h \ - indexed_palette.h interface.h layers_dialog.h palette.h \ - procedural_db.h plug_in.h undo.h -gimage_cmds.o gimage_cmds.lo: gimage_cmds.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h general.h \ - gdisplay.h info_dialog.h selection.h gimage_cmds.h \ - procedural_db.h -gimage_mask.o gimage_mask.lo: gimage_mask.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h errors.h floating_sel.h gdisplay.h \ - info_dialog.h selection.h gimage_mask.h interface.h \ - layers_dialog.h paint_core.h draw_core.h tools.h undo.h -gimage_mask_cmds.o gimage_mask_cmds.lo: gimage_mask_cmds.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h general.h \ - gimage_mask.h gimage_mask_cmds.h procedural_db.h -gimprc.o gimprc.lo: gimprc.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h errors.h \ - fileops.h general.h gimprc.h linked.h procedural_db.h menus.h \ - plug_in.h -global_edit.o global_edit.lo: global_edit.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h floating_sel.h gdisplay.h info_dialog.h \ - selection.h gimage_mask.h general.h global_edit.h interface.h \ - tools.h undo.h -gradient.o gradient.lo: gradient.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h colormaps.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h cursorutil.h \ - datafiles.h errors.h general.h gimprc.h procedural_db.h \ - gradient.h interface.h palette.h -gximage.o gximage.lo: gximage.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h colormaps.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h gximage.h errors.h -histogram.o histogram.lo: histogram.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h errors.h \ - gdisplay.h info_dialog.h selection.h gimage_mask.h histogram.h -histogram_tool.o histogram_tool.lo: histogram_tool.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h buildmenu.h drawable.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h general.h gdisplay.h info_dialog.h \ - selection.h histogram.h histogram_tool.h tools.h \ - procedural_db.h image_map.h interface.h -hue_saturation.o hue_saturation.lo: hue_saturation.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h colormaps.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h drawable.h general.h gimage_mask.h gdisplay.h \ - info_dialog.h selection.h hue_saturation.h tools.h \ - procedural_db.h image_map.h interface.h -image_map.o image_map.lo: image_map.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h errors.h \ - gdisplay.h info_dialog.h selection.h gimage_mask.h image_map.h -image_render.o image_render.lo: image_render.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h colormaps.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h errors.h gimprc.h \ - procedural_db.h gximage.h image_render.h gdisplay.h \ - info_dialog.h selection.h scale.h -indexed_palette.o indexed_palette.lo: indexed_palette.c \ - ../gtk+/gdk/gdkkeysyms.h appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h color_select.h errors.h gdisplay.h \ - info_dialog.h selection.h gimprc.h procedural_db.h general.h \ - image_render.h interface.h indexed_palette.h undo.h -info_dialog.o info_dialog.lo: info_dialog.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h gimprc.h \ - linked.h procedural_db.h info_dialog.h interface.h -info_window.o info_window.lo: info_window.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h colormaps.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h info_dialog.h info_window.h gdisplay.h \ - selection.h general.h gximage.h interface.h -install.o install.lo: install.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h install.h interface.h gimprc.h linked.h \ - procedural_db.h -interface.o interface.lo: interface.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h app_procs.h buildmenu.h colormaps.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h temp_buf.h layer.h linked.h color_area.h commands.h \ - disp_callbacks.h errors.h gdisplay.h info_dialog.h selection.h \ - gdisplay_ops.h gimprc.h procedural_db.h general.h interface.h \ - menus.h tools.h pixmaps.h -internal_procs.o internal_procs.lo: internal_procs.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h airbrush.h \ - tools.h paint_core.h draw_core.h temp_buf.h procedural_db.h \ - blend.h bucket_fill.h brightness_contrast.h brushes.h linked.h \ - by_color_select.h channel_cmds.h channel_ops.h clone.h \ - color_balance.h color_picker.h convert.h convolve.h crop.h \ - curves.h desaturate.h drawable_cmds.h edit_cmds.h \ - ellipse_select.h equalize.h eraser.h flip_tool.h \ - floating_sel_cmds.h free_select.h fuzzy_select.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h gdisplay_cmds.h gimage_cmds.h \ - gimage_mask_cmds.h gimprc.h gradient.h histogram_tool.h \ - hue_saturation.h invert.h layer_cmds.h levels.h \ - internal_procs.h paintbrush.h palette.h patterns.h pencil.h \ - perspective_tool.h posterize.h rect_select.h rotate_tool.h \ - scale_tool.h shear_tool.h text_tool.h threshold.h undo_cmds.h -invert.o invert.lo: invert.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h interface.h \ - invert.h procedural_db.h -iscissors.o iscissors.lo: iscissors.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - bezier_selectP.h draw_core.h tools.h errors.h gdisplay.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h info_dialog.h \ - selection.h gimage_mask.h interface.h iscissors.h \ - edit_selection.h rect_select.h procedural_db.h -layer.o layer.lo: layer.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h errors.h \ - floating_sel.h gdisplay.h info_dialog.h selection.h \ - gimage_mask.h interface.h layers_dialog.h undo.h -layer_cmds.o layer_cmds.lo: layer_cmds.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - floating_sel.h layer.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h general.h gimage.h \ - linked.h layer_cmds.h procedural_db.h undo.h -layer_select.o layer_select.lo: layer_select.c ../gtk+/gdk/gdkkeysyms.h \ - appenv.h ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h colormaps.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h errors.h \ - gdisplay.h info_dialog.h selection.h gimprc.h procedural_db.h \ - interface.h layer_select.h layers_dialogP.h buildmenu.h -layers_dialog.o layers_dialog.lo: layers_dialog.c \ - ../gtk+/gdk/gdkkeysyms.h appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h drawable.h errors.h floating_sel.h \ - gdisplay.h info_dialog.h selection.h gimage_mask.h gimprc.h \ - procedural_db.h general.h image_render.h interface.h \ - layers_dialog.h layers_dialogP.h palette.h resize.h undo.h \ - tools/eye.xbm tools/linked.xbm tools/layer.xbm tools/mask.xbm -levels.o levels.lo: levels.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h drawable.h general.h gdisplay.h \ - info_dialog.h selection.h histogram.h image_map.h interface.h \ - levels.h tools.h procedural_db.h -linked.o linked.lo: linked.c ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h linked.h -magnify.o magnify.lo: magnify.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h draw_core.h \ - tools.h gdisplay.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h info_dialog.h selection.h gimprc.h \ - procedural_db.h magnify.h scale.h -main.o main.lo: main.c ../config.h appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h app_procs.h \ - errors.h install.h tile.h -menus.o menus.lo: menus.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h colormaps.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h commands.h \ - fileops.h gimprc.h procedural_db.h menus.h scale.h gdisplay.h \ - info_dialog.h selection.h tools.h -move.o move.lo: move.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h draw_core.h \ - tools.h edit_selection.h errors.h floating_sel.h layer.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h temp_buf.h gimage_mask.h gimage.h linked.h gdisplay.h \ - info_dialog.h selection.h gdisplay_ops.h move.h undo.h -paint_core.o paint_core.lo: paint_core.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h channels_dialog.h \ - drawable.h gimage.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h layer.h errors.h gdisplay.h \ - info_dialog.h selection.h gimage_mask.h layers_dialog.h \ - paint_core.h draw_core.h tools.h undo.h -paint_funcs.o paint_funcs.lo: paint_funcs.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h gimprc.h \ - linked.h procedural_db.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h boundary.h -paintbrush.o paintbrush.lo: paintbrush.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h errors.h gdisplay.h info_dialog.h selection.h \ - paint_core.h draw_core.h tools.h palette.h paintbrush.h -palette.o palette.lo: palette.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h color_area.h color_select.h \ - datafiles.h errors.h general.h gimprc.h procedural_db.h \ - interface.h palette.h -pattern_select.o pattern_select.lo: pattern_select.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h patterns.h linked.h temp_buf.h procedural_db.h \ - pattern_select.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - layer.h disp_callbacks.h errors.h -patterns.o patterns.lo: patterns.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h colormaps.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h datafiles.h \ - patterns.h procedural_db.h pattern_header.h pattern_select.h \ - buildmenu.h errors.h general.h gimprc.h menus.h -pencil.o pencil.lo: pencil.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h brushes.h \ - linked.h procedural_db.h temp_buf.h drawable.h gimage.h \ - boundary.h paint_funcs.h pixel_region.h tile_manager.h tile.h \ - channel.h layer.h errors.h gdisplay.h info_dialog.h selection.h \ - paint_core.h draw_core.h tools.h palette.h paintbrush.h \ - pencil.h -perspective_tool.o perspective_tool.lo: perspective_tool.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h gdisplay.h \ - info_dialog.h selection.h gimage_mask.h perspective_tool.h \ - tools.h procedural_db.h transform_core.h draw_core.h \ - transform_tool.h undo.h -pixel_region.o pixel_region.lo: pixel_region.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h linked.h \ - pixel_region.h tile_manager.h tile.h -plug_in.o plug_in.lo: plug_in.c ../libgimp/gimpprotocol.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../libgimp/gimpwire.h appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h datafiles.h \ - errors.h gdisplay.h info_dialog.h selection.h general.h \ - gimprc.h procedural_db.h interface.h menus.h plug_in.h -posterize.o posterize.lo: posterize.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h gdisplay.h info_dialog.h selection.h \ - image_map.h interface.h posterize.h tools.h procedural_db.h -procedural_db.o procedural_db.lo: procedural_db.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h general.h \ - gdisplay.h gimage.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h layer.h linked.h \ - info_dialog.h selection.h plug_in.h procedural_db.h -rect_select.o rect_select.lo: rect_select.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h gdisplay.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h info_dialog.h \ - selection.h gimage_mask.h edit_selection.h tools.h \ - floating_sel.h rect_select.h procedural_db.h rect_selectP.h \ - draw_core.h -resize.o resize.lo: resize.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h resize.h -rotate_tool.o rotate_tool.lo: rotate_tool.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h gdisplay.h \ - info_dialog.h selection.h gimage_mask.h palette.h \ - procedural_db.h rotate_tool.h tools.h transform_core.h \ - draw_core.h transform_tool.h undo.h -scale.o scale.lo: scale.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h errors.h \ - gdisplay.h gimage.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h layer.h linked.h \ - info_dialog.h selection.h gdisplay_ops.h gimprc.h \ - procedural_db.h info_window.h scale.h tools.h -scale_tool.o scale_tool.lo: scale_tool.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h gdisplay.h \ - info_dialog.h selection.h gimage_mask.h scale_tool.h tools.h \ - procedural_db.h transform_core.h draw_core.h transform_tool.h \ - undo.h -scroll.o scroll.lo: scroll.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h scale.h \ - gdisplay.h gimage.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h layer.h linked.h \ - info_dialog.h selection.h scroll.h cursorutil.h tools.h -selection.o selection.lo: selection.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h colormaps.h \ - gimage.h channel.h temp_buf.h layer.h linked.h errors.h \ - gdisplay.h info_dialog.h selection.h gdisplay_ops.h \ - gimage_mask.h gimprc.h procedural_db.h marching_ants.h -shear_tool.o shear_tool.lo: shear_tool.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h gdisplay.h \ - info_dialog.h selection.h gimage_mask.h palette.h \ - procedural_db.h shear_tool.h tools.h transform_core.h \ - draw_core.h transform_tool.h undo.h -temp_buf.o temp_buf.lo: temp_buf.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h errors.h \ - gdisplay.h info_dialog.h selection.h general.h gimprc.h \ - procedural_db.h -text_tool.o text_tool.lo: text_tool.c ../gtk+/gdk/gdkkeysyms.h appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h buildmenu.h colormaps.h gimage.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h channel.h \ - temp_buf.h layer.h linked.h drawable.h edit_selection.h tools.h \ - errors.h floating_sel.h gimage_mask.h gdisplay.h info_dialog.h \ - selection.h general.h global_edit.h interface.h palette.h \ - procedural_db.h text_tool.h undo.h -threshold.o threshold.lo: threshold.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h drawable.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h temp_buf.h \ - layer.h linked.h general.h gdisplay.h info_dialog.h selection.h \ - histogram.h image_map.h interface.h threshold.h tools.h \ - procedural_db.h -tile.o tile.lo: tile.c tile.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h tile_cache.h tile_manager.h \ - tile_swap.h -tile_cache.o tile_cache.lo: tile_cache.c ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h gimprc.h linked.h procedural_db.h \ - tile_cache.h tile.h tile_swap.h -tile_manager.o tile_manager.lo: tile_manager.c tile_cache.h tile.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h tile_manager.h \ - tile_swap.h -tile_swap.o tile_swap.lo: tile_swap.c tile_swap.h tile.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h -tools.o tools.lo: tools.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - actionarea.h airbrush.h tools.h paint_core.h draw_core.h \ - temp_buf.h procedural_db.h bezier_select.h blend.h \ - brightness_contrast.h bucket_fill.h by_color_select.h clone.h \ - color_balance.h color_picker.h convolve.h crop.h cursorutil.h \ - curves.h eraser.h gdisplay.h gimage.h boundary.h paint_funcs.h \ - pixel_region.h tile_manager.h tile.h channel.h layer.h linked.h \ - info_dialog.h selection.h hue_saturation.h ellipse_select.h \ - flip_tool.h free_select.h fuzzy_select.h gimprc.h \ - histogram_tool.h interface.h iscissors.h levels.h magnify.h \ - move.h paintbrush.h pencil.h posterize.h rect_select.h \ - text_tool.h threshold.h transform_tool.h -transform_core.o transform_core.lo: transform_core.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h errors.h \ - floating_sel.h general.h gdisplay.h info_dialog.h selection.h \ - gimage_mask.h gimprc.h procedural_db.h interface.h \ - layers_dialog.h palette.h transform_core.h draw_core.h tools.h \ - transform_tool.h undo.h -transform_tool.o transform_tool.lo: transform_tool.c appenv.h \ - ../gtk+/gdk/gdkx.h ../gtk+/gdk/gdkprivate.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h gdisplay.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h info_dialog.h \ - selection.h tools.h perspective_tool.h procedural_db.h \ - rotate_tool.h scale_tool.h shear_tool.h transform_tool.h -undo.o undo.lo: undo.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - by_color_select.h tools.h procedural_db.h channel.h boundary.h \ - paint_funcs.h pixel_region.h tile_manager.h tile.h temp_buf.h \ - channels_dialog.h drawable.h gimage.h layer.h linked.h errors.h \ - floating_sel.h gdisplay.h info_dialog.h selection.h \ - gdisplay_ops.h gimage_mask.h gimprc.h indexed_palette.h \ - paint_core.h draw_core.h transform_core.h undo.h -undo_cmds.o undo_cmds.lo: undo_cmds.c appenv.h ../gtk+/gdk/gdkx.h \ - ../gtk+/gdk/gdkprivate.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h drawable.h \ - gimage.h boundary.h paint_funcs.h pixel_region.h tile_manager.h \ - tile.h channel.h temp_buf.h layer.h linked.h general.h undo.h \ - undo_cmds.h procedural_db.h -xcf.o xcf.lo: xcf.c ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - floating_sel.h layer.h boundary.h paint_funcs.h pixel_region.h \ - tile_manager.h tile.h channel.h temp_buf.h gimage.h linked.h \ - gimage_mask.h plug_in.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - procedural_db.h tile_swap.h xcf.h frac.h +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp info: dvi: check: all $(MAKE) installcheck: install-exec: install-binPROGRAMS - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: uninstall-binPROGRAMS -all: $(PROGRAMS) Makefile +all: Makefile $(PROGRAMS) install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: $(mkinstalldirs) $(bindir) @@ -5382,27 +615,28 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) mostlyclean: mostlyclean-binPROGRAMS mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ mostlyclean-generic clean: clean-binPROGRAMS clean-compile clean-libtool clean-tags \ - clean-generic mostlyclean + clean-depend clean-generic mostlyclean distclean: distclean-binPROGRAMS distclean-compile distclean-libtool \ - distclean-tags distclean-generic clean + distclean-tags distclean-depend distclean-generic clean rm -f config.status rm -f libtool maintainer-clean: maintainer-clean-binPROGRAMS maintainer-clean-compile \ maintainer-clean-libtool maintainer-clean-tags \ - maintainer-clean-generic distclean + maintainer-clean-depend maintainer-clean-generic \ + distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." @@ -5411,10 +645,12 @@ install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile mostlyclean-libtool distclean-libtool \ clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ -installcheck install-exec install-data install uninstall all \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck install-exec install-data \ +install uninstall all installdirs mostlyclean-generic distclean-generic \ +clean-generic maintainer-clean-generic clean mostlyclean distclean \ +maintainer-clean include $(GTK_XCONFIG) diff -u --recursive --new-file gimp-0.99.10/app/bezier_select.c gimp-0.99.pre11/app/bezier_select.c --- gimp-0.99.10/app/bezier_select.c Tue Jun 3 19:32:50 1997 +++ gimp-0.99.pre11/app/bezier_select.c Wed Aug 13 20:31:44 1997 @@ -83,7 +83,7 @@ static void bezier_add_point (BezierSelect *, int, int, int); static void bezier_offset_point (BezierPoint *, int, int); -static int bezier_check_point (BezierPoint *, int, int); +static int bezier_check_point (BezierPoint *, int, int, int); static void bezier_draw_curve (BezierSelect *); static void bezier_draw_handles (BezierSelect *); static void bezier_draw_current (BezierSelect *); @@ -240,6 +240,7 @@ int grab_pointer; int op, replace; int x, y; + int halfwidth, dummy; gdisp = (GDisplay *) gdisp_ptr; bezier_sel = tool->private; @@ -251,6 +252,10 @@ gdisplay_untransform_coords (gdisp, bevent->x, bevent->y, &x, &y, TRUE, 0); + /* get halfwidth in image coord */ + gdisplay_untransform_coords (gdisp, bevent->x + BEZIER_HALFWIDTH, 0, &halfwidth, &dummy, TRUE, 0); + halfwidth -= x; + switch (bezier_sel->state) { case BEZIER_START: @@ -283,26 +288,26 @@ grab_pointer = 1; if (bezier_sel->cur_anchor && - bezier_check_point (bezier_sel->cur_anchor, x, y)) + bezier_check_point (bezier_sel->cur_anchor, x, y, halfwidth)) { break; } if (bezier_sel->cur_anchor->next && - bezier_check_point (bezier_sel->cur_anchor->next, x, y)) + bezier_check_point (bezier_sel->cur_anchor->next, x, y, halfwidth)) { bezier_sel->cur_control = bezier_sel->cur_anchor->next; break; } if (bezier_sel->cur_anchor->prev && - bezier_check_point (bezier_sel->cur_anchor->prev, x, y)) + bezier_check_point (bezier_sel->cur_anchor->prev, x, y, halfwidth)) { bezier_sel->cur_control = bezier_sel->cur_anchor->prev; break; } - if (bezier_check_point (bezier_sel->points, x, y)) + if (bezier_check_point (bezier_sel->points, x, y, halfwidth)) { bezier_sel->draw = BEZIER_DRAW_ALL; draw_core_pause (bezier_sel->core, tool); @@ -349,7 +354,7 @@ /* find if the button press occurred on a point */ do { - if (bezier_check_point (points, x, y)) + if (bezier_check_point (points, x, y, halfwidth)) { /* set the current anchor and control points */ switch (points->type) @@ -683,16 +688,17 @@ static int bezier_check_point (BezierPoint *pt, int x, - int y) + int y, + int halfwidth) { int l, r, t, b; if (pt) { - l = pt->x - BEZIER_HALFWIDTH; - r = pt->x + BEZIER_HALFWIDTH; - t = pt->y - BEZIER_HALFWIDTH; - b = pt->y + BEZIER_HALFWIDTH; + l = pt->x - halfwidth; + r = pt->x + halfwidth; + t = pt->y - halfwidth; + b = pt->y + halfwidth; return ((x >= l) && (x <= r) && (y >= t) && (y <= b)); } diff -u --recursive --new-file gimp-0.99.10/app/blend.c gimp-0.99.pre11/app/blend.c --- gimp-0.99.10/app/blend.c Tue Jun 3 19:32:47 1997 +++ gimp-0.99.pre11/app/blend.c Wed Aug 13 20:31:44 1997 @@ -1216,7 +1216,7 @@ default: fatal_error("gradient_render_pixel(): unknown gradient type %d", (int) rbd->gradient_type); - break; + return; } /* Adjust for repeat */ diff -u --recursive --new-file gimp-0.99.10/app/brushes.c gimp-0.99.pre11/app/brushes.c --- gimp-0.99.10/app/brushes.c Fri Jun 6 15:05:33 1997 +++ gimp-0.99.pre11/app/brushes.c Wed Aug 13 20:31:44 1997 @@ -486,6 +486,24 @@ return return_args; } +static Argument * +brushes_refresh_brush_invoker (Argument *args) +{ + + /* FIXME: I've hardcoded success to be 1, because brushes_init() is a + * void function right now. It'd be nice if it returned a value at + * some future date, so we could tell if things blew up when reparsing + * the list (for whatever reason). + * - Seth "Yes, this is a kludge" Burgess + * + */ + + success = TRUE ; + brushes_init(); + return procedural_db_return_args (&brushes_refresh_brush_proc, success); +} + + /* The procedure definition */ ProcArg brushes_get_brush_out_args[] = { @@ -529,6 +547,32 @@ { { brushes_get_brush_invoker } }, }; +/* =========================================================== */ +/* REFRESH BRUSHES */ +/* =========================================================== */ + +ProcRecord brushes_refresh_brush_proc = +{ + "gimp_brushes_refresh", + "Refresh current brushes", + "This procedure retrieves all brushes currently in the user's brush path +and updates the brush dialog accordingly.", + "Seth Burgess", + "Seth Burgess", + "1997", + PDB_INTERNAL, + + /* Input arguments */ + 0, + NULL, + + /* Output arguments */ + 0, + NULL, + + /* Exec method */ + { { brushes_refresh_brush_invoker } }, +}; /***********************/ /* BRUSHES_SET_BRUSH */ @@ -835,11 +879,8 @@ { int paint_mode; - int_value = args[0].value.pdb_int; - if (int_value >= NORMAL_MODE && int_value <= VALUE_MODE) - paint_mode = int_value; - else - success = FALSE; + paint_mode = args[0].value.pdb_int; + success = (paint_mode >= NORMAL_MODE && paint_mode <= VALUE_MODE); if (success) set_brush_paint_mode (paint_mode); diff -u --recursive --new-file gimp-0.99.10/app/brushes.h gimp-0.99.pre11/app/brushes.h --- gimp-0.99.10/app/brushes.h Wed May 28 14:48:09 1997 +++ gimp-0.99.pre11/app/brushes.h Wed Aug 13 20:31:44 1997 @@ -68,5 +68,6 @@ extern ProcRecord brushes_get_paint_mode_proc; extern ProcRecord brushes_set_paint_mode_proc; extern ProcRecord brushes_list_proc; +extern ProcRecord brushes_refresh_brush_proc; #endif /* __BRUSHES_H__ */ diff -u --recursive --new-file gimp-0.99.10/app/channels_dialog.c gimp-0.99.pre11/app/channels_dialog.c --- gimp-0.99.10/app/channels_dialog.c Tue Jun 3 18:09:07 1997 +++ gimp-0.99.pre11/app/channels_dialog.c Wed Aug 13 20:31:44 1997 @@ -1890,11 +1890,15 @@ GtkWidget *label; GtkWidget *opacity_scale; GtkObject *opacity_scale_data; + int i; /* the new options structure */ options = (EditChannelOptions *) g_malloc (sizeof (EditChannelOptions)); options->channel_widget = channel_widget; options->opacity = (double) channel_widget->channel->opacity / 2.55; + for (i = 0; i < 3; i++) + channel_color[i] = channel_widget->channel->col[i]; + options->color_panel = color_panel_new (channel_color, 48, 64); /* the dialog */ diff -u --recursive --new-file gimp-0.99.10/app/color_panel.c gimp-0.99.pre11/app/color_panel.c --- gimp-0.99.10/app/color_panel.c Thu May 29 19:16:02 1997 +++ gimp-0.99.pre11/app/color_panel.c Wed Aug 13 20:31:44 1997 @@ -84,7 +84,14 @@ ColorPanelPrivate *private; private = (ColorPanelPrivate *) color_panel->private_part; - + + /* make sure we hide and free color_select */ + if (private->color_select) + { + color_select_hide (private->color_select); + color_select_free (private->color_select); + } + if (private->gc) gdk_gc_destroy (private->gc); g_free (color_panel->private_part); diff -u --recursive --new-file gimp-0.99.10/app/colormaps.c gimp-0.99.pre11/app/colormaps.c --- gimp-0.99.10/app/colormaps.c Tue Jun 3 19:31:11 1997 +++ gimp-0.99.pre11/app/colormaps.c Wed Aug 13 20:31:44 1997 @@ -101,7 +101,7 @@ if (cycled_marching_ants) for (i = 0; i < 8; i++) { - marching_ants_pixels[i] = reserved_pixels[i + reserved_entries]; + marching_ants_pixels[i] = reserved_pixels[i + reserved_entries - 8]; if (i < 4) store_color (&marching_ants_pixels[i], 0, 0, 0); else diff -u --recursive --new-file gimp-0.99.10/app/commands.c gimp-0.99.pre11/app/commands.c --- gimp-0.99.10/app/commands.c Tue Jun 3 19:31:10 1997 +++ gimp-0.99.pre11/app/commands.c Wed Aug 13 20:31:44 1997 @@ -163,16 +163,18 @@ layer = layer_new (gimage->ID, gimage->width, gimage->height, type, "Background", OPAQUE, NORMAL); - /* add the new layer to the gimage */ - gimage_disable_undo (gimage); - gimage_add_layer (gimage, layer, 0); - gimage_enable_undo (gimage); - - drawable_fill (layer->ID, vals->fill_type); - - /* gimage_clean_all (gimage); */ - - gdisplay = gdisplay_new (gimage, 0x0101); + if (layer) { + /* add the new layer to the gimage */ + gimage_disable_undo (gimage); + gimage_add_layer (gimage, layer, 0); + gimage_enable_undo (gimage); + + drawable_fill (layer->ID, vals->fill_type); + + /* gimage_clean_all (gimage); */ + + gdisplay = gdisplay_new (gimage, 0x0101); + } g_free (vals); } @@ -408,6 +410,15 @@ file_prefs_ok_callback (GtkWidget *widget, GtkWidget *dlg) { + + if (levels_of_undo < 0) + { + message_box("Error: Levels of undo must be zero or greater.", + NULL, NULL); + levels_of_undo = old_levels_of_undo; + return; + } + gtk_widget_destroy (dlg); prefs_dlg = NULL; } @@ -455,6 +466,7 @@ } static void + file_prefs_text_callback (GtkWidget *widget, gpointer data) { @@ -1584,12 +1596,21 @@ image_resize = (ImageResize *) client_data; if ((gimage = gimage_get_ID (image_resize->gimage_id)) != NULL) { - gimage_resize (gimage, - image_resize->resize->width, - image_resize->resize->height, - image_resize->resize->off_x, - image_resize->resize->off_y); - gdisplays_flush (); + if (image_resize->resize->width > 0 && + image_resize->resize->height > 0) + { + gimage_resize (gimage, + image_resize->resize->width, + image_resize->resize->height, + image_resize->resize->off_x, + image_resize->resize->off_y); + gdisplays_flush (); + } + else + { + message_box("Resize Error: Both width and height must be greater than zero.", NULL, NULL); + return; + } } gtk_widget_destroy (image_resize->shell); @@ -1607,10 +1628,19 @@ image_scale = (ImageResize *) client_data; if ((gimage = gimage_get_ID (image_scale->gimage_id)) != NULL) { - gimage_scale (gimage, - image_scale->resize->width, - image_scale->resize->height); - gdisplays_flush (); + if (image_scale->resize->width > 0 && + image_scale->resize->height > 0) + { + gimage_scale (gimage, + image_scale->resize->width, + image_scale->resize->height); + gdisplays_flush (); + } + else + { + message_box("Scale Error: Both width and height must be greater than zero.", NULL, NULL); + return; + } } gtk_widget_destroy (image_scale->shell); diff -u --recursive --new-file gimp-0.99.10/app/convert.c gimp-0.99.pre11/app/convert.c --- gimp-0.99.10/app/convert.c Fri Jun 6 02:01:40 1997 +++ gimp-0.99.pre11/app/convert.c Wed Aug 13 20:31:44 1997 @@ -220,6 +220,7 @@ GtkWidget *frame; GtkWidget *toggle; GSList *group = NULL; + static gboolean shown_message_already = False; gimage = (GImage *) gimage_ptr; dialog = (IndexedDialog *) g_malloc (sizeof (IndexedDialog)); @@ -240,8 +241,12 @@ ) { dialog->num_cols = 255; - message_box ("Note: You are attempting to convert an RGB image\nwith alpha/layers. It is recommended that you quantize\nto no more than 255 colors if you wish to make\na transparent or animated GIF from it.", - NULL, NULL); + if (!shown_message_already) + { + message_box ("Note: You are attempting to convert an image\nwith alpha/layers. It is recommended that you quantize\nto no more than 255 colors if you wish to make\na transparent or animated GIF from it.\n\nYou won't get this message again\nuntil the next time you run GIMP.\nHave a nice day!", + NULL, NULL); + shown_message_already = True; + } } dialog->makepal_flag = TRUE; dialog->webpal_flag = FALSE; @@ -262,7 +267,7 @@ gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show(vbox); - /* 'general palette' */ + /* 'generate palette' */ hbox = gtk_hbox_new (FALSE, 1); gtk_container_border_width (GTK_CONTAINER (vbox), 2); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); @@ -300,19 +305,23 @@ gtk_widget_show (text); gtk_widget_show (hbox); - /* 'web palette' */ - hbox = gtk_hbox_new (FALSE, 1); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = - gtk_radio_button_new_with_label (group, "Use WWW-optimised palette"); - group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (hbox), toggle, TRUE, TRUE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) indexed_radio_update, - &(dialog->webpal_flag)); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), dialog->webpal_flag); - gtk_widget_show (toggle); - gtk_widget_show (hbox); + if (gimage->base_type == RGB) + { + /* 'web palette' */ + hbox = gtk_hbox_new (FALSE, 1); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + toggle = + gtk_radio_button_new_with_label (group, "Use WWW-optimised palette"); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (hbox), toggle, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) indexed_radio_update, + &(dialog->webpal_flag)); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), dialog->webpal_flag); + gtk_widget_show (toggle); + gtk_widget_show (hbox); + } + /* 'mono palette' */ hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); @@ -326,6 +335,7 @@ gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), dialog->monopal_flag); gtk_widget_show (toggle); gtk_widget_show (hbox); + frame = gtk_frame_new ("Dither Options"); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); gtk_container_border_width (GTK_CONTAINER (frame), 2); @@ -403,7 +413,7 @@ str = gtk_entry_get_text (GTK_ENTRY (w)); dialog = (IndexedDialog *) data; - dialog->num_cols = BOUNDS (((int) atof (str)), 0, 256); + dialog->num_cols = BOUNDS(((int) atof(str)), 1, 256); } static void diff -u --recursive --new-file gimp-0.99.10/app/crop.c gimp-0.99.pre11/app/crop.c --- gimp-0.99.10/app/crop.c Tue Jun 3 19:31:09 1997 +++ gimp-0.99.pre11/app/crop.c Wed Aug 13 20:31:44 1997 @@ -85,7 +85,7 @@ static void crop_image (GImage *gimage, int, int, int, int); static void crop_recalc (Tool *, Crop *); static void crop_start (Tool *, Crop *); - +static void crop_adjust_guides (GImage *, int, int, int, int); /* Crop dialog functions */ static void crop_info_update (Tool *); @@ -188,7 +188,7 @@ if (! (bevent->state & GDK_BUTTON3_MASK)) { - if (crop->function == CROPPING) + if (crop->function == CROPPING) crop_image (gdisp->gimage, crop->tx1, crop->ty1, crop->tx2, crop->ty2); else { @@ -208,6 +208,53 @@ } void +crop_adjust_guides (GImage *gimage, + int x1, int y1, + int x2, int y2) + +{ +GList * glist; +Guide * guide; +gint remove_guide; +/* initialize the traverser */ +glist = gimage->guides; +while (glist != NULL) { + guide = (Guide *) glist->data; + remove_guide = FALSE; + + switch (guide->orientation) { + case HORIZONTAL_GUIDE: + if ((guide->position < y1) ||(guide->position > y2)) + remove_guide = TRUE; + break; + case VERTICAL_GUIDE: + if ((guide->position < x1) ||(guide->position > x2)) + remove_guide = TRUE; + break; + } + + /* edit the guide */ + gdisplays_expose_guide (gimage->ID, guide); + gdisplays_flush(); + + if (remove_guide) { + guide->position = -1; + guide = NULL; + } + else { + if (guide->orientation == HORIZONTAL_GUIDE) { + guide->position -= y1 ; + } + else { + guide->position -= x1; + } + } + glist = glist->next; + } +} + + +void crop_motion (Tool *tool, GdkEventMotion *mevent, gpointer gdisp_ptr) @@ -512,6 +559,7 @@ Layer *layer; Layer *floating_layer; Channel *channel; + GList *guide_list_ptr; link_ptr list; int width, height; int lx1, ly1, lx2, ly2; @@ -582,7 +630,16 @@ if (floating_layer) floating_sel_rigor (floating_layer, TRUE); + guide_list_ptr = gimage->guides; + while ( guide_list_ptr != NULL) + { + undo_push_guide (gimage, (Guide *)guide_list_ptr->data); + guide_list_ptr = guide_list_ptr->next; + } undo_push_group_end (gimage); + + /* Adjust any guides we might have laying about */ + crop_adjust_guides (gimage, x1, y1, x2, y2); /* shrink wrap and update all views */ channel_invalidate_previews (gimage->ID); diff -u --recursive --new-file gimp-0.99.10/app/curves.c gimp-0.99.pre11/app/curves.c --- gimp-0.99.10/app/curves.c Tue Jun 3 19:33:57 1997 +++ gimp-0.99.pre11/app/curves.c Wed Aug 13 20:31:44 1997 @@ -92,8 +92,8 @@ int leftmost; int rightmost; int curve_type; - int points[4][17][2]; - unsigned char curve[4][256]; + int points[5][17][2]; + unsigned char curve[5][256]; }; typedef double CRMatrix[4][4]; @@ -115,6 +115,7 @@ static void curves_red_callback (GtkWidget *, gpointer); static void curves_green_callback (GtkWidget *, gpointer); static void curves_blue_callback (GtkWidget *, gpointer); +static void curves_alpha_callback (GtkWidget *, gpointer); static void curves_smooth_callback (GtkWidget *, gpointer); static void curves_free_callback (GtkWidget *, gpointer); static void curves_reset_callback (GtkWidget *, gpointer); @@ -184,8 +185,10 @@ else d[GRAY_PIX] = cd->curve[HISTOGRAM_VALUE][s[GRAY_PIX]]; - if (has_alpha) - d[alpha] = s[alpha]; + if (has_alpha) { + d[alpha] = cd->curve[HISTOGRAM_ALPHA][s[alpha]]; + /* d[alpha] = s[alpha]; */ + } s += srcPR->bytes; d += destPR->bytes; @@ -298,6 +301,31 @@ g_free (_curves); } +/* the action area structure */ +static ActionAreaItem action_items[] = +{ + { "Reset", curves_reset_callback, NULL, NULL }, + { "OK", curves_ok_callback, NULL, NULL }, + { "Cancel", curves_cancel_callback, NULL, NULL } +}; + +static MenuItem channel_items[] = +{ + { "Value", 0, 0, curves_value_callback, NULL, NULL, NULL }, + { "Red", 0, 0, curves_red_callback, NULL, NULL, NULL }, + { "Green", 0, 0, curves_green_callback, NULL, NULL, NULL }, + { "Blue", 0, 0, curves_blue_callback, NULL, NULL, NULL }, + { "Alpha", 0, 0, curves_alpha_callback, NULL, NULL, NULL }, + { NULL, 0, 0, NULL, NULL, NULL, NULL } +}; + +static MenuItem curve_type_items[] = +{ + { "Smooth", 0, 0, curves_smooth_callback, NULL, NULL, NULL }, + { "Free", 0, 0, curves_free_callback, NULL, NULL, NULL }, + { NULL, 0, 0, NULL, NULL, NULL, NULL } +}; + void curves_initialize (void *gdisp_ptr) { @@ -320,12 +348,12 @@ /* Initialize the values */ curves_dialog->channel = HISTOGRAM_VALUE; - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) for (j = 0; j < 256; j++) curves_dialog->curve[i][j] = j; curves_dialog->grab_point = -1; - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) { for (j = 0; j < 17; j++) { @@ -342,11 +370,24 @@ curves_dialog->color = drawable_color (curves_dialog->drawable_id); curves_dialog->image_map = image_map_create (gdisp_ptr, curves_dialog->drawable_id); + /* check for alpha channel */ + if (drawable_has_alpha (curves_dialog->drawable_id)) + gtk_widget_set_sensitive( channel_items[4].widget, TRUE); + else + gtk_widget_set_sensitive( channel_items[4].widget, FALSE); + /* hide or show the channel menu based on image type */ if (curves_dialog->color) - gtk_widget_show (curves_dialog->channel_menu); - else - gtk_widget_hide (curves_dialog->channel_menu); + for (i = 0; i < 4; i++) + gtk_widget_set_sensitive( channel_items[i].widget, TRUE); + else + for (i = 1; i < 4; i++) + gtk_widget_set_sensitive( channel_items[i].widget, FALSE); + + /* set the current selection */ + gtk_option_menu_set_history ( GTK_OPTION_MENU (curves_dialog->channel_menu), 0); + + curves_update (curves_dialog, GRAPH | DRAW); } @@ -371,30 +412,6 @@ /* Select Curves dialog */ /**************************/ -/* the action area structure */ -static ActionAreaItem action_items[] = -{ - { "Reset", curves_reset_callback, NULL, NULL }, - { "OK", curves_ok_callback, NULL, NULL }, - { "Cancel", curves_cancel_callback, NULL, NULL } -}; - -static MenuItem channel_items[] = -{ - { "Value", 0, 0, curves_value_callback, NULL, NULL, NULL }, - { "Red", 0, 0, curves_red_callback, NULL, NULL, NULL }, - { "Green", 0, 0, curves_green_callback, NULL, NULL, NULL }, - { "Blue", 0, 0, curves_blue_callback, NULL, NULL, NULL }, - { NULL, 0, 0, NULL, NULL, NULL, NULL } -}; - -static MenuItem curve_type_items[] = -{ - { "Smooth", 0, 0, curves_smooth_callback, NULL, NULL, NULL }, - { "Free", 0, 0, curves_free_callback, NULL, NULL, NULL }, - { NULL, 0, 0, NULL, NULL, NULL, NULL } -}; - CurvesDialog * curves_new_dialog () { @@ -405,6 +422,7 @@ GtkWidget *frame; GtkWidget *toggle; GtkWidget *option_menu; + GtkWidget *channel_hbox; GtkWidget *menu; GtkWidget *table; int i; @@ -414,7 +432,7 @@ cd->curve_type = SMOOTH; cd->pixmap = NULL; - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) channel_items [i].user_data = (gpointer) cd; for (i = 0; i < 2; i++) curve_type_items [i].user_data = (gpointer) cd; @@ -428,20 +446,20 @@ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (cd->shell)->vbox), vbox, TRUE, TRUE, 0); /* The option menu for selecting channels */ - cd->channel_menu = gtk_hbox_new (FALSE, 2); - gtk_box_pack_start (GTK_BOX (vbox), cd->channel_menu, FALSE, FALSE, 0); + channel_hbox = gtk_hbox_new (FALSE, 2); + gtk_box_pack_start (GTK_BOX (vbox), channel_hbox, FALSE, FALSE, 0); label = gtk_label_new ("Modify Curves for Channel: "); - gtk_box_pack_start (GTK_BOX (cd->channel_menu), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (channel_hbox), label, FALSE, FALSE, 0); menu = build_menu (channel_items, NULL); - option_menu = gtk_option_menu_new (); - gtk_box_pack_start (GTK_BOX (cd->channel_menu), option_menu, FALSE, FALSE, 2); + cd->channel_menu = gtk_option_menu_new (); + gtk_box_pack_start (GTK_BOX (channel_hbox), cd->channel_menu, FALSE, FALSE, 2); gtk_widget_show (label); - gtk_widget_show (option_menu); gtk_widget_show (cd->channel_menu); - gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu); + gtk_widget_show (channel_hbox); + gtk_option_menu_set_menu (GTK_OPTION_MENU (cd->channel_menu), menu); /* The table for the yrange and the graph */ table = gtk_table_new (2, 2, FALSE); @@ -844,6 +862,21 @@ } static void +curves_alpha_callback (GtkWidget *w, + gpointer client_data) +{ + CurvesDialog *cd; + + cd = (CurvesDialog *) client_data; + + if (cd->channel != HISTOGRAM_ALPHA) + { + cd->channel = HISTOGRAM_ALPHA; + curves_update (cd, GRAPH | DRAW); + } +} + +static void curves_smooth_callback (GtkWidget *w, gpointer client_data) { @@ -1230,7 +1263,7 @@ }, { PDB_INT32, "channel", - "the channel to modify: { VALUE (0), RED (1), GREEN (2), BLUE (3), GRAY (0) }" + "the channel to modify: { VALUE (0), RED (1), GREEN (2), BLUE (3), ALPHA (4), GRAY (0) }" }, { PDB_INT32, "num_points", @@ -1329,11 +1362,11 @@ /* arrange to modify the curves */ if (success) { - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) for (j = 0; j < 256; j++) cd.curve[i][j] = j; - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) for (j = 0; j < 17; j++) { cd.points[i][j][0] = -1; @@ -1479,7 +1512,7 @@ /* arrange to modify the curves */ if (success) { - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) for (j = 0; j < 256; j++) cd.curve[i][j] = j; @@ -1504,3 +1537,5 @@ return procedural_db_return_args (&curves_explicit_proc, success); } + + diff -u --recursive --new-file gimp-0.99.10/app/fileops.c gimp-0.99.pre11/app/fileops.c --- gimp-0.99.10/app/fileops.c Fri Jun 6 02:01:31 1997 +++ gimp-0.99.pre11/app/fileops.c Wed Aug 13 20:31:44 1997 @@ -698,7 +698,7 @@ file_proc = load_file_proc; if (!file_proc) - file_proc = file_proc_find (load_procs, raw_filename); + file_proc = file_proc_find (load_procs, filename); if (!file_proc) { @@ -817,7 +817,10 @@ if (err == 0 && (buf.st_mode & S_IFDIR)) { GString *s = g_string_new (filename); - g_string_append_c (s, '/'); + if (s->str[s->len - 1] != '/') + { + g_string_append_c (s, '/'); + } gtk_file_selection_set_filename (fs, s->str); g_string_free (s, TRUE); return; @@ -1032,14 +1035,15 @@ file_proc_find (GSList *procs, char *filename) { - PlugInProcDef *file_proc; + PlugInProcDef *file_proc, *size_matched_proc; GSList *all_procs = procs; GSList *extensions; GSList *prefixes; char *extension; char *p1, *p2; FILE *ifp = NULL; - int head_size = -2; + int head_size = -2, size_match_count = 0; + int match_val; unsigned char head[256]; extension = strrchr (filename, '.'); @@ -1060,15 +1064,25 @@ if ((ifp = fopen (filename, "rb")) != NULL) head_size = fread ((char *)head, 1, sizeof (head), ifp); } - if ((head_size >= 4) && file_check_magic_list (file_proc->magics_list, - head_size, head, ifp)) + if (head_size >= 4) { - fclose (ifp); - return (file_proc); + match_val = file_check_magic_list (file_proc->magics_list, + head_size, head, ifp); + if (match_val == 2) /* size match ? */ + { /* Use it only if no other magic matches */ + size_match_count++; + size_matched_proc = file_proc; + } + else if (match_val) + { + fclose (ifp); + return (file_proc); + } } } } if (ifp) fclose (ifp); + if (size_match_count == 1) return (size_matched_proc); procs = all_procs; while (procs) @@ -1164,7 +1178,7 @@ unsigned char *file_head, FILE *ifp) -{ +{ /* Return values are 0: no match, 1: magic match, 2: size match */ long offs; unsigned long num_testval, num_operatorval; unsigned long fileval; @@ -1195,6 +1209,10 @@ numbytes = 4; num_operator_ptr = type+4; } + else if (strncmp (type, "size", 4) == 0) + { + numbytes = 5; + } else if (strcmp (type, "string") == 0) { numbytes = 0; @@ -1227,14 +1245,20 @@ if (!isdigit (value[0])) return (0); if (value[0] != '0') /* decimal */ - sscanf (value, "%ld", &num_testval); + num_testval = strtol(value, NULL, 10); else if (value[1] == 'x') /* hexadecimal */ - sscanf (value+2, "%lx", &num_testval); + num_testval = strtol(value+2, NULL, 16); else /* octal */ - sscanf (value+1, "%lo", &num_testval); + num_testval = strtol(value+1, NULL, 8); fileval = 0; - if (offs + numbytes <= headsize) /* We have it in memory ? */ + if (numbytes == 5) /* Check for file size ? */ + {struct stat buf; + + if (fstat (fileno (ifp), &buf) < 0) return (0); + fileval = buf.st_size; + } + else if (offs + numbytes <= headsize) /* We have it in memory ? */ { for (k = 0; k < numbytes; k++) fileval = (fileval << 8) | (long)file_head[offs+k]; @@ -1255,6 +1279,8 @@ found = (fileval > num_testval); else found = (fileval == num_testval); + + if (found && (numbytes == 5)) found = 2; } else if (numbytes == 0) /* String test */ { @@ -1285,10 +1311,11 @@ int headsize, unsigned char *head, FILE *ifp) -{ + +{ /* Return values are 0: no match, 1: magic match, 2: size match */ char *offset, *type, *value; int and = 0; - int found = 0; + int found = 0, match_val; while (magics_list) { @@ -1299,14 +1326,15 @@ if ((value = (char *)magics_list->data) == NULL) break; magics_list = magics_list->next; + match_val = file_check_single_magic (offset, type, value, + headsize, head, ifp); if (and) - found = found && file_check_single_magic (offset, type, value, - headsize, head, ifp); + found = found && match_val; else - found = file_check_single_magic (offset, type, value, - headsize, head, ifp); + found = match_val; + and = (strchr (offset, '&') != NULL); - if ((!and) && found) return (1); + if ((!and) && found) return (match_val); } return (0); } diff -u --recursive --new-file gimp-0.99.10/app/gimage.c gimp-0.99.pre11/app/gimage.c --- gimp-0.99.10/app/gimage.c Tue Jun 3 20:29:19 1997 +++ gimp-0.99.pre11/app/gimage.c Wed Aug 13 20:31:45 1997 @@ -263,6 +263,12 @@ Layer *floating_layer; link_ptr list; + if (new_width <= 0 || new_height <= 0) + { + warning("gimage_resize: width and height must be positive"); + return; + } + /* Get the floating layer if one exists */ floating_layer = gimage_floating_sel (gimage); @@ -1533,7 +1539,7 @@ int index = -1; list = gimage->layers; - prev = NULL; + prev = NULL; prev_layer = NULL; while (list) { @@ -1794,6 +1800,16 @@ merge_layer = layer_new (gimage->ID, gimage->width, gimage->height, type, layer->name, OPAQUE, NORMAL_MODE); + if (!merge_layer) { + warning("gimage_merge_layers: could not allocate merge layer"); + return NULL; + } + + if (!merge_layer) { + warning("gimage_merge_layers: could not allocate merge layer"); + return NULL; + } + /* get the background for compositing */ gimage_get_background (gimage, merge_layer->ID, bg); @@ -1814,6 +1830,16 @@ merge_layer = layer_new (gimage->ID, (x2 - x1), (y2 - y1), drawable_type_with_alpha (layer->ID), layer->name, OPAQUE, NORMAL_MODE); + + if (!merge_layer) { + warning("gimage_merge_layers: could not allocate merge layer"); + return NULL; + } + + if (!merge_layer) { + warning("gimage_merge_layers: could not allocate merge layer"); + return NULL; + } merge_layer->offset_x = x1; merge_layer->offset_y = y1; diff -u --recursive --new-file gimp-0.99.10/app/global_edit.c gimp-0.99.pre11/app/global_edit.c --- gimp-0.99.10/app/global_edit.c Wed Jun 4 17:56:48 1997 +++ gimp-0.99.pre11/app/global_edit.c Wed Aug 13 20:31:45 1997 @@ -587,10 +587,10 @@ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (vbox), listbox, TRUE, TRUE, 0); + gtk_widget_set_usize (listbox, 125, 150); gtk_widget_show (listbox); pn_dlg->list = gtk_list_new (); - gtk_widget_set_usize (pn_dlg->list, 125, 150); gtk_list_set_selection_mode (GTK_LIST (pn_dlg->list), GTK_SELECTION_BROWSE); gtk_container_add (GTK_CONTAINER (listbox), pn_dlg->list); set_list_of_named_buffers (pn_dlg->list); @@ -684,6 +684,8 @@ named_edit_paste (void *gdisp_ptr) { paste_named_buffer ((GDisplay *) gdisp_ptr); + + gdisplays_flush(); return TRUE; } diff -u --recursive --new-file gimp-0.99.10/app/gradient.c gimp-0.99.pre11/app/gradient.c --- gimp-0.99.10/app/gradient.c Fri Jun 6 14:53:17 1997 +++ gimp-0.99.pre11/app/gradient.c Wed Aug 13 20:31:45 1997 @@ -375,6 +375,7 @@ static void ed_initialize_saved_colors(void); static void ed_close_callback(GtkWidget *widget, gpointer client_data); +static void ed_refresh_callback(GtkWidget *widget, gpointer client_data); static void ed_new_gradient_callback(GtkWidget *widget, gpointer client_data); static void ed_do_new_gradient_callback(GtkWidget *widget, gpointer client_data, gpointer call_data); static void ed_copy_gradient_callback(GtkWidget *widget, gpointer client_data); @@ -852,6 +853,11 @@ gtk_box_pack_start(GTK_BOX(gvbox), button, TRUE, TRUE, 0); gtk_widget_show(button); + button = ed_create_button("Refresh gradients", 0.0, 0.5, + (GtkSignalFunc) ed_refresh_callback, NULL); + gtk_box_pack_start(GTK_BOX(gvbox), button, TRUE, TRUE, 0); + gtk_widget_show(button); + /* Horizontal box for zoom controls, scrollbar, and instant update toggle */ hbox = gtk_hbox_new(FALSE, 0); @@ -1509,6 +1515,33 @@ gtk_widget_set_sensitive(g_editor->shell, FALSE); } /* ed_save_pov_callback */ + +/*****/ + +static void +ed_refresh_callback(GtkWidget *widget, gpointer client_data) +{ + link_ptr node; + gradient_t *grad; + GList *list; + + list = NULL; + + for (node = gradients_list; node; node = next_item(node)) { + grad = node->data; + list = g_list_append(list, grad->list_item); + } + + gtk_list_remove_items(GTK_LIST(g_editor->list),list); + + grad_free_gradients(); + + gradients_init(); + + ed_set_list_of_gradients(); + + ed_update_editor(GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL); +} /* ed_refresh_callback */ /*****/ diff -u --recursive --new-file gimp-0.99.10/app/histogram.h gimp-0.99.pre11/app/histogram.h --- gimp-0.99.10/app/histogram.h Fri May 9 03:47:26 1997 +++ gimp-0.99.pre11/app/histogram.h Wed Aug 13 20:31:45 1997 @@ -24,6 +24,7 @@ #define HISTOGRAM_RED 1 #define HISTOGRAM_GREEN 2 #define HISTOGRAM_BLUE 3 +#define HISTOGRAM_ALPHA 4 /* Histogram information function */ typedef struct _Histogram Histogram; @@ -38,7 +39,7 @@ }; typedef double Values[256]; -typedef Values HistogramValues[4]; +typedef Values HistogramValues[5]; typedef void (* HistogramInfoFunc) (PixelRegion *, PixelRegion *, HistogramValues, void *); typedef void (* HistogramRangeCallback) (int, int, HistogramValues, void *); @@ -53,3 +54,7 @@ HistogramValues *histogram_values (Histogram *); #endif /* __HISTOGRAM_H__ */ + + + + diff -u --recursive --new-file gimp-0.99.10/app/image_map.c gimp-0.99.pre11/app/image_map.c --- gimp-0.99.10/app/image_map.c Thu May 29 19:16:05 1997 +++ gimp-0.99.pre11/app/image_map.c Wed Aug 13 20:31:45 1997 @@ -273,6 +273,15 @@ _image_map->undo_tiles->levels[0].height, TRUE); + /* if the user has changed the image depth get out quickly */ + if (destPR.bytes != srcPR.bytes) + { + g_warning ("image depth change, unable to restore original image"); + tile_manager_destroy (_image_map->undo_tiles); + g_free (_image_map); + return; + } + copy_region (&srcPR, &destPR); /* Update the area */ diff -u --recursive --new-file gimp-0.99.10/app/interface.c gimp-0.99.pre11/app/interface.c --- gimp-0.99.10/app/interface.c Fri Jun 6 02:01:28 1997 +++ gimp-0.99.pre11/app/interface.c Wed Aug 13 20:31:45 1997 @@ -401,7 +401,7 @@ gc = gdk_gc_new (*mask); gdk_draw_rectangle (*mask, gc, TRUE, 0, 0, -1, -1); - gdk_color_white (cmap, &tmp_color); + tmp_color.pixel = 1; gdk_gc_set_foreground (gc, &tmp_color); } diff -u --recursive --new-file gimp-0.99.10/app/internal_procs.c gimp-0.99.pre11/app/internal_procs.c --- gimp-0.99.10/app/internal_procs.c Mon Jun 2 21:07:37 1997 +++ gimp-0.99.pre11/app/internal_procs.c Wed Aug 13 20:31:45 1997 @@ -258,6 +258,7 @@ /* Interface procs */ procedural_db_register (&brushes_get_brush_proc); + procedural_db_register (&brushes_refresh_brush_proc); procedural_db_register (&brushes_set_brush_proc); procedural_db_register (&brushes_get_opacity_proc); procedural_db_register (&brushes_set_opacity_proc); diff -u --recursive --new-file gimp-0.99.10/app/layer.c gimp-0.99.pre11/app/layer.c --- gimp-0.99.10/app/layer.c Thu May 29 19:16:06 1997 +++ gimp-0.99.pre11/app/layer.c Wed Aug 13 20:31:45 1997 @@ -119,6 +119,11 @@ { Layer * layer; + if (width == 0 || height == 0) { + warning ("Zero width or height layers not allowed."); + return NULL; + } + layer = (Layer *) g_malloc (sizeof (Layer)); if (!name) @@ -232,6 +237,11 @@ /* allocate a new layer object */ new_layer = layer_new (layer->gimage_ID, layer->width, layer->height, new_type, layer_name, layer->opacity, layer->mode); + if (!new_layer) { + warning("layer_copy: could not allocate new layer"); + goto cleanup; + } + new_layer->offset_x = layer->offset_x; new_layer->offset_y = layer->offset_y; new_layer->visible = layer->visible; @@ -261,6 +271,7 @@ new_layer->show_mask = layer->show_mask; } + cleanup: /* free up the layer_name memory */ g_free (layer_name); @@ -298,6 +309,11 @@ /* Create the new layer */ new_layer = layer_new (0, tiles->levels[0].width, tiles->levels[0].height, layer_type, name, opacity, mode); + + if (!new_layer) { + warning("layer_from_tiles: could not allocate new layer"); + return NULL; + } /* Configure the pixel regions */ pixel_region_init (&layerPR, new_layer->tiles, 0, 0, new_layer->width, new_layer->height, TRUE); diff -u --recursive --new-file gimp-0.99.10/app/layer_cmds.c gimp-0.99.pre11/app/layer_cmds.c --- gimp-0.99.10/app/layer_cmds.c Thu May 29 19:16:06 1997 +++ gimp-0.99.pre11/app/layer_cmds.c Wed Aug 13 20:31:45 1997 @@ -115,7 +115,7 @@ }, { PDB_INT32, "type", - "the layer type: { RGB (0), RGBA (1), GRAY (2), GRAYA (3), INDEXED (4), INDEXEDA (5) }" + "the layer type: { RGB_IMAGE (0), RGBA_IMAGE (1), GRAY_IMAGE (2), GRAYA_IMAGE (3), INDEXED_IMAGE (4), INDEXEDA_IMAGE (5) }" }, { PDB_STRING, "name", diff -u --recursive --new-file gimp-0.99.10/app/layers_dialog.c gimp-0.99.pre11/app/layers_dialog.c --- gimp-0.99.10/app/layers_dialog.c Tue Jun 3 18:08:47 1997 +++ gimp-0.99.pre11/app/layers_dialog.c Wed Aug 13 20:31:46 1997 @@ -1041,6 +1041,8 @@ { layersD->image_width = (int) (layersD->ratio * gimage->width); layersD->image_height = (int) (layersD->ratio * gimage->height); + if (layersD->image_width < 1) layersD->image_width = 1; + if (layersD->image_height < 1) layersD->image_height = 1; } else { @@ -2310,6 +2312,8 @@ /* determine width and height */ layer_widget->width = (int) (layersD->ratio * layer_widget->layer->width); layer_widget->height = (int) (layersD->ratio * layer_widget->layer->height); + if (layer_widget->width < 1) layer_widget->width = 1; + if (layer_widget->height < 1) layer_widget->height = 1; offx = (int) (layersD->ratio * layer_widget->layer->offset_x); offy = (int) (layersD->ratio * layer_widget->layer->offset_y); @@ -2798,15 +2802,22 @@ layer = layer_new (gimage->ID, options->xsize, options->ysize, gimage_base_type_with_alpha (gimage), layer_name, OPAQUE, NORMAL_MODE); - drawable_fill (layer->ID, fill_type); - gimage_add_layer (gimage, layer, -1); - - /* end the group undo */ - undo_push_group_end (gimage); - - gdisplays_flush (); + if (layer) + { + drawable_fill (layer->ID, fill_type); + gimage_add_layer (gimage, layer, -1); + + /* end the group undo */ + undo_push_group_end (gimage); + + gdisplays_flush (); + } + else + { + warning("new_layer_query_ok_callback: could not allocate new layer"); + } } - + gtk_widget_destroy (options->query_box); g_free (options); } @@ -3025,6 +3036,7 @@ } layer->name = g_strdup (gtk_entry_get_text (GTK_ENTRY (options->name_entry))); gtk_label_set (GTK_LABEL (options->layer_widget->label), layer->name); + gtk_widget_draw (options->layer_widget->label, NULL); gtk_widget_destroy (options->query_box); g_free (options); diff -u --recursive --new-file gimp-0.99.10/app/levels.c gimp-0.99.pre11/app/levels.c --- gimp-0.99.10/app/levels.c Tue Jun 3 19:33:56 1997 +++ gimp-0.99.pre11/app/levels.c Wed Aug 13 20:31:46 1997 @@ -83,18 +83,18 @@ ImageMap image_map; int color; int channel; - int low_input[4]; - double gamma[4]; - int high_input[4]; - int low_output[4]; - int high_output[4]; + int low_input[5]; + double gamma[5]; + int high_input[5]; + int low_output[5]; + int high_output[5]; gint preview; int active_slider; int slider_pos[5]; /* positions for the five sliders */ - unsigned char input[4][256]; - unsigned char output[4][256]; + unsigned char input[5][256]; + unsigned char output[5][256]; }; @@ -114,6 +114,7 @@ static void levels_red_callback (GtkWidget *, gpointer); static void levels_green_callback (GtkWidget *, gpointer); static void levels_blue_callback (GtkWidget *, gpointer); +static void levels_alpha_callback (GtkWidget *, gpointer); static void levels_auto_levels_callback (GtkWidget *, gpointer); static void levels_ok_callback (GtkWidget *, gpointer); static void levels_cancel_callback (GtkWidget *, gpointer); @@ -178,7 +179,8 @@ d[GRAY_PIX] = ld->output[HISTOGRAM_VALUE][ld->input[HISTOGRAM_VALUE][s[GRAY_PIX]]];; if (has_alpha) - d[alpha] = s[alpha]; + d[alpha] = ld->output[HISTOGRAM_ALPHA][ld->input[HISTOGRAM_ALPHA][s[alpha]]]; + /*d[alpha] = s[alpha];*/ s += srcPR->bytes; d += destPR->bytes; @@ -200,11 +202,14 @@ unsigned char *mask, *m; int w, h; int value, red, green, blue; + int has_alpha, alpha; ld = (LevelsDialog *) user_data; h = srcPR->h; src = srcPR->data; + has_alpha = (srcPR->bytes == 2 || srcPR->bytes == 4); + alpha = has_alpha ? srcPR->bytes - 1 : srcPR->bytes; if (maskPR) mask = maskPR->data; @@ -226,7 +231,7 @@ red = s[RED_PIX]; green = s[GREEN_PIX]; blue = s[BLUE_PIX]; - + alpha = s[ALPHA_PIX]; if (maskPR) { values[HISTOGRAM_VALUE][value] += (double) *m / 255.0; @@ -251,6 +256,14 @@ values[HISTOGRAM_VALUE][value] += 1.0; } + if (has_alpha) + { + if (maskPR) + values[HISTOGRAM_ALPHA][s[alpha]] += (double) *m / 255.0; + else + values[HISTOGRAM_ALPHA][s[alpha]] += 1.0; + } + s += srcPR->bytes; if (maskPR) @@ -379,6 +392,16 @@ g_free (_levels); } +static MenuItem color_option_items[] = +{ + { "Value", 0, 0, levels_value_callback, NULL, NULL, NULL }, + { "Red", 0, 0, levels_red_callback, NULL, NULL, NULL }, + { "Green", 0, 0, levels_green_callback, NULL, NULL, NULL }, + { "Blue", 0, 0, levels_blue_callback, NULL, NULL, NULL }, + { "Alpha", 0, 0, levels_alpha_callback, NULL, NULL, NULL }, + { NULL, 0, 0, NULL, NULL, NULL, NULL } +}; + void levels_initialize (void *gdisp_ptr) { @@ -402,7 +425,7 @@ /* Initialize the values */ levels_dialog->channel = HISTOGRAM_VALUE; - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) { levels_dialog->low_input[i] = 0; levels_dialog->gamma[i] = 1.0; @@ -415,11 +438,23 @@ levels_dialog->color = drawable_color (levels_dialog->drawable_id); levels_dialog->image_map = image_map_create (gdisp_ptr, levels_dialog->drawable_id); + /* check for alpha channel */ + if (drawable_has_alpha (levels_dialog->drawable_id)) + gtk_widget_set_sensitive( color_option_items[4].widget, TRUE); + else + gtk_widget_set_sensitive( color_option_items[4].widget, FALSE); + /* hide or show the channel menu based on image type */ if (levels_dialog->color) - gtk_widget_show (levels_dialog->channel_menu); - else - gtk_widget_hide (levels_dialog->channel_menu); + for (i = 0; i < 4; i++) + gtk_widget_set_sensitive( color_option_items[i].widget, TRUE); + else + for (i = 1; i < 4; i++) + gtk_widget_set_sensitive( color_option_items[i].widget, FALSE); + + /* set the current selection */ + gtk_option_menu_set_history ( GTK_OPTION_MENU (levels_dialog->channel_menu), 0); + levels_update (levels_dialog, LOW_INPUT | GAMMA | HIGH_INPUT | LOW_OUTPUT | HIGH_OUTPUT | DRAW); levels_update (levels_dialog, INPUT_LEVELS | OUTPUT_LEVELS); @@ -457,15 +492,6 @@ { "Cancel", levels_cancel_callback, NULL, NULL } }; -static MenuItem color_option_items[] = -{ - { "Value", 0, 0, levels_value_callback, NULL, NULL, NULL }, - { "Red", 0, 0, levels_red_callback, NULL, NULL, NULL }, - { "Green", 0, 0, levels_green_callback, NULL, NULL, NULL }, - { "Blue", 0, 0, levels_blue_callback, NULL, NULL, NULL }, - { NULL, 0, 0, NULL, NULL, NULL, NULL } -}; - LevelsDialog * levels_new_dialog () { @@ -476,14 +502,14 @@ GtkWidget *label; GtkWidget *frame; GtkWidget *toggle; - GtkWidget *option_menu; + GtkWidget *channel_hbox; GtkWidget *menu; int i; ld = g_malloc (sizeof (LevelsDialog)); ld->preview = TRUE; - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) color_option_items [i].user_data = (gpointer) ld; /* The shell and main vbox */ @@ -495,20 +521,20 @@ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (ld->shell)->vbox), vbox, TRUE, TRUE, 0); /* The option menu for selecting channels */ - ld->channel_menu = gtk_hbox_new (FALSE, 2); - gtk_box_pack_start (GTK_BOX (vbox), ld->channel_menu, FALSE, FALSE, 0); + channel_hbox = gtk_hbox_new (FALSE, 2); + gtk_box_pack_start (GTK_BOX (vbox), channel_hbox, FALSE, FALSE, 0); label = gtk_label_new ("Modify Levels for Channel: "); - gtk_box_pack_start (GTK_BOX (ld->channel_menu), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (channel_hbox), label, FALSE, FALSE, 0); menu = build_menu (color_option_items, NULL); - option_menu = gtk_option_menu_new (); - gtk_box_pack_start (GTK_BOX (ld->channel_menu), option_menu, FALSE, FALSE, 2); + ld->channel_menu = gtk_option_menu_new (); + gtk_box_pack_start (GTK_BOX (channel_hbox), ld->channel_menu, FALSE, FALSE, 2); gtk_widget_show (label); - gtk_widget_show (option_menu); gtk_widget_show (ld->channel_menu); - gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu); + gtk_widget_show (channel_hbox); + gtk_option_menu_set_menu (GTK_OPTION_MENU (ld->channel_menu), menu); /* Horizontal box for levels text widget */ hbox = gtk_hbox_new (TRUE, 2); @@ -717,7 +743,7 @@ int i, j; /* Recalculate the levels arrays */ - for (j = 0; j < 4; j++) + for (j = 0; j < 5; j++) { for (i = 0; i < 256; i++) { @@ -927,6 +953,22 @@ } static void +levels_alpha_callback (GtkWidget *w, + gpointer client_data) +{ + LevelsDialog *ld; + + ld = (LevelsDialog *) client_data; + + if (ld->channel != HISTOGRAM_ALPHA) + { + ld->channel = HISTOGRAM_ALPHA; + histogram_channel (ld->histogram, ld->channel); + levels_update (ld, ALL); + } +} + +static void levels_adjust_channel (LevelsDialog *ld, HistogramValues *values, int channel) @@ -1525,7 +1567,7 @@ /* arrange to modify the levels */ if (success) { - for (i = 0; i < 4; i++) + for (i = 0; i < 5; i++) { ld.low_input[i] = 0; ld.gamma[i] = 1.0; diff -u --recursive --new-file gimp-0.99.10/app/magnify.c gimp-0.99.pre11/app/magnify.c --- gimp-0.99.10/app/magnify.c Tue Jun 3 19:28:47 1997 +++ gimp-0.99.pre11/app/magnify.c Wed Aug 13 20:31:46 1997 @@ -252,6 +252,11 @@ /* resize the image */ resize_display (gdisp, allow_resize_windows, TRUE); + + /* update the window info */ + if (gdisp->window_info_dialog) + info_window_update (gdisp->window_info_dialog, + (void *) gdisp); } } diff -u --recursive --new-file gimp-0.99.10/app/menus.c gimp-0.99.pre11/app/menus.c --- gimp-0.99.10/app/menus.c Fri Jun 6 03:17:40 1997 +++ gimp-0.99.pre11/app/menus.c Wed Aug 13 20:31:46 1997 @@ -51,7 +51,17 @@ { "/File/About...", NULL, about_dialog_cmd_callback, NULL }, { "/File/Preferences...", NULL, file_pref_cmd_callback, NULL }, { "/File/", NULL, NULL, NULL }, - { "/File/Quit", "Q", file_quit_cmd_callback, NULL }, + { "/File/Dialogs/Brushes...", "B", dialogs_brushes_cmd_callback, NULL }, + { "/File/Dialogs/Patterns...", "P", dialogs_patterns_cmd_callback, NULL }, + { "/File/Dialogs/Palette...", "P", dialogs_palette_cmd_callback, NULL }, + { "/File/Dialogs/Gradient Editor...", "G", dialogs_gradient_editor_cmd_callback, NULL }, + { "/File/Dialogs/Tool Options...", "T", dialogs_tools_options_cmd_callback, NULL }, + + {"/File/",NULL,NULL,NULL}, + + + + { "/File/Quit", "Q", file_quit_cmd_callback, NULL }, { "/File/New", "N", file_new_cmd_callback, (gpointer) 1 }, { "/File/Open", "O", file_open_cmd_callback, NULL }, @@ -59,6 +69,11 @@ { "/File/Save as", NULL, file_save_as_cmd_callback, NULL }, { "/File/Preferences...", NULL, file_pref_cmd_callback, NULL }, { "/File/", NULL, NULL, NULL }, + + + + + { "/File/Close", "W", file_close_cmd_callback, NULL }, { "/File/Quit", "Q", file_quit_cmd_callback, NULL }, @@ -131,6 +146,7 @@ { "/Image/", NULL, NULL, NULL }, { "/Image/Histogram", NULL, image_histogram_cmd_callback, NULL }, + { "/Layers/Layers & Channels...", "L", dialogs_lc_cmd_callback, NULL }, { "/Layers/Raise Layer", "F", layers_raise_cmd_callback, NULL }, { "/Layers/Lower Layer", "B", layers_lower_cmd_callback, NULL }, { "/Layers/Anchor Layer", "H", layers_anchor_cmd_callback, NULL }, @@ -162,8 +178,10 @@ { "/Tools/Convolve", "V", tools_select_cmd_callback, (gpointer) CONVOLVE }, { "/Filters/", NULL, NULL, NULL }, - { "/Filters/Repeat", "F", filters_repeat_cmd_callback, (gpointer) 0x0 }, - { "/Filters/", "F", filters_repeat_cmd_callback, (gpointer) 0x1 }, + { "/Filters/Repeat last", "F", filters_repeat_cmd_callback, (gpointer) 0x0 }, + { "/Filters/Re-show last", "F", filters_repeat_cmd_callback, (gpointer) + 0x1 }, + { "/Filters/", NULL, NULL, NULL }, { "/Dialogs/Brushes...", "B", dialogs_brushes_cmd_callback, NULL }, { "/Dialogs/Patterns...", "P", dialogs_patterns_cmd_callback, NULL }, diff -u --recursive --new-file gimp-0.99.10/app/move.c gimp-0.99.pre11/app/move.c --- gimp-0.99.10/app/move.c Tue Jun 3 19:28:44 1997 +++ gimp-0.99.pre11/app/move.c Wed Aug 13 20:31:46 1997 @@ -73,7 +73,7 @@ move->guide_disp = -1; gdisplay_untransform_coords (gdisp, bevent->x, bevent->y, &x, &y, FALSE, FALSE); - + if (bevent->state & GDK_MOD1_MASK) { init_edit_selection (tool, gdisp_ptr, bevent, MaskTranslate); @@ -119,6 +119,13 @@ tool->state = ACTIVE; } } + + /* if we've got an active tool grab the pointer */ + if (tool->state == ACTIVE) + gdk_pointer_grab (gdisp->canvas->window, FALSE, + GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, + NULL, NULL, bevent->time); + } void @@ -138,6 +145,7 @@ gdk_flush (); tool->state = INACTIVE; + gdk_pointer_ungrab (bevent->time); if (move->guide) { diff -u --recursive --new-file gimp-0.99.10/app/paint_funcs.c gimp-0.99.pre11/app/paint_funcs.c --- gimp-0.99.10/app/paint_funcs.c Fri Jun 6 02:01:25 1997 +++ gimp-0.99.pre11/app/paint_funcs.c Wed Aug 13 20:31:46 1997 @@ -225,10 +225,10 @@ } /* render segment */ - x1 = BOUNDS (x1, 0, destPR->w); - y1 = BOUNDS (y1, 0, destPR->h); - x2 = BOUNDS (x2, 0, destPR->w); - y2 = BOUNDS (y2, 0, destPR->h); + x1 = BOUNDS (x1, 0, destPR->w - 1); + y1 = BOUNDS (y1, 0, destPR->h - 1); + x2 = BOUNDS (x2, 0, destPR->w - 1); + y2 = BOUNDS (y2, 0, destPR->h - 1); if (x1 == x2) { @@ -1181,8 +1181,6 @@ /* Set the alpha channel */ dest[alpha] = affect [alpha] ? (opacity * src[alpha]) / 255 : 0; - m++; - dest += bytes; src += bytes; } @@ -1356,7 +1354,6 @@ { int b, alpha; unsigned char new_alpha; - unsigned char * m; int src2_bytes; int index; @@ -1365,7 +1362,7 @@ if (mask) { - m = mask; + unsigned char *m = mask; while (length --) { new_alpha = (src2[alpha] * *m * opacity) / 65025; @@ -1397,7 +1394,7 @@ dest[b] = (new_alpha > 127) ? OPAQUE : src1[b]; /* alpha channel is opaque */ - m++; + /* m++; /Per */ src1 += bytes; src2 += src2_bytes; diff -u --recursive --new-file gimp-0.99.10/app/plug_in.c gimp-0.99.pre11/app/plug_in.c --- gimp-0.99.10/app/plug_in.c Fri Jun 6 19:27:46 1997 +++ gimp-0.99.pre11/app/plug_in.c Wed Aug 13 20:31:46 1997 @@ -728,6 +728,8 @@ if (plug_in->pid == 0) { + close(plug_in->my_read); + close(plug_in->my_write); /* Execute the filter. The "_exit" call should never * be reached, unless some strange error condition * exists. @@ -742,6 +744,9 @@ return 0; } + close(plug_in->his_read); plug_in->his_read = -1; + close(plug_in->his_write); plug_in->his_write = -1; + if (!plug_in->synchronous) { plug_in->input_id = gdk_input_add (plug_in->my_read, @@ -811,6 +816,8 @@ if (plug_in->his_write) close (plug_in->his_write); + wire_clear_error(); + /* Destroy the progress dialog if it exists */ #ifdef SEPARATE_PROGRESS_BAR @@ -1038,9 +1045,11 @@ if (!wire_read_msg (current_readfd, &msg)) plug_in_close (current_plug_in, TRUE); - else - plug_in_handle_message (&msg); - wire_destroy (&msg); + else + { + plug_in_handle_message (&msg); + wire_destroy (&msg); + } if (!current_plug_in->open) plug_in_destroy (current_plug_in); @@ -1862,9 +1871,11 @@ { if (!wire_read_msg (current_readfd, &msg)) plug_in_close (current_plug_in, TRUE); - else - plug_in_handle_message (&msg); - wire_destroy (&msg); + else + { + plug_in_handle_message (&msg); + wire_destroy (&msg); + } } plug_in_pop (); diff -u --recursive --new-file gimp-0.99.10/app/procedural_db.c gimp-0.99.pre11/app/procedural_db.c --- gimp-0.99.10/app/procedural_db.c Tue Jun 3 06:19:04 1997 +++ gimp-0.99.pre11/app/procedural_db.c Wed Aug 13 20:31:46 1997 @@ -519,9 +519,13 @@ { list = g_list_remove (list, list->data); - g_hash_table_insert (procedural_ht, - (gpointer) name, - (gpointer) list); + if (list) + g_hash_table_insert (procedural_ht, + (gpointer) name, + (gpointer) list); + else + g_hash_table_remove (procedural_ht, + (gpointer) name); } } diff -u --recursive --new-file gimp-0.99.10/app/rect_select.c gimp-0.99.pre11/app/rect_select.c --- gimp-0.99.10/app/rect_select.c Tue Jun 3 19:28:41 1997 +++ gimp-0.99.pre11/app/rect_select.c Wed Aug 13 20:31:46 1997 @@ -30,7 +30,7 @@ extern SelectionOptions *ellipse_options; static SelectionOptions *rect_options = NULL; -static void rect_select (GImage *, int, int, int, int, int, int, int, double); +static void rect_select (GImage *, int, int, int, int, int, int, double); extern void ellipse_select (GImage *, int, int, int, int, int, int, int, double); static Argument *rect_select_invoker (Argument *); @@ -73,7 +73,7 @@ /* the new options structure */ options = (SelectionOptions *) g_malloc (sizeof (SelectionOptions)); - options->antialias = 1; + options->antialias = TRUE; options->feather = FALSE; options->feather_radius = 10.0; options->sample_merged = FALSE; @@ -128,7 +128,7 @@ gtk_signal_connect (GTK_OBJECT (sample_merged_toggle), "toggled", (GtkSignalFunc) selection_toggle_update, &options->sample_merged); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (sample_merged_toggle), FALSE); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (sample_merged_toggle), options->sample_merged); gtk_widget_show (sample_merged_toggle); break; default: @@ -136,12 +136,16 @@ } /* the antialias toggle button */ - antialias_toggle = gtk_check_button_new_with_label ("Antialiasing"); - gtk_box_pack_start (GTK_BOX (vbox), antialias_toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (antialias_toggle), "toggled", - (GtkSignalFunc) selection_toggle_update, - &options->antialias); - gtk_widget_show (antialias_toggle); + if (tool_type != RECT_SELECT) + { + antialias_toggle = gtk_check_button_new_with_label ("Antialiasing"); + gtk_box_pack_start (GTK_BOX (vbox), antialias_toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (antialias_toggle), "toggled", + (GtkSignalFunc) selection_toggle_update, + &options->antialias); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (antialias_toggle), options->antialias); + gtk_widget_show (antialias_toggle); + } /* the feather toggle button */ feather_toggle = gtk_check_button_new_with_label ("Feather"); @@ -149,7 +153,7 @@ gtk_signal_connect (GTK_OBJECT (feather_toggle), "toggled", (GtkSignalFunc) selection_toggle_update, &options->feather); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (feather_toggle), FALSE); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (feather_toggle), options->feather); gtk_widget_show (feather_toggle); /* the feather radius scale */ @@ -160,7 +164,7 @@ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); - feather_scale_data = gtk_adjustment_new (10.0, 0.0, 100.0, 1.0, 1.0, 0.0); + feather_scale_data = gtk_adjustment_new (options->feather_radius, 0.0, 100.0, 1.0, 1.0, 0.0); feather_scale = gtk_hscale_new (GTK_ADJUSTMENT (feather_scale_data)); gtk_box_pack_start (GTK_BOX (hbox), feather_scale, TRUE, TRUE, 0); gtk_scale_set_value_pos (GTK_SCALE (feather_scale), GTK_POS_TOP); @@ -188,7 +192,6 @@ int w, int h, int op, - int antialias, int feather, double feather_radius) { @@ -323,7 +326,6 @@ rect_select (gdisp->gimage, x1, y1, (x2 - x1), (y2 - y1), rect_sel->op, - rect_options->antialias, rect_options->feather, rect_options->feather_radius); break; @@ -657,7 +659,7 @@ /* call the rect_select procedure */ if (success) rect_select (gimage, (int) x, (int) y, (int) w, (int) h, - op, TRUE, feather, feather_radius); + op, feather, feather_radius); return procedural_db_return_args (&rect_select_proc, success); } diff -u --recursive --new-file gimp-0.99.10/app/resize.c gimp-0.99.pre11/app/resize.c --- gimp-0.99.10/app/resize.c Thu May 29 19:16:07 1997 +++ gimp-0.99.pre11/app/resize.c Wed Aug 13 20:31:46 1997 @@ -445,6 +445,7 @@ private->constrain = FALSE; ratio = (double) resize->width / (double) private->old_width; new_height = (int) (private->old_height * ratio); + if (new_height == 0) new_height = 1; if (new_height != resize->height) { @@ -504,6 +505,7 @@ private->constrain = FALSE; ratio = (double) resize->height / (double) private->old_height; new_width = (int) (private->old_width * ratio); + if (new_width == 0) new_width = 1; if (new_width != resize->width) { diff -u --recursive --new-file gimp-0.99.10/app/selection-semifixed.c gimp-0.99.pre11/app/selection-semifixed.c --- gimp-0.99.10/app/selection-semifixed.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/app/selection-semifixed.c Wed Aug 13 20:31:46 1997 @@ -0,0 +1,655 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#include +#include "appenv.h" +#include "boundary.h" +#include "colormaps.h" +#include "errors.h" +#include "gdisplay.h" +#include "gdisplay_ops.h" +#include "gimage_mask.h" +#include "gimprc.h" +#include "selection.h" +#include "marching_ants.h" + +#define USE_XDRAWPOINTS +#undef VERBOSE + + +/* The possible internal drawing states... */ +#define INVISIBLE 0 +#define INTRO 1 +#define MARCHING 2 + +#define INITIAL_DELAY 15 /* in milleseconds */ + + +/* static function prototypes */ +static GdkPixmap *create_cycled_ants_pixmap (GdkWindow *, gint); +static void cycle_ant_colors (Selection *); + +static void selection_draw (Selection *); +static void selection_transform_segs (Selection *, BoundSeg *, GdkSegment *, int); +static void selection_generate_segs (Selection *); +static void selection_free_segs (Selection *); +static gint selection_march_ants (gpointer); +static gint selection_start_marching (gpointer); + +GdkPixmap *marching_ants[9] = { NULL }; +GdkPixmap *cycled_ants_pixmap = NULL; + + +/*********************************/ +/* Local function definitions */ +/*********************************/ + +static GdkPixmap * +create_cycled_ants_pixmap (GdkWindow *win, + gint depth) +{ + GdkPixmap *pixmap; + GdkGC *gc; + GdkColor col; + int i, j; + + pixmap = gdk_pixmap_new (win, 8, 8, depth); + gc = gdk_gc_new (win); + + for (i = 0; i < 8; i++) + for (j = 0; j < 8; j++) + { + col.pixel = marching_ants_pixels[((i + j) % 8)]; + gdk_gc_set_foreground (gc, &col); + gdk_draw_line (pixmap, gc, i, j, i, j); + } + + gdk_gc_destroy (gc); + + return pixmap; +} + + +static void +cycle_ant_colors (Selection *select) +{ + int i; + int index; + + for (i = 0; i < 8; i++) + { + index = (i + (8 - select->index_in)) % 8; + if (index < 4) + store_color (&marching_ants_pixels[i], 0, 0, 0); + else + store_color (&marching_ants_pixels[i], 255, 255, 255); + } +} + +#define MAX_POINTS_INC 2048 + +static void +selection_add_point (GdkPoint *points[8], + gint max_npoints[8], + gint npoints[8], + gint x, gint y) +{ + gint i, j; + + j = (x - y) & 7; + i = npoints[j]++; + if (i == max_npoints[j]) + { + max_npoints[j] += 2048; + points[j] = g_realloc (points[j], sizeof (GdkPoint) * max_npoints[j]); + } + points[j][i].x = x; + points[j][i].y = y; +} + +/* Render the segs_in array into points_in */ +static void +selection_render_points (Selection *select) +{ + gint i, j; + gint max_npoints[8]; + gint x, y; + gint dx, dy; + gint dxa, dya; + gint r; + + if (select->segs_in == NULL) + return; + + for (j = 0; j < 8; j++) + { + max_npoints[j] = MAX_POINTS_INC; + select->points_in[j] = g_new (GdkPoint, max_npoints[j]); + select->num_points_in[j] = 0; + } + + for (i = 0; i < select->num_segs_in; i++) + { +#ifdef VERBOSE + g_print ("%2d: (%d, %d) - (%d, %d)\n", i, + select->segs_in[i].x1, + select->segs_in[i].y1, + select->segs_in[i].x2, + select->segs_in[i].y2); +#endif + x = select->segs_in[i].x1; + dxa = select->segs_in[i].x2 - x; + if (dxa > 0) + { + dx = 1; + } + else + { + dxa = -dxa; + dx = -1; + } + y = select->segs_in[i].y1; + dya = select->segs_in[i].y2 - y; + if (dya > 0) + { + dy = 1; + } + else + { + dya = -dya; + dy = -1; + } + if (dxa > dya) + { + r = dya; + do { + selection_add_point (select->points_in, + max_npoints, + select->num_points_in, + x, y); + x += dx; + r += dya; + if (r >= (dxa << 1)) { + y += dy; + r -= (dxa << 1); + } + } while (x != select->segs_in[i].x2); + } + else + { + r = dxa; + do { + selection_add_point (select->points_in, + max_npoints, + select->num_points_in, + x, y); + y += dy; + r += dxa; + if (r >= (dya << 1)) { + x += dx; + r -= (dya << 1); + } + } while (y != select->segs_in[i].y2); + } + } +} + + +selection_draw (Selection *select) +{ + if (select->hidden) + return; + + if (select->segs_layer && select->index_layer == 0) + gdk_draw_segments (select->win, select->gc_layer, + select->segs_layer, select->num_segs_layer); + if (select->segs_in) + gdk_draw_segments (select->win, select->gc_in, + select->segs_in, select->num_segs_in); + if (select->segs_out && select->index_out == 0) + gdk_draw_segments (select->win, select->gc_out, + select->segs_out, select->num_segs_out); +} + + +static void +selection_transform_segs (Selection *select, + BoundSeg *src_segs, + GdkSegment *dest_segs, + int num_segs) +{ + GDisplay * gdisp; + int x, y; + int i; + + gdisp = (GDisplay *) select->gdisp; + + for (i = 0; i < num_segs; i++) + { + gdisplay_transform_coords (gdisp, src_segs[i].x1, src_segs[i].y1, + &x, &y, 0); + + dest_segs[i].x1 = x; + dest_segs[i].y1 = y; + + gdisplay_transform_coords (gdisp, src_segs[i].x2, src_segs[i].y2, + &x, &y, 0); + + dest_segs[i].x2 = x; + dest_segs[i].y2 = y; + + /* If this segment is a closing segment && the segments lie inside + * the region, OR if this is an opening segment and the segments + * lie outside the region... + * we need to transform it by one display pixel + */ + if (!src_segs[i].open) + { + /* If it is vertical */ + if (dest_segs[i].x1 == dest_segs[i].x2) + { + dest_segs[i].x1 -= 1; + dest_segs[i].x2 -= 1; + } + else + { + dest_segs[i].y1 -= 1; + dest_segs[i].y2 -= 1; + } + } + } +} + + +static void +selection_generate_segs (Selection *select) +{ + GDisplay * gdisp; + BoundSeg *segs_in; + BoundSeg *segs_out; + BoundSeg *segs_layer; + + gdisp = (GDisplay *) select->gdisp; + + /* Ask the gimage for the boundary of its selected region... + * Then transform that information into a new buffer of XSegments + */ + gimage_mask_boundary (gdisp->gimage, &segs_in, &segs_out, + &select->num_segs_in, &select->num_segs_out); + if (select->num_segs_in) + { + select->segs_in = (GdkSegment *) g_malloc (sizeof (GdkSegment) * select->num_segs_in); + selection_transform_segs (select, segs_in, select->segs_in, select->num_segs_in); + } + else + select->segs_in = NULL; + + /* Possible secondary boundary representation */ + if (select->num_segs_out) + { + select->segs_out = (GdkSegment *) g_malloc (sizeof (GdkSegment) * select->num_segs_out); + selection_transform_segs (select, segs_out, select->segs_out, select->num_segs_out); + } + else + select->segs_out = NULL; + + /* The active layer's boundary */ + gimage_layer_boundary (gdisp->gimage, &segs_layer, &select->num_segs_layer); + if (select->num_segs_layer) + { + select->segs_layer = (GdkSegment *) g_malloc (sizeof (GdkSegment) * select->num_segs_layer); + selection_transform_segs (select, segs_layer, select->segs_layer, select->num_segs_layer); + } + else + select->segs_layer = NULL; + + g_free (segs_layer); +} + + +static void +selection_free_segs (Selection *select) +{ + if (select->segs_in) + g_free (select->segs_in); + if (select->segs_out) + g_free (select->segs_out); + if (select->segs_layer) + g_free (select->segs_layer); + + select->segs_in = NULL; + select->num_segs_in = 0; + select->segs_out = NULL; + select->num_segs_out = 0; + select->segs_layer = NULL; + select->num_segs_layer = 0; +} + + +static gint +selection_start_marching (gpointer data) +{ + Selection * select; + + select = (Selection *) data; + + /* if the RECALC bit is set, reprocess the boundaries */ + if (select->recalc) + { + selection_free_segs (select); + selection_generate_segs (select); + /* Toggle the RECALC flag */ + select->recalc = FALSE; + } + + select->index_in = 0; + select->index_out = 0; + select->index_layer = 0; + + /* Make sure the state is set to marching */ + select->state = MARCHING; + + /* Draw the ants */ + if (select->cycle) + cycle_ant_colors (select); + else + { + gdk_gc_set_stipple (select->gc_in, marching_ants[select->index_in]); + gdk_gc_set_stipple (select->gc_out, marching_ants[select->index_out]); + gdk_gc_set_stipple (select->gc_layer, marching_ants[select->index_layer]); + } + + selection_draw (select); + + /* Reset the timer */ + select->timer = gtk_timeout_add (select->speed, + selection_march_ants, + (gpointer) select); + + return FALSE; +} + +static gint +selection_march_ants (gpointer data) +{ + Selection * select; + + select = (Selection *) data; + + /* increment stipple index */ + select->index_in++; + if (select->index_in > 7) + select->index_in = 0; + + /* outside segments do not march, so index does not cycle */ + select->index_out++; + + /* layer doesn't march */ + select->index_layer++; + + /* Draw the ants */ + if (select->cycle) + cycle_ant_colors (select); + else + { + gdk_gc_set_stipple (select->gc_in, marching_ants[select->index_in]); + + selection_draw (select); + } + + return TRUE; +} + +/*********************************/ +/* Public function definitions */ +/*********************************/ + +Selection * +selection_create (GdkWindow *win, + gpointer gdisp_ptr, + int size, + int width, + int speed) +{ + GdkColor fg, bg; + GDisplay *gdisp; + Selection * new; + int base_type; + int i; + + gdisp = (GDisplay *) gdisp_ptr; + + new = (Selection *) g_malloc (sizeof (Selection)); + base_type = gimage_base_type (gdisp->gimage); + + if (cycled_marching_ants) + { + new->cycle = TRUE; + if (!cycled_ants_pixmap) + cycled_ants_pixmap = create_cycled_ants_pixmap (win, gdisp->depth); + + new->cycle_pix = cycled_ants_pixmap; + } + else + { + new->cycle = FALSE; + if (!marching_ants[0]) + for (i = 0; i < 8; i++) + marching_ants[i] = gdk_bitmap_create_from_data (win, (char*) ant_data[i], 8, 8); + } + + new->win = win; + new->gdisp = gdisp_ptr; + new->segs_in = NULL; + new->segs_out = NULL; + new->segs_layer = NULL; + new->num_segs_in = 0; + new->num_segs_out = 0; + new->num_segs_layer = 0; + new->index_in = 0; + new->index_out = 0; + new->index_layer = 0; + new->state = INVISIBLE; + new->paused = 0; + new->recalc = TRUE; + new->speed = speed; + new->hidden = FALSE; + + /* create a new graphics context */ + new->gc_in = gdk_gc_new (new->win); + + if (new->cycle) + { + gdk_gc_set_fill (new->gc_in, GDK_TILED); + gdk_gc_set_tile (new->gc_in, new->cycle_pix); + gdk_gc_set_line_attributes (new->gc_in, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + } + else + { + /* get black and white pixels for this gdisplay */ + fg.pixel = gdisplay_black_pixel ((GDisplay *) gdisp_ptr); + bg.pixel = gdisplay_white_pixel ((GDisplay *) gdisp_ptr); + + gdk_gc_set_foreground (new->gc_in, &fg); + gdk_gc_set_background (new->gc_in, &bg); + gdk_gc_set_fill (new->gc_in, GDK_OPAQUE_STIPPLED); + gdk_gc_set_line_attributes (new->gc_in, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + } + + /* Setup 2nd & 3rd GCs */ + fg.pixel = gdisplay_white_pixel ((GDisplay *) gdisp_ptr); + bg.pixel = gdisplay_gray_pixel ((GDisplay *) gdisp_ptr); + + /* create a new graphics context */ + new->gc_out = gdk_gc_new (new->win); + gdk_gc_set_foreground (new->gc_out, &fg); + gdk_gc_set_background (new->gc_out, &bg); + gdk_gc_set_fill (new->gc_out, GDK_OPAQUE_STIPPLED); + gdk_gc_set_line_attributes (new->gc_out, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + + /* get black and color pixels for this gdisplay */ + fg.pixel = gdisplay_black_pixel ((GDisplay *) gdisp_ptr); + bg.pixel = gdisplay_color_pixel ((GDisplay *) gdisp_ptr); + + /* create a new graphics context */ + new->gc_layer = gdk_gc_new (new->win); + gdk_gc_set_foreground (new->gc_layer, &fg); + gdk_gc_set_background (new->gc_layer, &bg); + gdk_gc_set_fill (new->gc_layer, GDK_OPAQUE_STIPPLED); + gdk_gc_set_line_attributes (new->gc_layer, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + + return new; +} + + +void +selection_pause (Selection *select) +{ + if (select->state != INVISIBLE) + gtk_timeout_remove (select->timer); + + select->paused ++; +} + + +void +selection_resume (Selection *select) +{ + if (select->paused == 1) + { + select->state = INTRO; + select->timer = gtk_timeout_add (INITIAL_DELAY, selection_start_marching, + (gpointer) select); + } + + select->paused--; +} + + +void +selection_start (Selection *select, + int recalc) +{ + /* A call to selection_start with recalc == TRUE means that + * we want to recalculate the selection boundary--usually + * after scaling or panning the display, or modifying the + * selection in some way. If recalc == FALSE, the already + * calculated boundary is simply redrawn. + */ + if (recalc) + select->recalc = TRUE; + + /* If this selection is paused, do not start it */ + if (select->paused > 0) + return; + + if (select->state != INVISIBLE) + gtk_timeout_remove (select->timer); + + select->state = INTRO; /* The state before the first draw */ + select->timer = gtk_timeout_add (INITIAL_DELAY, selection_start_marching, + (gpointer) select); +} + + +void +selection_invis (Selection *select) +{ + GDisplay * gdisp; + int x1, y1, x2, y2; + + if (select->state != INVISIBLE) + { + gtk_timeout_remove (select->timer); + select->state = INVISIBLE; + } + + gdisp = (GDisplay *) select->gdisp; + + /* Find the bounds of the selection */ + if (gdisplay_mask_bounds (gdisp, &x1, &y1, &x2, &y2)) + gdisplay_expose_area (gdisp, x1, y1, (x2 - x1), (y2 - y1)); + else + selection_start (select, TRUE); +} + + +void +selection_layer_invis (Selection *select) +{ + GDisplay * gdisp; + int x1, y1, x2, y2; + int x3, y3, x4, y4; + + if (select->state != INVISIBLE) + { + gtk_timeout_remove (select->timer); + select->state = INVISIBLE; + } + gdisp = (GDisplay *) select->gdisp; + + if (select->segs_layer != NULL && select->num_segs_layer == 4) + { + x1 = select->segs_layer[0].x1 - 1; + y1 = select->segs_layer[0].y1 - 1; + x2 = select->segs_layer[3].x2 + 1; + y2 = select->segs_layer[3].y2 + 1; + + x3 = select->segs_layer[0].x1 + 1; + y3 = select->segs_layer[0].y1 + 1; + x4 = select->segs_layer[3].x2 - 1; + y4 = select->segs_layer[3].y2 - 1; + + /* expose the region */ + gdisplay_expose_area (gdisp, x1, y1, (x2 - x1) + 1, (y3 - y1) + 1); + gdisplay_expose_area (gdisp, x1, y3, (x3 - x1) + 1, (y4 - y3) + 1); + gdisplay_expose_area (gdisp, x1, y4, (x2 - x1) + 1, (y2 - y4) + 1); + gdisplay_expose_area (gdisp, x4, y3, (x2 - x4) + 1, (y4 - y3) + 1); + } +} + + +void +selection_hide (Selection *select, + void *gdisp_ptr) +{ + selection_invis (select); + selection_layer_invis (select); + + /* toggle the visibility */ + select->hidden = select->hidden ? FALSE : TRUE; + + selection_start (select, TRUE); +} + + +void +selection_free (Selection *select) +{ + if (select->state != INVISIBLE) + gtk_timeout_remove (select->timer); + + if (select->gc_in) + gdk_gc_destroy (select->gc_in); + if (select->gc_out) + gdk_gc_destroy (select->gc_out); + if (select->gc_layer) + gdk_gc_destroy (select->gc_layer); + + selection_free_segs (select); + g_free (select); +} diff -u --recursive --new-file gimp-0.99.10/app/selection.c gimp-0.99.pre11/app/selection.c --- gimp-0.99.10/app/selection.c Thu May 29 19:16:07 1997 +++ gimp-0.99.pre11/app/selection.c Wed Aug 13 20:31:46 1997 @@ -27,6 +27,8 @@ #include "selection.h" #include "marching_ants.h" +#define USE_XDRAWPOINTS +#undef VERBOSE /* The possible internal drawing states... */ #define INVISIBLE 0 @@ -97,6 +99,114 @@ } } +#define MAX_POINTS_INC 2048 + +static void +selection_add_point (GdkPoint *points[8], + gint max_npoints[8], + gint npoints[8], + gint x, gint y) +{ + gint i, j; + j = (x - y) & 7; + + i = npoints[j]++; + if (i == max_npoints[j]) + { + max_npoints[j] += 2048; + points[j] = g_realloc (points[j], sizeof (GdkPoint) * max_npoints[j]); + } + points[j][i].x = x; + points[j][i].y = y; +} + + +/* Render the segs_in array into points_in */ +static void +selection_render_points (Selection *select) +{ + gint i, j; + gint max_npoints[8]; + gint x, y; + gint dx, dy; + gint dxa, dya; + gint r; + + if (select->segs_in == NULL) + return; + + for (j = 0; j < 8; j++) + { + max_npoints[j] = MAX_POINTS_INC; + select->points_in[j] = g_new (GdkPoint, max_npoints[j]); + select->num_points_in[j] = 0; + } + + for (i = 0; i < select->num_segs_in; i++) + { +#ifdef VERBOSE + g_print ("%2d: (%d, %d) - (%d, %d)\n", i, + select->segs_in[i].x1, + select->segs_in[i].y1, + select->segs_in[i].x2, + select->segs_in[i].y2); +#endif + x = select->segs_in[i].x1; + dxa = select->segs_in[i].x2 - x; + if (dxa > 0) + { + dx = 1; + } + else + { + dxa = -dxa; + dx = -1; + } + y = select->segs_in[i].y1; + dya = select->segs_in[i].y2 - y; + if (dya > 0) + { + dy = 1; + } + else + { + dya = -dya; + dy = -1; + } + if (dxa > dya) + { + r = dya; + do { + selection_add_point (select->points_in, + max_npoints, + select->num_points_in, + x, y); + x += dx; + r += dya; + if (r >= (dxa << 1)) { + y += dy; + r -= (dxa << 1); + } + } while (x != select->segs_in[i].x2); + } + else + { + r = dxa; + do { + selection_add_point (select->points_in, + max_npoints, + select->num_points_in, + x, y); + y += dy; + r += dxa; + if (r >= (dya << 1)) { + x += dx; + r -= (dya << 1); + } + } while (y != select->segs_in[i].y2); + } + } +} static void selection_draw (Selection *select) @@ -107,9 +217,49 @@ if (select->segs_layer && select->index_layer == 0) gdk_draw_segments (select->win, select->gc_layer, select->segs_layer, select->num_segs_layer); +#ifdef USE_XDRAWPOINTS +#ifdef VERBOSE + { + gint j, sum; + sum = 0; + for (j = 0; j < 8; j++) + sum += select->num_points_in[j]; + + g_print ("%d segments, %d points\n", select->num_segs_in, sum); + } +#endif + if (select->segs_in) + { + gint i; + + if (select->index_in == 0) + { + for (i = 0; i < 4; i++) + if (select->num_points_in[i]) + gdk_draw_points (select->win, select->gc_white, + select->points_in[i], select->num_points_in[i]); + for (i = 4; i < 8; i++) + if (select->num_points_in[i]) + gdk_draw_points (select->win, select->gc_black, + select->points_in[i], select->num_points_in[i]); + } + else + { + i = ((select->index_in + 3) & 7); + if (select->num_points_in[i]) + gdk_draw_points (select->win, select->gc_white, + select->points_in[i], select->num_points_in[i]); + i = ((select->index_in + 7) & 7); + if (select->num_points_in[i]) + gdk_draw_points (select->win, select->gc_black, + select->points_in[i], select->num_points_in[i]); + } + } +#else if (select->segs_in) gdk_draw_segments (select->win, select->gc_in, select->segs_in, select->num_segs_in); +#endif if (select->segs_out && select->index_out == 0) gdk_draw_segments (select->win, select->gc_out, select->segs_out, select->num_segs_out); @@ -184,6 +334,9 @@ { select->segs_in = (GdkSegment *) g_malloc (sizeof (GdkSegment) * select->num_segs_in); selection_transform_segs (select, segs_in, select->segs_in, select->num_segs_in); +#ifdef USE_XDRAWPOINTS + selection_render_points (select); +#endif } else select->segs_in = NULL; @@ -214,6 +367,7 @@ static void selection_free_segs (Selection *select) { + gint j; if (select->segs_in) g_free (select->segs_in); if (select->segs_out) @@ -221,6 +375,14 @@ if (select->segs_layer) g_free (select->segs_layer); + for (j = 0; j < 8; j++) + { + if (select->points_in[j]) + g_free (select->points_in[j]); + select->points_in[j] = NULL; + select->num_points_in[j] = 0; + } + select->segs_in = NULL; select->num_segs_in = 0; select->segs_out = NULL; @@ -282,8 +444,10 @@ /* increment stipple index */ select->index_in++; +#ifndef USE_XDRAWPOINTS if (select->index_in > 7) select->index_in = 0; +#endif /* outside segments do not march, so index does not cycle */ select->index_out++; @@ -296,7 +460,9 @@ cycle_ant_colors (select); else { +#ifndef USE_XDRAWPOINTS gdk_gc_set_stipple (select->gc_in, marching_ants[select->index_in]); +#endif selection_draw (select); } @@ -359,6 +525,9 @@ new->speed = speed; new->hidden = FALSE; + for (i = 0; i < 8; i++) + new->points_in[i] = NULL; + /* create a new graphics context */ new->gc_in = gdk_gc_new (new->win); @@ -379,6 +548,14 @@ gdk_gc_set_fill (new->gc_in, GDK_OPAQUE_STIPPLED); gdk_gc_set_line_attributes (new->gc_in, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); } + +#ifdef USE_XDRAWPOINTS + new->gc_white = gdk_gc_new (new->win); + gdk_gc_set_foreground (new->gc_white, &bg); + + new->gc_black = gdk_gc_new (new->win); + gdk_gc_set_foreground (new->gc_black, &fg); +#endif /* Setup 2nd & 3rd GCs */ fg.pixel = gdisplay_white_pixel ((GDisplay *) gdisp_ptr); diff -u --recursive --new-file gimp-0.99.10/app/selection.c.orig gimp-0.99.pre11/app/selection.c.orig --- gimp-0.99.10/app/selection.c.orig Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/app/selection.c.orig Wed Aug 13 20:31:46 1997 @@ -0,0 +1,545 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#include +#include "appenv.h" +#include "boundary.h" +#include "colormaps.h" +#include "errors.h" +#include "gdisplay.h" +#include "gdisplay_ops.h" +#include "gimage_mask.h" +#include "gimprc.h" +#include "selection.h" +#include "marching_ants.h" + + +/* The possible internal drawing states... */ +#define INVISIBLE 0 +#define INTRO 1 +#define MARCHING 2 + +#define INITIAL_DELAY 15 /* in milleseconds */ + + +/* static function prototypes */ +static GdkPixmap *create_cycled_ants_pixmap (GdkWindow *, gint); +static void cycle_ant_colors (Selection *); + +static void selection_draw (Selection *); +static void selection_transform_segs (Selection *, BoundSeg *, GdkSegment *, int); +static void selection_generate_segs (Selection *); +static void selection_free_segs (Selection *); +static gint selection_march_ants (gpointer); +static gint selection_start_marching (gpointer); + +GdkPixmap *marching_ants[9] = { NULL }; +GdkPixmap *cycled_ants_pixmap = NULL; + + +/*********************************/ +/* Local function definitions */ +/*********************************/ + +static GdkPixmap * +create_cycled_ants_pixmap (GdkWindow *win, + gint depth) +{ + GdkPixmap *pixmap; + GdkGC *gc; + GdkColor col; + int i, j; + + pixmap = gdk_pixmap_new (win, 8, 8, depth); + gc = gdk_gc_new (win); + + for (i = 0; i < 8; i++) + for (j = 0; j < 8; j++) + { + col.pixel = marching_ants_pixels[((i + j) % 8)]; + gdk_gc_set_foreground (gc, &col); + gdk_draw_line (pixmap, gc, i, j, i, j); + } + + gdk_gc_destroy (gc); + + return pixmap; +} + + +static void +cycle_ant_colors (Selection *select) +{ + int i; + int index; + + for (i = 0; i < 8; i++) + { + index = (i + (8 - select->index_in)) % 8; + if (index < 4) + store_color (&marching_ants_pixels[i], 0, 0, 0); + else + store_color (&marching_ants_pixels[i], 255, 255, 255); + } +} + + +static void +selection_draw (Selection *select) +{ + if (select->hidden) + return; + + if (select->segs_layer && select->index_layer == 0) + gdk_draw_segments (select->win, select->gc_layer, + select->segs_layer, select->num_segs_layer); + if (select->segs_in) + gdk_draw_segments (select->win, select->gc_in, + select->segs_in, select->num_segs_in); + if (select->segs_out && select->index_out == 0) + gdk_draw_segments (select->win, select->gc_out, + select->segs_out, select->num_segs_out); +} + + +static void +selection_transform_segs (Selection *select, + BoundSeg *src_segs, + GdkSegment *dest_segs, + int num_segs) +{ + GDisplay * gdisp; + int x, y; + int i; + + gdisp = (GDisplay *) select->gdisp; + + for (i = 0; i < num_segs; i++) + { + gdisplay_transform_coords (gdisp, src_segs[i].x1, src_segs[i].y1, + &x, &y, 0); + + dest_segs[i].x1 = x; + dest_segs[i].y1 = y; + + gdisplay_transform_coords (gdisp, src_segs[i].x2, src_segs[i].y2, + &x, &y, 0); + + dest_segs[i].x2 = x; + dest_segs[i].y2 = y; + + /* If this segment is a closing segment && the segments lie inside + * the region, OR if this is an opening segment and the segments + * lie outside the region... + * we need to transform it by one display pixel + */ + if (!src_segs[i].open) + { + /* If it is vertical */ + if (dest_segs[i].x1 == dest_segs[i].x2) + { + dest_segs[i].x1 -= 1; + dest_segs[i].x2 -= 1; + } + else + { + dest_segs[i].y1 -= 1; + dest_segs[i].y2 -= 1; + } + } + } +} + + +static void +selection_generate_segs (Selection *select) +{ + GDisplay * gdisp; + BoundSeg *segs_in; + BoundSeg *segs_out; + BoundSeg *segs_layer; + + gdisp = (GDisplay *) select->gdisp; + + /* Ask the gimage for the boundary of its selected region... + * Then transform that information into a new buffer of XSegments + */ + gimage_mask_boundary (gdisp->gimage, &segs_in, &segs_out, + &select->num_segs_in, &select->num_segs_out); + if (select->num_segs_in) + { + select->segs_in = (GdkSegment *) g_malloc (sizeof (GdkSegment) * select->num_segs_in); + selection_transform_segs (select, segs_in, select->segs_in, select->num_segs_in); + } + else + select->segs_in = NULL; + + /* Possible secondary boundary representation */ + if (select->num_segs_out) + { + select->segs_out = (GdkSegment *) g_malloc (sizeof (GdkSegment) * select->num_segs_out); + selection_transform_segs (select, segs_out, select->segs_out, select->num_segs_out); + } + else + select->segs_out = NULL; + + /* The active layer's boundary */ + gimage_layer_boundary (gdisp->gimage, &segs_layer, &select->num_segs_layer); + if (select->num_segs_layer) + { + select->segs_layer = (GdkSegment *) g_malloc (sizeof (GdkSegment) * select->num_segs_layer); + selection_transform_segs (select, segs_layer, select->segs_layer, select->num_segs_layer); + } + else + select->segs_layer = NULL; + + g_free (segs_layer); +} + + +static void +selection_free_segs (Selection *select) +{ + if (select->segs_in) + g_free (select->segs_in); + if (select->segs_out) + g_free (select->segs_out); + if (select->segs_layer) + g_free (select->segs_layer); + + select->segs_in = NULL; + select->num_segs_in = 0; + select->segs_out = NULL; + select->num_segs_out = 0; + select->segs_layer = NULL; + select->num_segs_layer = 0; +} + + +static gint +selection_start_marching (gpointer data) +{ + Selection * select; + + select = (Selection *) data; + + /* if the RECALC bit is set, reprocess the boundaries */ + if (select->recalc) + { + selection_free_segs (select); + selection_generate_segs (select); + /* Toggle the RECALC flag */ + select->recalc = FALSE; + } + + select->index_in = 0; + select->index_out = 0; + select->index_layer = 0; + + /* Make sure the state is set to marching */ + select->state = MARCHING; + + /* Draw the ants */ + if (select->cycle) + cycle_ant_colors (select); + else + { + gdk_gc_set_stipple (select->gc_in, marching_ants[select->index_in]); + gdk_gc_set_stipple (select->gc_out, marching_ants[select->index_out]); + gdk_gc_set_stipple (select->gc_layer, marching_ants[select->index_layer]); + } + + selection_draw (select); + + /* Reset the timer */ + select->timer = gtk_timeout_add (select->speed, + selection_march_ants, + (gpointer) select); + + return FALSE; +} + +static gint +selection_march_ants (gpointer data) +{ + Selection * select; + + select = (Selection *) data; + + /* increment stipple index */ + select->index_in++; + if (select->index_in > 7) + select->index_in = 0; + + /* outside segments do not march, so index does not cycle */ + select->index_out++; + + /* layer doesn't march */ + select->index_layer++; + + /* Draw the ants */ + if (select->cycle) + cycle_ant_colors (select); + else + { + gdk_gc_set_stipple (select->gc_in, marching_ants[select->index_in]); + + selection_draw (select); + } + + return TRUE; +} + +/*********************************/ +/* Public function definitions */ +/*********************************/ + +Selection * +selection_create (GdkWindow *win, + gpointer gdisp_ptr, + int size, + int width, + int speed) +{ + GdkColor fg, bg; + GDisplay *gdisp; + Selection * new; + int base_type; + int i; + + gdisp = (GDisplay *) gdisp_ptr; + + new = (Selection *) g_malloc (sizeof (Selection)); + base_type = gimage_base_type (gdisp->gimage); + + if (cycled_marching_ants) + { + new->cycle = TRUE; + if (!cycled_ants_pixmap) + cycled_ants_pixmap = create_cycled_ants_pixmap (win, gdisp->depth); + + new->cycle_pix = cycled_ants_pixmap; + } + else + { + new->cycle = FALSE; + if (!marching_ants[0]) + for (i = 0; i < 8; i++) + marching_ants[i] = gdk_bitmap_create_from_data (win, (char*) ant_data[i], 8, 8); + } + + new->win = win; + new->gdisp = gdisp_ptr; + new->segs_in = NULL; + new->segs_out = NULL; + new->segs_layer = NULL; + new->num_segs_in = 0; + new->num_segs_out = 0; + new->num_segs_layer = 0; + new->index_in = 0; + new->index_out = 0; + new->index_layer = 0; + new->state = INVISIBLE; + new->paused = 0; + new->recalc = TRUE; + new->speed = speed; + new->hidden = FALSE; + + /* create a new graphics context */ + new->gc_in = gdk_gc_new (new->win); + + if (new->cycle) + { + gdk_gc_set_fill (new->gc_in, GDK_TILED); + gdk_gc_set_tile (new->gc_in, new->cycle_pix); + gdk_gc_set_line_attributes (new->gc_in, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + } + else + { + /* get black and white pixels for this gdisplay */ + fg.pixel = gdisplay_black_pixel ((GDisplay *) gdisp_ptr); + bg.pixel = gdisplay_white_pixel ((GDisplay *) gdisp_ptr); + + gdk_gc_set_foreground (new->gc_in, &fg); + gdk_gc_set_background (new->gc_in, &bg); + gdk_gc_set_fill (new->gc_in, GDK_OPAQUE_STIPPLED); + gdk_gc_set_line_attributes (new->gc_in, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + } + + /* Setup 2nd & 3rd GCs */ + fg.pixel = gdisplay_white_pixel ((GDisplay *) gdisp_ptr); + bg.pixel = gdisplay_gray_pixel ((GDisplay *) gdisp_ptr); + + /* create a new graphics context */ + new->gc_out = gdk_gc_new (new->win); + gdk_gc_set_foreground (new->gc_out, &fg); + gdk_gc_set_background (new->gc_out, &bg); + gdk_gc_set_fill (new->gc_out, GDK_OPAQUE_STIPPLED); + gdk_gc_set_line_attributes (new->gc_out, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + + /* get black and color pixels for this gdisplay */ + fg.pixel = gdisplay_black_pixel ((GDisplay *) gdisp_ptr); + bg.pixel = gdisplay_color_pixel ((GDisplay *) gdisp_ptr); + + /* create a new graphics context */ + new->gc_layer = gdk_gc_new (new->win); + gdk_gc_set_foreground (new->gc_layer, &fg); + gdk_gc_set_background (new->gc_layer, &bg); + gdk_gc_set_fill (new->gc_layer, GDK_OPAQUE_STIPPLED); + gdk_gc_set_line_attributes (new->gc_layer, 1, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + + return new; +} + + +void +selection_pause (Selection *select) +{ + if (select->state != INVISIBLE) + gtk_timeout_remove (select->timer); + + select->paused ++; +} + + +void +selection_resume (Selection *select) +{ + if (select->paused == 1) + { + select->state = INTRO; + select->timer = gtk_timeout_add (INITIAL_DELAY, selection_start_marching, + (gpointer) select); + } + + select->paused--; +} + + +void +selection_start (Selection *select, + int recalc) +{ + /* A call to selection_start with recalc == TRUE means that + * we want to recalculate the selection boundary--usually + * after scaling or panning the display, or modifying the + * selection in some way. If recalc == FALSE, the already + * calculated boundary is simply redrawn. + */ + if (recalc) + select->recalc = TRUE; + + /* If this selection is paused, do not start it */ + if (select->paused > 0) + return; + + if (select->state != INVISIBLE) + gtk_timeout_remove (select->timer); + + select->state = INTRO; /* The state before the first draw */ + select->timer = gtk_timeout_add (INITIAL_DELAY, selection_start_marching, + (gpointer) select); +} + + +void +selection_invis (Selection *select) +{ + GDisplay * gdisp; + int x1, y1, x2, y2; + + if (select->state != INVISIBLE) + { + gtk_timeout_remove (select->timer); + select->state = INVISIBLE; + } + + gdisp = (GDisplay *) select->gdisp; + + /* Find the bounds of the selection */ + if (gdisplay_mask_bounds (gdisp, &x1, &y1, &x2, &y2)) + gdisplay_expose_area (gdisp, x1, y1, (x2 - x1), (y2 - y1)); + else + selection_start (select, TRUE); +} + + +void +selection_layer_invis (Selection *select) +{ + GDisplay * gdisp; + int x1, y1, x2, y2; + int x3, y3, x4, y4; + + if (select->state != INVISIBLE) + { + gtk_timeout_remove (select->timer); + select->state = INVISIBLE; + } + gdisp = (GDisplay *) select->gdisp; + + if (select->segs_layer != NULL && select->num_segs_layer == 4) + { + x1 = select->segs_layer[0].x1 - 1; + y1 = select->segs_layer[0].y1 - 1; + x2 = select->segs_layer[3].x2 + 1; + y2 = select->segs_layer[3].y2 + 1; + + x3 = select->segs_layer[0].x1 + 1; + y3 = select->segs_layer[0].y1 + 1; + x4 = select->segs_layer[3].x2 - 1; + y4 = select->segs_layer[3].y2 - 1; + + /* expose the region */ + gdisplay_expose_area (gdisp, x1, y1, (x2 - x1) + 1, (y3 - y1) + 1); + gdisplay_expose_area (gdisp, x1, y3, (x3 - x1) + 1, (y4 - y3) + 1); + gdisplay_expose_area (gdisp, x1, y4, (x2 - x1) + 1, (y2 - y4) + 1); + gdisplay_expose_area (gdisp, x4, y3, (x2 - x4) + 1, (y4 - y3) + 1); + } +} + + +void +selection_hide (Selection *select, + void *gdisp_ptr) +{ + selection_invis (select); + selection_layer_invis (select); + + /* toggle the visibility */ + select->hidden = select->hidden ? FALSE : TRUE; + + selection_start (select, TRUE); +} + + +void +selection_free (Selection *select) +{ + if (select->state != INVISIBLE) + gtk_timeout_remove (select->timer); + + if (select->gc_in) + gdk_gc_destroy (select->gc_in); + if (select->gc_out) + gdk_gc_destroy (select->gc_out); + if (select->gc_layer) + gdk_gc_destroy (select->gc_layer); + + selection_free_segs (select); + g_free (select); +} diff -u --recursive --new-file gimp-0.99.10/app/selection.h gimp-0.99.pre11/app/selection.h --- gimp-0.99.10/app/selection.h Tue Oct 8 19:37:46 1996 +++ gimp-0.99.pre11/app/selection.h Wed Aug 13 20:31:46 1997 @@ -47,6 +47,12 @@ gint timer; /* timer for successive draws */ int cycle; /* color cycling turned on */ GdkPixmap * cycle_pix; /* cycling pixmap */ + + /* These are used only if USE_XDRAWPOINTS is defined. */ + GdkPoint * points_in[8]; /* points of segs_in for fast ants */ + int num_points_in[8]; /* number of points in points_in */ + GdkGC * gc_white; /* gc for drawing white points */ + GdkGC * gc_black; /* gc for drawing black points */ }; /* Function declarations */ diff -u --recursive --new-file gimp-0.99.10/app/selection.h.orig gimp-0.99.pre11/app/selection.h.orig --- gimp-0.99.10/app/selection.h.orig Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/app/selection.h.orig Wed Aug 13 20:31:46 1997 @@ -0,0 +1,63 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#ifndef __SELECTION_H__ +#define __SELECTION_H__ + +typedef struct _selection Selection; + +struct _selection +{ + /* This information is for maintaining the selection's appearance */ + GdkWindow * win; /* Window to draw to */ + void * gdisp; /* GDisplay that owns the selection */ + GdkGC * gc_in; /* GC for drawing selection outline */ + GdkGC * gc_out; /* GC for selected regions outside current layer */ + GdkGC * gc_layer; /* GC for current layer outline */ + + /* This information is for drawing the marching ants around the border */ + GdkSegment * segs_in; /* gdk segments of area boundary */ + GdkSegment * segs_out; /* gdk segments of area boundary */ + GdkSegment * segs_layer; /* gdk segments of area boundary */ + int num_segs_in; /* number of segments in segs1 */ + int num_segs_out; /* number of segments in segs2 */ + int num_segs_layer; /* number of segments in segs3 */ + int index_in; /* index of current stipple pattern */ + int index_out; /* index of current stipple pattern */ + int index_layer; /* index of current stipple pattern */ + int state; /* internal drawing state */ + int paused; /* count of pause requests */ + int recalc; /* flag to recalculate the selection */ + int speed; /* speed of marching ants */ + int hidden; /* is the selection hidden? */ + gint timer; /* timer for successive draws */ + int cycle; /* color cycling turned on */ + GdkPixmap * cycle_pix; /* cycling pixmap */ +}; + +/* Function declarations */ + +Selection * selection_create (GdkWindow *, gpointer, int, int, int); +void selection_pause (Selection *); +void selection_resume (Selection *); +void selection_start (Selection *, int); +void selection_invis (Selection *); +void selection_layer_invis (Selection *); +void selection_hide (Selection *, void *); +void selection_free (Selection *); + +#endif /* __SELECTION_H__ */ diff -u --recursive --new-file gimp-0.99.10/app/text_tool.c gimp-0.99.pre11/app/text_tool.c --- gimp-0.99.10/app/text_tool.c Fri Jun 6 03:09:09 1997 +++ gimp-0.99.pre11/app/text_tool.c Wed Aug 13 20:31:46 1997 @@ -1612,12 +1612,11 @@ if (newmask != mask) tile_manager_destroy (mask); - if (newmask) - { - layer = layer_new (gimage->ID, newmask->levels[0].width, + if (newmask && + (layer = layer_new (gimage->ID, newmask->levels[0].width, newmask->levels[0].height, layer_type, - "Text Layer", OPAQUE, NORMAL_MODE); - + "Text Layer", OPAQUE, NORMAL_MODE))) + { /* color the layer buffer */ gimage_get_foreground (gimage, drawable_id, color); color[layer->bytes - 1] = OPAQUE; @@ -1655,8 +1654,12 @@ tile_manager_destroy (newmask); } - else - layer = NULL; + else + { + if (newmask) + warning("text_render: could not allocate image"); + layer = NULL; + } /* free the pixmap */ gdk_pixmap_destroy (pixmap); diff -u --recursive --new-file gimp-0.99.10/app/tile_swap.c gimp-0.99.pre11/app/tile_swap.c --- gimp-0.99.10/app/tile_swap.c Fri Jun 6 02:01:34 1997 +++ gimp-0.99.pre11/app/tile_swap.c Wed Aug 13 20:31:46 1997 @@ -405,7 +405,7 @@ offset = lseek (fd, tile->swap_offset, SEEK_SET); if (offset == -1) { - g_warning ("unable to seek to tile location on disk: %d", err); + g_warning ("unable to seek to tile location on disk: %d", errno); return; } } diff -u --recursive --new-file gimp-0.99.10/app/xcf.c gimp-0.99.pre11/app/xcf.c --- gimp-0.99.10/app/xcf.c Fri Jun 6 02:01:35 1997 +++ gimp-0.99.pre11/app/xcf.c Wed Aug 13 20:31:46 1997 @@ -1025,7 +1025,7 @@ { guchar *data, *t; guchar buffer[1024]; - guchar last; + unsigned int last=-1; /* Must be unique */ int state; int length; int count; diff -u --recursive --new-file gimp-0.99.10/config.status gimp-0.99.pre11/config.status --- gimp-0.99.10/config.status Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/config.status Thu Aug 14 01:25:44 1997 @@ -0,0 +1,303 @@ +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host firestorm.net.house.au: +# +# ./configure +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" +for ac_option +do + case "$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion" + exec ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "./config.status generated by autoconf version 2.12" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "$ac_cs_usage"; exit 0 ;; + *) echo "$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=. +ac_given_INSTALL="/usr/bin/install -c" + +trap 'rm -fr Makefile gimprc libgimp/Makefile plug-ins/Makefile plug-ins/build plug-ins/dgimp/Makefile plug-ins/script-fu/Makefile plug-ins/script-fu/scripts/Makefile app/Makefile docs/Makefile config.h conftest*; exit 1' 1 2 15 + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; + s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF +/^[ ]*VPATH[ ]*=[^:]*$/d + +s%@CFLAGS@%-g -O2 -Wall%g +s%@CPPFLAGS@%%g +s%@CXXFLAGS@%%g +s%@DEFS@%-DHAVE_CONFIG_H%g +s%@LDFLAGS@%%g +s%@LIBS@%%g +s%@exec_prefix@%${prefix}%g +s%@prefix@%/usr/local%g +s%@program_transform_name@%s,x,x,%g +s%@bindir@%${exec_prefix}/bin%g +s%@sbindir@%${exec_prefix}/sbin%g +s%@libexecdir@%${exec_prefix}/libexec%g +s%@datadir@%${prefix}/share%g +s%@sysconfdir@%${prefix}/etc%g +s%@sharedstatedir@%${prefix}/com%g +s%@localstatedir@%${prefix}/var%g +s%@libdir@%${exec_prefix}/lib%g +s%@includedir@%${prefix}/include%g +s%@oldincludedir@%/usr/include%g +s%@infodir@%${prefix}/info%g +s%@mandir@%${prefix}/man%g +s%@subdirs@%gtk+%g +s%@INSTALL_PROGRAM@%${INSTALL}%g +s%@INSTALL_DATA@%${INSTALL} -m 644%g +s%@INSTALL_SCRIPT@%${INSTALL_PROGRAM}%g +s%@PACKAGE@%gimp%g +s%@VERSION@%0.99.10%g +s%@ACLOCAL@%aclocal%g +s%@AUTOCONF@%autoconf%g +s%@AUTOMAKE@%automake%g +s%@AUTOHEADER@%autoheader%g +s%@MAKEINFO@%makeinfo%g +s%@SET_MAKE@%%g +s%@host@%i586-pc-linux-gnu%g +s%@host_alias@%i586-pc-linux-gnu%g +s%@host_cpu@%i586%g +s%@host_vendor@%pc%g +s%@host_os@%linux-gnu%g +s%@CC@%gcc%g +s%@RANLIB@%ranlib%g +s%@LIBTOOL@%$(top_builddir)/libtool%g +s%@LN_S@%ln -s%g +s%@CPP@%gcc -E%g +s%@gimpdir@%.gimp%g +s%@gimpdatadir@%${prefix}/share/gimp/0.99.10%g +s%@gimpplugindir@%${exec_prefix}/lib/gimp/0.99.10%g +s%@scriptdata@%alien-glow-logo.scm basic1-logo.scm basic2-logo.scm beavis.jpg beveled-button.scm blended-logo.scm carve-it.scm carved-logo.scm chrome-it.scm chrome-logo.scm circle-logo.scm clothify.scm coolmetal-logo.scm crystal-logo.scm drop-shadow.scm erase-rows.scm font-map.scm frosty-logo.scm glowing-logo.scm gradient-example.scm grid-system.scm hsv-graph.scm i26-gunya2.scm image-structure.scm kanji-circle.scm kanji-neon.scm neon-logo.scm perspective-shadow.scm pie-chart.scm ripply-anim.scm round-corners.scm slide.scm sota-chrome-logo.scm sphere.scm starburst-logo.scm starscape-logo.scm swirltile.scm swirly-pattern.scm t-o-p-logo.scm t-o-p.scm texture.jpg texture1.jpg texture2.jpg texture3.jpg textured-logo.scm title-header.scm trochoid.scm weave.scm%g +s%@LIBTIFF_INC@%%g +s%@LIBTIFF_LIB@%%g +s%@LIBJPEG_INC@%%g +s%@LIBJPEG_LIB@%%g +s%@LIBPNG_INC@%%g +s%@LIBPNG_LIB@%%g + +CEOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi + +CONFIG_FILES=${CONFIG_FILES-"Makefile gimprc libgimp/Makefile plug-ins/Makefile plug-ins/build plug-ins/dgimp/Makefile plug-ins/script-fu/Makefile plug-ins/script-fu/scripts/Makefile app/Makefile docs/Makefile"} +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then + CONFIG_HEADERS="config.h" +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + + + +test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h + +exit 0 diff -u --recursive --new-file gimp-0.99.10/configure gimp-0.99.pre11/configure --- gimp-0.99.10/configure Fri Jun 6 17:49:39 1997 +++ gimp-0.99.pre11/configure Wed Aug 13 23:22:24 1997 @@ -1135,7 +1135,6 @@ LIBJPEG_INC="-I$with_libjpeg" fi - if test -n "$DEBUGFLAG"; then CFLAGS="$DEBUGFLAG" fi @@ -1143,7 +1142,7 @@ # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1147: checking for $ac_word" >&5 +echo "configure:1146: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1172,7 +1171,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1176: checking for $ac_word" >&5 +echo "configure:1175: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1220,7 +1219,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1224: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1223: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1230,11 +1229,11 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1254,12 +1253,12 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1258: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1257: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1263: checking whether we are using GNU C" >&5 +echo "configure:1262: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1268,7 +1267,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1283,7 +1282,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1287: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1286: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1314,7 +1313,7 @@ echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 -echo "configure:1318: checking for ${CC-cc} option to accept ANSI C" >&5 +echo "configure:1317: checking for ${CC-cc} option to accept ANSI C" >&5 if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1330,7 +1329,7 @@ do CC="$ac_save_CC $ac_arg" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1351: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* am_cv_prog_cc_stdc="$ac_arg"; break else @@ -1382,7 +1381,7 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1386: checking for a BSD compatible install" >&5 +echo "configure:1385: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1432,7 +1431,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1436: checking whether ln -s works" >&5 +echo "configure:1435: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1453,7 +1452,7 @@ fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:1457: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:1456: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1497,7 +1496,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1501: checking how to run the C preprocessor" >&5 +echo "configure:1500: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1512,13 +1511,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1529,13 +1528,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1539: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1559,17 +1558,17 @@ ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6 -echo "configure:1563: checking for sys/ipc.h" >&5 +echo "configure:1562: checking for sys/ipc.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1573: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1596,17 +1595,17 @@ ac_safe=`echo "sys/shm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/shm.h""... $ac_c" 1>&6 -echo "configure:1600: checking for sys/shm.h" >&5 +echo "configure:1599: checking for sys/shm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1610: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1637,12 +1636,12 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:1641: checking for $ac_hdr that defines DIR" >&5 +echo "configure:1640: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -1650,7 +1649,7 @@ DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1653: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -1675,7 +1674,7 @@ # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:1679: checking for opendir in -ldir" >&5 +echo "configure:1678: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1683,7 +1682,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1716,7 +1715,7 @@ else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:1720: checking for opendir in -lx" >&5 +echo "configure:1719: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1724,7 +1723,7 @@ ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1758,12 +1757,12 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1762: checking for ANSI C header files" >&5 +echo "configure:1761: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1771,7 +1770,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1774: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1788,7 +1787,7 @@ if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1806,7 +1805,7 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1827,7 +1826,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1838,7 +1837,7 @@ exit (0); } EOF -if { (eval echo configure:1842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then : else @@ -1862,12 +1861,12 @@ fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:1866: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:1865: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1883,7 +1882,7 @@ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:1887: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -1904,12 +1903,12 @@ fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:1908: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:1907: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1918,7 +1917,7 @@ struct tm *tp; ; return 0; } EOF -if { (eval echo configure:1922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -1941,17 +1940,17 @@ ac_safe=`echo "sys/time.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/time.h""... $ac_c" 1>&6 -echo "configure:1945: checking for sys/time.h" >&5 +echo "configure:1944: checking for sys/time.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1955: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1977,17 +1976,17 @@ ac_safe=`echo "unistd.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for unistd.h""... $ac_c" 1>&6 -echo "configure:1981: checking for unistd.h" >&5 +echo "configure:1980: checking for unistd.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1991: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1990: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2013,12 +2012,12 @@ echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:2017: checking for pid_t" >&5 +echo "configure:2016: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2046,12 +2045,12 @@ fi echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:2050: checking return type of signal handlers" >&5 +echo "configure:2049: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2068,7 +2067,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:2072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -2087,12 +2086,12 @@ echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:2091: checking for vprintf" >&5 +echo "configure:2090: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -2139,12 +2138,12 @@ if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:2143: checking for _doprnt" >&5 +echo "configure:2142: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -2195,16 +2194,16 @@ # Check for sys/select.h echo $ac_n "checking fd_set and sys/select""... $ac_c" 1>&6 -echo "configure:2199: checking fd_set and sys/select" >&5 +echo "configure:2198: checking fd_set and sys/select" >&5 cat > conftest.$ac_ext < int main() { fd_set readMask, writeMask; ; return 0; } EOF -if { (eval echo configure:2208: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gimp_ok=yes else @@ -2216,7 +2215,7 @@ rm -f conftest* if test $gimp_ok = no; then cat > conftest.$ac_ext < EOF @@ -2258,6 +2257,8 @@ + + trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure @@ -2419,6 +2420,8 @@ s%@LIBTIFF_LIB@%$LIBTIFF_LIB%g s%@LIBJPEG_INC@%$LIBJPEG_INC%g s%@LIBJPEG_LIB@%$LIBJPEG_LIB%g +s%@LIBPNG_INC@%$LIBPNG_INC%g +s%@LIBPNG_LIB@%$LIBPNG_LIB%g CEOF EOF diff -u --recursive --new-file gimp-0.99.10/configure.in gimp-0.99.pre11/configure.in --- gimp-0.99.10/configure.in Fri Jun 6 02:09:17 1997 +++ gimp-0.99.pre11/configure.in Wed Aug 13 23:10:57 1997 @@ -49,7 +49,6 @@ AC_ARG_WITH(libjpeg, [ --with-libjpeg=DIR Specify where libjpeg lives], LIBJPEG_LIB="-L$with_libjpeg" LIBJPEG_INC="-I$with_libjpeg") - if test -n "$DEBUGFLAG"; then CFLAGS="$DEBUGFLAG" fi @@ -123,6 +122,8 @@ AC_SUBST(LIBTIFF_LIB) AC_SUBST(LIBJPEG_INC) AC_SUBST(LIBJPEG_LIB) +AC_SUBST(LIBPNG_INC) +AC_SUBST(LIBPNG_LIB) dnl Output the Makefiles diff -u --recursive --new-file gimp-0.99.10/docs/Makefile gimp-0.99.pre11/docs/Makefile --- gimp-0.99.10/docs/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/docs/Makefile Thu Aug 14 01:25:52 1997 @@ -0,0 +1,295 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gimp +pkglibdir = $(libdir)/gimp +pkgincludedir = $(includedir)/gimp + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBJPEG_INC = +LIBJPEG_LIB = +LIBPNG_INC = +LIBPNG_LIB = +LIBTIFF_INC = +LIBTIFF_LIB = +LIBTOOL = $(top_builddir)/libtool +LN_S = ln -s +MAKEINFO = makeinfo +PACKAGE = gimp +RANLIB = ranlib +VERSION = 0.99.10 +gimpdatadir = ${prefix}/share/gimp/0.99.10 +gimpdir = .gimp +gimpplugindir = ${exec_prefix}/lib/gimp/0.99.10 + +scriptdata = + +EXTRA_DIST = \ + gimp.txt pdb_self_doc.el \ + pdb_dump xcf.doc \ + texinfo.tex script-fu.tex \ + architecture.eps logo.eps \ + net-fu.eps timeline.eps + +info_TEXINFOS = pdb.texi +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +TEXI2DVI = texi2dvi +TEXINFO_TEX = $(srcdir)/texinfo.tex +INFO_DEPS = pdb.info +DVIS = pdb.dvi +TEXINFOS = pdb.texi +DIST_COMMON = Makefile.am Makefile.in texinfo.tex + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +default: all + +.SUFFIXES: +.SUFFIXES: .dvi .info .ps .texi .texinfo +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +pdb.info: pdb.texi +pdb.dvi: pdb.texi + + +DVIPS = dvips + +.texi.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texi.dvi: + TEXINPUTS=$(srcdir):$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< + +.texi: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo.dvi: + TEXINPUTS=$(srcdir):$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< +.dvi.ps: + $(DVIPS) $< -o $@ + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(infodir) + @for file in $(INFO_DEPS); do \ + d=$(srcdir); \ + for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + if test -f $$d/$$ifile; then \ + echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \ + else : ; fi; \ + done; \ + done + @$(POST_INSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + for file in $(INFO_DEPS); do \ + echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\ + install-info --info-dir=$(infodir) $(infodir)/$$file || :;\ + done; \ + else : ; fi + +uninstall-info: + $(PRE_UNINSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + ii=yes; \ + else ii=; fi; \ + for file in $(INFO_DEPS); do \ + test -z $ii || install-info --info-dir=$(infodir) --remove $$file; \ + done + $(NORMAL_UNINSTALL) + for file in $(INFO_DEPS); do \ + (cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ + done + +dist-info: $(INFO_DEPS) + for base in $(INFO_DEPS); do \ + d=$(srcdir); \ + for file in `cd $$d && eval echo $$base*`; do \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done; \ + done + +mostlyclean-aminfo: + rm -f pdb.aux pdb.cp pdb.cps pdb.dvi pdb.fn pdb.fns pdb.ky pdb.log \ + pdb.pg pdb.toc pdb.tp pdb.tps pdb.vr pdb.vrs pdb.op pdb.tr \ + pdb.cv + +clean-aminfo: + +distclean-aminfo: + +maintainer-clean-aminfo: + for i in $(INFO_DEPS); do rm -f `eval echo $$i*`; done +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = docs + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu docs/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info +info: $(INFO_DEPS) +dvi: $(DVIS) +check: all + $(MAKE) +installcheck: +install-exec: + @$(NORMAL_INSTALL) + +install-data: install-info-am + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: uninstall-info + +all: Makefile $(INFO_DEPS) + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + $(mkinstalldirs) $(infodir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-aminfo mostlyclean-generic + +clean: clean-aminfo clean-generic mostlyclean + +distclean: distclean-aminfo distclean-generic clean + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-aminfo maintainer-clean-generic \ + distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default install-info-am uninstall-info mostlyclean-aminfo \ +distclean-aminfo clean-aminfo maintainer-clean-aminfo tags distdir info \ +dvi installcheck install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +pdb.texi: $(top_srcdir)/docs/pdb_self_doc.el pdb_dump + emacs --batch -l $(top_srcdir)/docs/pdb_self_doc.el -f make-docs-noargs + +pdb_dump: + $(top_builddir)/app/gimp --no-interface --batch '(gimp-procedural-db-dump "pdb_dump")' '(gimp-quit 0)' + +script-fu.ps: script-fu.dvi + dvips -f script-fu.dvi > script-fu.ps + +script-fu.dvi: + latex script-fu.tex + +files: + @files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files macros/*; do \ + echo $$p; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/docs/Makefile.in gimp-0.99.pre11/docs/Makefile.in --- gimp-0.99.10/docs/Makefile.in Sat Jun 7 00:26:39 1997 +++ gimp-0.99.pre11/docs/Makefile.in Wed Aug 13 23:45:19 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,15 +42,25 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBJPEG_INC = @LIBJPEG_INC@ LIBJPEG_LIB = @LIBJPEG_LIB@ +LIBPNG_INC = @LIBPNG_INC@ +LIBPNG_LIB = @LIBPNG_LIB@ LIBTIFF_INC = @LIBTIFF_INC@ LIBTIFF_LIB = @LIBTIFF_LIB@ LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -71,8 +81,8 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = -MAKEINFO = makeinfo TEXI2DVI = texi2dvi +TEXINFO_TEX = $(srcdir)/texinfo.tex INFO_DEPS = pdb.info DVIS = pdb.dvi TEXINFOS = pdb.texi @@ -86,7 +96,7 @@ default: all .SUFFIXES: -.SUFFIXES: .texi .texinfo .info .dvi .ps +.SUFFIXES: .dvi .info .ps .texi .texinfo $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile @@ -102,6 +112,7 @@ DVIPS = dvips .texi.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` @@ -110,49 +121,58 @@ MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< .texi: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo.dvi: - TEXINPUTS=$(srcdir):$$TEXINPUTS $(TEXI2DVI) $< + TEXINPUTS=$(srcdir):$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< .dvi.ps: $(DVIPS) $< -o $@ install-info-am: $(INFO_DEPS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(infodir) @for file in $(INFO_DEPS); do \ - for ifile in `cd $(srcdir) && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ - if test -f $(srcdir)/$$ifile; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile"; \ - $(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \ + d=$(srcdir); \ + for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + if test -f $$d/$$ifile; then \ + echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \ else : ; fi; \ done; \ done - $(POST_INSTALL) - @if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ + @$(POST_INSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ for file in $(INFO_DEPS); do \ echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\ - install-info --info-dir=$(infodir) $(infodir)/$$file; :;\ + install-info --info-dir=$(infodir) $(infodir)/$$file || :;\ done; \ else : ; fi uninstall-info: - if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ + $(PRE_UNINSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ ii=yes; \ else ii=; fi; \ for file in $(INFO_DEPS); do \ - (cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ test -z $ii || install-info --info-dir=$(infodir) --remove $$file; \ done + $(NORMAL_UNINSTALL) + for file in $(INFO_DEPS); do \ + (cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ + done dist-info: $(INFO_DEPS) for base in $(INFO_DEPS); do \ @@ -164,16 +184,16 @@ done; \ done -mostlyclean-info: +mostlyclean-aminfo: rm -f pdb.aux pdb.cp pdb.cps pdb.dvi pdb.fn pdb.fns pdb.ky pdb.log \ pdb.pg pdb.toc pdb.tp pdb.tps pdb.vr pdb.vrs pdb.op pdb.tr \ pdb.cv -clean-info: +clean-aminfo: -distclean-info: +distclean-aminfo: -maintainer-clean-info: +maintainer-clean-aminfo: for i in $(INFO_DEPS); do rm -f `eval echo $$i*`; done tags: TAGS TAGS: @@ -182,34 +202,39 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = docs + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu docs/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done - $(MAKE) distdir="$(distdir)" dist-info + $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info info: $(INFO_DEPS) dvi: $(DVIS) check: all $(MAKE) installcheck: install-exec: - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-info-am - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: uninstall-info -all: $(INFO_DEPS) Makefile +all: Makefile $(INFO_DEPS) install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: $(mkinstalldirs) $(infodir) @@ -222,28 +247,28 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean: mostlyclean-info mostlyclean-generic +mostlyclean: mostlyclean-aminfo mostlyclean-generic -clean: clean-info clean-generic mostlyclean +clean: clean-aminfo clean-generic mostlyclean -distclean: distclean-info distclean-generic clean +distclean: distclean-aminfo distclean-generic clean rm -f config.status rm -f libtool -maintainer-clean: maintainer-clean-info maintainer-clean-generic \ +maintainer-clean: maintainer-clean-aminfo maintainer-clean-generic \ distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -.PHONY: default install-info-am uninstall-info mostlyclean-info \ -distclean-info clean-info maintainer-clean-info tags distdir info dvi \ -installcheck install-exec install-data install uninstall all \ +.PHONY: default install-info-am uninstall-info mostlyclean-aminfo \ +distclean-aminfo clean-aminfo maintainer-clean-aminfo tags distdir info \ +dvi installcheck install-exec install-data install uninstall all \ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean diff -u --recursive --new-file gimp-0.99.10/gtk+/Makefile gimp-0.99.pre11/gtk+/Makefile --- gimp-0.99.10/gtk+/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/Makefile Thu Aug 14 01:26:07 1997 @@ -0,0 +1,338 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = . +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gtk+ +pkglibdir = $(libdir)/gtk+ +pkgincludedir = $(includedir)/gtk+ + +top_builddir = . + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBTOOL = $(top_builddir)/libtool +MAKEINFO = makeinfo +PACKAGE = gtk+ +RANLIB = ranlib +VERSION = 0.99.0 +x_cflags = -I/usr/X11R6/include +x_ldflags = -L/usr/X11R6/lib +x_libs = -lXext -lX11 + +SRC_SUBDIRS = glib gdk gtk +SUBDIRS = $(SRC_SUBDIRS) docs + +EXTRA_DIST = gtk+.prj makecopyright TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = gtk+.xconfig +DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ +Makefile.in NEWS TODO acconfig.h aclocal.m4 config.guess config.h.in \ +config.sub configure configure.in gtk+.xconfig.in install-sh ltconfig \ +ltmain.sh missing mkinstalldirs stamp-h.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +default: all + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.in + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +config.h: stamp-h +stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h \ + $(SHELL) ./config.status + @echo timestamp > stamp-h +$(srcdir)/config.h.in: $(srcdir)/stamp-h.in +$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/stamp-h.in + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + rm -f config.h + +maintainer-clean-hdr: +gtk+.xconfig: $(top_builddir)/config.status gtk+.xconfig.in + cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + + + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + for subdir in $(SUBDIRS); do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + rev=''; for subdir in $(SUBDIRS); do rev="$$rev $$subdir"; done; \ + for subdir in $$rev; do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir && $(MAKE) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) + here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + done; \ + test -z "$(ETAGS_ARGS)config.h.in$(SOURCES)$(HEADERS)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $(SOURCES) $(HEADERS) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + rm -rf $(distdir) + GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) \ + && $(MAKE) dvi \ + && $(MAKE) check \ + && $(MAKE) install \ + && $(MAKE) installcheck \ + && $(MAKE) dist + rm -rf $(distdir) + @echo "========================"; \ + echo "$(distdir).tar.gz is ready for distribution"; \ + echo "========================" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir) + rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir) + rm -rf $(distdir) +distdir: $(DISTFILES) + rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + for subdir in $(SUBDIRS); do \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + done +info: info-recursive +dvi: dvi-recursive +check: all-am + $(MAKE) check-recursive +installcheck: installcheck-recursive +all-recursive-am: config.h + $(MAKE) all-recursive + +all-am: Makefile config.h + +install-exec: install-exec-recursive + @$(NORMAL_INSTALL) + +install-data: install-data-recursive + @$(NORMAL_INSTALL) + +install: install-recursive + @: + +uninstall: uninstall-recursive + +all: all-recursive-am all-am + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: installdirs-recursive + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic + +clean-am: clean-hdr clean-tags clean-generic mostlyclean-am + +distclean-am: distclean-hdr distclean-tags distclean-generic clean-am + +maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ + maintainer-clean-generic distclean-am + +mostlyclean: mostlyclean-recursive mostlyclean-am + +clean: clean-recursive clean-am + +distclean: distclean-recursive distclean-am + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-recursive maintainer-clean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f config.status + +.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \ +maintainer-clean-hdr install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ +installcheck all-recursive-am all-am install-exec install-data install \ +uninstall all installdirs mostlyclean-generic distclean-generic \ +clean-generic maintainer-clean-generic clean mostlyclean distclean \ +maintainer-clean + + +.PHONY: files populate checkin release + +files: + @files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \ + echo $$p; \ + done + @for subdir in $(SUBDIRS); do \ + files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \ + for file in $$files; do \ + echo $$subdir/$$file; \ + done; \ + done + +populate: + @echo "populating project" + @files=`$(MAKE) files | grep -v "make\[[1-9]\]"`; prcs populate -d gtk+.prj $$files + +checkin: populate + @echo "checking in project" + @prcs checkin + +release: + $(MAKE) dist distdir=$(PACKAGE)`date +"%y%m%d"` + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/gtk+/Makefile.in gimp-0.99.pre11/gtk+/Makefile.in --- gimp-0.99.10/gtk+/Makefile.in Sat Jun 7 00:26:41 1997 +++ gimp-0.99.pre11/gtk+/Makefile.in Wed Aug 13 20:32:25 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,11 +42,18 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBTOOL = @LIBTOOL@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -59,8 +66,6 @@ EXTRA_DIST = gtk+.prj makecopyright TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -CONFIG_HEADER_IN = config.h.in -CONFIG_HEADER_FULL = config.h mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = gtk+.xconfig @@ -84,31 +89,31 @@ cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -$(srcdir)/aclocal.m4: configure.in +$(ACLOCAL_M4): configure.in cd $(srcdir) && $(ACLOCAL) -config.status: configure +config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck -$(srcdir)/configure: configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) -$(CONFIG_HEADER): stamp-h -stamp-h: $(CONFIG_HEADER_IN) $(top_builddir)/config.status +config.h: stamp-h +stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=$(CONFIG_HEADER_FULL) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h \ $(SHELL) ./config.status @echo timestamp > stamp-h -$(srcdir)/$(CONFIG_HEADER_IN): stamp-h.in +$(srcdir)/config.h.in: $(srcdir)/stamp-h.in $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h cd $(top_srcdir) && $(AUTOHEADER) - echo timestamp > $(srcdir)/stamp-h.in + @echo timestamp > $(srcdir)/stamp-h.in mostlyclean-hdr: clean-hdr: distclean-hdr: - rm -f $(CONFIG_HEADER) + rm -f config.h maintainer-clean-hdr: gtk+.xconfig: $(top_builddir)/config.status gtk+.xconfig.in @@ -125,17 +130,27 @@ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + for subdir in $(SUBDIRS); do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" + mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @for subdir in $(SUBDIRS); do \ + @set fnord $(MAKEFLAGS); amf=$$2; \ + rev=''; for subdir in $(SUBDIRS); do rev="$$rev $$subdir"; done; \ + for subdir in $$rev; do \ target=`echo $@ | sed s/-recursive//`; \ echo "Making $$target in $$subdir"; \ (cd $$subdir && $(MAKE) $$target) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: - list="$(SUBDIRS)"; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ (cd $$subdir && $(MAKE) tags); \ done @@ -147,11 +162,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ done; \ test -z "$(ETAGS_ARGS)config.h.in$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -163,6 +178,8 @@ maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. @@ -195,7 +212,11 @@ distdir: $(DISTFILES) rm -rf $(distdir) mkdir $(distdir) - -chmod 755 $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ @@ -206,8 +227,8 @@ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ - chmod 755 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) distdir=../$(distdir)/$$subdir distdir) \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ done info: info-recursive @@ -215,16 +236,16 @@ check: all-am $(MAKE) check-recursive installcheck: installcheck-recursive -all-recursive-am: $(CONFIG_HEADER) +all-recursive-am: config.h $(MAKE) all-recursive all-am: Makefile config.h install-exec: install-exec-recursive - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-data-recursive - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-recursive @: @@ -234,7 +255,7 @@ all: all-recursive-am all-am install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: installdirs-recursive @@ -246,7 +267,7 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: diff -u --recursive --new-file gimp-0.99.10/gtk+/config.h gimp-0.99.pre11/gtk+/config.h --- gimp-0.99.10/gtk+/config.h Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/config.h Wed Aug 13 21:28:58 1997 @@ -0,0 +1,30 @@ +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE void + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if the X Window System is missing or not being used. */ +/* #undef X_DISPLAY_MISSING */ + +/* Other stuff */ +#define HAVE_IPC_H 1 +#define HAVE_SHM_H 1 +/* #undef HAVE_XPM */ +#define HAVE_XSHM_H 1 +/* #undef HAVE_SYS_SELECT_H */ +/* #undef NO_FD_SET */ + +#define RESOURCE_BASE gdk_display->private3 + +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE void + +/* #undef PACKAGE */ +/* #undef VERSION */ diff -u --recursive --new-file gimp-0.99.10/gtk+/config.log gimp-0.99.pre11/gtk+/config.log --- gimp-0.99.10/gtk+/config.log Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/config.log Thu Aug 14 01:26:05 1997 @@ -0,0 +1,112 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +configure:569: checking for a BSD compatible install +configure:638: checking whether build environment is sane +configure:685: checking for working aclocal +configure:698: checking for working autoconf +configure:711: checking for working automake +configure:724: checking for working autoheader +configure:737: checking for working makeinfo +configure:750: checking whether make sets ${MAKE} +configure:789: checking host system type +configure:812: checking for gcc +configure:889: checking whether the C compiler (gcc ) works +configure:903: gcc -o conftest conftest.c 1>&5 +configure:923: checking whether the C compiler (gcc ) is a cross-compiler +configure:928: checking whether we are using GNU C +configure:952: checking whether gcc accepts -g +configure:982: checking for ranlib +configure:1069: checking host system type +configure:1125: checking for gcc +configure:1202: checking whether the C compiler (gcc -g -O2 -DNDEBUG ) works +configure:1216: gcc -o conftest -g -O2 -DNDEBUG conftest.c 1>&5 +configure:1236: checking whether the C compiler (gcc -g -O2 -DNDEBUG ) is a cross-compiler +configure:1241: checking whether we are using GNU C +configure:1265: checking whether gcc accepts -g +configure:1296: checking for gcc option to accept ANSI C +configure:1364: checking for a BSD compatible install +configure:1414: checking whether make sets ${MAKE} +configure:1459: checking how to run the C preprocessor +configure:1524: checking for X +configure:1838: checking for dnet_ntoa in -ldnet +configure:1857: gcc -o conftest -g -O2 -DNDEBUG -Wall conftest.c -ldnet 1>&5 +ld: cannot open -ldnet: No such file or directory +configure: failed program was: +#line 1846 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa(); + +int main() { +dnet_ntoa() +; return 0; } +configure:1879: checking for dnet_ntoa in -ldnet_stub +configure:1898: gcc -o conftest -g -O2 -DNDEBUG -Wall conftest.c -ldnet_stub 1>&5 +ld: cannot open -ldnet_stub: No such file or directory +configure: failed program was: +#line 1887 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa(); + +int main() { +dnet_ntoa() +; return 0; } +configure:1927: checking for gethostbyname +configure:1955: gcc -o conftest -g -O2 -DNDEBUG -Wall conftest.c 1>&5 +configure:2025: checking for connect +configure:2053: gcc -o conftest -g -O2 -DNDEBUG -Wall conftest.c 1>&5 +configure:2117: checking for remove +configure:2145: gcc -o conftest -g -O2 -DNDEBUG -Wall conftest.c 1>&5 +configure:2209: checking for shmat +configure:2237: gcc -o conftest -g -O2 -DNDEBUG -Wall conftest.c 1>&5 +configure:2310: checking for IceConnectionNumber in -lICE +configure:2329: gcc -o conftest -g -O2 -DNDEBUG -Wall -L/usr/X11R6/lib conftest.c -lICE 1>&5 +configure:2367: checking for XOpenDisplay in -lX11 +configure:2386: gcc -o conftest -I/usr/X11R6/include -L/usr/X11R6/lib conftest.c -lX11 1>&5 +configure:2411: checking for XShmAttach in -lXext +configure:2430: gcc -o conftest -I/usr/X11R6/include -L/usr/X11R6/lib conftest.c -lXext -lX11 1>&5 +configure:2467: checking for sys/ipc.h +configure:2504: checking for sys/shm.h +configure:2542: checking X11/extensions/XShm.h +configure:2562: checking resource base field in XDisplay +configure:2586: gcc -o conftest -g -O2 -DNDEBUG -Wall conftest.c 1>&5 +configure: In function `main': +configure:2582: structure has no member named `resource_base' +configure: failed program was: +#line 2570 "configure" +#include "confdefs.h" + +#define XLIB_ILLEGAL_ACCESS +#include + +int +main () +{ + Display *display; + + return 0; + + display->resource_base; +} +configure:2608: checking for ANSI C header files +configure:2714: checking for working const +configure:2768: gcc -c -g -O2 -DNDEBUG -Wall conftest.c 1>&5 +configure: In function `main': +configure:2742: warning: unused variable `s' +configure:2762: warning: unused variable `foo' +configure:2730: warning: unused variable `zero' +configure:2724: warning: unused variable `x' +configure:2741: warning: `t' might be used uninitialized in this function +configure:2759: warning: `b' might be used uninitialized in this function +configure:2791: checking return type of signal handlers +configure:2835: checking fd_set and sys/select +configure:2844: gcc -c -g -O2 -DNDEBUG -Wall conftest.c 1>&5 +configure: In function `main': +configure:2840: warning: unused variable `writeMask' +configure:2840: warning: unused variable `readMask' diff -u --recursive --new-file gimp-0.99.10/gtk+/config.status gimp-0.99.pre11/gtk+/config.status --- gimp-0.99.10/gtk+/config.status Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/config.status Thu Aug 14 01:26:06 1997 @@ -0,0 +1,281 @@ +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host firestorm.net.house.au: +# +# ./configure --cache-file=.././config.cache --srcdir=. +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" +for ac_option +do + case "$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running ${CONFIG_SHELL-/bin/sh} ./configure --cache-file=.././config.cache --srcdir=. --no-create --no-recursion" + exec ${CONFIG_SHELL-/bin/sh} ./configure --cache-file=.././config.cache --srcdir=. --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "./config.status generated by autoconf version 2.12" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "$ac_cs_usage"; exit 0 ;; + *) echo "$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=. +ac_given_INSTALL="/usr/bin/install -c" + +trap 'rm -fr Makefile gtk+.xconfig docs/Makefile gdk/Makefile gtk/Makefile config.h conftest*; exit 1' 1 2 15 + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; + s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF +/^[ ]*VPATH[ ]*=[^:]*$/d + +s%@CFLAGS@%-g -O2 -DNDEBUG -Wall%g +s%@CPPFLAGS@%%g +s%@CXXFLAGS@%%g +s%@DEFS@%-DHAVE_CONFIG_H%g +s%@LDFLAGS@%%g +s%@LIBS@%%g +s%@exec_prefix@%${prefix}%g +s%@prefix@%/usr/local%g +s%@program_transform_name@%s,x,x,%g +s%@bindir@%${exec_prefix}/bin%g +s%@sbindir@%${exec_prefix}/sbin%g +s%@libexecdir@%${exec_prefix}/libexec%g +s%@datadir@%${prefix}/share%g +s%@sysconfdir@%${prefix}/etc%g +s%@sharedstatedir@%${prefix}/com%g +s%@localstatedir@%${prefix}/var%g +s%@libdir@%${exec_prefix}/lib%g +s%@includedir@%${prefix}/include%g +s%@oldincludedir@%/usr/include%g +s%@infodir@%${prefix}/info%g +s%@mandir@%${prefix}/man%g +s%@subdirs@%glib%g +s%@INSTALL_PROGRAM@%${INSTALL}%g +s%@INSTALL_DATA@%${INSTALL} -m 644%g +s%@INSTALL_SCRIPT@%${INSTALL_PROGRAM}%g +s%@PACKAGE@%gtk+%g +s%@VERSION@%0.99.0%g +s%@ACLOCAL@%aclocal%g +s%@AUTOCONF@%autoconf%g +s%@AUTOMAKE@%automake%g +s%@AUTOHEADER@%autoheader%g +s%@MAKEINFO@%makeinfo%g +s%@SET_MAKE@%%g +s%@host@%i586-pc-linux-gnu%g +s%@host_alias@%i586-pc-linux-gnu%g +s%@host_cpu@%i586%g +s%@host_vendor@%pc%g +s%@host_os@%linux-gnu%g +s%@CC@%gcc%g +s%@RANLIB@%ranlib%g +s%@LIBTOOL@%$(top_builddir)/libtool%g +s%@CPP@%gcc -E%g +s%@X_CFLAGS@% -I/usr/X11R6/include%g +s%@X_PRE_LIBS@% -lSM -lICE%g +s%@X_LIBS@% -L/usr/X11R6/lib%g +s%@X_EXTRA_LIBS@%%g +s%@x_cflags@% -I/usr/X11R6/include%g +s%@x_ldflags@% -L/usr/X11R6/lib%g +s%@x_libs@%-lXext -lX11 %g + +CEOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi + +CONFIG_FILES=${CONFIG_FILES-"Makefile gtk+.xconfig docs/Makefile gdk/Makefile gtk/Makefile"} +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then + CONFIG_HEADERS="config.h" +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag <private3${ac_dD} +${ac_uA}RESOURCE_BASE${ac_uB}RESOURCE_BASE${ac_uC}gdk_display->private3${ac_uD} +${ac_eA}RESOURCE_BASE${ac_eB}RESOURCE_BASE${ac_eC}gdk_display->private3${ac_eD} +${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD} +${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD} +${ac_eA}STDC_HEADERS${ac_eB}STDC_HEADERS${ac_eC}1${ac_eD} +${ac_dA}RETSIGTYPE${ac_dB}RETSIGTYPE${ac_dC}void${ac_dD} +${ac_uA}RETSIGTYPE${ac_uB}RETSIGTYPE${ac_uC}void${ac_uD} +${ac_eA}RETSIGTYPE${ac_eB}RETSIGTYPE${ac_eC}void${ac_eD} +CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag < conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + + + +test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h + +exit 0 diff -u --recursive --new-file gimp-0.99.10/gtk+/docs/Makefile gimp-0.99.pre11/gtk+/docs/Makefile --- gimp-0.99.10/gtk+/docs/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/docs/Makefile Thu Aug 14 01:26:09 1997 @@ -0,0 +1,275 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gtk+ +pkglibdir = $(libdir)/gtk+ +pkgincludedir = $(includedir)/gtk+ + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBTOOL = $(top_builddir)/libtool +MAKEINFO = makeinfo +PACKAGE = gtk+ +RANLIB = ranlib +VERSION = 0.99.0 +x_cflags = -I/usr/X11R6/include +x_ldflags = -L/usr/X11R6/lib +x_libs = -lXext -lX11 + +info_TEXINFOS = gdk.texi gtk.texi + +EXTRA_DIST = texinfo.tex macros.texi +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +TEXI2DVI = texi2dvi +TEXINFO_TEX = $(srcdir)/texinfo.tex +INFO_DEPS = gdk.info gtk.info +DVIS = gdk.dvi gtk.dvi +TEXINFOS = gdk.texi gtk.texi +DIST_COMMON = Makefile.am Makefile.in texinfo.tex + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +default: all + +.SUFFIXES: +.SUFFIXES: .dvi .info .ps .texi .texinfo +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +gdk.info: gdk.texi +gdk.dvi: gdk.texi + + +gtk.info: gtk.texi +gtk.dvi: gtk.texi + + +DVIPS = dvips + +.texi.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texi.dvi: + TEXINPUTS=$(srcdir):$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< + +.texi: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo.dvi: + TEXINPUTS=$(srcdir):$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< +.dvi.ps: + $(DVIPS) $< -o $@ + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(infodir) + @for file in $(INFO_DEPS); do \ + d=$(srcdir); \ + for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + if test -f $$d/$$ifile; then \ + echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \ + else : ; fi; \ + done; \ + done + @$(POST_INSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + for file in $(INFO_DEPS); do \ + echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\ + install-info --info-dir=$(infodir) $(infodir)/$$file || :;\ + done; \ + else : ; fi + +uninstall-info: + $(PRE_UNINSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + ii=yes; \ + else ii=; fi; \ + for file in $(INFO_DEPS); do \ + test -z $ii || install-info --info-dir=$(infodir) --remove $$file; \ + done + $(NORMAL_UNINSTALL) + for file in $(INFO_DEPS); do \ + (cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ + done + +dist-info: $(INFO_DEPS) + for base in $(INFO_DEPS); do \ + d=$(srcdir); \ + for file in `cd $$d && eval echo $$base*`; do \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done; \ + done + +mostlyclean-aminfo: + rm -f gdk.aux gdk.cp gdk.cps gdk.dvi gdk.fn gdk.fns gdk.ky gdk.log \ + gdk.pg gdk.toc gdk.tp gdk.tps gdk.vr gdk.vrs gdk.op gdk.tr \ + gdk.cv gtk.aux gtk.cp gtk.cps gtk.dvi gtk.fn gtk.fns gtk.ky \ + gtk.log gtk.pg gtk.toc gtk.tp gtk.tps gtk.vr gtk.vrs gtk.op \ + gtk.tr gtk.cv + +clean-aminfo: + +distclean-aminfo: + +maintainer-clean-aminfo: + for i in $(INFO_DEPS); do rm -f `eval echo $$i*`; done +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = docs + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu docs/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info +info: $(INFO_DEPS) +dvi: $(DVIS) +check: all + $(MAKE) +installcheck: +install-exec: + @$(NORMAL_INSTALL) + +install-data: install-info-am + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: uninstall-info + +all: Makefile $(INFO_DEPS) + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + $(mkinstalldirs) $(infodir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-aminfo mostlyclean-generic + +clean: clean-aminfo clean-generic mostlyclean + +distclean: distclean-aminfo distclean-generic clean + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-aminfo maintainer-clean-generic \ + distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default install-info-am uninstall-info mostlyclean-aminfo \ +distclean-aminfo clean-aminfo maintainer-clean-aminfo tags distdir info \ +dvi installcheck install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +files: + @files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \ + echo $$p; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/gtk+/docs/Makefile.in gimp-0.99.pre11/gtk+/docs/Makefile.in --- gimp-0.99.10/gtk+/docs/Makefile.in Sat Jun 7 00:26:42 1997 +++ gimp-0.99.pre11/gtk+/docs/Makefile.in Wed Aug 13 20:33:16 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,11 +42,18 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBTOOL = @LIBTOOL@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -60,8 +67,8 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = -MAKEINFO = makeinfo TEXI2DVI = texi2dvi +TEXINFO_TEX = $(srcdir)/texinfo.tex INFO_DEPS = gdk.info gtk.info DVIS = gdk.dvi gtk.dvi TEXINFOS = gdk.texi gtk.texi @@ -75,7 +82,7 @@ default: all .SUFFIXES: -.SUFFIXES: .texi .texinfo .info .dvi .ps +.SUFFIXES: .dvi .info .ps .texi .texinfo $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile @@ -95,6 +102,7 @@ DVIPS = dvips .texi.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` @@ -103,49 +111,58 @@ MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< .texi: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo.dvi: - TEXINPUTS=$(srcdir):$$TEXINPUTS $(TEXI2DVI) $< + TEXINPUTS=$(srcdir):$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< .dvi.ps: $(DVIPS) $< -o $@ install-info-am: $(INFO_DEPS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(infodir) @for file in $(INFO_DEPS); do \ - for ifile in `cd $(srcdir) && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ - if test -f $(srcdir)/$$ifile; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile"; \ - $(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \ + d=$(srcdir); \ + for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + if test -f $$d/$$ifile; then \ + echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \ else : ; fi; \ done; \ done - $(POST_INSTALL) - @if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ + @$(POST_INSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ for file in $(INFO_DEPS); do \ echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\ - install-info --info-dir=$(infodir) $(infodir)/$$file; :;\ + install-info --info-dir=$(infodir) $(infodir)/$$file || :;\ done; \ else : ; fi uninstall-info: - if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ + $(PRE_UNINSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ ii=yes; \ else ii=; fi; \ for file in $(INFO_DEPS); do \ - (cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ test -z $ii || install-info --info-dir=$(infodir) --remove $$file; \ done + $(NORMAL_UNINSTALL) + for file in $(INFO_DEPS); do \ + (cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ + done dist-info: $(INFO_DEPS) for base in $(INFO_DEPS); do \ @@ -157,18 +174,18 @@ done; \ done -mostlyclean-info: +mostlyclean-aminfo: rm -f gdk.aux gdk.cp gdk.cps gdk.dvi gdk.fn gdk.fns gdk.ky gdk.log \ gdk.pg gdk.toc gdk.tp gdk.tps gdk.vr gdk.vrs gdk.op gdk.tr \ gdk.cv gtk.aux gtk.cp gtk.cps gtk.dvi gtk.fn gtk.fns gtk.ky \ gtk.log gtk.pg gtk.toc gtk.tp gtk.tps gtk.vr gtk.vrs gtk.op \ gtk.tr gtk.cv -clean-info: +clean-aminfo: -distclean-info: +distclean-aminfo: -maintainer-clean-info: +maintainer-clean-aminfo: for i in $(INFO_DEPS); do rm -f `eval echo $$i*`; done tags: TAGS TAGS: @@ -177,34 +194,39 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = docs + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu docs/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done - $(MAKE) distdir="$(distdir)" dist-info + $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info info: $(INFO_DEPS) dvi: $(DVIS) check: all $(MAKE) installcheck: install-exec: - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-info-am - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: uninstall-info -all: $(INFO_DEPS) Makefile +all: Makefile $(INFO_DEPS) install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: $(mkinstalldirs) $(infodir) @@ -217,28 +239,28 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean: mostlyclean-info mostlyclean-generic +mostlyclean: mostlyclean-aminfo mostlyclean-generic -clean: clean-info clean-generic mostlyclean +clean: clean-aminfo clean-generic mostlyclean -distclean: distclean-info distclean-generic clean +distclean: distclean-aminfo distclean-generic clean rm -f config.status rm -f libtool -maintainer-clean: maintainer-clean-info maintainer-clean-generic \ +maintainer-clean: maintainer-clean-aminfo maintainer-clean-generic \ distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -.PHONY: default install-info-am uninstall-info mostlyclean-info \ -distclean-info clean-info maintainer-clean-info tags distdir info dvi \ -installcheck install-exec install-data install uninstall all \ +.PHONY: default install-info-am uninstall-info mostlyclean-aminfo \ +distclean-aminfo clean-aminfo maintainer-clean-aminfo tags distdir info \ +dvi installcheck install-exec install-data install uninstall all \ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean diff -u --recursive --new-file gimp-0.99.10/gtk+/gdk/Makefile gimp-0.99.pre11/gtk+/gdk/Makefile --- gimp-0.99.10/gtk+/gdk/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/gdk/Makefile Thu Aug 14 01:26:09 1997 @@ -0,0 +1,367 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gtk+ +pkglibdir = $(libdir)/gtk+ +pkgincludedir = $(includedir)/gtk+ + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBTOOL = $(top_builddir)/libtool +MAKEINFO = makeinfo +PACKAGE = gtk+ +RANLIB = ranlib +VERSION = 0.99.0 +x_cflags = -I/usr/X11R6/include +x_ldflags = -L/usr/X11R6/lib +x_libs = -lXext -lX11 + +gdkincludedir = $(includedir)/gdk + +lib_LTLIBRARIES = libgdk.la + +libgdk_la_SOURCES = \ + gdk.c \ + gdkcolor.c \ + gdkcursor.c \ + gdkdraw.c \ + gdkfont.c \ + gdkgc.c \ + gdkglobals.c \ + gdkimage.c \ + gdkpixmap.c \ + gdkproperty.c \ + gdkrectangle.c \ + gdkselection.c \ + gdkvisual.c \ + gdkwindow.c \ + gdkxid.c + +gdkinclude_HEADERS = \ + gdk.h \ + gdkcursors.h \ + gdkkeysyms.h \ + gdkprivate.h \ + gdktypes.h \ + gdkx.h + +libgdk_la_LDFLAGS = -version-info 1:0:0 -rpath $(libdir) -L/usr/X11R6/lib -lXext -lX11 + +INCLUDES = -I/usr/X11R6/include -I$(top_srcdir) -I$(top_srcdir)/glib + +BUILT_SOURCES = gdkcursors.h gdkkeysyms.h + +EXTRA_DIST = makecursors makecursors.sed makekeysyms makekeysyms.sed +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.. +CPPFLAGS = +LDFLAGS = +LIBS = +X_CFLAGS = -I/usr/X11R6/include +X_LIBS = -L/usr/X11R6/lib +X_EXTRA_LIBS = +X_PRE_LIBS = -lSM -lICE +libgdk_la_LIBADD = +libgdk_la_OBJECTS = gdk.lo gdkcolor.lo gdkcursor.lo gdkdraw.lo \ +gdkfont.lo gdkgc.lo gdkglobals.lo gdkimage.lo gdkpixmap.lo \ +gdkproperty.lo gdkrectangle.lo gdkselection.lo gdkvisual.lo \ +gdkwindow.lo gdkxid.lo +CFLAGS = -g -O2 -DNDEBUG -Wall +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +HEADERS = $(gdkinclude_HEADERS) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +DEP_FILES = .deps/gdk.P .deps/gdkcolor.P .deps/gdkcursor.P \ +.deps/gdkdraw.P .deps/gdkfont.P .deps/gdkgc.P .deps/gdkglobals.P \ +.deps/gdkimage.P .deps/gdkpixmap.P .deps/gdkproperty.P \ +.deps/gdkrectangle.P .deps/gdkselection.P .deps/gdkvisual.P \ +.deps/gdkwindow.P .deps/gdkxid.P +SOURCES = $(libgdk_la_SOURCES) +OBJECTS = $(libgdk_la_OBJECTS) + +default: all + +.SUFFIXES: +.SUFFIXES: .c .lo .o +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu gdk/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-libLTLIBRARIES: + +clean-libLTLIBRARIES: + test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + +distclean-libLTLIBRARIES: + +maintainer-clean-libLTLIBRARIES: + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + $(NORMAL_UNINSTALL) + list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(libdir)/$$p; \ + done + +.c.o: + $(COMPILE) -c $< + +mostlyclean-compile: + rm -f *.o core + +clean-compile: + +distclean-compile: + rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + rm -f *.lo + +clean-libtool: + rm -rf .libs + +distclean-libtool: + +maintainer-clean-libtool: + +libgdk.la: $(libgdk_la_OBJECTS) $(libgdk_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libgdk_la_LDFLAGS) $(libgdk_la_OBJECTS) $(libgdk_la_LIBADD) $(LIBS) + +install-gdkincludeHEADERS: $(gdkinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(gdkincludedir) + @list='$(gdkinclude_HEADERS)'; for p in $$list; do \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(gdkincludedir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(gdkincludedir)/$$p; \ + done + +uninstall-gdkincludeHEADERS: + $(NORMAL_UNINSTALL) + list='$(gdkinclude_HEADERS)'; for p in $$list; do \ + rm -f $(gdkincludedir)/$$p; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) + here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = gdk + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu gdk/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp +info: +dvi: +check: all + $(MAKE) +installcheck: +install-exec: install-libLTLIBRARIES + @$(NORMAL_INSTALL) + +install-data: install-gdkincludeHEADERS + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: uninstall-libLTLIBRARIES uninstall-gdkincludeHEADERS + +all: Makefile $(LTLIBRARIES) $(HEADERS) + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + $(mkinstalldirs) $(libdir) $(gdkincludedir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-libLTLIBRARIES mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +clean: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \ + clean-depend clean-generic mostlyclean + +distclean: distclean-libLTLIBRARIES distclean-compile distclean-libtool \ + distclean-tags distclean-depend distclean-generic clean + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-libLTLIBRARIES \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \ +clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \ +uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \ +distclean-compile clean-compile maintainer-clean-compile \ +mostlyclean-libtool distclean-libtool clean-libtool \ +maintainer-clean-libtool uninstall-gdkincludeHEADERS \ +install-gdkincludeHEADERS tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir mostlyclean-depend \ +distclean-depend clean-depend maintainer-clean-depend info dvi \ +installcheck install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +gdkcursors.h: + $(srcdir)/makecursors @x_includes@/X11/cursorfont.h > $@ + +gdkkeysyms.h: + $(srcdir)/makekeysyms @x_includes@/X11/keysymdef.h > $@ + +.PHONY: files + +files: + @files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \ + echo $$p; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/gtk+/gdk/Makefile.in gimp-0.99.pre11/gtk+/gdk/Makefile.in --- gimp-0.99.10/gtk+/gdk/Makefile.in Sat Jun 7 00:26:42 1997 +++ gimp-0.99.pre11/gtk+/gdk/Makefile.in Wed Aug 13 20:32:36 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,11 +42,18 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBTOOL = @LIBTOOL@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -112,7 +119,7 @@ CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ HEADERS = $(gdkinclude_HEADERS) DIST_COMMON = Makefile.am Makefile.in @@ -122,13 +129,18 @@ TAR = tar GZIP = --best +DEP_FILES = .deps/gdk.P .deps/gdkcolor.P .deps/gdkcursor.P \ +.deps/gdkdraw.P .deps/gdkfont.P .deps/gdkgc.P .deps/gdkglobals.P \ +.deps/gdkimage.P .deps/gdkpixmap.P .deps/gdkproperty.P \ +.deps/gdkrectangle.P .deps/gdkselection.P .deps/gdkvisual.P \ +.deps/gdkwindow.P .deps/gdkxid.P SOURCES = $(libgdk_la_SOURCES) OBJECTS = $(libgdk_la_OBJECTS) default: all .SUFFIXES: -.SUFFIXES: .c .o .lo +.SUFFIXES: .c .lo .o $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu gdk/Makefile @@ -147,9 +159,9 @@ maintainer-clean-libLTLIBRARIES: install-libLTLIBRARIES: $(lib_LTLIBRARIES) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(libdir) - @list="$(lib_LTLIBRARIES)"; for p in $$list; do \ + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ echo "$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p"; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p; \ @@ -157,7 +169,8 @@ done uninstall-libLTLIBRARIES: - list="$(lib_LTLIBRARIES)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(lib_LTLIBRARIES)'; for p in $$list; do \ $(LIBTOOL) --mode=uninstall rm -f $(libdir)/$$p; \ done @@ -186,21 +199,21 @@ distclean-libtool: maintainer-clean-libtool: -$(libgdk_la_OBJECTS): ../config.h libgdk.la: $(libgdk_la_OBJECTS) $(libgdk_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libgdk_la_LDFLAGS) $(libgdk_la_OBJECTS) $(libgdk_la_LIBADD) $(LIBS) install-gdkincludeHEADERS: $(gdkinclude_HEADERS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(gdkincludedir) - @list="$(gdkinclude_HEADERS)"; for p in $$list; do \ + @list='$(gdkinclude_HEADERS)'; for p in $$list; do \ echo " $(INSTALL_DATA) $(srcdir)/$$p $(gdkincludedir)/$$p"; \ $(INSTALL_DATA) $(srcdir)/$$p $(gdkincludedir)/$$p; \ done uninstall-gdkincludeHEADERS: - list="$(gdkinclude_HEADERS)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(gdkinclude_HEADERS)'; for p in $$list; do \ rm -f $(gdkincludedir)/$$p; \ done @@ -212,11 +225,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - done; \ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -230,73 +240,64 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = gdk + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu gdk/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done -gdk.o gdk.lo: gdk.c ../config.h gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h gdkprivate.h -gdkcolor.o gdkcolor.lo: gdkcolor.c gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - gdkprivate.h -gdkcursor.o gdkcursor.lo: gdkcursor.c gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - gdkprivate.h -gdkdraw.o gdkdraw.lo: gdkdraw.c gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h gdkprivate.h -gdkfont.o gdkfont.lo: gdkfont.c gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h gdkprivate.h -gdkgc.o gdkgc.lo: gdkgc.c gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h gdkprivate.h -gdkglobals.o gdkglobals.lo: gdkglobals.c gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h gdkprivate.h \ - ../gdk/gdktypes.h -gdkimage.o gdkimage.lo: gdkimage.c ../config.h gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - gdkprivate.h -gdkpixmap.o gdkpixmap.lo: gdkpixmap.c ../config.h gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h gdkprivate.h -gdkproperty.o gdkproperty.lo: gdkproperty.c gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - gdkprivate.h -gdkrectangle.o gdkrectangle.lo: gdkrectangle.c gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h -gdkselection.o gdkselection.lo: gdkselection.c gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - gdkprivate.h -gdkvisual.o gdkvisual.lo: gdkvisual.c gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - gdkprivate.h -gdkwindow.o gdkwindow.lo: gdkwindow.c gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - gdkprivate.h -gdkxid.o gdkxid.lo: gdkxid.c gdkprivate.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp info: dvi: check: all $(MAKE) installcheck: install-exec: install-libLTLIBRARIES - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-gdkincludeHEADERS - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: uninstall-libLTLIBRARIES uninstall-gdkincludeHEADERS -all: $(LTLIBRARIES) $(BUILT_SOURCES) $(HEADERS) Makefile +all: Makefile $(LTLIBRARIES) $(HEADERS) install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: $(mkinstalldirs) $(libdir) $(gdkincludedir) @@ -309,28 +310,28 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) mostlyclean: mostlyclean-libLTLIBRARIES mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ mostlyclean-generic clean: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \ - clean-generic mostlyclean + clean-depend clean-generic mostlyclean distclean: distclean-libLTLIBRARIES distclean-compile distclean-libtool \ - distclean-tags distclean-generic clean + distclean-tags distclean-depend distclean-generic clean rm -f config.status rm -f libtool maintainer-clean: maintainer-clean-libLTLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-tags maintainer-clean-generic \ - distclean + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." @@ -341,9 +342,10 @@ mostlyclean-libtool distclean-libtool clean-libtool \ maintainer-clean-libtool uninstall-gdkincludeHEADERS \ install-gdkincludeHEADERS tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir info dvi installcheck \ -install-exec install-data install uninstall all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ +clean-tags maintainer-clean-tags distdir mostlyclean-depend \ +distclean-depend clean-depend maintainer-clean-depend info dvi \ +installcheck install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean diff -u --recursive --new-file gimp-0.99.10/gtk+/gdk/gdkwindow.c gimp-0.99.pre11/gtk+/gdk/gdkwindow.c --- gimp-0.99.10/gtk+/gdk/gdkwindow.c Fri Jun 6 20:20:28 1997 +++ gimp-0.99.pre11/gtk+/gdk/gdkwindow.c Wed Aug 13 20:31:51 1997 @@ -290,7 +290,8 @@ tmp = tmp->next; temp_private = (GdkWindowPrivate*) temp_window; - if (!temp_private->destroyed) + if (temp_private && !temp_private->destroyed) + /* Removes some nice coredumps... /David */ { temp_private->destroyed = 2; temp_private->ref_count += 1; diff -u --recursive --new-file gimp-0.99.10/gtk+/glib/Makefile.in gimp-0.99.pre11/gtk+/glib/Makefile.in --- gimp-0.99.10/gtk+/glib/Makefile.in Sat Jun 7 00:26:49 1997 +++ gimp-0.99.pre11/gtk+/glib/Makefile.in Wed Aug 13 20:32:28 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,11 +42,18 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBTOOL = @LIBTOOL@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -78,8 +85,6 @@ noinst_PROGRAMS = testglib testglib_LDADD = $(top_builddir)/libglib.la ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -CONFIG_HEADER_IN = glibconfig.h.in -CONFIG_HEADER_FULL = glibconfig.h mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = glibconfig.h CONFIG_CLEAN_FILES = @@ -102,7 +107,7 @@ CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ HEADERS = $(include_HEADERS) DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ @@ -115,13 +120,17 @@ TAR = tar GZIP = --best +DEP_FILES = .deps/garray.P .deps/gcache.P .deps/gerror.P .deps/ghash.P \ +.deps/glist.P .deps/gmem.P .deps/gprimes.P .deps/gslist.P \ +.deps/gstring.P .deps/gtimer.P .deps/gtree.P .deps/gutils.P \ +.deps/testglib.P SOURCES = $(libglib_la_SOURCES) testglib.c OBJECTS = $(libglib_la_OBJECTS) testglib.o default: all .SUFFIXES: -.SUFFIXES: .c .o .lo +.SUFFIXES: .c .lo .o $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile @@ -129,31 +138,31 @@ cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -$(srcdir)/aclocal.m4: configure.in +$(ACLOCAL_M4): configure.in cd $(srcdir) && $(ACLOCAL) -config.status: configure +config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck -$(srcdir)/configure: configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) -$(CONFIG_HEADER): stamp-h -stamp-h: $(CONFIG_HEADER_IN) $(top_builddir)/config.status +glibconfig.h: stamp-h +stamp-h: $(srcdir)/glibconfig.h.in $(top_builddir)/config.status cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=$(CONFIG_HEADER_FULL) \ + && CONFIG_FILES= CONFIG_HEADERS=glibconfig.h \ $(SHELL) ./config.status @echo timestamp > stamp-h -$(srcdir)/$(CONFIG_HEADER_IN): stamp-h.in +$(srcdir)/glibconfig.h.in: $(srcdir)/stamp-h.in $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h cd $(top_srcdir) && $(AUTOHEADER) - echo timestamp > $(srcdir)/stamp-h.in + @echo timestamp > $(srcdir)/stamp-h.in mostlyclean-hdr: clean-hdr: distclean-hdr: - rm -f $(CONFIG_HEADER) + rm -f glibconfig.h maintainer-clean-hdr: @@ -167,9 +176,9 @@ maintainer-clean-libLTLIBRARIES: install-libLTLIBRARIES: $(lib_LTLIBRARIES) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(libdir) - @list="$(lib_LTLIBRARIES)"; for p in $$list; do \ + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ echo "$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p"; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p; \ @@ -177,7 +186,8 @@ done uninstall-libLTLIBRARIES: - list="$(lib_LTLIBRARIES)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(lib_LTLIBRARIES)'; for p in $$list; do \ $(LIBTOOL) --mode=uninstall rm -f $(libdir)/$$p; \ done @@ -206,7 +216,6 @@ distclean-libtool: maintainer-clean-libtool: -$(libglib_la_OBJECTS): glibconfig.h libglib.la: $(libglib_la_OBJECTS) $(libglib_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libglib_la_LDFLAGS) $(libglib_la_OBJECTS) $(libglib_la_LIBADD) $(LIBS) @@ -219,21 +228,22 @@ distclean-noinstPROGRAMS: maintainer-clean-noinstPROGRAMS: -$(testglib_OBJECTS): glibconfig.h testglib: $(testglib_OBJECTS) $(testglib_DEPENDENCIES) + @rm -f testglib $(LINK) $(testglib_LDFLAGS) $(testglib_OBJECTS) $(testglib_LDADD) $(LIBS) install-includeHEADERS: $(include_HEADERS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(includedir) - @list="$(include_HEADERS)"; for p in $$list; do \ + @list='$(include_HEADERS)'; for p in $$list; do \ echo " $(INSTALL_DATA) $(srcdir)/$$p $(includedir)/$$p"; \ $(INSTALL_DATA) $(srcdir)/$$p $(includedir)/$$p; \ done uninstall-includeHEADERS: - list="$(include_HEADERS)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(include_HEADERS)'; for p in $$list; do \ rm -f $(includedir)/$$p; \ done @@ -245,11 +255,8 @@ TAGS: $(HEADERS) $(SOURCES) glibconfig.h.in $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - done; \ test -z "$(ETAGS_ARGS)glibconfig.h.in$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags glibconfig.h.in $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags glibconfig.h.in $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -261,6 +268,8 @@ maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. @@ -293,47 +302,63 @@ distdir: $(DISTFILES) rm -rf $(distdir) mkdir $(distdir) - -chmod 755 $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done -garray.o garray.lo: garray.c glib.h glibconfig.h -gcache.o gcache.lo: gcache.c glib.h glibconfig.h -gerror.o gerror.lo: gerror.c glib.h glibconfig.h -ghash.o ghash.lo: ghash.c glib.h glibconfig.h -glist.o glist.lo: glist.c glib.h glibconfig.h -gmem.o gmem.lo: gmem.c glib.h glibconfig.h -gprimes.o gprimes.lo: gprimes.c glib.h glibconfig.h -gslist.o gslist.lo: gslist.c glib.h glibconfig.h -gstring.o gstring.lo: gstring.c glib.h glibconfig.h -gtimer.o gtimer.lo: gtimer.c glib.h glibconfig.h -gtree.o gtree.lo: gtree.c glib.h glibconfig.h -gutils.o gutils.lo: gutils.c glib.h glibconfig.h -testglib.o testglib.lo: testglib.c glib.h glibconfig.h +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp info: dvi: check: all $(MAKE) installcheck: install-exec: install-libLTLIBRARIES - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-includeHEADERS - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: uninstall-libLTLIBRARIES uninstall-includeHEADERS -all: $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) Makefile glibconfig.h +all: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) glibconfig.h install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: $(mkinstalldirs) $(libdir) $(includedir) @@ -346,7 +371,7 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @@ -355,22 +380,23 @@ mostlyclean: mostlyclean-hdr mostlyclean-libLTLIBRARIES \ mostlyclean-compile mostlyclean-libtool \ mostlyclean-noinstPROGRAMS mostlyclean-tags \ - mostlyclean-generic + mostlyclean-depend mostlyclean-generic clean: clean-hdr clean-libLTLIBRARIES clean-compile clean-libtool \ - clean-noinstPROGRAMS clean-tags clean-generic \ - mostlyclean + clean-noinstPROGRAMS clean-tags clean-depend \ + clean-generic mostlyclean distclean: distclean-hdr distclean-libLTLIBRARIES distclean-compile \ distclean-libtool distclean-noinstPROGRAMS \ - distclean-tags distclean-generic clean + distclean-tags distclean-depend distclean-generic clean rm -f config.status rm -f libtool maintainer-clean: maintainer-clean-hdr maintainer-clean-libLTLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-noinstPROGRAMS maintainer-clean-tags \ - maintainer-clean-generic distclean + maintainer-clean-depend maintainer-clean-generic \ + distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f config.status @@ -385,10 +411,12 @@ mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \ uninstall-includeHEADERS install-includeHEADERS tags mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ -installcheck install-exec install-data install uninstall all \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck install-exec install-data \ +install uninstall all installdirs mostlyclean-generic distclean-generic \ +clean-generic maintainer-clean-generic clean mostlyclean distclean \ +maintainer-clean .PHONY: files release diff -u --recursive --new-file gimp-0.99.10/gtk+/gtk/Makefile gimp-0.99.pre11/gtk+/gtk/Makefile --- gimp-0.99.10/gtk+/gtk/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/gtk/Makefile Thu Aug 14 01:26:10 1997 @@ -0,0 +1,563 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gtk+ +pkglibdir = $(libdir)/gtk+ +pkgincludedir = $(includedir)/gtk+ + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBTOOL = $(top_builddir)/libtool +MAKEINFO = makeinfo +PACKAGE = gtk+ +RANLIB = ranlib +VERSION = 0.99.0 +x_cflags = -I/usr/X11R6/include +x_ldflags = -L/usr/X11R6/lib +x_libs = -lXext -lX11 + +gtkincludedir = $(includedir)/gtk + +lib_LTLIBRARIES = libgtk.la + +libgtk_la_SOURCES = \ + gtkaccelerator.c \ + gtkadjustment.c \ + gtkaspectframe.c \ + gtkalignment.c \ + gtkarrow.c \ + gtkbin.c \ + gtkbox.c \ + gtkbutton.c \ + gtkcheckbutton.c \ + gtkcheckmenuitem.c \ + gtkcolorsel.c \ + gtkcontainer.c \ + gtkcurve.c \ + gtkdata.c \ + gtkdialog.c \ + gtkdrawingarea.c \ + gtkentry.c \ + gtkfilesel.c \ + gtkframe.c \ + gtkgc.c \ + gtkhbox.c \ + gtkhruler.c \ + gtkhscale.c \ + gtkhscrollbar.c \ + gtkhseparator.c \ + gtkimage.c \ + gtkitem.c \ + gtklabel.c \ + gtklist.c \ + gtklistitem.c \ + gtkmain.c \ + gtkmenu.c \ + gtkmenubar.c \ + gtkmenufactory.c \ + gtkmenuitem.c \ + gtkmenushell.c \ + gtkmisc.c \ + gtknotebook.c \ + gtkobject.c \ + gtkoptionmenu.c \ + gtkpixmap.c \ + gtkpreview.c \ + gtkprogressbar.c \ + gtkradiobutton.c \ + gtkradiomenuitem.c \ + gtkrange.c \ + gtkrc.c \ + gtkruler.c \ + gtkscale.c \ + gtkscrollbar.c \ + gtkscrolledwindow.c \ + gtkseparator.c \ + gtksignal.c \ + gtkstyle.c \ + gtktable.c \ + gtktext.c \ + gtktogglebutton.c \ + gtktooltips.c \ + gtktree.c \ + gtktreeitem.c \ + gtktypeutils.c \ + gtkvbox.c \ + gtkviewport.c \ + gtkvruler.c \ + gtkvscale.c \ + gtkvscrollbar.c \ + gtkvseparator.c \ + gtkwidget.c \ + gtkwindow.c \ + fnmatch.c \ + fnmatch.h + +gtkinclude_HEADERS = \ + gtk.h \ + gtkaccelerator.h \ + gtkadjustment.h \ + gtkaspectframe.h \ + gtkalignment.h \ + gtkarrow.h \ + gtkbin.h \ + gtkbox.h \ + gtkbutton.h \ + gtkcheckbutton.h \ + gtkcheckmenuitem.h \ + gtkcolorsel.h \ + gtkcontainer.h \ + gtkcurve.h \ + gtkdata.h \ + gtkdialog.h \ + gtkdrawingarea.h \ + gtkentry.h \ + gtkenums.h \ + gtkfilesel.h \ + gtkframe.h \ + gtkgc.h \ + gtkhbox.h \ + gtkhruler.h \ + gtkhscale.h \ + gtkhscrollbar.h \ + gtkhseparator.h \ + gtkimage.h \ + gtkitem.h \ + gtklabel.h \ + gtklist.h \ + gtklistitem.h \ + gtkmain.h \ + gtkmenu.h \ + gtkmenubar.h \ + gtkmenufactory.h \ + gtkmenuitem.h \ + gtkmenushell.h \ + gtkmisc.h \ + gtknotebook.h \ + gtkobject.h \ + gtkoptionmenu.h \ + gtkpixmap.h \ + gtkpreview.h \ + gtkprogressbar.h \ + gtkradiobutton.h \ + gtkradiomenuitem.h \ + gtkrange.h \ + gtkrc.h \ + gtkruler.h \ + gtkscale.h \ + gtkscrollbar.h \ + gtkscrolledwindow.h \ + gtkseparator.h \ + gtksignal.h \ + gtkstyle.h \ + gtktable.h \ + gtktext.h \ + gtktogglebutton.h \ + gtktooltips.h \ + gtktree.h \ + gtktreeitem.h \ + gtktypeutils.h \ + gtkvbox.h \ + gtkviewport.h \ + gtkvruler.h \ + gtkvscale.h \ + gtkvscrollbar.h \ + gtkvseparator.h \ + gtkwidget.h \ + gtkwindow.h + +libgtk_la_LDFLAGS = -version-info 1:0:0 -rpath $(libdir) + +EXTRA_DIST = line-arrow.xbm line-wrap.xbm testgtkrc marble.xpm test.xpm warning.xpm +INCLUDES = -I/usr/X11R6/include -I$(top_srcdir) -I$(top_srcdir)/glib + +noinst_PROGRAMS = testgtk simple +testgtk_LDADD = \ + libgtk.la \ + $(top_builddir)/gdk/libgdk.la \ + -L/usr/X11R6/lib \ + -lXext -lX11 \ + $(top_builddir)/glib/libglib.la \ + -lm + +simple_LDADD = \ + libgtk.la \ + $(top_builddir)/gdk/libgdk.la \ + -L/usr/X11R6/lib \ + -lXext -lX11 \ + $(top_builddir)/glib/libglib.la \ + -lm + +DEPS = \ + $(top_builddir)/gtk/libgtk.la \ + $(top_builddir)/gdk/libgdk.la \ + $(top_builddir)/glib/libglib.la + +testgtk_DEPENDENCIES = $(DEPS) +simple_DEPENDENCIES = $(DEPS) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.. +CPPFLAGS = +LDFLAGS = +LIBS = +X_CFLAGS = -I/usr/X11R6/include +X_LIBS = -L/usr/X11R6/lib +X_EXTRA_LIBS = +X_PRE_LIBS = -lSM -lICE +libgtk_la_LIBADD = +libgtk_la_OBJECTS = gtkaccelerator.lo gtkadjustment.lo \ +gtkaspectframe.lo gtkalignment.lo gtkarrow.lo gtkbin.lo gtkbox.lo \ +gtkbutton.lo gtkcheckbutton.lo gtkcheckmenuitem.lo gtkcolorsel.lo \ +gtkcontainer.lo gtkcurve.lo gtkdata.lo gtkdialog.lo gtkdrawingarea.lo \ +gtkentry.lo gtkfilesel.lo gtkframe.lo gtkgc.lo gtkhbox.lo gtkhruler.lo \ +gtkhscale.lo gtkhscrollbar.lo gtkhseparator.lo gtkimage.lo gtkitem.lo \ +gtklabel.lo gtklist.lo gtklistitem.lo gtkmain.lo gtkmenu.lo \ +gtkmenubar.lo gtkmenufactory.lo gtkmenuitem.lo gtkmenushell.lo \ +gtkmisc.lo gtknotebook.lo gtkobject.lo gtkoptionmenu.lo gtkpixmap.lo \ +gtkpreview.lo gtkprogressbar.lo gtkradiobutton.lo gtkradiomenuitem.lo \ +gtkrange.lo gtkrc.lo gtkruler.lo gtkscale.lo gtkscrollbar.lo \ +gtkscrolledwindow.lo gtkseparator.lo gtksignal.lo gtkstyle.lo \ +gtktable.lo gtktext.lo gtktogglebutton.lo gtktooltips.lo gtktree.lo \ +gtktreeitem.lo gtktypeutils.lo gtkvbox.lo gtkviewport.lo gtkvruler.lo \ +gtkvscale.lo gtkvscrollbar.lo gtkvseparator.lo gtkwidget.lo \ +gtkwindow.lo fnmatch.lo +PROGRAMS = $(noinst_PROGRAMS) + +testgtk_SOURCES = testgtk.c +testgtk_OBJECTS = testgtk.o +testgtk_LDFLAGS = +simple_SOURCES = simple.c +simple_OBJECTS = simple.o +simple_LDFLAGS = +CFLAGS = -g -O2 -DNDEBUG -Wall +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +HEADERS = $(gtkinclude_HEADERS) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +DEP_FILES = .deps/fnmatch.P .deps/gtkaccelerator.P \ +.deps/gtkadjustment.P .deps/gtkalignment.P .deps/gtkarrow.P \ +.deps/gtkaspectframe.P .deps/gtkbin.P .deps/gtkbox.P .deps/gtkbutton.P \ +.deps/gtkcheckbutton.P .deps/gtkcheckmenuitem.P .deps/gtkcolorsel.P \ +.deps/gtkcontainer.P .deps/gtkcurve.P .deps/gtkdata.P .deps/gtkdialog.P \ +.deps/gtkdrawingarea.P .deps/gtkentry.P .deps/gtkfilesel.P \ +.deps/gtkframe.P .deps/gtkgc.P .deps/gtkhbox.P .deps/gtkhruler.P \ +.deps/gtkhscale.P .deps/gtkhscrollbar.P .deps/gtkhseparator.P \ +.deps/gtkimage.P .deps/gtkitem.P .deps/gtklabel.P .deps/gtklist.P \ +.deps/gtklistitem.P .deps/gtkmain.P .deps/gtkmenu.P .deps/gtkmenubar.P \ +.deps/gtkmenufactory.P .deps/gtkmenuitem.P .deps/gtkmenushell.P \ +.deps/gtkmisc.P .deps/gtknotebook.P .deps/gtkobject.P \ +.deps/gtkoptionmenu.P .deps/gtkpixmap.P .deps/gtkpreview.P \ +.deps/gtkprogressbar.P .deps/gtkradiobutton.P .deps/gtkradiomenuitem.P \ +.deps/gtkrange.P .deps/gtkrc.P .deps/gtkruler.P .deps/gtkscale.P \ +.deps/gtkscrollbar.P .deps/gtkscrolledwindow.P .deps/gtkseparator.P \ +.deps/gtksignal.P .deps/gtkstyle.P .deps/gtktable.P .deps/gtktext.P \ +.deps/gtktogglebutton.P .deps/gtktooltips.P .deps/gtktree.P \ +.deps/gtktreeitem.P .deps/gtktypeutils.P .deps/gtkvbox.P \ +.deps/gtkviewport.P .deps/gtkvruler.P .deps/gtkvscale.P \ +.deps/gtkvscrollbar.P .deps/gtkvseparator.P .deps/gtkwidget.P \ +.deps/gtkwindow.P .deps/simple.P .deps/testgtk.P +SOURCES = $(libgtk_la_SOURCES) testgtk.c simple.c +OBJECTS = $(libgtk_la_OBJECTS) testgtk.o simple.o + +default: all + +.SUFFIXES: +.SUFFIXES: .c .lo .o +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu gtk/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-libLTLIBRARIES: + +clean-libLTLIBRARIES: + test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + +distclean-libLTLIBRARIES: + +maintainer-clean-libLTLIBRARIES: + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + $(NORMAL_UNINSTALL) + list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(libdir)/$$p; \ + done + +.c.o: + $(COMPILE) -c $< + +mostlyclean-compile: + rm -f *.o core + +clean-compile: + +distclean-compile: + rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + rm -f *.lo + +clean-libtool: + rm -rf .libs + +distclean-libtool: + +maintainer-clean-libtool: + +libgtk.la: $(libgtk_la_OBJECTS) $(libgtk_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libgtk_la_LDFLAGS) $(libgtk_la_OBJECTS) $(libgtk_la_LIBADD) $(LIBS) + +mostlyclean-noinstPROGRAMS: + +clean-noinstPROGRAMS: + test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + +distclean-noinstPROGRAMS: + +maintainer-clean-noinstPROGRAMS: + +testgtk: $(testgtk_OBJECTS) $(testgtk_DEPENDENCIES) + @rm -f testgtk + $(LINK) $(testgtk_LDFLAGS) $(testgtk_OBJECTS) $(testgtk_LDADD) $(LIBS) + +simple: $(simple_OBJECTS) $(simple_DEPENDENCIES) + @rm -f simple + $(LINK) $(simple_LDFLAGS) $(simple_OBJECTS) $(simple_LDADD) $(LIBS) + +install-gtkincludeHEADERS: $(gtkinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(gtkincludedir) + @list='$(gtkinclude_HEADERS)'; for p in $$list; do \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(gtkincludedir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(gtkincludedir)/$$p; \ + done + +uninstall-gtkincludeHEADERS: + $(NORMAL_UNINSTALL) + list='$(gtkinclude_HEADERS)'; for p in $$list; do \ + rm -f $(gtkincludedir)/$$p; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) + here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = gtk + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu gtk/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp +info: +dvi: +check: all + $(MAKE) +installcheck: +install-exec: install-libLTLIBRARIES + @$(NORMAL_INSTALL) + +install-data: install-gtkincludeHEADERS + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: uninstall-libLTLIBRARIES uninstall-gtkincludeHEADERS + +all: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + $(mkinstalldirs) $(libdir) $(gtkincludedir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-libLTLIBRARIES mostlyclean-compile \ + mostlyclean-libtool mostlyclean-noinstPROGRAMS \ + mostlyclean-tags mostlyclean-depend mostlyclean-generic + +clean: clean-libLTLIBRARIES clean-compile clean-libtool \ + clean-noinstPROGRAMS clean-tags clean-depend \ + clean-generic mostlyclean + +distclean: distclean-libLTLIBRARIES distclean-compile distclean-libtool \ + distclean-noinstPROGRAMS distclean-tags \ + distclean-depend distclean-generic clean + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-libLTLIBRARIES \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-noinstPROGRAMS maintainer-clean-tags \ + maintainer-clean-depend maintainer-clean-generic \ + distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \ +clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \ +uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \ +distclean-compile clean-compile maintainer-clean-compile \ +mostlyclean-libtool distclean-libtool clean-libtool \ +maintainer-clean-libtool mostlyclean-noinstPROGRAMS \ +distclean-noinstPROGRAMS clean-noinstPROGRAMS \ +maintainer-clean-noinstPROGRAMS uninstall-gtkincludeHEADERS \ +install-gtkincludeHEADERS tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir mostlyclean-depend \ +distclean-depend clean-depend maintainer-clean-depend info dvi \ +installcheck install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +.PHONY: files + +files: + @files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \ + echo $$p; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/gtk+/gtk/Makefile.in gimp-0.99.pre11/gtk+/gtk/Makefile.in --- gimp-0.99.10/gtk+/gtk/Makefile.in Sat Jun 7 00:26:45 1997 +++ gimp-0.99.pre11/gtk+/gtk/Makefile.in Wed Aug 13 20:32:48 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,11 +42,18 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBTOOL = @LIBTOOL@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -275,7 +282,7 @@ CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ HEADERS = $(gtkinclude_HEADERS) DIST_COMMON = Makefile.am Makefile.in @@ -285,13 +292,35 @@ TAR = tar GZIP = --best +DEP_FILES = .deps/fnmatch.P .deps/gtkaccelerator.P \ +.deps/gtkadjustment.P .deps/gtkalignment.P .deps/gtkarrow.P \ +.deps/gtkaspectframe.P .deps/gtkbin.P .deps/gtkbox.P .deps/gtkbutton.P \ +.deps/gtkcheckbutton.P .deps/gtkcheckmenuitem.P .deps/gtkcolorsel.P \ +.deps/gtkcontainer.P .deps/gtkcurve.P .deps/gtkdata.P .deps/gtkdialog.P \ +.deps/gtkdrawingarea.P .deps/gtkentry.P .deps/gtkfilesel.P \ +.deps/gtkframe.P .deps/gtkgc.P .deps/gtkhbox.P .deps/gtkhruler.P \ +.deps/gtkhscale.P .deps/gtkhscrollbar.P .deps/gtkhseparator.P \ +.deps/gtkimage.P .deps/gtkitem.P .deps/gtklabel.P .deps/gtklist.P \ +.deps/gtklistitem.P .deps/gtkmain.P .deps/gtkmenu.P .deps/gtkmenubar.P \ +.deps/gtkmenufactory.P .deps/gtkmenuitem.P .deps/gtkmenushell.P \ +.deps/gtkmisc.P .deps/gtknotebook.P .deps/gtkobject.P \ +.deps/gtkoptionmenu.P .deps/gtkpixmap.P .deps/gtkpreview.P \ +.deps/gtkprogressbar.P .deps/gtkradiobutton.P .deps/gtkradiomenuitem.P \ +.deps/gtkrange.P .deps/gtkrc.P .deps/gtkruler.P .deps/gtkscale.P \ +.deps/gtkscrollbar.P .deps/gtkscrolledwindow.P .deps/gtkseparator.P \ +.deps/gtksignal.P .deps/gtkstyle.P .deps/gtktable.P .deps/gtktext.P \ +.deps/gtktogglebutton.P .deps/gtktooltips.P .deps/gtktree.P \ +.deps/gtktreeitem.P .deps/gtktypeutils.P .deps/gtkvbox.P \ +.deps/gtkviewport.P .deps/gtkvruler.P .deps/gtkvscale.P \ +.deps/gtkvscrollbar.P .deps/gtkvseparator.P .deps/gtkwidget.P \ +.deps/gtkwindow.P .deps/simple.P .deps/testgtk.P SOURCES = $(libgtk_la_SOURCES) testgtk.c simple.c OBJECTS = $(libgtk_la_OBJECTS) testgtk.o simple.o default: all .SUFFIXES: -.SUFFIXES: .c .o .lo +.SUFFIXES: .c .lo .o $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu gtk/Makefile @@ -310,9 +339,9 @@ maintainer-clean-libLTLIBRARIES: install-libLTLIBRARIES: $(lib_LTLIBRARIES) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(libdir) - @list="$(lib_LTLIBRARIES)"; for p in $$list; do \ + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ echo "$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p"; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p; \ @@ -320,7 +349,8 @@ done uninstall-libLTLIBRARIES: - list="$(lib_LTLIBRARIES)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(lib_LTLIBRARIES)'; for p in $$list; do \ $(LIBTOOL) --mode=uninstall rm -f $(libdir)/$$p; \ done @@ -349,7 +379,6 @@ distclean-libtool: maintainer-clean-libtool: -$(libgtk_la_OBJECTS): ../config.h libgtk.la: $(libgtk_la_OBJECTS) $(libgtk_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libgtk_la_LDFLAGS) $(libgtk_la_OBJECTS) $(libgtk_la_LIBADD) $(LIBS) @@ -362,25 +391,26 @@ distclean-noinstPROGRAMS: maintainer-clean-noinstPROGRAMS: -$(testgtk_OBJECTS): ../config.h testgtk: $(testgtk_OBJECTS) $(testgtk_DEPENDENCIES) + @rm -f testgtk $(LINK) $(testgtk_LDFLAGS) $(testgtk_OBJECTS) $(testgtk_LDADD) $(LIBS) -$(simple_OBJECTS): ../config.h simple: $(simple_OBJECTS) $(simple_DEPENDENCIES) + @rm -f simple $(LINK) $(simple_LDFLAGS) $(simple_OBJECTS) $(simple_LDADD) $(LIBS) install-gtkincludeHEADERS: $(gtkinclude_HEADERS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(gtkincludedir) - @list="$(gtkinclude_HEADERS)"; for p in $$list; do \ + @list='$(gtkinclude_HEADERS)'; for p in $$list; do \ echo " $(INSTALL_DATA) $(srcdir)/$$p $(gtkincludedir)/$$p"; \ $(INSTALL_DATA) $(srcdir)/$$p $(gtkincludedir)/$$p; \ done uninstall-gtkincludeHEADERS: - list="$(gtkinclude_HEADERS)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(gtkinclude_HEADERS)'; for p in $$list; do \ rm -f $(gtkincludedir)/$$p; \ done @@ -392,11 +422,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - done; \ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -410,506 +437,64 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = gtk + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu gtk/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done -fnmatch.o fnmatch.lo: fnmatch.c ../config.h fnmatch.h -gtkaccelerator.o gtkaccelerator.lo: gtkaccelerator.c gtkaccelerator.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h gtksignal.h gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkstyle.h -gtkadjustment.o gtkadjustment.lo: gtkadjustment.c gtkadjustment.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkdata.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - gtksignal.h -gtkalignment.o gtkalignment.lo: gtkalignment.c gtkalignment.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkbin.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkarrow.o gtkarrow.lo: gtkarrow.c gtkarrow.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkmisc.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkaspectframe.o gtkaspectframe.lo: gtkaspectframe.c gtkaspectframe.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkbin.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h ../gtk/gtkframe.h -gtkbin.o gtkbin.lo: gtkbin.c gtkbin.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkbox.o gtkbox.lo: gtkbox.c gtkbox.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkbutton.o gtkbutton.lo: gtkbutton.c gtkbutton.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkcontainer.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtklabel.h \ - ../gtk/gtkmisc.h gtkmain.h gtksignal.h -gtkcheckbutton.o gtkcheckbutton.lo: gtkcheckbutton.c gtkcheckbutton.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtktogglebutton.h ../gtk/gtkbutton.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtklabel.h \ - ../gtk/gtkmisc.h -gtkcheckmenuitem.o gtkcheckmenuitem.lo: gtkcheckmenuitem.c \ - gtkcheckmenuitem.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkmenuitem.h ../gtk/gtkitem.h ../gtk/gtkbin.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtklabel.h \ - ../gtk/gtkmisc.h gtksignal.h -gtkcolorsel.o gtkcolorsel.lo: gtkcolorsel.c gtkcolorsel.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h gtkwindow.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkbin.h ../gtk/gtkcontainer.h ../gtk/gtkwidget.h \ - ../gtk/gtkstyle.h gtkvbox.h ../gtk/gtkbox.h gtkframe.h \ - gtkpreview.h gtkbutton.h gtkentry.h gtkhbox.h gtklabel.h \ - ../gtk/gtkmisc.h gtkmain.h gtksignal.h gtkmisc.h gtkrange.h \ - ../gtk/gtkadjustment.h ../gtk/gtkdata.h gtkscale.h \ - ../gtk/gtkrange.h gtkhscale.h ../gtk/gtkscale.h gtktable.h -gtkcontainer.o gtkcontainer.lo: gtkcontainer.c gtkcontainer.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtksignal.h -gtkcurve.o gtkcurve.lo: gtkcurve.c gtkcurve.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkvbox.h ../gtk/gtkbox.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkdrawingarea.h \ - gtkmain.h gtkradiobutton.h ../gtk/gtkcheckbutton.h \ - ../gtk/gtktogglebutton.h ../gtk/gtkbutton.h gtksignal.h \ - gtktable.h -gtkdata.o gtkdata.lo: gtkdata.c gtkdata.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - gtksignal.h -gtkdialog.o gtkdialog.lo: gtkdialog.c gtkbutton.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkcontainer.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkdialog.h \ - ../gtk/gtkwindow.h ../gtk/gtkbin.h gtkhbox.h ../gtk/gtkbox.h \ - gtkhseparator.h ../gtk/gtkseparator.h gtkvbox.h -gtkdrawingarea.o gtkdrawingarea.lo: gtkdrawingarea.c gtkdrawingarea.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkentry.o gtkentry.lo: gtkentry.c ../gdk/gdkkeysyms.h gtkentry.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkmain.h gtksignal.h -gtkfilesel.o gtkfilesel.lo: gtkfilesel.c fnmatch.h ../gdk/gdkkeysyms.h \ - gtkbutton.h ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkcontainer.h \ - ../gtk/gtkenums.h ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtktypeutils.h ../gtk/gtkstyle.h \ - gtkentry.h gtkfilesel.h ../gtk/gtkwindow.h ../gtk/gtkbin.h \ - gtkhbox.h ../gtk/gtkbox.h gtklabel.h ../gtk/gtkmisc.h gtklist.h \ - gtklistitem.h ../gtk/gtkitem.h gtkmain.h gtkscrolledwindow.h \ - ../gtk/gtkhscrollbar.h ../gtk/gtkscrollbar.h ../gtk/gtkrange.h \ - ../gtk/gtkadjustment.h ../gtk/gtkdata.h ../gtk/gtkvscrollbar.h \ - ../gtk/gtkviewport.h gtksignal.h gtkvbox.h -gtkframe.o gtkframe.lo: gtkframe.c gtkframe.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkbin.h ../gtk/gtkcontainer.h \ - ../gtk/gtkenums.h ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkgc.o gtkgc.lo: gtkgc.c gtkgc.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h -gtkhbox.o gtkhbox.lo: gtkhbox.c gtkhbox.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkbox.h ../gtk/gtkcontainer.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkhruler.o gtkhruler.lo: gtkhruler.c gtkhruler.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkruler.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkhscale.o gtkhscale.lo: gtkhscale.c gtkhscale.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkscale.h ../gtk/gtkrange.h \ - ../gtk/gtkadjustment.h ../gtk/gtkdata.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkstyle.h gtksignal.h -gtkhscrollbar.o gtkhscrollbar.lo: gtkhscrollbar.c gtkhscrollbar.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkscrollbar.h \ - ../gtk/gtkrange.h ../gtk/gtkadjustment.h ../gtk/gtkdata.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkstyle.h \ - gtksignal.h -gtkhseparator.o gtkhseparator.lo: gtkhseparator.c gtkhseparator.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkseparator.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkimage.o gtkimage.lo: gtkimage.c gtkcontainer.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkimage.h \ - ../gtk/gtkmisc.h -gtkitem.o gtkitem.lo: gtkitem.c gtkitem.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkbin.h ../gtk/gtkcontainer.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtksignal.h -gtklabel.o gtklabel.lo: gtklabel.c gtkcontainer.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtklabel.h \ - ../gtk/gtkmisc.h -gtklist.o gtklist.lo: gtklist.c gtklist.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtklistitem.h \ - ../gtk/gtkitem.h ../gtk/gtkbin.h gtkmain.h gtksignal.h -gtklistitem.o gtklistitem.lo: gtklistitem.c gtklabel.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkmisc.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtklistitem.h \ - ../gtk/gtkitem.h ../gtk/gtkbin.h ../gtk/gtkcontainer.h -gtkmain.o gtkmain.lo: gtkmain.c gtkbutton.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkcontainer.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkhscrollbar.h \ - ../gtk/gtkscrollbar.h ../gtk/gtkrange.h ../gtk/gtkadjustment.h \ - ../gtk/gtkdata.h gtkhseparator.h ../gtk/gtkseparator.h \ - gtkmain.h gtkpreview.h gtkrc.h gtksignal.h gtktable.h gtktext.h \ - gtkvbox.h ../gtk/gtkbox.h gtkvscrollbar.h gtkwidget.h \ - gtkwindow.h ../gtk/gtkbin.h -gtkmenu.o gtkmenu.lo: gtkmenu.c ../gdk/gdkkeysyms.h gtkmain.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkmenu.h \ - ../gtk/gtkmenushell.h ../gtk/gtkcontainer.h gtkmenuitem.h \ - ../gtk/gtkitem.h ../gtk/gtkbin.h gtksignal.h -gtkmenubar.o gtkmenubar.lo: gtkmenubar.c gtkmain.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkstyle.h gtkmenubar.h ../gtk/gtkmenushell.h \ - ../gtk/gtkcontainer.h gtkmenuitem.h ../gtk/gtkitem.h \ - ../gtk/gtkbin.h -gtkmenufactory.o gtkmenufactory.lo: gtkmenufactory.c gtkcheckmenuitem.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkmenuitem.h \ - ../gtk/gtkitem.h ../gtk/gtkbin.h ../gtk/gtkcontainer.h \ - ../gtk/gtkenums.h ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtktypeutils.h ../gtk/gtkstyle.h \ - gtkmenu.h ../gtk/gtkmenushell.h gtkmenubar.h gtkmenufactory.h \ - gtkmenuitem.h gtksignal.h -gtkmenuitem.o gtkmenuitem.lo: gtkmenuitem.c gtklabel.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkmisc.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkmain.h gtkmenu.h \ - ../gtk/gtkmenushell.h ../gtk/gtkcontainer.h gtkmenuitem.h \ - ../gtk/gtkitem.h ../gtk/gtkbin.h gtksignal.h -gtkmenushell.o gtkmenushell.lo: gtkmenushell.c gtkmain.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkstyle.h gtkmenuitem.h ../gtk/gtkitem.h \ - ../gtk/gtkbin.h ../gtk/gtkcontainer.h gtkmenushell.h \ - gtksignal.h -gtkmisc.o gtkmisc.lo: gtkmisc.c gtkcontainer.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkmisc.h -gtknotebook.o gtknotebook.lo: gtknotebook.c gtknotebook.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkcontainer.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkobject.o gtkobject.lo: gtkobject.c gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - gtksignal.h ../gtk/gtkobject.h -gtkoptionmenu.o gtkoptionmenu.lo: gtkoptionmenu.c gtkmenu.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkmenushell.h \ - ../gtk/gtkcontainer.h ../gtk/gtkwidget.h ../gtk/gtkstyle.h \ - gtkmenuitem.h ../gtk/gtkitem.h ../gtk/gtkbin.h gtkoptionmenu.h \ - ../gtk/gtkbutton.h gtksignal.h -gtkpixmap.o gtkpixmap.lo: gtkpixmap.c gtkcontainer.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkpixmap.h \ - ../gtk/gtkmisc.h -gtkpreview.o gtkpreview.lo: gtkpreview.c ../gdk/gdkx.h \ - ../gdk/gdkprivate.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h gtkpreview.h \ - ../gtk/gtkwidget.h ../gdk/gdk.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkstyle.h gtksignal.h -gtkprogressbar.o gtkprogressbar.lo: gtkprogressbar.c gtkprogressbar.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkradiobutton.o gtkradiobutton.lo: gtkradiobutton.c gtklabel.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkmisc.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkstyle.h \ - gtkradiobutton.h ../gtk/gtkcheckbutton.h \ - ../gtk/gtktogglebutton.h ../gtk/gtkbutton.h \ - ../gtk/gtkcontainer.h gtksignal.h -gtkradiomenuitem.o gtkradiomenuitem.lo: gtkradiomenuitem.c gtklabel.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkmisc.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkstyle.h \ - gtkradiomenuitem.h ../gtk/gtkcheckmenuitem.h \ - ../gtk/gtkmenuitem.h ../gtk/gtkitem.h ../gtk/gtkbin.h \ - ../gtk/gtkcontainer.h -gtkrange.o gtkrange.lo: gtkrange.c gtkmain.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkstyle.h gtkrange.h ../gtk/gtkadjustment.h \ - ../gtk/gtkdata.h gtksignal.h -gtkrc.o gtkrc.lo: gtkrc.c gtkrc.h ../gtk/gtkstyle.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h -gtkruler.o gtkruler.lo: gtkruler.c gtkruler.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkstyle.h -gtkscale.o gtkscale.lo: gtkscale.c gtkcontainer.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkscale.h \ - ../gtk/gtkrange.h ../gtk/gtkadjustment.h ../gtk/gtkdata.h -gtkscrollbar.o gtkscrollbar.lo: gtkscrollbar.c gtkscrollbar.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkrange.h \ - ../gtk/gtkadjustment.h ../gtk/gtkdata.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkstyle.h -gtkscrolledwindow.o gtkscrolledwindow.lo: gtkscrolledwindow.c \ - gtkscrolledwindow.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkhscrollbar.h ../gtk/gtkscrollbar.h ../gtk/gtkrange.h \ - ../gtk/gtkadjustment.h ../gtk/gtkdata.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkstyle.h \ - ../gtk/gtkvscrollbar.h ../gtk/gtkviewport.h ../gtk/gtkbin.h \ - ../gtk/gtkcontainer.h gtksignal.h -gtkseparator.o gtkseparator.lo: gtkseparator.c gtkseparator.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtksignal.o gtksignal.lo: gtksignal.c gtksignal.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h -gtkstyle.o gtkstyle.lo: gtkstyle.c gtkgc.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h gtkstyle.h ../gtk/gtkenums.h -gtktable.o gtktable.lo: gtktable.c gtktable.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkcontainer.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtktext.o gtktext.lo: gtktext.c ../gdk/gdkkeysyms.h gtkmain.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtksignal.h gtktext.h \ - ../gtk/gtkadjustment.h ../gtk/gtkdata.h line-wrap.xbm \ - line-arrow.xbm -gtktogglebutton.o gtktogglebutton.lo: gtktogglebutton.c gtklabel.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkmisc.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkstyle.h \ - gtkmain.h gtksignal.h gtktogglebutton.h ../gtk/gtkbutton.h \ - ../gtk/gtkcontainer.h -gtktooltips.o gtktooltips.lo: gtktooltips.c gtkmain.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkstyle.h gtkwidget.h gtkwindow.h ../gtk/gtkbin.h \ - ../gtk/gtkcontainer.h gtksignal.h gtkstyle.h gtktooltips.h -gtktree.o gtktree.lo: gtktree.c gtktree.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkcontainer.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtktreeitem.o gtktreeitem.lo: gtktreeitem.c gtklabel.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkmisc.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtktreeitem.h \ - ../gtk/gtkitem.h ../gtk/gtkbin.h ../gtk/gtkcontainer.h -gtktypeutils.o gtktypeutils.lo: gtktypeutils.c gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h gtktypeutils.h -gtkvbox.o gtkvbox.lo: gtkvbox.c gtkvbox.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkbox.h ../gtk/gtkcontainer.h ../gtk/gtkenums.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkviewport.o gtkviewport.lo: gtkviewport.c gtksignal.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h gtkviewport.h ../gtk/gtkadjustment.h \ - ../gtk/gtkdata.h ../gtk/gtkbin.h ../gtk/gtkcontainer.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkstyle.h -gtkvruler.o gtkvruler.lo: gtkvruler.c gtkvruler.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkruler.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkvscale.o gtkvscale.lo: gtkvscale.c gtkvscale.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkscale.h ../gtk/gtkrange.h \ - ../gtk/gtkadjustment.h ../gtk/gtkdata.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkstyle.h gtksignal.h -gtkvscrollbar.o gtkvscrollbar.lo: gtkvscrollbar.c gtkvscrollbar.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkscrollbar.h \ - ../gtk/gtkrange.h ../gtk/gtkadjustment.h ../gtk/gtkdata.h \ - ../gtk/gtkobject.h ../gtk/gtkenums.h ../gtk/gtktypeutils.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkstyle.h \ - gtksignal.h -gtkvseparator.o gtkvseparator.lo: gtkvseparator.c gtkvseparator.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkseparator.h \ - ../gtk/gtkwidget.h ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtkenums.h ../gtk/gtktypeutils.h ../gtk/gtkstyle.h -gtkwidget.o gtkwidget.lo: gtkwidget.c gtkcontainer.h ../gdk/gdk.h \ - ../gdk/gdktypes.h ../glib/glib.h ../glib/glibconfig.h \ - ../gdk/gdkcursors.h ../gtk/gtkenums.h ../gtk/gtkwidget.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h \ - ../gtk/gtktypeutils.h ../gtk/gtkstyle.h gtkmain.h gtkrc.h \ - gtksignal.h gtkwidget.h gtkwindow.h ../gtk/gtkbin.h \ - ../gtk/gtkcontainer.h -gtkwindow.o gtkwindow.lo: gtkwindow.c ../gdk/gdkkeysyms.h gtksignal.h \ - ../gdk/gdk.h ../gdk/gdktypes.h ../glib/glib.h \ - ../glib/glibconfig.h ../gdk/gdkcursors.h ../gtk/gtkenums.h \ - ../gtk/gtkobject.h ../gtk/gtktypeutils.h gtkwindow.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkbin.h ../gtk/gtkcontainer.h \ - ../gtk/gtkwidget.h ../gtk/gtkstyle.h -simple.o simple.lo: simple.c gtk.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkadjustment.h ../gtk/gtkdata.h \ - ../gtk/gtkalignment.h ../gtk/gtkbin.h ../gtk/gtkcontainer.h \ - ../gtk/gtkwidget.h ../gtk/gtkstyle.h ../gtk/gtkaspectframe.h \ - ../gtk/gtkframe.h ../gtk/gtkarrow.h ../gtk/gtkmisc.h \ - ../gtk/gtkbox.h ../gtk/gtkbutton.h ../gtk/gtkcheckbutton.h \ - ../gtk/gtktogglebutton.h ../gtk/gtkcheckmenuitem.h \ - ../gtk/gtkmenuitem.h ../gtk/gtkitem.h ../gtk/gtkcolorsel.h \ - ../gtk/gtkwindow.h ../gtk/gtkvbox.h ../gtk/gtkpreview.h \ - ../gtk/gtkentry.h ../gtk/gtkhbox.h ../gtk/gtklabel.h \ - ../gtk/gtkmain.h ../gtk/gtksignal.h ../gtk/gtkrange.h \ - ../gtk/gtkscale.h ../gtk/gtkhscale.h ../gtk/gtktable.h \ - ../gtk/gtkcurve.h ../gtk/gtkdialog.h ../gtk/gtkdrawingarea.h \ - ../gtk/gtkfilesel.h ../gtk/gtkgc.h ../gtk/gtkhruler.h \ - ../gtk/gtkruler.h ../gtk/gtkhscrollbar.h ../gtk/gtkscrollbar.h \ - ../gtk/gtkhseparator.h ../gtk/gtkseparator.h ../gtk/gtkimage.h \ - ../gtk/gtklist.h ../gtk/gtklistitem.h ../gtk/gtkmenu.h \ - ../gtk/gtkmenushell.h ../gtk/gtkmenubar.h \ - ../gtk/gtkmenufactory.h ../gtk/gtknotebook.h \ - ../gtk/gtkoptionmenu.h ../gtk/gtkpixmap.h \ - ../gtk/gtkprogressbar.h ../gtk/gtkradiobutton.h \ - ../gtk/gtkradiomenuitem.h ../gtk/gtkrc.h \ - ../gtk/gtkscrolledwindow.h ../gtk/gtkvscrollbar.h \ - ../gtk/gtkviewport.h ../gtk/gtktext.h ../gtk/gtktooltips.h \ - ../gtk/gtktree.h ../gtk/gtktreeitem.h ../gtk/gtkvruler.h \ - ../gtk/gtkvscale.h ../gtk/gtkvseparator.h -testgtk.o testgtk.lo: testgtk.c gtk.h ../gdk/gdk.h ../gdk/gdktypes.h \ - ../glib/glib.h ../glib/glibconfig.h ../gdk/gdkcursors.h \ - ../gtk/gtkaccelerator.h ../gtk/gtkobject.h ../gtk/gtkenums.h \ - ../gtk/gtktypeutils.h ../gtk/gtkadjustment.h ../gtk/gtkdata.h \ - ../gtk/gtkalignment.h ../gtk/gtkbin.h ../gtk/gtkcontainer.h \ - ../gtk/gtkwidget.h ../gtk/gtkstyle.h ../gtk/gtkaspectframe.h \ - ../gtk/gtkframe.h ../gtk/gtkarrow.h ../gtk/gtkmisc.h \ - ../gtk/gtkbox.h ../gtk/gtkbutton.h ../gtk/gtkcheckbutton.h \ - ../gtk/gtktogglebutton.h ../gtk/gtkcheckmenuitem.h \ - ../gtk/gtkmenuitem.h ../gtk/gtkitem.h ../gtk/gtkcolorsel.h \ - ../gtk/gtkwindow.h ../gtk/gtkvbox.h ../gtk/gtkpreview.h \ - ../gtk/gtkentry.h ../gtk/gtkhbox.h ../gtk/gtklabel.h \ - ../gtk/gtkmain.h ../gtk/gtksignal.h ../gtk/gtkrange.h \ - ../gtk/gtkscale.h ../gtk/gtkhscale.h ../gtk/gtktable.h \ - ../gtk/gtkcurve.h ../gtk/gtkdialog.h ../gtk/gtkdrawingarea.h \ - ../gtk/gtkfilesel.h ../gtk/gtkgc.h ../gtk/gtkhruler.h \ - ../gtk/gtkruler.h ../gtk/gtkhscrollbar.h ../gtk/gtkscrollbar.h \ - ../gtk/gtkhseparator.h ../gtk/gtkseparator.h ../gtk/gtkimage.h \ - ../gtk/gtklist.h ../gtk/gtklistitem.h ../gtk/gtkmenu.h \ - ../gtk/gtkmenushell.h ../gtk/gtkmenubar.h \ - ../gtk/gtkmenufactory.h ../gtk/gtknotebook.h \ - ../gtk/gtkoptionmenu.h ../gtk/gtkpixmap.h \ - ../gtk/gtkprogressbar.h ../gtk/gtkradiobutton.h \ - ../gtk/gtkradiomenuitem.h ../gtk/gtkrc.h \ - ../gtk/gtkscrolledwindow.h ../gtk/gtkvscrollbar.h \ - ../gtk/gtkviewport.h ../gtk/gtktext.h ../gtk/gtktooltips.h \ - ../gtk/gtktree.h ../gtk/gtktreeitem.h ../gtk/gtkvruler.h \ - ../gtk/gtkvscale.h ../gtk/gtkvseparator.h +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp info: dvi: check: all $(MAKE) installcheck: install-exec: install-libLTLIBRARIES - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-gtkincludeHEADERS - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: uninstall-libLTLIBRARIES uninstall-gtkincludeHEADERS -all: $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) Makefile +all: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: $(mkinstalldirs) $(libdir) $(gtkincludedir) @@ -922,7 +507,7 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @@ -930,22 +515,23 @@ test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) mostlyclean: mostlyclean-libLTLIBRARIES mostlyclean-compile \ mostlyclean-libtool mostlyclean-noinstPROGRAMS \ - mostlyclean-tags mostlyclean-generic + mostlyclean-tags mostlyclean-depend mostlyclean-generic clean: clean-libLTLIBRARIES clean-compile clean-libtool \ - clean-noinstPROGRAMS clean-tags clean-generic \ - mostlyclean + clean-noinstPROGRAMS clean-tags clean-depend \ + clean-generic mostlyclean distclean: distclean-libLTLIBRARIES distclean-compile distclean-libtool \ distclean-noinstPROGRAMS distclean-tags \ - distclean-generic clean + distclean-depend distclean-generic clean rm -f config.status rm -f libtool maintainer-clean: maintainer-clean-libLTLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-noinstPROGRAMS maintainer-clean-tags \ - maintainer-clean-generic distclean + maintainer-clean-depend maintainer-clean-generic \ + distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." @@ -958,9 +544,10 @@ distclean-noinstPROGRAMS clean-noinstPROGRAMS \ maintainer-clean-noinstPROGRAMS uninstall-gtkincludeHEADERS \ install-gtkincludeHEADERS tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir info dvi installcheck \ -install-exec install-data install uninstall all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ +clean-tags maintainer-clean-tags distdir mostlyclean-depend \ +distclean-depend clean-depend maintainer-clean-depend info dvi \ +installcheck install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean diff -u --recursive --new-file gimp-0.99.10/gtk+/gtk/gtkaccelerator.c gimp-0.99.pre11/gtk+/gtk/gtkaccelerator.c --- gimp-0.99.10/gtk+/gtk/gtkaccelerator.c Mon Apr 7 01:52:50 1997 +++ gimp-0.99.pre11/gtk+/gtk/gtkaccelerator.c Wed Aug 13 20:31:51 1997 @@ -55,7 +55,7 @@ GtkAcceleratorTable* gtk_accelerator_table_find (GtkObject *object, gchar *signal_name, - gchar accelerator_key, + guchar accelerator_key, guint8 accelerator_mods) { GtkAcceleratorTable *table; @@ -126,7 +126,7 @@ gtk_accelerator_table_install (GtkAcceleratorTable *table, GtkObject *object, gchar *signal_name, - gchar accelerator_key, + guchar accelerator_key, guint8 accelerator_mods) { GtkAcceleratorEntry *entry; @@ -238,7 +238,7 @@ gint gtk_accelerator_table_check (GtkAcceleratorTable *table, - gchar accelerator_key, + guchar accelerator_key, guint8 accelerator_mods) { GtkAcceleratorEntry *entry; diff -u --recursive --new-file gimp-0.99.10/gtk+/gtk/gtkaccelerator.h gimp-0.99.pre11/gtk+/gtk/gtkaccelerator.h --- gimp-0.99.10/gtk+/gtk/gtkaccelerator.h Sun Mar 9 16:17:37 1997 +++ gimp-0.99.pre11/gtk+/gtk/gtkaccelerator.h Wed Aug 13 20:31:52 1997 @@ -42,7 +42,7 @@ GtkAcceleratorTable* gtk_accelerator_table_new (void); GtkAcceleratorTable* gtk_accelerator_table_find (GtkObject *object, gchar *signal_name, - gchar accelerator_key, + guchar accelerator_key, guint8 accelerator_mods); void gtk_accelerator_table_destroy (GtkAcceleratorTable *table); @@ -51,13 +51,13 @@ void gtk_accelerator_table_install (GtkAcceleratorTable *table, GtkObject *object, gchar *signal_name, - gchar accelerator_key, + guchar accelerator_key, guint8 accelerator_mods); void gtk_accelerator_table_remove (GtkAcceleratorTable *table, GtkObject *object, gchar *signal_name); gint gtk_accelerator_table_check (GtkAcceleratorTable *table, - gchar accelerator_key, + guchar accelerator_key, guint8 accelerator_mods); diff -u --recursive --new-file gimp-0.99.10/gtk+/gtk/gtkentry.c gimp-0.99.pre11/gtk+/gtk/gtkentry.c --- gimp-0.99.10/gtk+/gtk/gtkentry.c Fri Jun 6 02:02:00 1997 +++ gimp-0.99.pre11/gtk+/gtk/gtkentry.c Wed Aug 13 20:31:51 1997 @@ -1352,7 +1352,12 @@ { text = entry->text; i = entry->current_pos - 1; - + if(i<0) /* Per */ + { + entry->selection_start_pos = 0; + entry->selection_end_pos = 0; + return; + } if (!((text[i] == '_') || isalnum (text[i]))) for (; i >= 0; i--) if ((text[i] == '_') || isalnum (text[i])) diff -u --recursive --new-file gimp-0.99.10/gtk+/gtk/gtkpixmap.c gimp-0.99.pre11/gtk+/gtk/gtkpixmap.c --- gimp-0.99.10/gtk+/gtk/gtkpixmap.c Fri Jun 6 02:01:52 1997 +++ gimp-0.99.pre11/gtk+/gtk/gtkpixmap.c Wed Aug 13 20:31:52 1997 @@ -73,7 +73,7 @@ { GtkPixmap *pixmap; - g_return_val_if_fail (pixmap != NULL, NULL); +/*g_return_val_if_fail (pixmap != NULL, NULL);*/ /* OUCH! /Per */ pixmap = gtk_type_new (gtk_pixmap_get_type ()); diff -u --recursive --new-file gimp-0.99.10/gtk+/gtk+.xconfig gimp-0.99.pre11/gtk+/gtk+.xconfig --- gimp-0.99.10/gtk+/gtk+.xconfig Sun Aug 17 11:07:24 1997 +++ gimp-0.99.pre11/gtk+/gtk+.xconfig Thu Aug 14 01:26:08 1997 @@ -0,0 +1,3 @@ +X_CFLAGS = -I/usr/X11R6/include +X_LDFLAGS = -L/usr/X11R6/lib +X_LIBS = -lXext -lX11 diff -u --recursive --new-file gimp-0.99.10/gtk+/libtool gimp-0.99.pre11/gtk+/libtool --- gimp-0.99.10/gtk+/libtool Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/libtool Thu Aug 14 01:25:58 1997 @@ -0,0 +1,120 @@ +#! /bin/sh + +# libtool - Provide generalized library-building support services. +# +# Generated automatically by ltconfig - GNU libtool 0.9f +# This program was configured as follows, +# on host firestorm.net.house.au: +# +# CC="gcc" CFLAGS="-g -O2" LD="" RANLIB="ranlib" \ +# ./ltconfig --with-gcc --no-verify ./ltmain.sh i586-pc-linux-gnu +# +# Compiler and other test output produced by ltconfig, useful for +# debugging ltconfig, is in ./config.log if it exists. + +# The version of ltconfig that generated this script. +LTCONFIG_VERSION="0.9f" + +# Whether or not to build libtool libraries. +build_libtool_libs=yes + +# Whether or not to build old-style libraries. +build_old_libs=yes + +# The host system. +host_alias="i586-pc-linux-gnu" +host="i586-pc-linux-gnu" + +# The archiver. +AR='ar' + +# The linker used to build libraries. +LD='ld' + +# How to create reloadable object files. +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' + +# How to pass a linker flag through the compiler. +wl='-Wl,' + +# Additional compiler flags for building library objects. +pic_flag=' -fPIC' + +# Compiler flag to prevent dynamic linking. +link_static_flag='-static' + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag='${wl}-export-dynamic' + +# Pattern to match compiler flags for creating libNAME_p libraries: +profile_flag_pattern='-pg?' + +# Library versioning type. +version_type=sunos + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec='$libname.so.$versuffix' + +# The coded name of the library, if different from the real name. +soname_spec='' + +# Commands used to build and install an old-style archive. +RANLIB='ranlib' +old_archive_cmds='$AR cru $oldlib$oldobjs;$RANLIB $oldlib' +old_postinstall_cmds='chmod 644 $oldlib;$RANLIB $oldlib' + +# Commands used to build and install a shared archive. +archive_cmds='$cc -shared ${wl}-soname $wl$soname -o $lib$libobjs$deplibs' +postinstall_cmds='' + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag='' + +# Commands used to finish a libtool library installation in a directory. +finish_cmds='' + +# How to strip a library file. +striplib='' +old_striplib='' + +# This is the shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# This is the shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist. +hardcode_libdir_flag_spec='${wl}-rpath $wl$libdir' + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator='' + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=no + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=no + +# Set to yes if using RUNPATH_VAR=DIR during linking hardcodes DIR into the +# resulting binary. +hardcode_runpath_var=yes + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=unsupported + +# Find the path to this script. +thisdir=`echo "$0" | sed -e 's%/[^/]*$%%'` +test "X$0" = "X$thisdir" && thisdir=. + +# Execute the libtool backend. +. $thisdir/./ltmain.sh +exit 1 diff -u --recursive --new-file gimp-0.99.10/gtk+/stamp-h gimp-0.99.pre11/gtk+/stamp-h --- gimp-0.99.10/gtk+/stamp-h Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/gtk+/stamp-h Thu Aug 14 01:26:11 1997 @@ -0,0 +1 @@ +timestamp diff -u --recursive --new-file gimp-0.99.10/libgimp/Makefile gimp-0.99.pre11/libgimp/Makefile --- gimp-0.99.10/libgimp/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/libgimp/Makefile Thu Aug 14 01:25:46 1997 @@ -0,0 +1,397 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gimp +pkglibdir = $(libdir)/gimp +pkgincludedir = $(includedir)/gimp + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBJPEG_INC = +LIBJPEG_LIB = +LIBPNG_INC = +LIBPNG_LIB = +LIBTIFF_INC = +LIBTIFF_LIB = +LIBTOOL = $(top_builddir)/libtool +LN_S = ln -s +MAKEINFO = makeinfo +PACKAGE = gimp +RANLIB = ranlib +VERSION = 0.99.10 +gimpdatadir = ${prefix}/share/gimp/0.99.10 +gimpdir = .gimp +gimpplugindir = ${exec_prefix}/lib/gimp/0.99.10 + +gimpincludedir = $(includedir)/libgimp + +scriptdata = + +lib_LTLIBRARIES = libgimp.la libgimpui.la +noinst_LIBRARIES = libgimpi.a + +libgimpi_a_SOURCES = gimpprotocol.c \ + gimpprotocol.h \ + gimpwire.c \ + gimpwire.h + +libgimp_la_SOURCES = gimp.c \ + gimpchannel.c \ + gimpdisplay.c \ + gimpdrawable.c \ + gimpgradient.c \ + gimpimage.c \ + gimplayer.c \ + gimppalette.c \ + gimppixelrgn.c \ + gimpprotocol.c \ + gimpprotocol.h \ + gimptile.c \ + gimpwire.c \ + gimpwire.h + +libgimpui_la_SOURCES = gimpmenu.c + +gimpinclude_HEADERS = gimp.h \ + gimpenums.h \ + gimpmenu.h \ + gimpui.h + +libgimp_la_LDFLAGS = -version-info 1:0:0 -rpath $(libdir) +libgimpui_la_LDFLAGS = -version-info 1:0:0 -rpath $(libdir) + +INCLUDES = \ + -I$(top_srcdir)/gtk+ \ + -I$(top_srcdir)/gtk+/glib \ + -I$(top_srcdir) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.. +CPPFLAGS = +LDFLAGS = +LIBS = +libgimpi_a_LIBADD = +libgimpi_a_OBJECTS = gimpprotocol.o gimpwire.o +AR = ar +LTLIBRARIES = $(lib_LTLIBRARIES) + +libgimp_la_LIBADD = +libgimp_la_OBJECTS = gimp.lo gimpchannel.lo gimpdisplay.lo \ +gimpdrawable.lo gimpgradient.lo gimpimage.lo gimplayer.lo \ +gimppalette.lo gimppixelrgn.lo gimpprotocol.lo gimptile.lo gimpwire.lo +libgimpui_la_LIBADD = +libgimpui_la_OBJECTS = gimpmenu.lo +CFLAGS = -g -O2 -Wall +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +HEADERS = $(gimpinclude_HEADERS) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +DEP_FILES = .deps/gimp.P .deps/gimpchannel.P .deps/gimpdisplay.P \ +.deps/gimpdrawable.P .deps/gimpgradient.P .deps/gimpimage.P \ +.deps/gimplayer.P .deps/gimpmenu.P .deps/gimppalette.P \ +.deps/gimppixelrgn.P .deps/gimpprotocol.P .deps/gimptile.P \ +.deps/gimpwire.P +SOURCES = $(libgimpi_a_SOURCES) $(libgimp_la_SOURCES) $(libgimpui_la_SOURCES) +OBJECTS = $(libgimpi_a_OBJECTS) $(libgimp_la_OBJECTS) $(libgimpui_la_OBJECTS) + +default: all + +.SUFFIXES: +.SUFFIXES: .c .lo .o +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu libgimp/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-noinstLIBRARIES: + +clean-noinstLIBRARIES: + test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +distclean-noinstLIBRARIES: + +maintainer-clean-noinstLIBRARIES: + +.c.o: + $(COMPILE) -c $< + +mostlyclean-compile: + rm -f *.o core + +clean-compile: + +distclean-compile: + rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + rm -f *.lo + +clean-libtool: + rm -rf .libs + +distclean-libtool: + +maintainer-clean-libtool: + +libgimpi.a: $(libgimpi_a_OBJECTS) $(libgimpi_a_DEPENDENCIES) + rm -f libgimpi.a + $(AR) cru libgimpi.a $(libgimpi_a_OBJECTS) $(libgimpi_a_LIBADD) + $(RANLIB) libgimpi.a + +mostlyclean-libLTLIBRARIES: + +clean-libLTLIBRARIES: + test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + +distclean-libLTLIBRARIES: + +maintainer-clean-libLTLIBRARIES: + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + $(NORMAL_UNINSTALL) + list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(libdir)/$$p; \ + done + +libgimp.la: $(libgimp_la_OBJECTS) $(libgimp_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libgimp_la_LDFLAGS) $(libgimp_la_OBJECTS) $(libgimp_la_LIBADD) $(LIBS) + +libgimpui.la: $(libgimpui_la_OBJECTS) $(libgimpui_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libgimpui_la_LDFLAGS) $(libgimpui_la_OBJECTS) $(libgimpui_la_LIBADD) $(LIBS) + +install-gimpincludeHEADERS: $(gimpinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(gimpincludedir) + @list='$(gimpinclude_HEADERS)'; for p in $$list; do \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(gimpincludedir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(gimpincludedir)/$$p; \ + done + +uninstall-gimpincludeHEADERS: + $(NORMAL_UNINSTALL) + list='$(gimpinclude_HEADERS)'; for p in $$list; do \ + rm -f $(gimpincludedir)/$$p; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) + here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = libgimp + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu libgimp/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp +info: +dvi: +check: all + $(MAKE) +installcheck: +install-exec: install-libLTLIBRARIES + @$(NORMAL_INSTALL) + +install-data: install-gimpincludeHEADERS + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: uninstall-libLTLIBRARIES uninstall-gimpincludeHEADERS + +all: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + $(mkinstalldirs) $(libdir) $(gimpincludedir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \ + mostlyclean-libtool mostlyclean-libLTLIBRARIES \ + mostlyclean-tags mostlyclean-depend mostlyclean-generic + +clean: clean-noinstLIBRARIES clean-compile clean-libtool \ + clean-libLTLIBRARIES clean-tags clean-depend \ + clean-generic mostlyclean + +distclean: distclean-noinstLIBRARIES distclean-compile \ + distclean-libtool distclean-libLTLIBRARIES \ + distclean-tags distclean-depend distclean-generic clean + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-noinstLIBRARIES \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-libLTLIBRARIES maintainer-clean-tags \ + maintainer-clean-depend maintainer-clean-generic \ + distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \ +clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile mostlyclean-libtool distclean-libtool \ +clean-libtool maintainer-clean-libtool mostlyclean-libLTLIBRARIES \ +distclean-libLTLIBRARIES clean-libLTLIBRARIES \ +maintainer-clean-libLTLIBRARIES uninstall-libLTLIBRARIES \ +install-libLTLIBRARIES uninstall-gimpincludeHEADERS \ +install-gimpincludeHEADERS tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir mostlyclean-depend \ +distclean-depend clean-depend maintainer-clean-depend info dvi \ +installcheck install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +.PHONY: files + +files: + @files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \ + echo $$p; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/libgimp/Makefile.in gimp-0.99.pre11/libgimp/Makefile.in --- gimp-0.99.10/libgimp/Makefile.in Sat Jun 7 00:26:23 1997 +++ gimp-0.99.pre11/libgimp/Makefile.in Wed Aug 13 23:12:10 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,15 +42,25 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBJPEG_INC = @LIBJPEG_INC@ LIBJPEG_LIB = @LIBJPEG_LIB@ +LIBPNG_INC = @LIBPNG_INC@ +LIBPNG_LIB = @LIBPNG_LIB@ LIBTIFF_INC = @LIBTIFF_INC@ LIBTIFF_LIB = @LIBTIFF_LIB@ LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -123,7 +133,7 @@ CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ HEADERS = $(gimpinclude_HEADERS) DIST_COMMON = Makefile.am Makefile.in @@ -133,13 +143,18 @@ TAR = tar GZIP = --best +DEP_FILES = .deps/gimp.P .deps/gimpchannel.P .deps/gimpdisplay.P \ +.deps/gimpdrawable.P .deps/gimpgradient.P .deps/gimpimage.P \ +.deps/gimplayer.P .deps/gimpmenu.P .deps/gimppalette.P \ +.deps/gimppixelrgn.P .deps/gimpprotocol.P .deps/gimptile.P \ +.deps/gimpwire.P SOURCES = $(libgimpi_a_SOURCES) $(libgimp_la_SOURCES) $(libgimpui_la_SOURCES) OBJECTS = $(libgimpi_a_OBJECTS) $(libgimp_la_OBJECTS) $(libgimpui_la_OBJECTS) default: all .SUFFIXES: -.SUFFIXES: .c .o .lo +.SUFFIXES: .c .lo .o $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu libgimp/Makefile @@ -182,7 +197,6 @@ distclean-libtool: maintainer-clean-libtool: -$(libgimpi_a_OBJECTS): ../config.h libgimpi.a: $(libgimpi_a_OBJECTS) $(libgimpi_a_DEPENDENCIES) rm -f libgimpi.a @@ -199,9 +213,9 @@ maintainer-clean-libLTLIBRARIES: install-libLTLIBRARIES: $(lib_LTLIBRARIES) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(libdir) - @list="$(lib_LTLIBRARIES)"; for p in $$list; do \ + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ echo "$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p"; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(libdir)/$$p; \ @@ -209,28 +223,28 @@ done uninstall-libLTLIBRARIES: - list="$(lib_LTLIBRARIES)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(lib_LTLIBRARIES)'; for p in $$list; do \ $(LIBTOOL) --mode=uninstall rm -f $(libdir)/$$p; \ done -$(libgimp_la_OBJECTS): ../config.h libgimp.la: $(libgimp_la_OBJECTS) $(libgimp_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libgimp_la_LDFLAGS) $(libgimp_la_OBJECTS) $(libgimp_la_LIBADD) $(LIBS) -$(libgimpui_la_OBJECTS): ../config.h libgimpui.la: $(libgimpui_la_OBJECTS) $(libgimpui_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libgimpui_la_LDFLAGS) $(libgimpui_la_OBJECTS) $(libgimpui_la_LIBADD) $(LIBS) install-gimpincludeHEADERS: $(gimpinclude_HEADERS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(gimpincludedir) - @list="$(gimpinclude_HEADERS)"; for p in $$list; do \ + @list='$(gimpinclude_HEADERS)'; for p in $$list; do \ echo " $(INSTALL_DATA) $(srcdir)/$$p $(gimpincludedir)/$$p"; \ $(INSTALL_DATA) $(srcdir)/$$p $(gimpincludedir)/$$p; \ done uninstall-gimpincludeHEADERS: - list="$(gimpinclude_HEADERS)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(gimpinclude_HEADERS)'; for p in $$list; do \ rm -f $(gimpincludedir)/$$p; \ done @@ -242,11 +256,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - done; \ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -260,103 +271,64 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = libgimp + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu libgimp/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done -gimp.o gimp.lo: gimp.c ../config.h gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h gimpprotocol.h \ - gimpwire.h -gimpchannel.o gimpchannel.lo: gimpchannel.c gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -gimpdisplay.o gimpdisplay.lo: gimpdisplay.c gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -gimpdrawable.o gimpdrawable.lo: gimpdrawable.c gimp.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../libgimp/gimpenums.h -gimpgradient.o gimpgradient.lo: gimpgradient.c gimp.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../libgimp/gimpenums.h -gimpimage.o gimpimage.lo: gimpimage.c gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -gimplayer.o gimplayer.lo: gimplayer.c gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -gimpmenu.o gimpmenu.lo: gimpmenu.c gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h gimpui.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h ../libgimp/gimpmenu.h -gimppalette.o gimppalette.lo: gimppalette.c gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -gimppixelrgn.o gimppixelrgn.lo: gimppixelrgn.c gimp.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../libgimp/gimpenums.h -gimpprotocol.o gimpprotocol.lo: gimpprotocol.c gimpenums.h \ - gimpprotocol.h ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - gimpwire.h -gimptile.o gimptile.lo: gimptile.c gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h gimpprotocol.h \ - gimpwire.h -gimpwire.o gimpwire.lo: gimpwire.c gimpwire.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp info: dvi: check: all $(MAKE) installcheck: install-exec: install-libLTLIBRARIES - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-gimpincludeHEADERS - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: uninstall-libLTLIBRARIES uninstall-gimpincludeHEADERS -all: $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) Makefile +all: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: $(mkinstalldirs) $(libdir) $(gimpincludedir) @@ -369,7 +341,7 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @@ -377,22 +349,23 @@ test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \ mostlyclean-libtool mostlyclean-libLTLIBRARIES \ - mostlyclean-tags mostlyclean-generic + mostlyclean-tags mostlyclean-depend mostlyclean-generic clean: clean-noinstLIBRARIES clean-compile clean-libtool \ - clean-libLTLIBRARIES clean-tags clean-generic \ - mostlyclean + clean-libLTLIBRARIES clean-tags clean-depend \ + clean-generic mostlyclean distclean: distclean-noinstLIBRARIES distclean-compile \ distclean-libtool distclean-libLTLIBRARIES \ - distclean-tags distclean-generic clean + distclean-tags distclean-depend distclean-generic clean rm -f config.status rm -f libtool maintainer-clean: maintainer-clean-noinstLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-libLTLIBRARIES maintainer-clean-tags \ - maintainer-clean-generic distclean + maintainer-clean-depend maintainer-clean-generic \ + distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." @@ -405,9 +378,10 @@ maintainer-clean-libLTLIBRARIES uninstall-libLTLIBRARIES \ install-libLTLIBRARIES uninstall-gimpincludeHEADERS \ install-gimpincludeHEADERS tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir info dvi installcheck \ -install-exec install-data install uninstall all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ +clean-tags maintainer-clean-tags distdir mostlyclean-depend \ +distclean-depend clean-depend maintainer-clean-depend info dvi \ +installcheck install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean diff -u --recursive --new-file gimp-0.99.10/libgimp/gimplayer.c gimp-0.99.pre11/libgimp/gimplayer.c --- gimp-0.99.10/libgimp/gimplayer.c Wed Feb 12 18:51:09 1997 +++ gimp-0.99.pre11/libgimp/gimplayer.c Wed Aug 13 20:31:34 1997 @@ -179,7 +179,7 @@ GParam *return_vals; int nreturn_vals; - return_vals = gimp_run_procedure ("gimp_layer_scale", + return_vals = gimp_run_procedure ("gimp_layer_translate", &nreturn_vals, PARAM_LAYER, layer_ID, PARAM_INT32, offset_x, diff -u --recursive --new-file gimp-0.99.10/libgimp/gimpmenu.c gimp-0.99.pre11/libgimp/gimpmenu.c --- gimp-0.99.10/libgimp/gimpmenu.c Sat Mar 8 20:00:20 1997 +++ gimp-0.99.pre11/libgimp/gimpmenu.c Wed Aug 13 20:31:34 1997 @@ -47,7 +47,7 @@ g_free (label); if (images[i] == active_image) - gtk_menu_set_active (GTK_MENU (menu), i); + gtk_menu_set_active (GTK_MENU (menu), k); k += 1; } diff -u --recursive --new-file gimp-0.99.10/libgimp/gimpwire.c gimp-0.99.pre11/libgimp/gimpwire.c --- gimp-0.99.10/libgimp/gimpwire.c Sat Apr 26 22:59:13 1997 +++ gimp-0.99.pre11/libgimp/gimpwire.c Wed Aug 13 20:31:34 1997 @@ -104,6 +104,13 @@ return FALSE; } + if (bytes == 0) + { + g_print ("wire_read: unexpected EOF\n"); + wire_error_val = TRUE; + return FALSE; + } + count -= bytes; buf += bytes; } @@ -163,6 +170,12 @@ wire_error () { return wire_error_val; +} + +void +wire_clear_error () +{ + wire_error_val = FALSE; } int diff -u --recursive --new-file gimp-0.99.10/libgimp/gimpwire.h gimp-0.99.pre11/libgimp/gimpwire.h --- gimp-0.99.10/libgimp/gimpwire.h Sun Mar 9 16:45:25 1997 +++ gimp-0.99.pre11/libgimp/gimpwire.h Wed Aug 13 20:31:34 1997 @@ -36,6 +36,7 @@ gulong count); int wire_flush (int fd); int wire_error (void); +void wire_clear_error (void); int wire_read_msg (int fd, WireMessage *msg); int wire_write_msg (int fd, diff -u --recursive --new-file gimp-0.99.10/libtool gimp-0.99.pre11/libtool --- gimp-0.99.10/libtool Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/libtool Thu Aug 14 01:25:37 1997 @@ -0,0 +1,120 @@ +#! /bin/sh + +# libtool - Provide generalized library-building support services. +# +# Generated automatically by ltconfig - GNU libtool 0.9f +# This program was configured as follows, +# on host firestorm.net.house.au: +# +# CC="gcc" CFLAGS="-g -O2" LD="" RANLIB="ranlib" \ +# ./ltconfig --with-gcc --no-verify ./ltmain.sh i586-pc-linux-gnu +# +# Compiler and other test output produced by ltconfig, useful for +# debugging ltconfig, is in ./config.log if it exists. + +# The version of ltconfig that generated this script. +LTCONFIG_VERSION="0.9f" + +# Whether or not to build libtool libraries. +build_libtool_libs=yes + +# Whether or not to build old-style libraries. +build_old_libs=yes + +# The host system. +host_alias="i586-pc-linux-gnu" +host="i586-pc-linux-gnu" + +# The archiver. +AR='ar' + +# The linker used to build libraries. +LD='ld' + +# How to create reloadable object files. +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' + +# How to pass a linker flag through the compiler. +wl='-Wl,' + +# Additional compiler flags for building library objects. +pic_flag=' -fPIC' + +# Compiler flag to prevent dynamic linking. +link_static_flag='-static' + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag='${wl}-export-dynamic' + +# Pattern to match compiler flags for creating libNAME_p libraries: +profile_flag_pattern='-pg?' + +# Library versioning type. +version_type=sunos + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec='$libname.so.$versuffix' + +# The coded name of the library, if different from the real name. +soname_spec='' + +# Commands used to build and install an old-style archive. +RANLIB='ranlib' +old_archive_cmds='$AR cru $oldlib$oldobjs;$RANLIB $oldlib' +old_postinstall_cmds='chmod 644 $oldlib;$RANLIB $oldlib' + +# Commands used to build and install a shared archive. +archive_cmds='$cc -shared ${wl}-soname $wl$soname -o $lib$libobjs$deplibs' +postinstall_cmds='' + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag='' + +# Commands used to finish a libtool library installation in a directory. +finish_cmds='' + +# How to strip a library file. +striplib='' +old_striplib='' + +# This is the shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# This is the shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist. +hardcode_libdir_flag_spec='${wl}-rpath $wl$libdir' + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator='' + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=no + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=no + +# Set to yes if using RUNPATH_VAR=DIR during linking hardcodes DIR into the +# resulting binary. +hardcode_runpath_var=yes + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=unsupported + +# Find the path to this script. +thisdir=`echo "$0" | sed -e 's%/[^/]*$%%'` +test "X$0" = "X$thisdir" && thisdir=. + +# Execute the libtool backend. +. $thisdir/./ltmain.sh +exit 1 diff -u --recursive --new-file gimp-0.99.10/plug-ins/CEL.c gimp-0.99.pre11/plug-ins/CEL.c --- gimp-0.99.10/plug-ins/CEL.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/CEL.c Thu Aug 14 00:57:13 1997 @@ -0,0 +1,331 @@ +/* cel.c -- KISS CEL file format plug-in for The GIMP + * (copyright) 1997 Nick Lamb (njl195@ecs.soton.ac.uk) + * + * Skeleton cloned from Michael Sweet's PNG plug-in. KISS format courtesy + * of the KISS/GS documentation. Problem reports to the above address + */ + +/* History: + * 0.1 Very limited functionality (modern 4bit only) + * 0.2 Default palette (nice yellows) is automatically used + * 0.3 Support for the older (pre KISS/GS) cell format + * 0.4 First support for saving images + * Future additions: + * + Automagically or via dialog box choose a KCF palette + * + Save (perhaps optionally?) the palette in a KCF + * + Support offsets -- like GIF? + */ + +#include +#include +#include + +#include +#include + +#define VERSION "0.4" + +static void query(void); +static void run(char *name, int nparams, GParam *param, + int *nreturn_vals, GParam **return_vals); +static gint32 load_image(char *file, char *brief); +static gint save_image(char *file, char *brief, + gint32 image, gint32 layer); + +/* Globals... */ + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +/* Let GIMP library handle initialisation (and inquisitive users) */ + +int main(int argc, char *argv[]) { + return (gimp_main(argc, argv)); +} + +/* GIMP queries plug-in for parameters etc. */ + +static void query(void) { + static GParamDef load_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_STRING, "filename", "The name of the file to load" }, + { PARAM_STRING, "raw_filename", "The name of the file to load" }, + }; + + static GParamDef load_return_vals[] = + { + { PARAM_IMAGE, "image", "Output image" }, + }; + static int nload_args = sizeof (load_args) / sizeof (load_args[0]); + static int nload_return_vals = sizeof (load_return_vals) / sizeof (load_return_vals[0]); + static GParamDef save_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Drawable to save" }, + { PARAM_STRING, "filename", "The name of the file to save the image in" }, + { PARAM_STRING, "raw_filename", "The name of the file to save the image in" }, + }; + static int nsave_args = sizeof (save_args) / sizeof (save_args[0]); + + + gimp_install_procedure("file_cel_load", + "Loads files in KISS CEL file format", + "This plug-in loads individual KISS cell files.", + "Nick Lamb", "Nick Lamb", VERSION, + "/CEL", NULL, PROC_PLUG_IN, + nload_args, nload_return_vals, load_args, load_return_vals); + + gimp_register_magic_load_handler("file_cel_load", "cel", + "", "0,string,KiSS"); + + gimp_install_procedure("file_cel_save", + "Saves files in KISS CEL file format", + "This plug-in saves individual KISS cell files.", + "Nick Lamb", "Nick Lamb", VERSION, "/CEL", "INDEXED*", + PROC_PLUG_IN, nsave_args, 0, save_args, NULL); + + gimp_register_save_handler("file_cel_save", "cel", ""); +} + +static void run(char *name, int nparams, GParam *param, + int *nreturn_vals, GParam **return_vals) { + + gint32 image; /* image ID after load */ + gint status; /* status after save */ + static GParam values[2]; /* Return values */ + + /* Set up default return values */ + + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_SUCCESS; + + *nreturn_vals = 1; + *return_vals = values; + + if (strcmp(name, "file_cel_load") == 0) { + image = load_image(param[1].data.d_string, param[2].data.d_string); + + if (image != -1) { + *nreturn_vals = 2; + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image; + } else { + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + + } else if (strcmp (name, "file_cel_save") == 0) { + save_image(param[3].data.d_string, param[4].data.d_string, + param[1].data.d_int32, param[2].data.d_int32); + } else { + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } +} + +/* Load CEL image into The GIMP */ + +static gint32 load_image(char *file, char *brief) { + FILE* fp; /* Read file pointer */ + char progress[255]; /* Title for progress display */ + guchar header[32]; /* File header */ + int height, width, /* Dimensions of image */ + colours; /* Number of colours */ + + gint32 image, /* Image */ + layer; /* Layer */ + guchar *palette, /* 24 bit palette */ + *buffer, /* Temporary buffer */ + *line; /* Pixel data */ + GDrawable *drawable; /* Drawable for layer */ + GPixelRgn pixel_rgn; /* Pixel region for layer */ + + int i, j, k; /* Counters */ + + + /* Open the file for reading */ + fp = fopen(file, "r"); + + sprintf(progress, "Loading %s:", brief); + gimp_progress_init(progress); + + /* Get the image dimensions and create the image... */ + + fread(header, 4, 1, fp); + + if (strncmp(header, "KiSS", 4)) { + colours= 16; + width= header[0] + (256 * header[1]); + height= header[2] + (256 * header[3]); + } else { + fread(header, 28, 1, fp); + colours= (1 << header[1]); + width= header[4] + (256 * header[5]); + height= header[6] + (256 * header[7]); + } + + image = gimp_image_new(width, height, INDEXED); + + if (image == -1) { + g_print("Can't allocate new image\n"); + gimp_quit(); + } + + gimp_image_set_filename(image, file); + + palette = g_new(guchar, colours*3); + + /* FIXME Default palette -- hopefully nasty enough to encourage a fix */ + for (i= 1; i < colours; ++i) + palette[i*3+1]= palette[i*3]= i * 256 / colours; + + gimp_image_set_cmap(image, palette, colours); + + /* Create an indexed-alpha layer to hold the image... */ + + layer = gimp_layer_new(image, "Background", width, height, + INDEXEDA_IMAGE, 100, NORMAL_MODE); + gimp_image_add_layer(image, layer, 0); + + /* Get the drawable and set the pixel region for our load... */ + + drawable = gimp_drawable_get(layer); + + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, + drawable->height, TRUE, FALSE); + + /* Read the image in and give it to the GIMP a line at a time */ + + buffer = g_new(guchar, width); + line = g_new(guchar, (width+1) * 2); + + for (i = 0; i < height; ++i) { + + switch (colours) { + case 16: + fread(buffer, (width+1)/2, 1, fp); + for (j = 0, k = 0; j < width*2; j+= 4, ++k) { + line[j]= buffer[k] / 16; + line[j+1]= line[j] ? 255 : 0; + line[j+2]= buffer[k] & 15; + line[j+3]= line[j+2] ? 255 : 0; + } + break; + case 256: + fread(buffer, width, 1, fp); + for (j = 0, k = 0; j < width*2; j+= 2, ++k) { + line[j]= buffer[k]; + line[j+1]= line[j] ? 255 : 0; + } + break; + } + + gimp_pixel_rgn_set_rect(&pixel_rgn, line, 0, i, drawable->width, 1); + gimp_progress_update((float) i / (float) height); + } + + /* Close files, give back allocated memory */ + + fclose(fp); + free(buffer); + free(line); + free(palette); + + /* Now get everything redrawn and hand back the finished image */ + + gimp_drawable_flush(drawable); + gimp_drawable_detach(drawable); + + return (image); +} + +static gint save_image(char *file, char *brief, gint32 image, gint32 layer) { + FILE* fp; /* Write file pointer */ + char progress[255]; /* Title for progress display */ + guchar header[32]; /* File header */ + gint colours, type; /* Number of colours, type of layer */ + + guchar *palette, /* 24 bit palette */ + *buffer, /* Temporary buffer */ + *line; /* Pixel data */ + GDrawable *drawable; /* Drawable for layer */ + GPixelRgn pixel_rgn; /* Pixel region for layer */ + + int i, j, k; /* Counters */ + + /* Check that this is an indexed image, fail otherwise */ + type= gimp_drawable_type(layer); + if (type != INDEXED_IMAGE && type != INDEXEDA_IMAGE) { + g_print("GIMP tried to save a non-indexed image as CEL.\n"); + return FALSE; + } + + drawable = gimp_drawable_get(layer); + + /* Open the file for writing */ + fp = fopen(file, "w"); + + sprintf(progress, "Saving %s:", brief); + gimp_progress_init(progress); + + /* Headers */ + bzero(header, 32); + strcpy(header, "KiSS"); + header[4]= 0x20; + + /* Work out whether to save as 8bit or 4bit */ + gimp_image_get_cmap(image, &colours); + if (colours > 16) { + header[5]= 8; + } else { + header[5]= 4; + } + + /* Fill in the blanks ... */ + header[8]= drawable->width % 256; + header[9]= drawable->width / 256; + header[10]= drawable->height % 256; + header[11]= drawable->height / 256; + fwrite(header, 32, 1, fp); + + /* Arrange for memory etc. */ + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, + drawable->height, TRUE, FALSE); + buffer = g_new(guchar, drawable->width); + line = g_new(guchar, (drawable->width+1) * 2); + + /* Get the image from the GIMP one line at a time and write it out */ + for (i = 0; i < drawable->height; ++i) { + gimp_pixel_rgn_get_rect(&pixel_rgn, line, 0, i, drawable->width, 1); + + switch (colours) { + case 16: + for (j = 0, k = 0; j < drawable->width*2; j+= 4, ++k) { + buffer[k]= 16 * (line[j+1] ? line[j] : 0) + + (line[j+3] ? line[j+2] : 0); + } + fwrite(buffer, (drawable->width+1)/2, 1, fp); + break; + case 256: + for (j = 0, k = 0; j < drawable->width*2; j+= 2, ++k) { + buffer[k]= line[j+1] ? line[j] : 0; + } + fwrite(buffer, drawable->width, 1, fp); + break; + } + + gimp_progress_update((float) i / (float) drawable->height); + } + + /* Close files, give back allocated memory */ + fclose(fp); + free(buffer); + free(line); + + return TRUE; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/CML_explorer.c gimp-0.99.pre11/plug-ins/CML_explorer.c --- gimp-0.99.10/plug-ins/CML_explorer.c Fri Jun 6 02:03:50 1997 +++ gimp-0.99.pre11/plug-ins/CML_explorer.c Wed Aug 13 20:31:35 1997 @@ -1,9 +1,10 @@ -/* CML_explorer.c -- This is a plug-in for the GIMP 1.0 - * Author: Shuji Narazaki - * Time-stamp: <1997/05/26 22:20:29 narazaki@InetQ.or.jp> - * Version: 1.0.2 +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis * + * CML_explorer.c -- This is a plug-in for the GIMP 1.0 + * Time-stamp: <1997/06/08 21:15:58 narazaki@InetQ.or.jp> * Copyright (C) 1997 Shuji Narazaki + * Version: 1.0.6 * * 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 @@ -21,7 +22,7 @@ * * Comment: * CML is the abbreviation of Coupled-Map Lattice that is a model of - * complex systems, proposed by a physicist. + * complex systems, proposed by a physicist[1,2]. * * Similar models are summaried as follows: * @@ -34,7 +35,14 @@ * Thus time is rather continuous than discrete. * Yes, this change to model changes the output completely.) * - * Web search engines tell you more details:) + * References: + * 1. Kunihiko Kaneko, Period-doubling of kind-antikink patterns, + * quasi-periodicity in antiferro-like structures and spatial + * intermittency in coupled map lattices -- Toward a prelude to a + * "field theory of chaos", Prog. Theor. Phys. 72 (1984) 480. + * + * 2. Kunihiko Kaneko ed., Theory and Applications of Coupled Map + * Lattices (Wiley, 1993). * * About Parameter File: * I assume that the possible longest line in CMP parameter file is 1023. @@ -56,11 +64,14 @@ * This version contains patches from: * Tim Mooney * Sean P Cier + * David Mosberger-Tang + * Michael Sweet * */ #include "gtk/gtk.h" #include "libgimp/gimp.h" +#include #include #include #include @@ -463,8 +474,7 @@ gimp_install_procedure (PLUG_IN_NAME, "Make an image of Coupled-Map Lattice", - "Make an image of Coupled-Map Lattice (CML). CML is a kind of Cellula Automata on continuous (value) domain. -In RUN_NONINTERACTIVE, the name of a prameter file is passed as the 4th arg. You can control CML_explorer via parameter file.", + "Make an image of Coupled-Map Lattice (CML). CML is a kind of Cellula Automata on continuous (value) domain. In RUN_NONINTERACTIVE, the name of a prameter file is passed as the 4th arg. You can control CML_explorer via parameter file.", /* Or do you want to call me with over 50 args? */ "Shuji Narazaki (narazaki@InetQ.or.jp)", "Shuji Narazaki", @@ -1292,7 +1302,8 @@ argv = g_new (gchar *, 1); argv[0] = g_strdup (PLUG_IN_NAME); gtk_init (&argc, &argv); - + gtk_rc_parse (gimp_gtkrc ()); + dlg = gtkW_dialog_new ("Coupled-Map-Lattice Explorer", (GtkSignalFunc) OK_CALLBACK, (GtkSignalFunc) gtkW_close_callback); @@ -2708,6 +2719,7 @@ argv = g_new (gchar *, 1); argv[0] = g_strdup (PLUG_IN_NAME); gtk_init (&argc, &argv); + gtk_rc_parse (gimp_gtkrc ()); } dlg = gtkW_message_dialog_new (PLUG_IN_NAME); diff -u --recursive --new-file gimp-0.99.10/plug-ins/Makefile gimp-0.99.pre11/plug-ins/Makefile --- gimp-0.99.10/plug-ins/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/Makefile Thu Aug 14 01:40:59 1997 @@ -0,0 +1,1568 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gimp +pkglibdir = $(libdir)/gimp +pkgincludedir = $(includedir)/gimp + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBJPEG_INC = +LIBJPEG_LIB = +LIBPNG_INC = +LIBPNG_LIB = +LIBTIFF_INC = +LIBTIFF_LIB = +LIBTOOL = $(top_builddir)/libtool +LN_S = ln -s +MAKEINFO = makeinfo +PACKAGE = gimp +RANLIB = ranlib +VERSION = 0.99.10 +gimpdatadir = ${prefix}/share/gimp/0.99.10 +gimpdir = .gimp +gimpplugindir = ${exec_prefix}/lib/gimp/0.99.10 + +SUBDIRS = dgimp script-fu + +# These 3 variables are declared here so that Automake doesn't +# give warnings. The "include" directive that follows them +# includes the gtk+ configuration file which contains the +# actual definitions of the 3 variables. +X_CFLAGS = +X_LDFLAGS = +X_LIBS = + +GTK_XCONFIG = $(top_builddir)/gtk+/gtk+.xconfig + +scriptdata = + +pluginlibdir = $(gimpplugindir)/plug-ins + +EXTRA_DIST = README.ifscompose build.in fits.txt xcompose.txt + +pluginlib_PROGRAMS = \ + CML_explorer \ + apply_lens \ + autocrop \ + autostretch_hsv \ + blinds \ + blur \ + bmp \ + bumpmap \ + c_astretch \ + CEL \ + checkerboard \ + compose \ + convmatrix \ + cubism \ + decompose \ + deinterlace \ + depthmerge \ + despeckle \ + diffraction \ + displace \ + edge \ + emboss \ + exchange \ + faxg3 \ + figures \ + film \ + fits \ + fp \ + gauss_iir \ + gauss_rle \ + gbr \ + gicon \ + gif \ + gradmap \ + grid \ + gz \ + header \ + holes \ + hot \ + hrz \ + ifscompose \ + jpeg \ + laplace \ + magiceye \ + mail \ + maze \ + mosaic \ + nlfilt \ + noisify \ + normalize \ + nova \ + oilify \ + pat \ + pcx \ + pix \ + pixelize \ + plasma \ + png \ + pnm \ + print \ + ps \ + randomize \ + ripple \ + sharpen \ + shift \ + sinus \ + snoise \ + snp \ + sobel \ + sparkle \ + spread \ + stereogram \ + sunras \ + tga \ + tiff \ + tile \ + tileit \ + universal \ + url \ + video \ + vinvert \ + waves \ + whirlpinch \ + xpm \ + xwd \ + zealouscrop + +bmp_SOURCES = bmp.c bmp.h bmpread.c bmpwrite.c +deinterlace_SOURCES = deinterlace.c megawidget.c megawidget.h +emboss_SOURCES = emboss.c megawidget.c megawidget.h +faxg3_SOURCES = faxg3.c g3.c g3.h run_tbl.c +fits_SOURCES = fits.c fitsrw.c fitsrw.h +fp_SOURCES = fp.c fp.h fp_gdk.c fp_gtk.c fp_hsv.c fp_hsv.h fp_misc.c +hot_SOURCES = hot.c megawidget.c megawidget.h +ifscompose_SOURCES = ifscompose.c ifscompose.h ifscompose_utils.c +magiceye_SOURCES = magiceye.c magiceye.h dialog.c +mosaic_SOURCES = mosaic.c mosaic_logo.h +nlfilt_SOURCES = nlfilt.c megawidget.c megawidget.h +print_SOURCES = print.c print.h print-util.c print-ps.c print-pcl.c print-escp2.c +sinus_SOURCES = sinus.c sinus_logo.h megawidget.c megawidget.h +waves_SOURCES = waves.c megawidget.c megawidget.h + +INCLUDES = \ + $(X_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/gtk+ \ + -I$(top_srcdir)/gtk+/glib \ + -I/usr/local/include + +x_LDADD = \ + $(X_LDFLAGS) \ + $(X_LIBS) + +pre_LDADD = \ + -L/usr/local/lib \ + $(top_builddir)/libgimp/libgimp.la \ + $(top_builddir)/gtk+/gtk/libgtk.la \ + $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/libgimp/libgimpui.la \ + $(top_builddir)/gtk+/glib/libglib.la + +post_LDADD = \ + -lc \ + -lm + +LIBGIMPUI = $(top_builddir)/libgimp/libgimpui.la +LDADD = $(pre_LDADD) $(x_LDADD) $(post_LDADD) + +CML_explorer_LDADD = $(LIBGIMPUI) $(LDADD) +bumpmap_LDADD = $(LIBGIMPUI) $(LDADD) +displace_LDADD = $(LIBGIMPUI) $(LDADD) +jpeg_LDADD = $(pre_LDADD) $(x_LDADD) -ljpeg $(post_LDADD) +png_LDADD = $(pre_LDADD) $(x_LDADD) -lpng -lz $(post_LDADD) +tiff_LDADD = $(pre_LDADD) $(x_LDADD) -ltiff -ljpeg -lz $(post_LDADD) +video_LDADD = $(LDADD) +xpm_LDADD = -lXpm $(LDADD) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = build +PROGRAMS = $(pluginlib_PROGRAMS) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.. +CPPFLAGS = +LDFLAGS = +LIBS = +CML_explorer_SOURCES = CML_explorer.c +CML_explorer_OBJECTS = CML_explorer.o +CML_explorer_DEPENDENCIES = $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/libgimp/libgimp.la $(top_builddir)/gtk+/gtk/libgtk.la \ +$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +CML_explorer_LDFLAGS = +apply_lens_SOURCES = apply_lens.c +apply_lens_OBJECTS = apply_lens.o +apply_lens_LDADD = $(LDADD) +apply_lens_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +apply_lens_LDFLAGS = +autocrop_SOURCES = autocrop.c +autocrop_OBJECTS = autocrop.o +autocrop_LDADD = $(LDADD) +autocrop_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +autocrop_LDFLAGS = +autostretch_hsv_SOURCES = autostretch_hsv.c +autostretch_hsv_OBJECTS = autostretch_hsv.o +autostretch_hsv_LDADD = $(LDADD) +autostretch_hsv_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +autostretch_hsv_LDFLAGS = +blinds_SOURCES = blinds.c +blinds_OBJECTS = blinds.o +blinds_LDADD = $(LDADD) +blinds_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +blinds_LDFLAGS = +blur_SOURCES = blur.c +blur_OBJECTS = blur.o +blur_LDADD = $(LDADD) +blur_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +blur_LDFLAGS = +bmp_OBJECTS = bmp.o bmpread.o bmpwrite.o +bmp_LDADD = $(LDADD) +bmp_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +bmp_LDFLAGS = +bumpmap_SOURCES = bumpmap.c +bumpmap_OBJECTS = bumpmap.o +bumpmap_DEPENDENCIES = $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/libgimp/libgimp.la $(top_builddir)/gtk+/gtk/libgtk.la \ +$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +bumpmap_LDFLAGS = +c_astretch_SOURCES = c_astretch.c +c_astretch_OBJECTS = c_astretch.o +c_astretch_LDADD = $(LDADD) +c_astretch_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +c_astretch_LDFLAGS = +CEL_SOURCES = CEL.c +CEL_OBJECTS = CEL.o +CEL_LDADD = $(LDADD) +CEL_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +CEL_LDFLAGS = +checkerboard_SOURCES = checkerboard.c +checkerboard_OBJECTS = checkerboard.o +checkerboard_LDADD = $(LDADD) +checkerboard_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +checkerboard_LDFLAGS = +compose_SOURCES = compose.c +compose_OBJECTS = compose.o +compose_LDADD = $(LDADD) +compose_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +compose_LDFLAGS = +convmatrix_SOURCES = convmatrix.c +convmatrix_OBJECTS = convmatrix.o +convmatrix_LDADD = $(LDADD) +convmatrix_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +convmatrix_LDFLAGS = +cubism_SOURCES = cubism.c +cubism_OBJECTS = cubism.o +cubism_LDADD = $(LDADD) +cubism_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +cubism_LDFLAGS = +decompose_SOURCES = decompose.c +decompose_OBJECTS = decompose.o +decompose_LDADD = $(LDADD) +decompose_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +decompose_LDFLAGS = +deinterlace_OBJECTS = deinterlace.o megawidget.o +deinterlace_LDADD = $(LDADD) +deinterlace_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +deinterlace_LDFLAGS = +depthmerge_SOURCES = depthmerge.c +depthmerge_OBJECTS = depthmerge.o +depthmerge_LDADD = $(LDADD) +depthmerge_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +depthmerge_LDFLAGS = +despeckle_SOURCES = despeckle.c +despeckle_OBJECTS = despeckle.o +despeckle_LDADD = $(LDADD) +despeckle_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +despeckle_LDFLAGS = +diffraction_SOURCES = diffraction.c +diffraction_OBJECTS = diffraction.o +diffraction_LDADD = $(LDADD) +diffraction_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +diffraction_LDFLAGS = +displace_SOURCES = displace.c +displace_OBJECTS = displace.o +displace_DEPENDENCIES = $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/libgimp/libgimp.la $(top_builddir)/gtk+/gtk/libgtk.la \ +$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +displace_LDFLAGS = +edge_SOURCES = edge.c +edge_OBJECTS = edge.o +edge_LDADD = $(LDADD) +edge_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +edge_LDFLAGS = +emboss_OBJECTS = emboss.o megawidget.o +emboss_LDADD = $(LDADD) +emboss_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +emboss_LDFLAGS = +exchange_SOURCES = exchange.c +exchange_OBJECTS = exchange.o +exchange_LDADD = $(LDADD) +exchange_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +exchange_LDFLAGS = +faxg3_OBJECTS = faxg3.o g3.o run_tbl.o +faxg3_LDADD = $(LDADD) +faxg3_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +faxg3_LDFLAGS = +figures_SOURCES = figures.c +figures_OBJECTS = figures.o +figures_LDADD = $(LDADD) +figures_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +figures_LDFLAGS = +film_SOURCES = film.c +film_OBJECTS = film.o +film_LDADD = $(LDADD) +film_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +film_LDFLAGS = +fits_OBJECTS = fits.o fitsrw.o +fits_LDADD = $(LDADD) +fits_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +fits_LDFLAGS = +fp_OBJECTS = fp.o fp_gdk.o fp_gtk.o fp_hsv.o fp_misc.o +fp_LDADD = $(LDADD) +fp_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +fp_LDFLAGS = +gauss_iir_SOURCES = gauss_iir.c +gauss_iir_OBJECTS = gauss_iir.o +gauss_iir_LDADD = $(LDADD) +gauss_iir_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +gauss_iir_LDFLAGS = +gauss_rle_SOURCES = gauss_rle.c +gauss_rle_OBJECTS = gauss_rle.o +gauss_rle_LDADD = $(LDADD) +gauss_rle_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +gauss_rle_LDFLAGS = +gbr_SOURCES = gbr.c +gbr_OBJECTS = gbr.o +gbr_LDADD = $(LDADD) +gbr_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +gbr_LDFLAGS = +gicon_SOURCES = gicon.c +gicon_OBJECTS = gicon.o +gicon_LDADD = $(LDADD) +gicon_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +gicon_LDFLAGS = +gif_SOURCES = gif.c +gif_OBJECTS = gif.o +gif_LDADD = $(LDADD) +gif_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +gif_LDFLAGS = +gradmap_SOURCES = gradmap.c +gradmap_OBJECTS = gradmap.o +gradmap_LDADD = $(LDADD) +gradmap_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +gradmap_LDFLAGS = +grid_SOURCES = grid.c +grid_OBJECTS = grid.o +grid_LDADD = $(LDADD) +grid_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +grid_LDFLAGS = +gz_SOURCES = gz.c +gz_OBJECTS = gz.o +gz_LDADD = $(LDADD) +gz_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +gz_LDFLAGS = +header_SOURCES = header.c +header_OBJECTS = header.o +header_LDADD = $(LDADD) +header_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +header_LDFLAGS = +holes_SOURCES = holes.c +holes_OBJECTS = holes.o +holes_LDADD = $(LDADD) +holes_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +holes_LDFLAGS = +hot_OBJECTS = hot.o megawidget.o +hot_LDADD = $(LDADD) +hot_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +hot_LDFLAGS = +hrz_SOURCES = hrz.c +hrz_OBJECTS = hrz.o +hrz_LDADD = $(LDADD) +hrz_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +hrz_LDFLAGS = +ifscompose_OBJECTS = ifscompose.o ifscompose_utils.o +ifscompose_LDADD = $(LDADD) +ifscompose_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +ifscompose_LDFLAGS = +jpeg_SOURCES = jpeg.c +jpeg_OBJECTS = jpeg.o +jpeg_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +jpeg_LDFLAGS = +laplace_SOURCES = laplace.c +laplace_OBJECTS = laplace.o +laplace_LDADD = $(LDADD) +laplace_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +laplace_LDFLAGS = +magiceye_OBJECTS = magiceye.o dialog.o +magiceye_LDADD = $(LDADD) +magiceye_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +magiceye_LDFLAGS = +mail_SOURCES = mail.c +mail_OBJECTS = mail.o +mail_LDADD = $(LDADD) +mail_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +mail_LDFLAGS = +maze_SOURCES = maze.c +maze_OBJECTS = maze.o +maze_LDADD = $(LDADD) +maze_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +maze_LDFLAGS = +mosaic_OBJECTS = mosaic.o +mosaic_LDADD = $(LDADD) +mosaic_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +mosaic_LDFLAGS = +nlfilt_OBJECTS = nlfilt.o megawidget.o +nlfilt_LDADD = $(LDADD) +nlfilt_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +nlfilt_LDFLAGS = +noisify_SOURCES = noisify.c +noisify_OBJECTS = noisify.o +noisify_LDADD = $(LDADD) +noisify_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +noisify_LDFLAGS = +normalize_SOURCES = normalize.c +normalize_OBJECTS = normalize.o +normalize_LDADD = $(LDADD) +normalize_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +normalize_LDFLAGS = +nova_SOURCES = nova.c +nova_OBJECTS = nova.o +nova_LDADD = $(LDADD) +nova_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +nova_LDFLAGS = +oilify_SOURCES = oilify.c +oilify_OBJECTS = oilify.o +oilify_LDADD = $(LDADD) +oilify_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +oilify_LDFLAGS = +pat_SOURCES = pat.c +pat_OBJECTS = pat.o +pat_LDADD = $(LDADD) +pat_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +pat_LDFLAGS = +pcx_SOURCES = pcx.c +pcx_OBJECTS = pcx.o +pcx_LDADD = $(LDADD) +pcx_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +pcx_LDFLAGS = +pix_SOURCES = pix.c +pix_OBJECTS = pix.o +pix_LDADD = $(LDADD) +pix_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +pix_LDFLAGS = +pixelize_SOURCES = pixelize.c +pixelize_OBJECTS = pixelize.o +pixelize_LDADD = $(LDADD) +pixelize_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +pixelize_LDFLAGS = +plasma_SOURCES = plasma.c +plasma_OBJECTS = plasma.o +plasma_LDADD = $(LDADD) +plasma_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +plasma_LDFLAGS = +png_SOURCES = png.c +png_OBJECTS = png.o +png_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +png_LDFLAGS = +pnm_SOURCES = pnm.c +pnm_OBJECTS = pnm.o +pnm_LDADD = $(LDADD) +pnm_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +pnm_LDFLAGS = +print_OBJECTS = print.o print-util.o print-ps.o print-pcl.o \ +print-escp2.o +print_LDADD = $(LDADD) +print_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +print_LDFLAGS = +ps_SOURCES = ps.c +ps_OBJECTS = ps.o +ps_LDADD = $(LDADD) +ps_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +ps_LDFLAGS = +randomize_SOURCES = randomize.c +randomize_OBJECTS = randomize.o +randomize_LDADD = $(LDADD) +randomize_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +randomize_LDFLAGS = +ripple_SOURCES = ripple.c +ripple_OBJECTS = ripple.o +ripple_LDADD = $(LDADD) +ripple_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +ripple_LDFLAGS = +sharpen_SOURCES = sharpen.c +sharpen_OBJECTS = sharpen.o +sharpen_LDADD = $(LDADD) +sharpen_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +sharpen_LDFLAGS = +shift_SOURCES = shift.c +shift_OBJECTS = shift.o +shift_LDADD = $(LDADD) +shift_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +shift_LDFLAGS = +sinus_OBJECTS = sinus.o megawidget.o +sinus_LDADD = $(LDADD) +sinus_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +sinus_LDFLAGS = +snoise_SOURCES = snoise.c +snoise_OBJECTS = snoise.o +snoise_LDADD = $(LDADD) +snoise_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +snoise_LDFLAGS = +snp_SOURCES = snp.c +snp_OBJECTS = snp.o +snp_LDADD = $(LDADD) +snp_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +snp_LDFLAGS = +sobel_SOURCES = sobel.c +sobel_OBJECTS = sobel.o +sobel_LDADD = $(LDADD) +sobel_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +sobel_LDFLAGS = +sparkle_SOURCES = sparkle.c +sparkle_OBJECTS = sparkle.o +sparkle_LDADD = $(LDADD) +sparkle_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +sparkle_LDFLAGS = +spread_SOURCES = spread.c +spread_OBJECTS = spread.o +spread_LDADD = $(LDADD) +spread_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +spread_LDFLAGS = +stereogram_SOURCES = stereogram.c +stereogram_OBJECTS = stereogram.o +stereogram_LDADD = $(LDADD) +stereogram_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +stereogram_LDFLAGS = +sunras_SOURCES = sunras.c +sunras_OBJECTS = sunras.o +sunras_LDADD = $(LDADD) +sunras_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +sunras_LDFLAGS = +tga_SOURCES = tga.c +tga_OBJECTS = tga.o +tga_LDADD = $(LDADD) +tga_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +tga_LDFLAGS = +tiff_SOURCES = tiff.c +tiff_OBJECTS = tiff.o +tiff_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +tiff_LDFLAGS = +tile_SOURCES = tile.c +tile_OBJECTS = tile.o +tile_LDADD = $(LDADD) +tile_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +tile_LDFLAGS = +tileit_SOURCES = tileit.c +tileit_OBJECTS = tileit.o +tileit_LDADD = $(LDADD) +tileit_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +tileit_LDFLAGS = +universal_SOURCES = universal.c +universal_OBJECTS = universal.o +universal_LDADD = $(LDADD) +universal_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +universal_LDFLAGS = +url_SOURCES = url.c +url_OBJECTS = url.o +url_LDADD = $(LDADD) +url_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +url_LDFLAGS = +video_SOURCES = video.c +video_OBJECTS = video.o +video_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +video_LDFLAGS = +vinvert_SOURCES = vinvert.c +vinvert_OBJECTS = vinvert.o +vinvert_LDADD = $(LDADD) +vinvert_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +vinvert_LDFLAGS = +waves_OBJECTS = waves.o megawidget.o +waves_LDADD = $(LDADD) +waves_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +waves_LDFLAGS = +whirlpinch_SOURCES = whirlpinch.c +whirlpinch_OBJECTS = whirlpinch.o +whirlpinch_LDADD = $(LDADD) +whirlpinch_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +whirlpinch_LDFLAGS = +xpm_SOURCES = xpm.c +xpm_OBJECTS = xpm.o +xpm_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +xpm_LDFLAGS = +xwd_SOURCES = xwd.c +xwd_OBJECTS = xwd.o +xwd_LDADD = $(LDADD) +xwd_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +xwd_LDFLAGS = +zealouscrop_SOURCES = zealouscrop.c +zealouscrop_OBJECTS = zealouscrop.o +zealouscrop_LDADD = $(LDADD) +zealouscrop_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +zealouscrop_LDFLAGS = +CFLAGS = -g -O2 -Wall +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = Makefile.am Makefile.in build.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +DEP_FILES = .deps/CEL.P .deps/CML_explorer.P .deps/apply_lens.P \ +.deps/autocrop.P .deps/autostretch_hsv.P .deps/blinds.P .deps/blur.P \ +.deps/bmp.P .deps/bmpread.P .deps/bmpwrite.P .deps/bumpmap.P \ +.deps/c_astretch.P .deps/checkerboard.P .deps/compose.P \ +.deps/convmatrix.P .deps/cubism.P .deps/decompose.P .deps/deinterlace.P \ +.deps/depthmerge.P .deps/despeckle.P .deps/dialog.P .deps/diffraction.P \ +.deps/displace.P .deps/edge.P .deps/emboss.P .deps/exchange.P \ +.deps/faxg3.P .deps/figures.P .deps/film.P .deps/fits.P .deps/fitsrw.P \ +.deps/fp.P .deps/fp_gdk.P .deps/fp_gtk.P .deps/fp_hsv.P .deps/fp_misc.P \ +.deps/g3.P .deps/gauss_iir.P .deps/gauss_rle.P .deps/gbr.P \ +.deps/gicon.P .deps/gif.P .deps/gradmap.P .deps/grid.P .deps/gz.P \ +.deps/header.P .deps/holes.P .deps/hot.P .deps/hrz.P .deps/ifscompose.P \ +.deps/ifscompose_utils.P .deps/jpeg.P .deps/laplace.P .deps/magiceye.P \ +.deps/mail.P .deps/maze.P .deps/megawidget.P .deps/mosaic.P \ +.deps/nlfilt.P .deps/noisify.P .deps/normalize.P .deps/nova.P \ +.deps/oilify.P .deps/pat.P .deps/pcx.P .deps/pix.P .deps/pixelize.P \ +.deps/plasma.P .deps/png.P .deps/pnm.P .deps/print-escp2.P \ +.deps/print-pcl.P .deps/print-ps.P .deps/print-util.P .deps/print.P \ +.deps/ps.P .deps/randomize.P .deps/ripple.P .deps/run_tbl.P \ +.deps/sharpen.P .deps/shift.P .deps/sinus.P .deps/snoise.P .deps/snp.P \ +.deps/sobel.P .deps/sparkle.P .deps/spread.P .deps/stereogram.P \ +.deps/sunras.P .deps/tga.P .deps/tiff.P .deps/tile.P .deps/tileit.P \ +.deps/universal.P .deps/url.P .deps/video.P .deps/vinvert.P \ +.deps/waves.P .deps/whirlpinch.P .deps/xpm.P .deps/xwd.P \ +.deps/zealouscrop.P +SOURCES = CML_explorer.c apply_lens.c autocrop.c autostretch_hsv.c blinds.c blur.c $(bmp_SOURCES) bumpmap.c c_astretch.c CEL.c checkerboard.c compose.c convmatrix.c cubism.c decompose.c $(deinterlace_SOURCES) depthmerge.c despeckle.c diffraction.c displace.c edge.c $(emboss_SOURCES) exchange.c $(faxg3_SOURCES) figures.c film.c $(fits_SOURCES) $(fp_SOURCES) gauss_iir.c gauss_rle.c gbr.c gicon.c gif.c gradmap.c grid.c gz.c header.c holes.c $(hot_SOURCES) hrz.c $(ifscompose_SOURCES) jpeg.c laplace.c $(magiceye_SOURCES) mail.c maze.c $(mosaic_SOURCES) $(nlfilt_SOURCES) noisify.c normalize.c nova.c oilify.c pat.c pcx.c pix.c pixelize.c plasma.c png.c pnm.c $(print_SOURCES) ps.c randomize.c ripple.c sharpen.c shift.c $(sinus_SOURCES) snoise.c snp.c sobel.c sparkle.c spread.c stereogram.c sunras.c tga.c tiff.c tile.c tileit.c universal.c url.c video.c vinvert.c $(waves_SOURCES) whirlpinch.c xpm.c xwd.c zealouscrop.c +OBJECTS = CML_explorer.o apply_lens.o autocrop.o autostretch_hsv.o blinds.o blur.o $(bmp_OBJECTS) bumpmap.o c_astretch.o CEL.o checkerboard.o compose.o convmatrix.o cubism.o decompose.o $(deinterlace_OBJECTS) depthmerge.o despeckle.o diffraction.o displace.o edge.o $(emboss_OBJECTS) exchange.o $(faxg3_OBJECTS) figures.o film.o $(fits_OBJECTS) $(fp_OBJECTS) gauss_iir.o gauss_rle.o gbr.o gicon.o gif.o gradmap.o grid.o gz.o header.o holes.o $(hot_OBJECTS) hrz.o $(ifscompose_OBJECTS) jpeg.o laplace.o $(magiceye_OBJECTS) mail.o maze.o $(mosaic_OBJECTS) $(nlfilt_OBJECTS) noisify.o normalize.o nova.o oilify.o pat.o pcx.o pix.o pixelize.o plasma.o png.o pnm.o $(print_OBJECTS) ps.o randomize.o ripple.o sharpen.o shift.o $(sinus_OBJECTS) snoise.o snp.o sobel.o sparkle.o spread.o stereogram.o sunras.o tga.o tiff.o tile.o tileit.o universal.o url.o video.o vinvert.o $(waves_OBJECTS) whirlpinch.o xpm.o xwd.o zealouscrop.o + +default: all + +.SUFFIXES: +.SUFFIXES: .c .lo .o +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu plug-ins/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +build: $(top_builddir)/config.status build.in + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status + +mostlyclean-pluginlibPROGRAMS: + +clean-pluginlibPROGRAMS: + test -z "$(pluginlib_PROGRAMS)" || rm -f $(pluginlib_PROGRAMS) + +distclean-pluginlibPROGRAMS: + +maintainer-clean-pluginlibPROGRAMS: + +install-pluginlibPROGRAMS: $(pluginlib_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(pluginlibdir) + @list='$(pluginlib_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(pluginlibdir)/`echo $$p|sed '$(transform)'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(pluginlibdir)/`echo $$p|sed '$(transform)'`; \ + else :; fi; \ + done + +uninstall-pluginlibPROGRAMS: + $(NORMAL_UNINSTALL) + list='$(pluginlib_PROGRAMS)'; for p in $$list; do \ + rm -f $(pluginlibdir)/`echo $$p|sed '$(transform)'`; \ + done + +.c.o: + $(COMPILE) -c $< + +mostlyclean-compile: + rm -f *.o core + +clean-compile: + +distclean-compile: + rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + rm -f *.lo + +clean-libtool: + rm -rf .libs + +distclean-libtool: + +maintainer-clean-libtool: + +CML_explorer: $(CML_explorer_OBJECTS) $(CML_explorer_DEPENDENCIES) + @rm -f CML_explorer + $(LINK) $(CML_explorer_LDFLAGS) $(CML_explorer_OBJECTS) $(CML_explorer_LDADD) $(LIBS) + +apply_lens: $(apply_lens_OBJECTS) $(apply_lens_DEPENDENCIES) + @rm -f apply_lens + $(LINK) $(apply_lens_LDFLAGS) $(apply_lens_OBJECTS) $(apply_lens_LDADD) $(LIBS) + +autocrop: $(autocrop_OBJECTS) $(autocrop_DEPENDENCIES) + @rm -f autocrop + $(LINK) $(autocrop_LDFLAGS) $(autocrop_OBJECTS) $(autocrop_LDADD) $(LIBS) + +autostretch_hsv: $(autostretch_hsv_OBJECTS) $(autostretch_hsv_DEPENDENCIES) + @rm -f autostretch_hsv + $(LINK) $(autostretch_hsv_LDFLAGS) $(autostretch_hsv_OBJECTS) $(autostretch_hsv_LDADD) $(LIBS) + +blinds: $(blinds_OBJECTS) $(blinds_DEPENDENCIES) + @rm -f blinds + $(LINK) $(blinds_LDFLAGS) $(blinds_OBJECTS) $(blinds_LDADD) $(LIBS) + +blur: $(blur_OBJECTS) $(blur_DEPENDENCIES) + @rm -f blur + $(LINK) $(blur_LDFLAGS) $(blur_OBJECTS) $(blur_LDADD) $(LIBS) + +bmp: $(bmp_OBJECTS) $(bmp_DEPENDENCIES) + @rm -f bmp + $(LINK) $(bmp_LDFLAGS) $(bmp_OBJECTS) $(bmp_LDADD) $(LIBS) + +bumpmap: $(bumpmap_OBJECTS) $(bumpmap_DEPENDENCIES) + @rm -f bumpmap + $(LINK) $(bumpmap_LDFLAGS) $(bumpmap_OBJECTS) $(bumpmap_LDADD) $(LIBS) + +c_astretch: $(c_astretch_OBJECTS) $(c_astretch_DEPENDENCIES) + @rm -f c_astretch + $(LINK) $(c_astretch_LDFLAGS) $(c_astretch_OBJECTS) $(c_astretch_LDADD) $(LIBS) + +CEL: $(CEL_OBJECTS) $(CEL_DEPENDENCIES) + @rm -f CEL + $(LINK) $(CEL_LDFLAGS) $(CEL_OBJECTS) $(CEL_LDADD) $(LIBS) + +checkerboard: $(checkerboard_OBJECTS) $(checkerboard_DEPENDENCIES) + @rm -f checkerboard + $(LINK) $(checkerboard_LDFLAGS) $(checkerboard_OBJECTS) $(checkerboard_LDADD) $(LIBS) + +compose: $(compose_OBJECTS) $(compose_DEPENDENCIES) + @rm -f compose + $(LINK) $(compose_LDFLAGS) $(compose_OBJECTS) $(compose_LDADD) $(LIBS) + +convmatrix: $(convmatrix_OBJECTS) $(convmatrix_DEPENDENCIES) + @rm -f convmatrix + $(LINK) $(convmatrix_LDFLAGS) $(convmatrix_OBJECTS) $(convmatrix_LDADD) $(LIBS) + +cubism: $(cubism_OBJECTS) $(cubism_DEPENDENCIES) + @rm -f cubism + $(LINK) $(cubism_LDFLAGS) $(cubism_OBJECTS) $(cubism_LDADD) $(LIBS) + +decompose: $(decompose_OBJECTS) $(decompose_DEPENDENCIES) + @rm -f decompose + $(LINK) $(decompose_LDFLAGS) $(decompose_OBJECTS) $(decompose_LDADD) $(LIBS) + +deinterlace: $(deinterlace_OBJECTS) $(deinterlace_DEPENDENCIES) + @rm -f deinterlace + $(LINK) $(deinterlace_LDFLAGS) $(deinterlace_OBJECTS) $(deinterlace_LDADD) $(LIBS) + +depthmerge: $(depthmerge_OBJECTS) $(depthmerge_DEPENDENCIES) + @rm -f depthmerge + $(LINK) $(depthmerge_LDFLAGS) $(depthmerge_OBJECTS) $(depthmerge_LDADD) $(LIBS) + +despeckle: $(despeckle_OBJECTS) $(despeckle_DEPENDENCIES) + @rm -f despeckle + $(LINK) $(despeckle_LDFLAGS) $(despeckle_OBJECTS) $(despeckle_LDADD) $(LIBS) + +diffraction: $(diffraction_OBJECTS) $(diffraction_DEPENDENCIES) + @rm -f diffraction + $(LINK) $(diffraction_LDFLAGS) $(diffraction_OBJECTS) $(diffraction_LDADD) $(LIBS) + +displace: $(displace_OBJECTS) $(displace_DEPENDENCIES) + @rm -f displace + $(LINK) $(displace_LDFLAGS) $(displace_OBJECTS) $(displace_LDADD) $(LIBS) + +edge: $(edge_OBJECTS) $(edge_DEPENDENCIES) + @rm -f edge + $(LINK) $(edge_LDFLAGS) $(edge_OBJECTS) $(edge_LDADD) $(LIBS) + +emboss: $(emboss_OBJECTS) $(emboss_DEPENDENCIES) + @rm -f emboss + $(LINK) $(emboss_LDFLAGS) $(emboss_OBJECTS) $(emboss_LDADD) $(LIBS) + +exchange: $(exchange_OBJECTS) $(exchange_DEPENDENCIES) + @rm -f exchange + $(LINK) $(exchange_LDFLAGS) $(exchange_OBJECTS) $(exchange_LDADD) $(LIBS) + +faxg3: $(faxg3_OBJECTS) $(faxg3_DEPENDENCIES) + @rm -f faxg3 + $(LINK) $(faxg3_LDFLAGS) $(faxg3_OBJECTS) $(faxg3_LDADD) $(LIBS) + +figures: $(figures_OBJECTS) $(figures_DEPENDENCIES) + @rm -f figures + $(LINK) $(figures_LDFLAGS) $(figures_OBJECTS) $(figures_LDADD) $(LIBS) + +film: $(film_OBJECTS) $(film_DEPENDENCIES) + @rm -f film + $(LINK) $(film_LDFLAGS) $(film_OBJECTS) $(film_LDADD) $(LIBS) + +fits: $(fits_OBJECTS) $(fits_DEPENDENCIES) + @rm -f fits + $(LINK) $(fits_LDFLAGS) $(fits_OBJECTS) $(fits_LDADD) $(LIBS) + +fp: $(fp_OBJECTS) $(fp_DEPENDENCIES) + @rm -f fp + $(LINK) $(fp_LDFLAGS) $(fp_OBJECTS) $(fp_LDADD) $(LIBS) + +gauss_iir: $(gauss_iir_OBJECTS) $(gauss_iir_DEPENDENCIES) + @rm -f gauss_iir + $(LINK) $(gauss_iir_LDFLAGS) $(gauss_iir_OBJECTS) $(gauss_iir_LDADD) $(LIBS) + +gauss_rle: $(gauss_rle_OBJECTS) $(gauss_rle_DEPENDENCIES) + @rm -f gauss_rle + $(LINK) $(gauss_rle_LDFLAGS) $(gauss_rle_OBJECTS) $(gauss_rle_LDADD) $(LIBS) + +gbr: $(gbr_OBJECTS) $(gbr_DEPENDENCIES) + @rm -f gbr + $(LINK) $(gbr_LDFLAGS) $(gbr_OBJECTS) $(gbr_LDADD) $(LIBS) + +gicon: $(gicon_OBJECTS) $(gicon_DEPENDENCIES) + @rm -f gicon + $(LINK) $(gicon_LDFLAGS) $(gicon_OBJECTS) $(gicon_LDADD) $(LIBS) + +gif: $(gif_OBJECTS) $(gif_DEPENDENCIES) + @rm -f gif + $(LINK) $(gif_LDFLAGS) $(gif_OBJECTS) $(gif_LDADD) $(LIBS) + +gradmap: $(gradmap_OBJECTS) $(gradmap_DEPENDENCIES) + @rm -f gradmap + $(LINK) $(gradmap_LDFLAGS) $(gradmap_OBJECTS) $(gradmap_LDADD) $(LIBS) + +grid: $(grid_OBJECTS) $(grid_DEPENDENCIES) + @rm -f grid + $(LINK) $(grid_LDFLAGS) $(grid_OBJECTS) $(grid_LDADD) $(LIBS) + +gz: $(gz_OBJECTS) $(gz_DEPENDENCIES) + @rm -f gz + $(LINK) $(gz_LDFLAGS) $(gz_OBJECTS) $(gz_LDADD) $(LIBS) + +header: $(header_OBJECTS) $(header_DEPENDENCIES) + @rm -f header + $(LINK) $(header_LDFLAGS) $(header_OBJECTS) $(header_LDADD) $(LIBS) + +holes: $(holes_OBJECTS) $(holes_DEPENDENCIES) + @rm -f holes + $(LINK) $(holes_LDFLAGS) $(holes_OBJECTS) $(holes_LDADD) $(LIBS) + +hot: $(hot_OBJECTS) $(hot_DEPENDENCIES) + @rm -f hot + $(LINK) $(hot_LDFLAGS) $(hot_OBJECTS) $(hot_LDADD) $(LIBS) + +hrz: $(hrz_OBJECTS) $(hrz_DEPENDENCIES) + @rm -f hrz + $(LINK) $(hrz_LDFLAGS) $(hrz_OBJECTS) $(hrz_LDADD) $(LIBS) + +ifscompose: $(ifscompose_OBJECTS) $(ifscompose_DEPENDENCIES) + @rm -f ifscompose + $(LINK) $(ifscompose_LDFLAGS) $(ifscompose_OBJECTS) $(ifscompose_LDADD) $(LIBS) + +jpeg: $(jpeg_OBJECTS) $(jpeg_DEPENDENCIES) + @rm -f jpeg + $(LINK) $(jpeg_LDFLAGS) $(jpeg_OBJECTS) $(jpeg_LDADD) $(LIBS) + +laplace: $(laplace_OBJECTS) $(laplace_DEPENDENCIES) + @rm -f laplace + $(LINK) $(laplace_LDFLAGS) $(laplace_OBJECTS) $(laplace_LDADD) $(LIBS) + +magiceye: $(magiceye_OBJECTS) $(magiceye_DEPENDENCIES) + @rm -f magiceye + $(LINK) $(magiceye_LDFLAGS) $(magiceye_OBJECTS) $(magiceye_LDADD) $(LIBS) + +mail: $(mail_OBJECTS) $(mail_DEPENDENCIES) + @rm -f mail + $(LINK) $(mail_LDFLAGS) $(mail_OBJECTS) $(mail_LDADD) $(LIBS) + +maze: $(maze_OBJECTS) $(maze_DEPENDENCIES) + @rm -f maze + $(LINK) $(maze_LDFLAGS) $(maze_OBJECTS) $(maze_LDADD) $(LIBS) + +mosaic: $(mosaic_OBJECTS) $(mosaic_DEPENDENCIES) + @rm -f mosaic + $(LINK) $(mosaic_LDFLAGS) $(mosaic_OBJECTS) $(mosaic_LDADD) $(LIBS) + +nlfilt: $(nlfilt_OBJECTS) $(nlfilt_DEPENDENCIES) + @rm -f nlfilt + $(LINK) $(nlfilt_LDFLAGS) $(nlfilt_OBJECTS) $(nlfilt_LDADD) $(LIBS) + +noisify: $(noisify_OBJECTS) $(noisify_DEPENDENCIES) + @rm -f noisify + $(LINK) $(noisify_LDFLAGS) $(noisify_OBJECTS) $(noisify_LDADD) $(LIBS) + +normalize: $(normalize_OBJECTS) $(normalize_DEPENDENCIES) + @rm -f normalize + $(LINK) $(normalize_LDFLAGS) $(normalize_OBJECTS) $(normalize_LDADD) $(LIBS) + +nova: $(nova_OBJECTS) $(nova_DEPENDENCIES) + @rm -f nova + $(LINK) $(nova_LDFLAGS) $(nova_OBJECTS) $(nova_LDADD) $(LIBS) + +oilify: $(oilify_OBJECTS) $(oilify_DEPENDENCIES) + @rm -f oilify + $(LINK) $(oilify_LDFLAGS) $(oilify_OBJECTS) $(oilify_LDADD) $(LIBS) + +pat: $(pat_OBJECTS) $(pat_DEPENDENCIES) + @rm -f pat + $(LINK) $(pat_LDFLAGS) $(pat_OBJECTS) $(pat_LDADD) $(LIBS) + +pcx: $(pcx_OBJECTS) $(pcx_DEPENDENCIES) + @rm -f pcx + $(LINK) $(pcx_LDFLAGS) $(pcx_OBJECTS) $(pcx_LDADD) $(LIBS) + +pix: $(pix_OBJECTS) $(pix_DEPENDENCIES) + @rm -f pix + $(LINK) $(pix_LDFLAGS) $(pix_OBJECTS) $(pix_LDADD) $(LIBS) + +pixelize: $(pixelize_OBJECTS) $(pixelize_DEPENDENCIES) + @rm -f pixelize + $(LINK) $(pixelize_LDFLAGS) $(pixelize_OBJECTS) $(pixelize_LDADD) $(LIBS) + +plasma: $(plasma_OBJECTS) $(plasma_DEPENDENCIES) + @rm -f plasma + $(LINK) $(plasma_LDFLAGS) $(plasma_OBJECTS) $(plasma_LDADD) $(LIBS) + +png: $(png_OBJECTS) $(png_DEPENDENCIES) + @rm -f png + $(LINK) $(png_LDFLAGS) $(png_OBJECTS) $(png_LDADD) $(LIBS) + +pnm: $(pnm_OBJECTS) $(pnm_DEPENDENCIES) + @rm -f pnm + $(LINK) $(pnm_LDFLAGS) $(pnm_OBJECTS) $(pnm_LDADD) $(LIBS) + +print: $(print_OBJECTS) $(print_DEPENDENCIES) + @rm -f print + $(LINK) $(print_LDFLAGS) $(print_OBJECTS) $(print_LDADD) $(LIBS) + +ps: $(ps_OBJECTS) $(ps_DEPENDENCIES) + @rm -f ps + $(LINK) $(ps_LDFLAGS) $(ps_OBJECTS) $(ps_LDADD) $(LIBS) + +randomize: $(randomize_OBJECTS) $(randomize_DEPENDENCIES) + @rm -f randomize + $(LINK) $(randomize_LDFLAGS) $(randomize_OBJECTS) $(randomize_LDADD) $(LIBS) + +ripple: $(ripple_OBJECTS) $(ripple_DEPENDENCIES) + @rm -f ripple + $(LINK) $(ripple_LDFLAGS) $(ripple_OBJECTS) $(ripple_LDADD) $(LIBS) + +sharpen: $(sharpen_OBJECTS) $(sharpen_DEPENDENCIES) + @rm -f sharpen + $(LINK) $(sharpen_LDFLAGS) $(sharpen_OBJECTS) $(sharpen_LDADD) $(LIBS) + +shift: $(shift_OBJECTS) $(shift_DEPENDENCIES) + @rm -f shift + $(LINK) $(shift_LDFLAGS) $(shift_OBJECTS) $(shift_LDADD) $(LIBS) + +sinus: $(sinus_OBJECTS) $(sinus_DEPENDENCIES) + @rm -f sinus + $(LINK) $(sinus_LDFLAGS) $(sinus_OBJECTS) $(sinus_LDADD) $(LIBS) + +snoise: $(snoise_OBJECTS) $(snoise_DEPENDENCIES) + @rm -f snoise + $(LINK) $(snoise_LDFLAGS) $(snoise_OBJECTS) $(snoise_LDADD) $(LIBS) + +snp: $(snp_OBJECTS) $(snp_DEPENDENCIES) + @rm -f snp + $(LINK) $(snp_LDFLAGS) $(snp_OBJECTS) $(snp_LDADD) $(LIBS) + +sobel: $(sobel_OBJECTS) $(sobel_DEPENDENCIES) + @rm -f sobel + $(LINK) $(sobel_LDFLAGS) $(sobel_OBJECTS) $(sobel_LDADD) $(LIBS) + +sparkle: $(sparkle_OBJECTS) $(sparkle_DEPENDENCIES) + @rm -f sparkle + $(LINK) $(sparkle_LDFLAGS) $(sparkle_OBJECTS) $(sparkle_LDADD) $(LIBS) + +spread: $(spread_OBJECTS) $(spread_DEPENDENCIES) + @rm -f spread + $(LINK) $(spread_LDFLAGS) $(spread_OBJECTS) $(spread_LDADD) $(LIBS) + +stereogram: $(stereogram_OBJECTS) $(stereogram_DEPENDENCIES) + @rm -f stereogram + $(LINK) $(stereogram_LDFLAGS) $(stereogram_OBJECTS) $(stereogram_LDADD) $(LIBS) + +sunras: $(sunras_OBJECTS) $(sunras_DEPENDENCIES) + @rm -f sunras + $(LINK) $(sunras_LDFLAGS) $(sunras_OBJECTS) $(sunras_LDADD) $(LIBS) + +tga: $(tga_OBJECTS) $(tga_DEPENDENCIES) + @rm -f tga + $(LINK) $(tga_LDFLAGS) $(tga_OBJECTS) $(tga_LDADD) $(LIBS) + +tiff: $(tiff_OBJECTS) $(tiff_DEPENDENCIES) + @rm -f tiff + $(LINK) $(tiff_LDFLAGS) $(tiff_OBJECTS) $(tiff_LDADD) $(LIBS) + +tile: $(tile_OBJECTS) $(tile_DEPENDENCIES) + @rm -f tile + $(LINK) $(tile_LDFLAGS) $(tile_OBJECTS) $(tile_LDADD) $(LIBS) + +tileit: $(tileit_OBJECTS) $(tileit_DEPENDENCIES) + @rm -f tileit + $(LINK) $(tileit_LDFLAGS) $(tileit_OBJECTS) $(tileit_LDADD) $(LIBS) + +universal: $(universal_OBJECTS) $(universal_DEPENDENCIES) + @rm -f universal + $(LINK) $(universal_LDFLAGS) $(universal_OBJECTS) $(universal_LDADD) $(LIBS) + +url: $(url_OBJECTS) $(url_DEPENDENCIES) + @rm -f url + $(LINK) $(url_LDFLAGS) $(url_OBJECTS) $(url_LDADD) $(LIBS) + +video: $(video_OBJECTS) $(video_DEPENDENCIES) + @rm -f video + $(LINK) $(video_LDFLAGS) $(video_OBJECTS) $(video_LDADD) $(LIBS) + +vinvert: $(vinvert_OBJECTS) $(vinvert_DEPENDENCIES) + @rm -f vinvert + $(LINK) $(vinvert_LDFLAGS) $(vinvert_OBJECTS) $(vinvert_LDADD) $(LIBS) + +waves: $(waves_OBJECTS) $(waves_DEPENDENCIES) + @rm -f waves + $(LINK) $(waves_LDFLAGS) $(waves_OBJECTS) $(waves_LDADD) $(LIBS) + +whirlpinch: $(whirlpinch_OBJECTS) $(whirlpinch_DEPENDENCIES) + @rm -f whirlpinch + $(LINK) $(whirlpinch_LDFLAGS) $(whirlpinch_OBJECTS) $(whirlpinch_LDADD) $(LIBS) + +xpm: $(xpm_OBJECTS) $(xpm_DEPENDENCIES) + @rm -f xpm + $(LINK) $(xpm_LDFLAGS) $(xpm_OBJECTS) $(xpm_LDADD) $(LIBS) + +xwd: $(xwd_OBJECTS) $(xwd_DEPENDENCIES) + @rm -f xwd + $(LINK) $(xwd_LDFLAGS) $(xwd_OBJECTS) $(xwd_LDADD) $(LIBS) + +zealouscrop: $(zealouscrop_OBJECTS) $(zealouscrop_DEPENDENCIES) + @rm -f zealouscrop + $(LINK) $(zealouscrop_LDFLAGS) $(zealouscrop_OBJECTS) $(zealouscrop_LDADD) $(LIBS) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + + + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + for subdir in $(SUBDIRS); do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + rev=''; for subdir in $(SUBDIRS); do rev="$$rev $$subdir"; done; \ + for subdir in $$rev; do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir && $(MAKE) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) + here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + done; \ + test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = plug-ins + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu plug-ins/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + for subdir in $(SUBDIRS); do \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + done + +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp +info: info-recursive +dvi: dvi-recursive +check: all-am + $(MAKE) check-recursive +installcheck: installcheck-recursive +all-am: Makefile $(PROGRAMS) + +install-data-am: install-pluginlibPROGRAMS + +uninstall-am: uninstall-pluginlibPROGRAMS + +install-exec: install-exec-recursive + @$(NORMAL_INSTALL) + +install-data: install-data-recursive install-data-am + @$(NORMAL_INSTALL) + +install: install-recursive install-data-am + @: + +uninstall: uninstall-recursive uninstall-am + +all: all-recursive all-am + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: installdirs-recursive + $(mkinstalldirs) $(pluginlibdir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean-am: mostlyclean-pluginlibPROGRAMS mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +clean-am: clean-pluginlibPROGRAMS clean-compile clean-libtool \ + clean-tags clean-depend clean-generic mostlyclean-am + +distclean-am: distclean-pluginlibPROGRAMS distclean-compile \ + distclean-libtool distclean-tags distclean-depend \ + distclean-generic clean-am + +maintainer-clean-am: maintainer-clean-pluginlibPROGRAMS \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean-am + +mostlyclean: mostlyclean-recursive mostlyclean-am + +clean: clean-recursive clean-am + +distclean: distclean-recursive distclean-am + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-recursive maintainer-clean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default mostlyclean-pluginlibPROGRAMS \ +distclean-pluginlibPROGRAMS clean-pluginlibPROGRAMS \ +maintainer-clean-pluginlibPROGRAMS uninstall-pluginlibPROGRAMS \ +install-pluginlibPROGRAMS mostlyclean-compile distclean-compile \ +clean-compile maintainer-clean-compile mostlyclean-libtool \ +distclean-libtool clean-libtool maintainer-clean-libtool \ +install-data-recursive uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck all-am install-data-am \ +uninstall-am install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + +include $(GTK_XCONFIG) + +.PHONY: files + +files: + @files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \ + echo $$p; \ + done + @for subdir in $(SUBDIRS); do \ + files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \ + for file in $$files; do \ + echo $$subdir/$$file; \ + done; \ + done + +$(GTK_XCONFIG): + touch $(GTK_XCONFIG) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/plug-ins/Makefile.am gimp-0.99.pre11/plug-ins/Makefile.am --- gimp-0.99.10/plug-ins/Makefile.am Fri Jun 6 04:14:52 1997 +++ gimp-0.99.pre11/plug-ins/Makefile.am Thu Aug 14 01:07:23 1997 @@ -17,22 +17,35 @@ pluginlibdir = $(gimpplugindir)/plug-ins -EXTRA_DIST = README.ifscompose build.in fits.txt +EXTRA_DIST = README.ifscompose build.in fits.txt xcompose.txt pluginlib_PROGRAMS = \ CML_explorer \ + apply_lens \ autocrop \ + autostretch_hsv \ blinds \ blur \ + bmp \ bumpmap \ c_astretch \ + CEL \ checkerboard \ + compose \ + convmatrix \ cubism \ + decompose \ + deinterlace \ + depthmerge \ + despeckle \ diffraction \ displace \ edge \ emboss \ + exchange \ + faxg3 \ figures \ + film \ fits \ fp \ gauss_iir \ @@ -50,31 +63,43 @@ ifscompose \ jpeg \ laplace \ + magiceye \ + mail \ + maze \ mosaic \ nlfilt \ noisify \ + normalize \ nova \ oilify \ - normalize \ pat \ pcx \ + pix \ pixelize \ plasma \ + png \ pnm \ + print \ ps \ + randomize \ ripple \ + sharpen \ shift \ sinus \ snoise \ + snp \ sobel \ sparkle \ spread \ + stereogram \ sunras \ + tga \ tiff \ tile \ tileit \ - video \ + universal \ url \ + video \ vinvert \ waves \ whirlpinch \ @@ -82,13 +107,18 @@ xwd \ zealouscrop +bmp_SOURCES = bmp.c bmp.h bmpread.c bmpwrite.c +deinterlace_SOURCES = deinterlace.c megawidget.c megawidget.h emboss_SOURCES = emboss.c megawidget.c megawidget.h -fp_SOURCES = fp.c fp.h fp_gdk.c fp_gtk.c fp_hsv.c fp_hsv.h fp_misc.c +faxg3_SOURCES = faxg3.c g3.c g3.h run_tbl.c fits_SOURCES = fits.c fitsrw.c fitsrw.h +fp_SOURCES = fp.c fp.h fp_gdk.c fp_gtk.c fp_hsv.c fp_hsv.h fp_misc.c hot_SOURCES = hot.c megawidget.c megawidget.h ifscompose_SOURCES = ifscompose.c ifscompose.h ifscompose_utils.c -nlfilt_SOURCES = nlfilt.c megawidget.c megawidget.h +magiceye_SOURCES = magiceye.c magiceye.h dialog.c mosaic_SOURCES = mosaic.c mosaic_logo.h +nlfilt_SOURCES = nlfilt.c megawidget.c megawidget.h +print_SOURCES = print.c print.h print-util.c print-ps.c print-pcl.c print-escp2.c sinus_SOURCES = sinus.c sinus_logo.h megawidget.c megawidget.h waves_SOURCES = waves.c megawidget.c megawidget.h @@ -97,7 +127,7 @@ -I$(top_srcdir) \ -I$(top_srcdir)/gtk+ \ -I$(top_srcdir)/gtk+/glib \ - -I/usr/local/include @LIBTIFF_INC@ @LIBJPEG_INC@ + -I/usr/local/include @LIBTIFF_INC@ @LIBJPEG_INC@ @LIBPNG_INC@ x_LDADD = \ $(X_LDFLAGS) \ @@ -108,6 +138,7 @@ $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la \ $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la post_LDADD = \ @@ -121,7 +152,8 @@ bumpmap_LDADD = $(LIBGIMPUI) $(LDADD) displace_LDADD = $(LIBGIMPUI) $(LDADD) jpeg_LDADD = $(pre_LDADD) $(x_LDADD) @LIBJPEG_LIB@ -ljpeg $(post_LDADD) -tiff_LDADD = $(pre_LDADD) $(x_LDADD) @LIBTIFF_LIB@ -ltiff $(post_LDADD) +png_LDADD = $(pre_LDADD) $(x_LDADD) @LIBPNG_LIB@ -lpng -lz $(post_LDADD) +tiff_LDADD = $(pre_LDADD) $(x_LDADD) @LIBTIFF_LIB@ -ltiff -ljpeg -lz $(post_LDADD) video_LDADD = $(LDADD) xpm_LDADD = -lXpm $(LDADD) diff -u --recursive --new-file gimp-0.99.10/plug-ins/Makefile.in gimp-0.99.pre11/plug-ins/Makefile.in --- gimp-0.99.10/plug-ins/Makefile.in Sat Jun 7 00:26:30 1997 +++ gimp-0.99.pre11/plug-ins/Makefile.in Thu Aug 14 01:40:57 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,15 +42,25 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBJPEG_INC = @LIBJPEG_INC@ LIBJPEG_LIB = @LIBJPEG_LIB@ +LIBPNG_INC = @LIBPNG_INC@ +LIBPNG_LIB = @LIBPNG_LIB@ LIBTIFF_INC = @LIBTIFF_INC@ LIBTIFF_LIB = @LIBTIFF_LIB@ LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -74,22 +84,35 @@ pluginlibdir = $(gimpplugindir)/plug-ins -EXTRA_DIST = README.ifscompose build.in fits.txt +EXTRA_DIST = README.ifscompose build.in fits.txt xcompose.txt pluginlib_PROGRAMS = \ CML_explorer \ + apply_lens \ autocrop \ + autostretch_hsv \ blinds \ blur \ + bmp \ bumpmap \ c_astretch \ + CEL \ checkerboard \ + compose \ + convmatrix \ cubism \ + decompose \ + deinterlace \ + depthmerge \ + despeckle \ diffraction \ displace \ edge \ emboss \ + exchange \ + faxg3 \ figures \ + film \ fits \ fp \ gauss_iir \ @@ -107,31 +130,43 @@ ifscompose \ jpeg \ laplace \ + magiceye \ + mail \ + maze \ mosaic \ nlfilt \ noisify \ + normalize \ nova \ oilify \ - normalize \ pat \ pcx \ + pix \ pixelize \ plasma \ + png \ pnm \ + print \ ps \ + randomize \ ripple \ + sharpen \ shift \ sinus \ snoise \ + snp \ sobel \ sparkle \ spread \ + stereogram \ sunras \ + tga \ tiff \ tile \ tileit \ - video \ + universal \ url \ + video \ vinvert \ waves \ whirlpinch \ @@ -139,13 +174,18 @@ xwd \ zealouscrop +bmp_SOURCES = bmp.c bmp.h bmpread.c bmpwrite.c +deinterlace_SOURCES = deinterlace.c megawidget.c megawidget.h emboss_SOURCES = emboss.c megawidget.c megawidget.h -fp_SOURCES = fp.c fp.h fp_gdk.c fp_gtk.c fp_hsv.c fp_hsv.h fp_misc.c +faxg3_SOURCES = faxg3.c g3.c g3.h run_tbl.c fits_SOURCES = fits.c fitsrw.c fitsrw.h +fp_SOURCES = fp.c fp.h fp_gdk.c fp_gtk.c fp_hsv.c fp_hsv.h fp_misc.c hot_SOURCES = hot.c megawidget.c megawidget.h ifscompose_SOURCES = ifscompose.c ifscompose.h ifscompose_utils.c -nlfilt_SOURCES = nlfilt.c megawidget.c megawidget.h +magiceye_SOURCES = magiceye.c magiceye.h dialog.c mosaic_SOURCES = mosaic.c mosaic_logo.h +nlfilt_SOURCES = nlfilt.c megawidget.c megawidget.h +print_SOURCES = print.c print.h print-util.c print-ps.c print-pcl.c print-escp2.c sinus_SOURCES = sinus.c sinus_logo.h megawidget.c megawidget.h waves_SOURCES = waves.c megawidget.c megawidget.h @@ -154,7 +194,7 @@ -I$(top_srcdir) \ -I$(top_srcdir)/gtk+ \ -I$(top_srcdir)/gtk+/glib \ - -I/usr/local/include @LIBTIFF_INC@ @LIBJPEG_INC@ + -I/usr/local/include @LIBTIFF_INC@ @LIBJPEG_INC@ @LIBPNG_INC@ x_LDADD = \ $(X_LDFLAGS) \ @@ -165,6 +205,7 @@ $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la \ $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la post_LDADD = \ @@ -178,7 +219,8 @@ bumpmap_LDADD = $(LIBGIMPUI) $(LDADD) displace_LDADD = $(LIBGIMPUI) $(LDADD) jpeg_LDADD = $(pre_LDADD) $(x_LDADD) @LIBJPEG_LIB@ -ljpeg $(post_LDADD) -tiff_LDADD = $(pre_LDADD) $(x_LDADD) @LIBTIFF_LIB@ -ltiff $(post_LDADD) +png_LDADD = $(pre_LDADD) $(x_LDADD) @LIBPNG_LIB@ -lpng -lz $(post_LDADD) +tiff_LDADD = $(pre_LDADD) $(x_LDADD) @LIBTIFF_LIB@ -ltiff -ljpeg -lz $(post_LDADD) video_LDADD = $(LDADD) xpm_LDADD = -lXpm $(LDADD) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -195,20 +237,39 @@ CML_explorer_OBJECTS = CML_explorer.o CML_explorer_DEPENDENCIES = $(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/libgimp/libgimp.la $(top_builddir)/gtk+/gtk/libgtk.la \ -$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/gtk+/glib/libglib.la +$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la CML_explorer_LDFLAGS = +apply_lens_SOURCES = apply_lens.c +apply_lens_OBJECTS = apply_lens.o +apply_lens_LDADD = $(LDADD) +apply_lens_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +apply_lens_LDFLAGS = autocrop_SOURCES = autocrop.c autocrop_OBJECTS = autocrop.o autocrop_LDADD = $(LDADD) autocrop_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la autocrop_LDFLAGS = +autostretch_hsv_SOURCES = autostretch_hsv.c +autostretch_hsv_OBJECTS = autostretch_hsv.o +autostretch_hsv_LDADD = $(LDADD) +autostretch_hsv_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +autostretch_hsv_LDFLAGS = blinds_SOURCES = blinds.c blinds_OBJECTS = blinds.o blinds_LDADD = $(LDADD) blinds_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la blinds_LDFLAGS = blur_SOURCES = blur.c @@ -216,78 +277,175 @@ blur_LDADD = $(LDADD) blur_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la blur_LDFLAGS = +bmp_OBJECTS = bmp.o bmpread.o bmpwrite.o +bmp_LDADD = $(LDADD) +bmp_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +bmp_LDFLAGS = bumpmap_SOURCES = bumpmap.c bumpmap_OBJECTS = bumpmap.o bumpmap_DEPENDENCIES = $(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/libgimp/libgimp.la $(top_builddir)/gtk+/gtk/libgtk.la \ -$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/gtk+/glib/libglib.la +$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la bumpmap_LDFLAGS = c_astretch_SOURCES = c_astretch.c c_astretch_OBJECTS = c_astretch.o c_astretch_LDADD = $(LDADD) c_astretch_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la c_astretch_LDFLAGS = +CEL_SOURCES = CEL.c +CEL_OBJECTS = CEL.o +CEL_LDADD = $(LDADD) +CEL_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +CEL_LDFLAGS = checkerboard_SOURCES = checkerboard.c checkerboard_OBJECTS = checkerboard.o checkerboard_LDADD = $(LDADD) checkerboard_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la checkerboard_LDFLAGS = +compose_SOURCES = compose.c +compose_OBJECTS = compose.o +compose_LDADD = $(LDADD) +compose_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +compose_LDFLAGS = +convmatrix_SOURCES = convmatrix.c +convmatrix_OBJECTS = convmatrix.o +convmatrix_LDADD = $(LDADD) +convmatrix_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +convmatrix_LDFLAGS = cubism_SOURCES = cubism.c cubism_OBJECTS = cubism.o cubism_LDADD = $(LDADD) cubism_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la cubism_LDFLAGS = +decompose_SOURCES = decompose.c +decompose_OBJECTS = decompose.o +decompose_LDADD = $(LDADD) +decompose_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +decompose_LDFLAGS = +deinterlace_OBJECTS = deinterlace.o megawidget.o +deinterlace_LDADD = $(LDADD) +deinterlace_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +deinterlace_LDFLAGS = +depthmerge_SOURCES = depthmerge.c +depthmerge_OBJECTS = depthmerge.o +depthmerge_LDADD = $(LDADD) +depthmerge_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +depthmerge_LDFLAGS = +despeckle_SOURCES = despeckle.c +despeckle_OBJECTS = despeckle.o +despeckle_LDADD = $(LDADD) +despeckle_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +despeckle_LDFLAGS = diffraction_SOURCES = diffraction.c diffraction_OBJECTS = diffraction.o diffraction_LDADD = $(LDADD) diffraction_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la diffraction_LDFLAGS = displace_SOURCES = displace.c displace_OBJECTS = displace.o displace_DEPENDENCIES = $(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/libgimp/libgimp.la $(top_builddir)/gtk+/gtk/libgtk.la \ -$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/gtk+/glib/libglib.la +$(top_builddir)/gtk+/gdk/libgdk.la $(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la displace_LDFLAGS = edge_SOURCES = edge.c edge_OBJECTS = edge.o edge_LDADD = $(LDADD) edge_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la edge_LDFLAGS = emboss_OBJECTS = emboss.o megawidget.o emboss_LDADD = $(LDADD) emboss_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la emboss_LDFLAGS = +exchange_SOURCES = exchange.c +exchange_OBJECTS = exchange.o +exchange_LDADD = $(LDADD) +exchange_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +exchange_LDFLAGS = +faxg3_OBJECTS = faxg3.o g3.o run_tbl.o +faxg3_LDADD = $(LDADD) +faxg3_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +faxg3_LDFLAGS = figures_SOURCES = figures.c figures_OBJECTS = figures.o figures_LDADD = $(LDADD) figures_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la figures_LDFLAGS = +film_SOURCES = film.c +film_OBJECTS = film.o +film_LDADD = $(LDADD) +film_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +film_LDFLAGS = fits_OBJECTS = fits.o fitsrw.o fits_LDADD = $(LDADD) fits_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la fits_LDFLAGS = fp_OBJECTS = fp.o fp_gdk.o fp_gtk.o fp_hsv.o fp_misc.o fp_LDADD = $(LDADD) fp_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la fp_LDFLAGS = gauss_iir_SOURCES = gauss_iir.c @@ -295,6 +453,7 @@ gauss_iir_LDADD = $(LDADD) gauss_iir_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la gauss_iir_LDFLAGS = gauss_rle_SOURCES = gauss_rle.c @@ -302,6 +461,7 @@ gauss_rle_LDADD = $(LDADD) gauss_rle_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la gauss_rle_LDFLAGS = gbr_SOURCES = gbr.c @@ -309,6 +469,7 @@ gbr_LDADD = $(LDADD) gbr_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la gbr_LDFLAGS = gicon_SOURCES = gicon.c @@ -316,6 +477,7 @@ gicon_LDADD = $(LDADD) gicon_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la gicon_LDFLAGS = gif_SOURCES = gif.c @@ -323,6 +485,7 @@ gif_LDADD = $(LDADD) gif_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la gif_LDFLAGS = gradmap_SOURCES = gradmap.c @@ -330,6 +493,7 @@ gradmap_LDADD = $(LDADD) gradmap_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la gradmap_LDFLAGS = grid_SOURCES = grid.c @@ -337,6 +501,7 @@ grid_LDADD = $(LDADD) grid_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la grid_LDFLAGS = gz_SOURCES = gz.c @@ -344,6 +509,7 @@ gz_LDADD = $(LDADD) gz_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la gz_LDFLAGS = header_SOURCES = header.c @@ -351,6 +517,7 @@ header_LDADD = $(LDADD) header_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la header_LDFLAGS = holes_SOURCES = holes.c @@ -358,12 +525,14 @@ holes_LDADD = $(LDADD) holes_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la holes_LDFLAGS = hot_OBJECTS = hot.o megawidget.o hot_LDADD = $(LDADD) hot_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la hot_LDFLAGS = hrz_SOURCES = hrz.c @@ -371,18 +540,21 @@ hrz_LDADD = $(LDADD) hrz_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la hrz_LDFLAGS = ifscompose_OBJECTS = ifscompose.o ifscompose_utils.o ifscompose_LDADD = $(LDADD) ifscompose_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la ifscompose_LDFLAGS = jpeg_SOURCES = jpeg.c jpeg_OBJECTS = jpeg.o jpeg_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la jpeg_LDFLAGS = laplace_SOURCES = laplace.c @@ -390,18 +562,44 @@ laplace_LDADD = $(LDADD) laplace_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la laplace_LDFLAGS = +magiceye_OBJECTS = magiceye.o dialog.o +magiceye_LDADD = $(LDADD) +magiceye_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +magiceye_LDFLAGS = +mail_SOURCES = mail.c +mail_OBJECTS = mail.o +mail_LDADD = $(LDADD) +mail_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +mail_LDFLAGS = +maze_SOURCES = maze.c +maze_OBJECTS = maze.o +maze_LDADD = $(LDADD) +maze_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +maze_LDFLAGS = mosaic_OBJECTS = mosaic.o mosaic_LDADD = $(LDADD) mosaic_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la mosaic_LDFLAGS = nlfilt_OBJECTS = nlfilt.o megawidget.o nlfilt_LDADD = $(LDADD) nlfilt_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la nlfilt_LDFLAGS = noisify_SOURCES = noisify.c @@ -409,13 +607,23 @@ noisify_LDADD = $(LDADD) noisify_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la noisify_LDFLAGS = +normalize_SOURCES = normalize.c +normalize_OBJECTS = normalize.o +normalize_LDADD = $(LDADD) +normalize_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +normalize_LDFLAGS = nova_SOURCES = nova.c nova_OBJECTS = nova.o nova_LDADD = $(LDADD) nova_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la nova_LDFLAGS = oilify_SOURCES = oilify.c @@ -423,20 +631,15 @@ oilify_LDADD = $(LDADD) oilify_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la oilify_LDFLAGS = -normalize_SOURCES = normalize.c -normalize_OBJECTS = normalize.o -normalize_LDADD = $(LDADD) -normalize_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ -$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ -$(top_builddir)/gtk+/glib/libglib.la -normalize_LDFLAGS = pat_SOURCES = pat.c pat_OBJECTS = pat.o pat_LDADD = $(LDADD) pat_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la pat_LDFLAGS = pcx_SOURCES = pcx.c @@ -444,13 +647,23 @@ pcx_LDADD = $(LDADD) pcx_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la pcx_LDFLAGS = +pix_SOURCES = pix.c +pix_OBJECTS = pix.o +pix_LDADD = $(LDADD) +pix_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +pix_LDFLAGS = pixelize_SOURCES = pixelize.c pixelize_OBJECTS = pixelize.o pixelize_LDADD = $(LDADD) pixelize_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la pixelize_LDFLAGS = plasma_SOURCES = plasma.c @@ -458,40 +671,77 @@ plasma_LDADD = $(LDADD) plasma_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la plasma_LDFLAGS = +png_SOURCES = png.c +png_OBJECTS = png.o +png_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +png_LDFLAGS = pnm_SOURCES = pnm.c pnm_OBJECTS = pnm.o pnm_LDADD = $(LDADD) pnm_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la pnm_LDFLAGS = +print_OBJECTS = print.o print-util.o print-ps.o print-pcl.o \ +print-escp2.o +print_LDADD = $(LDADD) +print_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +print_LDFLAGS = ps_SOURCES = ps.c ps_OBJECTS = ps.o ps_LDADD = $(LDADD) ps_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la ps_LDFLAGS = +randomize_SOURCES = randomize.c +randomize_OBJECTS = randomize.o +randomize_LDADD = $(LDADD) +randomize_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +randomize_LDFLAGS = ripple_SOURCES = ripple.c ripple_OBJECTS = ripple.o ripple_LDADD = $(LDADD) ripple_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la ripple_LDFLAGS = +sharpen_SOURCES = sharpen.c +sharpen_OBJECTS = sharpen.o +sharpen_LDADD = $(LDADD) +sharpen_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +sharpen_LDFLAGS = shift_SOURCES = shift.c shift_OBJECTS = shift.o shift_LDADD = $(LDADD) shift_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la shift_LDFLAGS = sinus_OBJECTS = sinus.o megawidget.o sinus_LDADD = $(LDADD) sinus_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la sinus_LDFLAGS = snoise_SOURCES = snoise.c @@ -499,13 +749,23 @@ snoise_LDADD = $(LDADD) snoise_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la snoise_LDFLAGS = +snp_SOURCES = snp.c +snp_OBJECTS = snp.o +snp_LDADD = $(LDADD) +snp_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +snp_LDFLAGS = sobel_SOURCES = sobel.c sobel_OBJECTS = sobel.o sobel_LDADD = $(LDADD) sobel_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la sobel_LDFLAGS = sparkle_SOURCES = sparkle.c @@ -513,6 +773,7 @@ sparkle_LDADD = $(LDADD) sparkle_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la sparkle_LDFLAGS = spread_SOURCES = spread.c @@ -520,19 +781,38 @@ spread_LDADD = $(LDADD) spread_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la spread_LDFLAGS = +stereogram_SOURCES = stereogram.c +stereogram_OBJECTS = stereogram.o +stereogram_LDADD = $(LDADD) +stereogram_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +stereogram_LDFLAGS = sunras_SOURCES = sunras.c sunras_OBJECTS = sunras.o sunras_LDADD = $(LDADD) sunras_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la sunras_LDFLAGS = +tga_SOURCES = tga.c +tga_OBJECTS = tga.o +tga_LDADD = $(LDADD) +tga_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +tga_LDFLAGS = tiff_SOURCES = tiff.c tiff_OBJECTS = tiff.o tiff_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la tiff_LDFLAGS = tile_SOURCES = tile.c @@ -540,6 +820,7 @@ tile_LDADD = $(LDADD) tile_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la tile_LDFLAGS = tileit_SOURCES = tileit.c @@ -547,32 +828,45 @@ tileit_LDADD = $(LDADD) tileit_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la tileit_LDFLAGS = -video_SOURCES = video.c -video_OBJECTS = video.o -video_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +universal_SOURCES = universal.c +universal_OBJECTS = universal.o +universal_LDADD = $(LDADD) +universal_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la -video_LDFLAGS = +universal_LDFLAGS = url_SOURCES = url.c url_OBJECTS = url.o url_LDADD = $(LDADD) url_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la url_LDFLAGS = +video_SOURCES = video.c +video_OBJECTS = video.o +video_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ +$(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ +$(top_builddir)/gtk+/glib/libglib.la +video_LDFLAGS = vinvert_SOURCES = vinvert.c vinvert_OBJECTS = vinvert.o vinvert_LDADD = $(LDADD) vinvert_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la vinvert_LDFLAGS = waves_OBJECTS = waves.o megawidget.o waves_LDADD = $(LDADD) waves_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la waves_LDFLAGS = whirlpinch_SOURCES = whirlpinch.c @@ -580,12 +874,14 @@ whirlpinch_LDADD = $(LDADD) whirlpinch_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la whirlpinch_LDFLAGS = xpm_SOURCES = xpm.c xpm_OBJECTS = xpm.o xpm_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la xpm_LDFLAGS = xwd_SOURCES = xwd.c @@ -593,6 +889,7 @@ xwd_LDADD = $(LDADD) xwd_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la xwd_LDFLAGS = zealouscrop_SOURCES = zealouscrop.c @@ -600,12 +897,13 @@ zealouscrop_LDADD = $(LDADD) zealouscrop_DEPENDENCIES = $(top_builddir)/libgimp/libgimp.la \ $(top_builddir)/gtk+/gtk/libgtk.la $(top_builddir)/gtk+/gdk/libgdk.la \ +$(top_builddir)/libgimp/libgimpui.la \ $(top_builddir)/gtk+/glib/libglib.la zealouscrop_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = Makefile.am Makefile.in build.in @@ -613,13 +911,38 @@ TAR = tar GZIP = --best -SOURCES = CML_explorer.c autocrop.c blinds.c blur.c bumpmap.c c_astretch.c checkerboard.c cubism.c diffraction.c displace.c edge.c $(emboss_SOURCES) figures.c $(fits_SOURCES) $(fp_SOURCES) gauss_iir.c gauss_rle.c gbr.c gicon.c gif.c gradmap.c grid.c gz.c header.c holes.c $(hot_SOURCES) hrz.c $(ifscompose_SOURCES) jpeg.c laplace.c $(mosaic_SOURCES) $(nlfilt_SOURCES) noisify.c nova.c oilify.c normalize.c pat.c pcx.c pixelize.c plasma.c pnm.c ps.c ripple.c shift.c $(sinus_SOURCES) snoise.c sobel.c sparkle.c spread.c sunras.c tiff.c tile.c tileit.c video.c url.c vinvert.c $(waves_SOURCES) whirlpinch.c xpm.c xwd.c zealouscrop.c -OBJECTS = CML_explorer.o autocrop.o blinds.o blur.o bumpmap.o c_astretch.o checkerboard.o cubism.o diffraction.o displace.o edge.o $(emboss_OBJECTS) figures.o $(fits_OBJECTS) $(fp_OBJECTS) gauss_iir.o gauss_rle.o gbr.o gicon.o gif.o gradmap.o grid.o gz.o header.o holes.o $(hot_OBJECTS) hrz.o $(ifscompose_OBJECTS) jpeg.o laplace.o $(mosaic_OBJECTS) $(nlfilt_OBJECTS) noisify.o nova.o oilify.o normalize.o pat.o pcx.o pixelize.o plasma.o pnm.o ps.o ripple.o shift.o $(sinus_OBJECTS) snoise.o sobel.o sparkle.o spread.o sunras.o tiff.o tile.o tileit.o video.o url.o vinvert.o $(waves_OBJECTS) whirlpinch.o xpm.o xwd.o zealouscrop.o +DEP_FILES = .deps/CEL.P .deps/CML_explorer.P .deps/apply_lens.P \ +.deps/autocrop.P .deps/autostretch_hsv.P .deps/blinds.P .deps/blur.P \ +.deps/bmp.P .deps/bmpread.P .deps/bmpwrite.P .deps/bumpmap.P \ +.deps/c_astretch.P .deps/checkerboard.P .deps/compose.P \ +.deps/convmatrix.P .deps/cubism.P .deps/decompose.P .deps/deinterlace.P \ +.deps/depthmerge.P .deps/despeckle.P .deps/dialog.P .deps/diffraction.P \ +.deps/displace.P .deps/edge.P .deps/emboss.P .deps/exchange.P \ +.deps/faxg3.P .deps/figures.P .deps/film.P .deps/fits.P .deps/fitsrw.P \ +.deps/fp.P .deps/fp_gdk.P .deps/fp_gtk.P .deps/fp_hsv.P .deps/fp_misc.P \ +.deps/g3.P .deps/gauss_iir.P .deps/gauss_rle.P .deps/gbr.P \ +.deps/gicon.P .deps/gif.P .deps/gradmap.P .deps/grid.P .deps/gz.P \ +.deps/header.P .deps/holes.P .deps/hot.P .deps/hrz.P .deps/ifscompose.P \ +.deps/ifscompose_utils.P .deps/jpeg.P .deps/laplace.P .deps/magiceye.P \ +.deps/mail.P .deps/maze.P .deps/megawidget.P .deps/mosaic.P \ +.deps/nlfilt.P .deps/noisify.P .deps/normalize.P .deps/nova.P \ +.deps/oilify.P .deps/pat.P .deps/pcx.P .deps/pix.P .deps/pixelize.P \ +.deps/plasma.P .deps/png.P .deps/pnm.P .deps/print-escp2.P \ +.deps/print-pcl.P .deps/print-ps.P .deps/print-util.P .deps/print.P \ +.deps/ps.P .deps/randomize.P .deps/ripple.P .deps/run_tbl.P \ +.deps/sharpen.P .deps/shift.P .deps/sinus.P .deps/snoise.P .deps/snp.P \ +.deps/sobel.P .deps/sparkle.P .deps/spread.P .deps/stereogram.P \ +.deps/sunras.P .deps/tga.P .deps/tiff.P .deps/tile.P .deps/tileit.P \ +.deps/universal.P .deps/url.P .deps/video.P .deps/vinvert.P \ +.deps/waves.P .deps/whirlpinch.P .deps/xpm.P .deps/xwd.P \ +.deps/zealouscrop.P +SOURCES = CML_explorer.c apply_lens.c autocrop.c autostretch_hsv.c blinds.c blur.c $(bmp_SOURCES) bumpmap.c c_astretch.c CEL.c checkerboard.c compose.c convmatrix.c cubism.c decompose.c $(deinterlace_SOURCES) depthmerge.c despeckle.c diffraction.c displace.c edge.c $(emboss_SOURCES) exchange.c $(faxg3_SOURCES) figures.c film.c $(fits_SOURCES) $(fp_SOURCES) gauss_iir.c gauss_rle.c gbr.c gicon.c gif.c gradmap.c grid.c gz.c header.c holes.c $(hot_SOURCES) hrz.c $(ifscompose_SOURCES) jpeg.c laplace.c $(magiceye_SOURCES) mail.c maze.c $(mosaic_SOURCES) $(nlfilt_SOURCES) noisify.c normalize.c nova.c oilify.c pat.c pcx.c pix.c pixelize.c plasma.c png.c pnm.c $(print_SOURCES) ps.c randomize.c ripple.c sharpen.c shift.c $(sinus_SOURCES) snoise.c snp.c sobel.c sparkle.c spread.c stereogram.c sunras.c tga.c tiff.c tile.c tileit.c universal.c url.c video.c vinvert.c $(waves_SOURCES) whirlpinch.c xpm.c xwd.c zealouscrop.c +OBJECTS = CML_explorer.o apply_lens.o autocrop.o autostretch_hsv.o blinds.o blur.o $(bmp_OBJECTS) bumpmap.o c_astretch.o CEL.o checkerboard.o compose.o convmatrix.o cubism.o decompose.o $(deinterlace_OBJECTS) depthmerge.o despeckle.o diffraction.o displace.o edge.o $(emboss_OBJECTS) exchange.o $(faxg3_OBJECTS) figures.o film.o $(fits_OBJECTS) $(fp_OBJECTS) gauss_iir.o gauss_rle.o gbr.o gicon.o gif.o gradmap.o grid.o gz.o header.o holes.o $(hot_OBJECTS) hrz.o $(ifscompose_OBJECTS) jpeg.o laplace.o $(magiceye_OBJECTS) mail.o maze.o $(mosaic_OBJECTS) $(nlfilt_OBJECTS) noisify.o normalize.o nova.o oilify.o pat.o pcx.o pix.o pixelize.o plasma.o png.o pnm.o $(print_OBJECTS) ps.o randomize.o ripple.o sharpen.o shift.o $(sinus_OBJECTS) snoise.o snp.o sobel.o sparkle.o spread.o stereogram.o sunras.o tga.o tiff.o tile.o tileit.o universal.o url.o video.o vinvert.o $(waves_OBJECTS) whirlpinch.o xpm.o xwd.o zealouscrop.o default: all .SUFFIXES: -.SUFFIXES: .c .o .lo +.SUFFIXES: .c .lo .o $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu plug-ins/Makefile @@ -640,9 +963,9 @@ maintainer-clean-pluginlibPROGRAMS: install-pluginlibPROGRAMS: $(pluginlib_PROGRAMS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(pluginlibdir) - @list="$(pluginlib_PROGRAMS)"; for p in $$list; do \ + @list='$(pluginlib_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(pluginlibdir)/`echo $$p|sed '$(transform)'`"; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(pluginlibdir)/`echo $$p|sed '$(transform)'`; \ @@ -650,7 +973,8 @@ done uninstall-pluginlibPROGRAMS: - list="$(pluginlib_PROGRAMS)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(pluginlib_PROGRAMS)'; for p in $$list; do \ rm -f $(pluginlibdir)/`echo $$p|sed '$(transform)'`; \ done @@ -679,249 +1003,349 @@ distclean-libtool: maintainer-clean-libtool: -$(CML_explorer_OBJECTS): ../config.h CML_explorer: $(CML_explorer_OBJECTS) $(CML_explorer_DEPENDENCIES) + @rm -f CML_explorer $(LINK) $(CML_explorer_LDFLAGS) $(CML_explorer_OBJECTS) $(CML_explorer_LDADD) $(LIBS) -$(autocrop_OBJECTS): ../config.h + +apply_lens: $(apply_lens_OBJECTS) $(apply_lens_DEPENDENCIES) + @rm -f apply_lens + $(LINK) $(apply_lens_LDFLAGS) $(apply_lens_OBJECTS) $(apply_lens_LDADD) $(LIBS) autocrop: $(autocrop_OBJECTS) $(autocrop_DEPENDENCIES) + @rm -f autocrop $(LINK) $(autocrop_LDFLAGS) $(autocrop_OBJECTS) $(autocrop_LDADD) $(LIBS) -$(blinds_OBJECTS): ../config.h + +autostretch_hsv: $(autostretch_hsv_OBJECTS) $(autostretch_hsv_DEPENDENCIES) + @rm -f autostretch_hsv + $(LINK) $(autostretch_hsv_LDFLAGS) $(autostretch_hsv_OBJECTS) $(autostretch_hsv_LDADD) $(LIBS) blinds: $(blinds_OBJECTS) $(blinds_DEPENDENCIES) + @rm -f blinds $(LINK) $(blinds_LDFLAGS) $(blinds_OBJECTS) $(blinds_LDADD) $(LIBS) -$(blur_OBJECTS): ../config.h blur: $(blur_OBJECTS) $(blur_DEPENDENCIES) + @rm -f blur $(LINK) $(blur_LDFLAGS) $(blur_OBJECTS) $(blur_LDADD) $(LIBS) -$(bumpmap_OBJECTS): ../config.h + +bmp: $(bmp_OBJECTS) $(bmp_DEPENDENCIES) + @rm -f bmp + $(LINK) $(bmp_LDFLAGS) $(bmp_OBJECTS) $(bmp_LDADD) $(LIBS) bumpmap: $(bumpmap_OBJECTS) $(bumpmap_DEPENDENCIES) + @rm -f bumpmap $(LINK) $(bumpmap_LDFLAGS) $(bumpmap_OBJECTS) $(bumpmap_LDADD) $(LIBS) -$(c_astretch_OBJECTS): ../config.h c_astretch: $(c_astretch_OBJECTS) $(c_astretch_DEPENDENCIES) + @rm -f c_astretch $(LINK) $(c_astretch_LDFLAGS) $(c_astretch_OBJECTS) $(c_astretch_LDADD) $(LIBS) -$(checkerboard_OBJECTS): ../config.h + +CEL: $(CEL_OBJECTS) $(CEL_DEPENDENCIES) + @rm -f CEL + $(LINK) $(CEL_LDFLAGS) $(CEL_OBJECTS) $(CEL_LDADD) $(LIBS) checkerboard: $(checkerboard_OBJECTS) $(checkerboard_DEPENDENCIES) + @rm -f checkerboard $(LINK) $(checkerboard_LDFLAGS) $(checkerboard_OBJECTS) $(checkerboard_LDADD) $(LIBS) -$(cubism_OBJECTS): ../config.h + +compose: $(compose_OBJECTS) $(compose_DEPENDENCIES) + @rm -f compose + $(LINK) $(compose_LDFLAGS) $(compose_OBJECTS) $(compose_LDADD) $(LIBS) + +convmatrix: $(convmatrix_OBJECTS) $(convmatrix_DEPENDENCIES) + @rm -f convmatrix + $(LINK) $(convmatrix_LDFLAGS) $(convmatrix_OBJECTS) $(convmatrix_LDADD) $(LIBS) cubism: $(cubism_OBJECTS) $(cubism_DEPENDENCIES) + @rm -f cubism $(LINK) $(cubism_LDFLAGS) $(cubism_OBJECTS) $(cubism_LDADD) $(LIBS) -$(diffraction_OBJECTS): ../config.h + +decompose: $(decompose_OBJECTS) $(decompose_DEPENDENCIES) + @rm -f decompose + $(LINK) $(decompose_LDFLAGS) $(decompose_OBJECTS) $(decompose_LDADD) $(LIBS) + +deinterlace: $(deinterlace_OBJECTS) $(deinterlace_DEPENDENCIES) + @rm -f deinterlace + $(LINK) $(deinterlace_LDFLAGS) $(deinterlace_OBJECTS) $(deinterlace_LDADD) $(LIBS) + +depthmerge: $(depthmerge_OBJECTS) $(depthmerge_DEPENDENCIES) + @rm -f depthmerge + $(LINK) $(depthmerge_LDFLAGS) $(depthmerge_OBJECTS) $(depthmerge_LDADD) $(LIBS) + +despeckle: $(despeckle_OBJECTS) $(despeckle_DEPENDENCIES) + @rm -f despeckle + $(LINK) $(despeckle_LDFLAGS) $(despeckle_OBJECTS) $(despeckle_LDADD) $(LIBS) diffraction: $(diffraction_OBJECTS) $(diffraction_DEPENDENCIES) + @rm -f diffraction $(LINK) $(diffraction_LDFLAGS) $(diffraction_OBJECTS) $(diffraction_LDADD) $(LIBS) -$(displace_OBJECTS): ../config.h displace: $(displace_OBJECTS) $(displace_DEPENDENCIES) + @rm -f displace $(LINK) $(displace_LDFLAGS) $(displace_OBJECTS) $(displace_LDADD) $(LIBS) -$(edge_OBJECTS): ../config.h edge: $(edge_OBJECTS) $(edge_DEPENDENCIES) + @rm -f edge $(LINK) $(edge_LDFLAGS) $(edge_OBJECTS) $(edge_LDADD) $(LIBS) -$(emboss_OBJECTS): ../config.h emboss: $(emboss_OBJECTS) $(emboss_DEPENDENCIES) + @rm -f emboss $(LINK) $(emboss_LDFLAGS) $(emboss_OBJECTS) $(emboss_LDADD) $(LIBS) -$(figures_OBJECTS): ../config.h + +exchange: $(exchange_OBJECTS) $(exchange_DEPENDENCIES) + @rm -f exchange + $(LINK) $(exchange_LDFLAGS) $(exchange_OBJECTS) $(exchange_LDADD) $(LIBS) + +faxg3: $(faxg3_OBJECTS) $(faxg3_DEPENDENCIES) + @rm -f faxg3 + $(LINK) $(faxg3_LDFLAGS) $(faxg3_OBJECTS) $(faxg3_LDADD) $(LIBS) figures: $(figures_OBJECTS) $(figures_DEPENDENCIES) + @rm -f figures $(LINK) $(figures_LDFLAGS) $(figures_OBJECTS) $(figures_LDADD) $(LIBS) -$(fits_OBJECTS): ../config.h + +film: $(film_OBJECTS) $(film_DEPENDENCIES) + @rm -f film + $(LINK) $(film_LDFLAGS) $(film_OBJECTS) $(film_LDADD) $(LIBS) fits: $(fits_OBJECTS) $(fits_DEPENDENCIES) + @rm -f fits $(LINK) $(fits_LDFLAGS) $(fits_OBJECTS) $(fits_LDADD) $(LIBS) -$(fp_OBJECTS): ../config.h fp: $(fp_OBJECTS) $(fp_DEPENDENCIES) + @rm -f fp $(LINK) $(fp_LDFLAGS) $(fp_OBJECTS) $(fp_LDADD) $(LIBS) -$(gauss_iir_OBJECTS): ../config.h gauss_iir: $(gauss_iir_OBJECTS) $(gauss_iir_DEPENDENCIES) + @rm -f gauss_iir $(LINK) $(gauss_iir_LDFLAGS) $(gauss_iir_OBJECTS) $(gauss_iir_LDADD) $(LIBS) -$(gauss_rle_OBJECTS): ../config.h gauss_rle: $(gauss_rle_OBJECTS) $(gauss_rle_DEPENDENCIES) + @rm -f gauss_rle $(LINK) $(gauss_rle_LDFLAGS) $(gauss_rle_OBJECTS) $(gauss_rle_LDADD) $(LIBS) -$(gbr_OBJECTS): ../config.h gbr: $(gbr_OBJECTS) $(gbr_DEPENDENCIES) + @rm -f gbr $(LINK) $(gbr_LDFLAGS) $(gbr_OBJECTS) $(gbr_LDADD) $(LIBS) -$(gicon_OBJECTS): ../config.h gicon: $(gicon_OBJECTS) $(gicon_DEPENDENCIES) + @rm -f gicon $(LINK) $(gicon_LDFLAGS) $(gicon_OBJECTS) $(gicon_LDADD) $(LIBS) -$(gif_OBJECTS): ../config.h gif: $(gif_OBJECTS) $(gif_DEPENDENCIES) + @rm -f gif $(LINK) $(gif_LDFLAGS) $(gif_OBJECTS) $(gif_LDADD) $(LIBS) -$(gradmap_OBJECTS): ../config.h gradmap: $(gradmap_OBJECTS) $(gradmap_DEPENDENCIES) + @rm -f gradmap $(LINK) $(gradmap_LDFLAGS) $(gradmap_OBJECTS) $(gradmap_LDADD) $(LIBS) -$(grid_OBJECTS): ../config.h grid: $(grid_OBJECTS) $(grid_DEPENDENCIES) + @rm -f grid $(LINK) $(grid_LDFLAGS) $(grid_OBJECTS) $(grid_LDADD) $(LIBS) -$(gz_OBJECTS): ../config.h gz: $(gz_OBJECTS) $(gz_DEPENDENCIES) + @rm -f gz $(LINK) $(gz_LDFLAGS) $(gz_OBJECTS) $(gz_LDADD) $(LIBS) -$(header_OBJECTS): ../config.h header: $(header_OBJECTS) $(header_DEPENDENCIES) + @rm -f header $(LINK) $(header_LDFLAGS) $(header_OBJECTS) $(header_LDADD) $(LIBS) -$(holes_OBJECTS): ../config.h holes: $(holes_OBJECTS) $(holes_DEPENDENCIES) + @rm -f holes $(LINK) $(holes_LDFLAGS) $(holes_OBJECTS) $(holes_LDADD) $(LIBS) -$(hot_OBJECTS): ../config.h hot: $(hot_OBJECTS) $(hot_DEPENDENCIES) + @rm -f hot $(LINK) $(hot_LDFLAGS) $(hot_OBJECTS) $(hot_LDADD) $(LIBS) -$(hrz_OBJECTS): ../config.h hrz: $(hrz_OBJECTS) $(hrz_DEPENDENCIES) + @rm -f hrz $(LINK) $(hrz_LDFLAGS) $(hrz_OBJECTS) $(hrz_LDADD) $(LIBS) -$(ifscompose_OBJECTS): ../config.h ifscompose: $(ifscompose_OBJECTS) $(ifscompose_DEPENDENCIES) + @rm -f ifscompose $(LINK) $(ifscompose_LDFLAGS) $(ifscompose_OBJECTS) $(ifscompose_LDADD) $(LIBS) -$(jpeg_OBJECTS): ../config.h jpeg: $(jpeg_OBJECTS) $(jpeg_DEPENDENCIES) + @rm -f jpeg $(LINK) $(jpeg_LDFLAGS) $(jpeg_OBJECTS) $(jpeg_LDADD) $(LIBS) -$(laplace_OBJECTS): ../config.h laplace: $(laplace_OBJECTS) $(laplace_DEPENDENCIES) + @rm -f laplace $(LINK) $(laplace_LDFLAGS) $(laplace_OBJECTS) $(laplace_LDADD) $(LIBS) -$(mosaic_OBJECTS): ../config.h + +magiceye: $(magiceye_OBJECTS) $(magiceye_DEPENDENCIES) + @rm -f magiceye + $(LINK) $(magiceye_LDFLAGS) $(magiceye_OBJECTS) $(magiceye_LDADD) $(LIBS) + +mail: $(mail_OBJECTS) $(mail_DEPENDENCIES) + @rm -f mail + $(LINK) $(mail_LDFLAGS) $(mail_OBJECTS) $(mail_LDADD) $(LIBS) + +maze: $(maze_OBJECTS) $(maze_DEPENDENCIES) + @rm -f maze + $(LINK) $(maze_LDFLAGS) $(maze_OBJECTS) $(maze_LDADD) $(LIBS) mosaic: $(mosaic_OBJECTS) $(mosaic_DEPENDENCIES) + @rm -f mosaic $(LINK) $(mosaic_LDFLAGS) $(mosaic_OBJECTS) $(mosaic_LDADD) $(LIBS) -$(nlfilt_OBJECTS): ../config.h nlfilt: $(nlfilt_OBJECTS) $(nlfilt_DEPENDENCIES) + @rm -f nlfilt $(LINK) $(nlfilt_LDFLAGS) $(nlfilt_OBJECTS) $(nlfilt_LDADD) $(LIBS) -$(noisify_OBJECTS): ../config.h noisify: $(noisify_OBJECTS) $(noisify_DEPENDENCIES) + @rm -f noisify $(LINK) $(noisify_LDFLAGS) $(noisify_OBJECTS) $(noisify_LDADD) $(LIBS) -$(nova_OBJECTS): ../config.h + +normalize: $(normalize_OBJECTS) $(normalize_DEPENDENCIES) + @rm -f normalize + $(LINK) $(normalize_LDFLAGS) $(normalize_OBJECTS) $(normalize_LDADD) $(LIBS) nova: $(nova_OBJECTS) $(nova_DEPENDENCIES) + @rm -f nova $(LINK) $(nova_LDFLAGS) $(nova_OBJECTS) $(nova_LDADD) $(LIBS) -$(oilify_OBJECTS): ../config.h oilify: $(oilify_OBJECTS) $(oilify_DEPENDENCIES) + @rm -f oilify $(LINK) $(oilify_LDFLAGS) $(oilify_OBJECTS) $(oilify_LDADD) $(LIBS) -$(normalize_OBJECTS): ../config.h - -normalize: $(normalize_OBJECTS) $(normalize_DEPENDENCIES) - $(LINK) $(normalize_LDFLAGS) $(normalize_OBJECTS) $(normalize_LDADD) $(LIBS) -$(pat_OBJECTS): ../config.h pat: $(pat_OBJECTS) $(pat_DEPENDENCIES) + @rm -f pat $(LINK) $(pat_LDFLAGS) $(pat_OBJECTS) $(pat_LDADD) $(LIBS) -$(pcx_OBJECTS): ../config.h pcx: $(pcx_OBJECTS) $(pcx_DEPENDENCIES) + @rm -f pcx $(LINK) $(pcx_LDFLAGS) $(pcx_OBJECTS) $(pcx_LDADD) $(LIBS) -$(pixelize_OBJECTS): ../config.h + +pix: $(pix_OBJECTS) $(pix_DEPENDENCIES) + @rm -f pix + $(LINK) $(pix_LDFLAGS) $(pix_OBJECTS) $(pix_LDADD) $(LIBS) pixelize: $(pixelize_OBJECTS) $(pixelize_DEPENDENCIES) + @rm -f pixelize $(LINK) $(pixelize_LDFLAGS) $(pixelize_OBJECTS) $(pixelize_LDADD) $(LIBS) -$(plasma_OBJECTS): ../config.h plasma: $(plasma_OBJECTS) $(plasma_DEPENDENCIES) + @rm -f plasma $(LINK) $(plasma_LDFLAGS) $(plasma_OBJECTS) $(plasma_LDADD) $(LIBS) -$(pnm_OBJECTS): ../config.h + +png: $(png_OBJECTS) $(png_DEPENDENCIES) + @rm -f png + $(LINK) $(png_LDFLAGS) $(png_OBJECTS) $(png_LDADD) $(LIBS) pnm: $(pnm_OBJECTS) $(pnm_DEPENDENCIES) + @rm -f pnm $(LINK) $(pnm_LDFLAGS) $(pnm_OBJECTS) $(pnm_LDADD) $(LIBS) -$(ps_OBJECTS): ../config.h + +print: $(print_OBJECTS) $(print_DEPENDENCIES) + @rm -f print + $(LINK) $(print_LDFLAGS) $(print_OBJECTS) $(print_LDADD) $(LIBS) ps: $(ps_OBJECTS) $(ps_DEPENDENCIES) + @rm -f ps $(LINK) $(ps_LDFLAGS) $(ps_OBJECTS) $(ps_LDADD) $(LIBS) -$(ripple_OBJECTS): ../config.h + +randomize: $(randomize_OBJECTS) $(randomize_DEPENDENCIES) + @rm -f randomize + $(LINK) $(randomize_LDFLAGS) $(randomize_OBJECTS) $(randomize_LDADD) $(LIBS) ripple: $(ripple_OBJECTS) $(ripple_DEPENDENCIES) + @rm -f ripple $(LINK) $(ripple_LDFLAGS) $(ripple_OBJECTS) $(ripple_LDADD) $(LIBS) -$(shift_OBJECTS): ../config.h + +sharpen: $(sharpen_OBJECTS) $(sharpen_DEPENDENCIES) + @rm -f sharpen + $(LINK) $(sharpen_LDFLAGS) $(sharpen_OBJECTS) $(sharpen_LDADD) $(LIBS) shift: $(shift_OBJECTS) $(shift_DEPENDENCIES) + @rm -f shift $(LINK) $(shift_LDFLAGS) $(shift_OBJECTS) $(shift_LDADD) $(LIBS) -$(sinus_OBJECTS): ../config.h sinus: $(sinus_OBJECTS) $(sinus_DEPENDENCIES) + @rm -f sinus $(LINK) $(sinus_LDFLAGS) $(sinus_OBJECTS) $(sinus_LDADD) $(LIBS) -$(snoise_OBJECTS): ../config.h snoise: $(snoise_OBJECTS) $(snoise_DEPENDENCIES) + @rm -f snoise $(LINK) $(snoise_LDFLAGS) $(snoise_OBJECTS) $(snoise_LDADD) $(LIBS) -$(sobel_OBJECTS): ../config.h + +snp: $(snp_OBJECTS) $(snp_DEPENDENCIES) + @rm -f snp + $(LINK) $(snp_LDFLAGS) $(snp_OBJECTS) $(snp_LDADD) $(LIBS) sobel: $(sobel_OBJECTS) $(sobel_DEPENDENCIES) + @rm -f sobel $(LINK) $(sobel_LDFLAGS) $(sobel_OBJECTS) $(sobel_LDADD) $(LIBS) -$(sparkle_OBJECTS): ../config.h sparkle: $(sparkle_OBJECTS) $(sparkle_DEPENDENCIES) + @rm -f sparkle $(LINK) $(sparkle_LDFLAGS) $(sparkle_OBJECTS) $(sparkle_LDADD) $(LIBS) -$(spread_OBJECTS): ../config.h spread: $(spread_OBJECTS) $(spread_DEPENDENCIES) + @rm -f spread $(LINK) $(spread_LDFLAGS) $(spread_OBJECTS) $(spread_LDADD) $(LIBS) -$(sunras_OBJECTS): ../config.h + +stereogram: $(stereogram_OBJECTS) $(stereogram_DEPENDENCIES) + @rm -f stereogram + $(LINK) $(stereogram_LDFLAGS) $(stereogram_OBJECTS) $(stereogram_LDADD) $(LIBS) sunras: $(sunras_OBJECTS) $(sunras_DEPENDENCIES) + @rm -f sunras $(LINK) $(sunras_LDFLAGS) $(sunras_OBJECTS) $(sunras_LDADD) $(LIBS) -$(tiff_OBJECTS): ../config.h + +tga: $(tga_OBJECTS) $(tga_DEPENDENCIES) + @rm -f tga + $(LINK) $(tga_LDFLAGS) $(tga_OBJECTS) $(tga_LDADD) $(LIBS) tiff: $(tiff_OBJECTS) $(tiff_DEPENDENCIES) + @rm -f tiff $(LINK) $(tiff_LDFLAGS) $(tiff_OBJECTS) $(tiff_LDADD) $(LIBS) -$(tile_OBJECTS): ../config.h tile: $(tile_OBJECTS) $(tile_DEPENDENCIES) + @rm -f tile $(LINK) $(tile_LDFLAGS) $(tile_OBJECTS) $(tile_LDADD) $(LIBS) -$(tileit_OBJECTS): ../config.h tileit: $(tileit_OBJECTS) $(tileit_DEPENDENCIES) + @rm -f tileit $(LINK) $(tileit_LDFLAGS) $(tileit_OBJECTS) $(tileit_LDADD) $(LIBS) -$(video_OBJECTS): ../config.h -video: $(video_OBJECTS) $(video_DEPENDENCIES) - $(LINK) $(video_LDFLAGS) $(video_OBJECTS) $(video_LDADD) $(LIBS) -$(url_OBJECTS): ../config.h +universal: $(universal_OBJECTS) $(universal_DEPENDENCIES) + @rm -f universal + $(LINK) $(universal_LDFLAGS) $(universal_OBJECTS) $(universal_LDADD) $(LIBS) url: $(url_OBJECTS) $(url_DEPENDENCIES) + @rm -f url $(LINK) $(url_LDFLAGS) $(url_OBJECTS) $(url_LDADD) $(LIBS) -$(vinvert_OBJECTS): ../config.h + +video: $(video_OBJECTS) $(video_DEPENDENCIES) + @rm -f video + $(LINK) $(video_LDFLAGS) $(video_OBJECTS) $(video_LDADD) $(LIBS) vinvert: $(vinvert_OBJECTS) $(vinvert_DEPENDENCIES) + @rm -f vinvert $(LINK) $(vinvert_LDFLAGS) $(vinvert_OBJECTS) $(vinvert_LDADD) $(LIBS) -$(waves_OBJECTS): ../config.h waves: $(waves_OBJECTS) $(waves_DEPENDENCIES) + @rm -f waves $(LINK) $(waves_LDFLAGS) $(waves_OBJECTS) $(waves_LDADD) $(LIBS) -$(whirlpinch_OBJECTS): ../config.h whirlpinch: $(whirlpinch_OBJECTS) $(whirlpinch_DEPENDENCIES) + @rm -f whirlpinch $(LINK) $(whirlpinch_LDFLAGS) $(whirlpinch_OBJECTS) $(whirlpinch_LDADD) $(LIBS) -$(xpm_OBJECTS): ../config.h xpm: $(xpm_OBJECTS) $(xpm_DEPENDENCIES) + @rm -f xpm $(LINK) $(xpm_LDFLAGS) $(xpm_OBJECTS) $(xpm_LDADD) $(LIBS) -$(xwd_OBJECTS): ../config.h xwd: $(xwd_OBJECTS) $(xwd_DEPENDENCIES) + @rm -f xwd $(LINK) $(xwd_LDFLAGS) $(xwd_OBJECTS) $(xwd_LDADD) $(LIBS) -$(zealouscrop_OBJECTS): ../config.h zealouscrop: $(zealouscrop_OBJECTS) $(zealouscrop_DEPENDENCIES) + @rm -f zealouscrop $(LINK) $(zealouscrop_LDFLAGS) $(zealouscrop_OBJECTS) $(zealouscrop_LDADD) $(LIBS) # This directory's subdirectories are mostly independent; you can cd @@ -935,17 +1359,27 @@ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + for subdir in $(SUBDIRS); do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" + mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @for subdir in $(SUBDIRS); do \ + @set fnord $(MAKEFLAGS); amf=$$2; \ + rev=''; for subdir in $(SUBDIRS); do rev="$$rev $$subdir"; done; \ + for subdir in $$rev; do \ target=`echo $@ | sed s/-recursive//`; \ echo "Making $$target in $$subdir"; \ (cd $$subdir && $(MAKE) $$target) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: - list="$(SUBDIRS)"; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ (cd $$subdir && $(MAKE) tags); \ done @@ -957,11 +1391,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ done; \ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -975,7 +1409,12 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = plug-ins + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu plug-ins/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ @@ -986,2322 +1425,52 @@ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ - chmod 755 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) distdir=../$(distdir)/$$subdir distdir) \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ done -CML_explorer.o CML_explorer.lo: CML_explorer.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -autocrop.o autocrop.lo: autocrop.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h -blinds.o blinds.lo: blinds.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -blur.o blur.lo: blur.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -bumpmap.o bumpmap.lo: bumpmap.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h ../libgimp/gimpui.h \ - ../libgimp/gimpmenu.h -c_astretch.o c_astretch.lo: c_astretch.c ../libgimp/gimp.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../libgimp/gimpenums.h -checkerboard.o checkerboard.lo: checkerboard.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -cubism.o cubism.lo: cubism.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -diffraction.o diffraction.lo: diffraction.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -displace.o displace.lo: displace.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h ../libgimp/gimpui.h \ - ../libgimp/gimpmenu.h -edge.o edge.lo: edge.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h ../libgimp/gimpui.h \ - ../libgimp/gimpmenu.h -emboss.o emboss.lo: emboss.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h megawidget.h -figures.o figures.lo: figures.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h -fits.o fits.lo: fits.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h fitsrw.h -fitsrw.o fitsrw.lo: fitsrw.c fitsrw.h -fp.o fp.lo: fp.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h fp.h fp_hsv.h -fp_gdk.o fp_gdk.lo: fp_gdk.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h fp.h fp_hsv.h -fp_gtk.o fp_gtk.lo: fp_gtk.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h fp.h fp_hsv.h -fp_hsv.o fp_hsv.lo: fp_hsv.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -fp_misc.o fp_misc.lo: fp_misc.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h fp.h fp_hsv.h -gauss_iir.o gauss_iir.lo: gauss_iir.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -gauss_rle.o gauss_rle.lo: gauss_rle.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -gbr.o gbr.lo: gbr.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h ../app/brush_header.h -gicon.o gicon.lo: gicon.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -gif.o gif.lo: gif.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -gradmap.o gradmap.lo: gradmap.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -grid.o grid.lo: grid.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h -gz.o gz.lo: gz.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -header.o header.lo: header.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -holes.o holes.lo: holes.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h -hot.o hot.lo: hot.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h megawidget.h -hrz.o hrz.lo: hrz.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -ifscompose.o ifscompose.lo: ifscompose.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h ifscompose.h -ifscompose_utils.o ifscompose_utils.lo: ifscompose_utils.c \ - ../libgimp/gimp.h ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../libgimp/gimpenums.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ifscompose.h -jpeg.o jpeg.lo: jpeg.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -laplace.o laplace.lo: laplace.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -megawidget.o megawidget.lo: megawidget.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h megawidget.h -mosaic.o mosaic.lo: mosaic.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h mosaic_logo.h -nlfilt.o nlfilt.lo: nlfilt.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h megawidget.h -noisify.o noisify.lo: noisify.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -normalize.o normalize.lo: normalize.c ../libgimp/gimp.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../libgimp/gimpenums.h -nova.o nova.lo: nova.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -oilify.o oilify.lo: oilify.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -pat.o pat.lo: pat.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h \ - ../app/pattern_header.h -pcx.o pcx.lo: pcx.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -pixelize.o pixelize.lo: pixelize.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -plasma.o plasma.lo: plasma.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h ../libgimp/gimpui.h \ - ../libgimp/gimpmenu.h -pnm.o pnm.lo: pnm.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -ps.o ps.lo: ps.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h ../app/gimage.h \ - ../app/boundary.h ../app/paint_funcs.h ../app/pixel_region.h \ - ../app/tile_manager.h ../app/tile.h ../app/channel.h \ - ../app/temp_buf.h ../app/layer.h ../app/linked.h \ - ../app/gdisplay.h ../app/info_dialog.h ../app/selection.h -ripple.o ripple.lo: ripple.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -shift.o shift.lo: shift.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -sinus.o sinus.lo: sinus.c ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtk.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h megawidget.h \ - sinus_logo.h -snoise.o snoise.lo: snoise.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -sobel.o sobel.lo: sobel.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h -sparkle.o sparkle.lo: sparkle.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -spread.o spread.lo: spread.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -sunras.o sunras.lo: sunras.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -tiff.o tiff.lo: tiff.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -tile.o tile.lo: tile.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -tileit.o tileit.lo: tileit.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -url.o url.lo: url.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -video.o video.lo: video.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -vinvert.o vinvert.lo: vinvert.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h -waves.o waves.lo: waves.c ../libgimp/gimp.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../libgimp/gimpenums.h \ - ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h \ - ../gtk+/gdk/gdkcursors.h ../gtk+/gtk/gtkaccelerator.h \ - ../gtk+/gtk/gtkobject.h ../gtk+/gtk/gtkenums.h \ - ../gtk+/gtk/gtktypeutils.h ../gtk+/gtk/gtkadjustment.h \ - ../gtk+/gtk/gtkdata.h ../gtk+/gtk/gtkalignment.h \ - ../gtk+/gtk/gtkbin.h ../gtk+/gtk/gtkcontainer.h \ - ../gtk+/gtk/gtkwidget.h ../gtk+/gtk/gtkstyle.h \ - ../gtk+/gtk/gtkaspectframe.h ../gtk+/gtk/gtkframe.h \ - ../gtk+/gtk/gtkarrow.h ../gtk+/gtk/gtkmisc.h \ - ../gtk+/gtk/gtkbox.h ../gtk+/gtk/gtkbutton.h \ - ../gtk+/gtk/gtkcheckbutton.h ../gtk+/gtk/gtktogglebutton.h \ - ../gtk+/gtk/gtkcheckmenuitem.h ../gtk+/gtk/gtkmenuitem.h \ - ../gtk+/gtk/gtkitem.h ../gtk+/gtk/gtkcolorsel.h \ - ../gtk+/gtk/gtkwindow.h ../gtk+/gtk/gtkvbox.h \ - ../gtk+/gtk/gtkpreview.h ../gtk+/gtk/gtkentry.h \ - ../gtk+/gtk/gtkhbox.h ../gtk+/gtk/gtklabel.h \ - ../gtk+/gtk/gtkmain.h ../gtk+/gtk/gtksignal.h \ - ../gtk+/gtk/gtkrange.h ../gtk+/gtk/gtkscale.h \ - ../gtk+/gtk/gtkhscale.h ../gtk+/gtk/gtktable.h \ - ../gtk+/gtk/gtkcurve.h ../gtk+/gtk/gtkdialog.h \ - ../gtk+/gtk/gtkdrawingarea.h ../gtk+/gtk/gtkfilesel.h \ - ../gtk+/gtk/gtkgc.h ../gtk+/gtk/gtkhruler.h \ - ../gtk+/gtk/gtkruler.h ../gtk+/gtk/gtkhscrollbar.h \ - ../gtk+/gtk/gtkscrollbar.h ../gtk+/gtk/gtkhseparator.h \ - ../gtk+/gtk/gtkseparator.h ../gtk+/gtk/gtkimage.h \ - ../gtk+/gtk/gtklist.h ../gtk+/gtk/gtklistitem.h \ - ../gtk+/gtk/gtkmenu.h ../gtk+/gtk/gtkmenushell.h \ - ../gtk+/gtk/gtkmenubar.h ../gtk+/gtk/gtkmenufactory.h \ - ../gtk+/gtk/gtknotebook.h ../gtk+/gtk/gtkoptionmenu.h \ - ../gtk+/gtk/gtkpixmap.h ../gtk+/gtk/gtkprogressbar.h \ - ../gtk+/gtk/gtkradiobutton.h ../gtk+/gtk/gtkradiomenuitem.h \ - ../gtk+/gtk/gtkrc.h ../gtk+/gtk/gtkscrolledwindow.h \ - ../gtk+/gtk/gtkvscrollbar.h ../gtk+/gtk/gtkviewport.h \ - ../gtk+/gtk/gtktext.h ../gtk+/gtk/gtktooltips.h \ - ../gtk+/gtk/gtktree.h ../gtk+/gtk/gtktreeitem.h \ - ../gtk+/gtk/gtkvruler.h ../gtk+/gtk/gtkvscale.h \ - ../gtk+/gtk/gtkvseparator.h megawidget.h -whirlpinch.o whirlpinch.lo: whirlpinch.c ../gtk+/gtk/gtk.h \ - ../gtk+/gdk/gdk.h ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -xpm.o xpm.lo: xpm.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -xwd.o xwd.lo: xwd.c ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/glib/glib.h \ - ../gtk+/glib/glibconfig.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h \ - ../libgimp/gimp.h ../libgimp/gimpenums.h -zealouscrop.o zealouscrop.lo: zealouscrop.c ../libgimp/gimp.h \ - ../gtk+/glib/glib.h ../gtk+/glib/glibconfig.h \ - ../libgimp/gimpenums.h ../gtk+/gtk/gtk.h ../gtk+/gdk/gdk.h \ - ../gtk+/gdk/gdktypes.h ../gtk+/gdk/gdkcursors.h \ - ../gtk+/gtk/gtkaccelerator.h ../gtk+/gtk/gtkobject.h \ - ../gtk+/gtk/gtkenums.h ../gtk+/gtk/gtktypeutils.h \ - ../gtk+/gtk/gtkadjustment.h ../gtk+/gtk/gtkdata.h \ - ../gtk+/gtk/gtkalignment.h ../gtk+/gtk/gtkbin.h \ - ../gtk+/gtk/gtkcontainer.h ../gtk+/gtk/gtkwidget.h \ - ../gtk+/gtk/gtkstyle.h ../gtk+/gtk/gtkaspectframe.h \ - ../gtk+/gtk/gtkframe.h ../gtk+/gtk/gtkarrow.h \ - ../gtk+/gtk/gtkmisc.h ../gtk+/gtk/gtkbox.h \ - ../gtk+/gtk/gtkbutton.h ../gtk+/gtk/gtkcheckbutton.h \ - ../gtk+/gtk/gtktogglebutton.h ../gtk+/gtk/gtkcheckmenuitem.h \ - ../gtk+/gtk/gtkmenuitem.h ../gtk+/gtk/gtkitem.h \ - ../gtk+/gtk/gtkcolorsel.h ../gtk+/gtk/gtkwindow.h \ - ../gtk+/gtk/gtkvbox.h ../gtk+/gtk/gtkpreview.h \ - ../gtk+/gtk/gtkentry.h ../gtk+/gtk/gtkhbox.h \ - ../gtk+/gtk/gtklabel.h ../gtk+/gtk/gtkmain.h \ - ../gtk+/gtk/gtksignal.h ../gtk+/gtk/gtkrange.h \ - ../gtk+/gtk/gtkscale.h ../gtk+/gtk/gtkhscale.h \ - ../gtk+/gtk/gtktable.h ../gtk+/gtk/gtkcurve.h \ - ../gtk+/gtk/gtkdialog.h ../gtk+/gtk/gtkdrawingarea.h \ - ../gtk+/gtk/gtkfilesel.h ../gtk+/gtk/gtkgc.h \ - ../gtk+/gtk/gtkhruler.h ../gtk+/gtk/gtkruler.h \ - ../gtk+/gtk/gtkhscrollbar.h ../gtk+/gtk/gtkscrollbar.h \ - ../gtk+/gtk/gtkhseparator.h ../gtk+/gtk/gtkseparator.h \ - ../gtk+/gtk/gtkimage.h ../gtk+/gtk/gtklist.h \ - ../gtk+/gtk/gtklistitem.h ../gtk+/gtk/gtkmenu.h \ - ../gtk+/gtk/gtkmenushell.h ../gtk+/gtk/gtkmenubar.h \ - ../gtk+/gtk/gtkmenufactory.h ../gtk+/gtk/gtknotebook.h \ - ../gtk+/gtk/gtkoptionmenu.h ../gtk+/gtk/gtkpixmap.h \ - ../gtk+/gtk/gtkprogressbar.h ../gtk+/gtk/gtkradiobutton.h \ - ../gtk+/gtk/gtkradiomenuitem.h ../gtk+/gtk/gtkrc.h \ - ../gtk+/gtk/gtkscrolledwindow.h ../gtk+/gtk/gtkvscrollbar.h \ - ../gtk+/gtk/gtkviewport.h ../gtk+/gtk/gtktext.h \ - ../gtk+/gtk/gtktooltips.h ../gtk+/gtk/gtktree.h \ - ../gtk+/gtk/gtktreeitem.h ../gtk+/gtk/gtkvruler.h \ - ../gtk+/gtk/gtkvscale.h ../gtk+/gtk/gtkvseparator.h +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp info: info-recursive dvi: dvi-recursive check: all-am $(MAKE) check-recursive installcheck: installcheck-recursive -all-am: $(PROGRAMS) Makefile +all-am: Makefile $(PROGRAMS) install-data-am: install-pluginlibPROGRAMS uninstall-am: uninstall-pluginlibPROGRAMS install-exec: install-exec-recursive - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-data-recursive install-data-am - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-recursive install-data-am @: @@ -3311,7 +1480,7 @@ all: all-recursive all-am install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: installdirs-recursive $(mkinstalldirs) $(pluginlibdir) @@ -3324,27 +1493,27 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) mostlyclean-am: mostlyclean-pluginlibPROGRAMS mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ mostlyclean-generic clean-am: clean-pluginlibPROGRAMS clean-compile clean-libtool \ - clean-tags clean-generic mostlyclean-am + clean-tags clean-depend clean-generic mostlyclean-am distclean-am: distclean-pluginlibPROGRAMS distclean-compile \ - distclean-libtool distclean-tags distclean-generic \ - clean-am + distclean-libtool distclean-tags distclean-depend \ + distclean-generic clean-am maintainer-clean-am: maintainer-clean-pluginlibPROGRAMS \ maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-tags maintainer-clean-generic \ - distclean-am + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean-am mostlyclean: mostlyclean-recursive mostlyclean-am @@ -3369,11 +1538,12 @@ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ -installcheck all-am install-data-am uninstall-am install-exec \ -install-data install uninstall all installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck all-am install-data-am \ +uninstall-am install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean include $(GTK_XCONFIG) diff -u --recursive --new-file gimp-0.99.10/plug-ins/README.gflare gimp-0.99.pre11/plug-ins/README.gflare --- gimp-0.99.10/plug-ins/README.gflare Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/README.gflare Thu Aug 14 22:10:35 1997 @@ -0,0 +1,8 @@ + +The gflare plugin is really cool, and I left it out by mistake +in the previous archive. So here is the tarball of it, I didn't +integrate it as it has its own config and Makefile and stuff and +last time I played with stuff like that it broke on many systems. + +-- Matt +15/8/97 diff -u --recursive --new-file gimp-0.99.10/plug-ins/apply_lens.c gimp-0.99.pre11/plug-ins/apply_lens.c --- gimp-0.99.10/plug-ins/apply_lens.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/apply_lens.c Wed Aug 13 20:44:24 1997 @@ -0,0 +1,506 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Apply lens plug-in --- makes your selected part of the image look like it + * is viewed under a solid lens. + * Copyright (C) 1997 Morten Eriksen + * mortene@pvv.ntnu.no + * (If you do anything cool with this plug-in, or have ideas for + * improvements (which aren't on my ToDo-list) - send me an email). + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + *************** + * Additional licensing restriction: no part of the code for this plug-in + * may be ported to run on any operating system owned by Microsoft Corp. + *************** + */ + +/* + * Compile with (on Linux): + * gcc -I/usr/local/include -I/usr/local/include/glib -o apply_lens apply_lens.c -L/usr/local/lib -L/usr/X11/lib -lgtk -lgdk -lgimp -lglib -lXext -lX11 -lm + * + */ + +/* Version 0.1: + * + * First release. No known serious bugs, and basically does what you want. + * All fancy features postponed until the next release, though. :) + * + */ + +/* + TO DO: + - antialiasing + - preview image + - adjustable (R, G, B and A) filter + - optimize for speed! + - refraction index warning dialog box when value < 1.0 + - use "true" lens with specified thickness + - option to apply inverted lens + - adjustable "c" value in the ellipsoid formula + - radiobuttons for "ellipsoid" or "only horiz" and "only vert" (like in the + Ad*b* Ph*t*sh*p Spherify plug-in..) + - clean up source code + */ + +#include +#include + +#include "libgimp/gimp.h" +#include "gtk/gtk.h" + +#define ENTRY_WIDTH 100 + +/* Declare local functions. + */ +static void query(void); +static void run(char *name, int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); + +static void drawlens(GDrawable *drawable); +static gint lens_dialog(GDrawable *drawable); + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +typedef struct +{ + gdouble refraction; + gint keep_surr, use_bkgr, set_transparent; +} LensValues; + +static LensValues lvals = +{ + /* Lens refraction value */ + 1.7, + /* Surroundings options */ + TRUE, FALSE, FALSE +}; + +typedef struct +{ + gint run; +} LensInterface; + +static LensInterface bint = +{ + FALSE /* run */ +}; + +MAIN(); + +static void +query(void) +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image (unused)" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_FLOAT, "refraction", "Lens refraction index" }, + { PARAM_INT32, "keep_surroundings", "Keep lens surroundings" }, + { PARAM_INT32, "set_background", "Set lens surroundings to bkgr value" }, + { PARAM_INT32, "set_transparent", "Set lens surroundings transparent" }, + }; + + static GParamDef *return_vals = NULL; + static int nargs = sizeof(args)/ sizeof(args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure("plug_in_applylens", + "Apply a lens effect", + "This plug-in uses Snell's law to draw an ellipsoid lens over the image", + "Morten Eriksen", + "Morten Eriksen", + "1997", + "/Filters/Distorts/Apply lens", + "RGB*, GRAY*, INDEXED*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run(char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[1]; + GDrawable *drawable; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + + run_mode = param[0].data.d_int32; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + *nreturn_vals = 1; + *return_vals = values; + + drawable = gimp_drawable_get(param[2].data.d_drawable); + + switch(run_mode) { + case RUN_INTERACTIVE: + gimp_get_data("plug_in_applylens", &lvals); + if(!lens_dialog(drawable)) return; + break; + + case RUN_NONINTERACTIVE: + if(nparams != 7) status = STATUS_CALLING_ERROR; + if(status == STATUS_SUCCESS) { + lvals.refraction = param[3].data.d_float; + lvals.keep_surr = param[4].data.d_int32; + lvals.use_bkgr = param[5].data.d_int32; + lvals.set_transparent = param[6].data.d_int32; + } + + if(status == STATUS_SUCCESS && (lvals.refraction < 1.0)) + status = STATUS_CALLING_ERROR; + break; + + case RUN_WITH_LAST_VALS: + gimp_get_data ("plug_in_applylens", &lvals); + break; + + default: + break; + } + + gimp_tile_cache_ntiles(2 *(drawable->width / gimp_tile_width() + 1)); + gimp_progress_init("Applying lens..."); + drawlens(drawable); + + if(run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush(); + if(run_mode == RUN_INTERACTIVE) + gimp_set_data("plug_in_applylens", &lvals, sizeof(LensValues)); + + values[0].data.d_status = status; + + gimp_drawable_detach(drawable); +} + +/* + Ellipsoid formula: x^2/a^2 + y^2/b^2 + z^2/c^2 = 1 + */ +static void +find_projected_pos(gfloat a, gfloat b, + gfloat x, gfloat y, + gfloat *projx, gfloat *projy) +{ + gfloat c; + gfloat n[3]; + gfloat nxangle, nyangle, theta1, theta2; + gfloat ri1 = 1.0, ri2 = lvals.refraction; + + /* PARAM */ + c = MIN(a, b); + + n[0] = x; + n[1] = y; + n[2] = sqrt((1-x*x/(a*a)-y*y/(b*b))*(c*c)); + + nxangle = acos(n[0]/sqrt(n[0]*n[0]+n[2]*n[2])); + theta1 = M_PI/2 - nxangle; + theta2 = asin(sin(theta1)*ri1/ri2); + theta2 = M_PI/2 - nxangle - theta2; + *projx = x - tan(theta2)*n[2]; + + nyangle = acos(n[1]/sqrt(n[1]*n[1]+n[2]*n[2])); + theta1 = M_PI/2 - nyangle; + theta2 = asin(sin(theta1)*ri1/ri2); + theta2 = M_PI/2 - nyangle - theta2; + *projy = y - tan(theta2)*n[2]; +} + +static void +drawlens(GDrawable *drawable) +{ + GPixelRgn srcPR, destPR; + gint width, height; + gint bytes; + gint row; + gint x1, y1, x2, y2; + guchar *src, *dest; + gint i, col; + gfloat regionwidth, regionheight, dx, dy, xsqr, ysqr; + gfloat a, b, asqr, bsqr, midx, midy, x, y; + glong pixelpos, pos; + guchar bgr_red, bgr_blue, bgr_green, alphaval; + GDrawableType drawtype = gimp_drawable_type(drawable->id); + + gimp_palette_get_background(&bgr_red, &bgr_green, &bgr_blue); + + gimp_drawable_mask_bounds(drawable->id, &x1, &y1, &x2, &y2); + regionwidth = x2-x1; + a = regionwidth/2; + regionheight = y2-y1; + b = regionheight/2; + + asqr = a*a; + bsqr = b*b; + + width = drawable->width; + height = drawable->height; + bytes = drawable->bpp; + + gimp_pixel_rgn_init(&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); + gimp_pixel_rgn_init(&destPR, drawable, 0, 0, width, height, TRUE, TRUE); + + src = g_malloc((x2-x1)*(y2-y1)*bytes); + dest = g_malloc((x2-x1)*(y2-y1)*bytes); + gimp_pixel_rgn_get_rect(&srcPR, src, x1, y1, regionwidth, regionheight); + + for(col = 0; col < regionwidth; col++) { + dx = (gfloat)col - a + 0.5; + xsqr = dx*dx; + for(row = 0; row < regionheight; row++) { + pixelpos = (col+row*regionwidth)*bytes; + dy = -((gfloat)row - b) - 0.5; + ysqr = dy*dy; + if(ysqr < (bsqr - (bsqr*xsqr)/asqr)) { + find_projected_pos(a, b, dx, dy, &x, &y); + y = -y; + pos = ((gint)(y+b)*regionwidth + (gint)(x+a)) * bytes; + + for(i = 0; i < bytes; i++) { + dest[pixelpos+i] = src[pos+i]; + } + } + else { + if(lvals.keep_surr) { + for(i = 0; i < bytes; i++) { + dest[pixelpos+i] = src[pixelpos+i]; + } + } + else { + if(lvals.set_transparent) alphaval = 0; + else alphaval = 255; + + switch(drawtype) { + case INDEXEDA_IMAGE: + dest[pixelpos+1] = alphaval; + case INDEXED_IMAGE: + dest[pixelpos+0] = 0; + break; + + case RGBA_IMAGE: + dest[pixelpos+3] = alphaval; + case RGB_IMAGE: + dest[pixelpos+0] = bgr_red; + dest[pixelpos+1] = bgr_green; + dest[pixelpos+2] = bgr_blue; + break; + + case GRAYA_IMAGE: + dest[pixelpos+1] = alphaval; + case GRAY_IMAGE: + dest[pixelpos+0] = bgr_red; + break; + } + } + } + } + + + if(((gint)(regionwidth-col) % 5) == 0) + gimp_progress_update((gdouble)col/(gdouble)regionwidth); + } + + gimp_pixel_rgn_set_rect(&destPR, dest, x1, y1, regionwidth, regionheight); + g_free(src); + g_free(dest); + + gimp_drawable_flush(drawable); + gimp_drawable_merge_shadow(drawable->id, TRUE); + gimp_drawable_update(drawable->id, x1, y1,(x2 - x1),(y2 - y1)); +} + +static void +lens_close_callback(GtkWidget *widget, + gpointer data) +{ + gtk_main_quit(); +} + +static void +lens_ok_callback(GtkWidget *widget, + gpointer data) +{ + bint.run = TRUE; + gtk_widget_destroy(GTK_WIDGET (data)); +} + +static void +lens_toggle_update(GtkWidget *widget, + gpointer data) +{ + int *toggle_val; + + toggle_val = (int *)data; + + if(GTK_TOGGLE_BUTTON (widget)->active) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} + +static void +lens_entry_callback(GtkWidget *widget, + gpointer data) +{ + lvals.refraction = atof(gtk_entry_get_text(GTK_ENTRY(widget))); + if(lvals.refraction < 1.0) lvals.refraction = 1.0; +} + + +static gint +lens_dialog(GDrawable *drawable) +{ + GtkWidget *dlg; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *button; + GtkWidget *toggle; + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + gchar buffer[12]; + gchar **argv; + gint argc; + GSList *group = NULL; + GDrawableType drawtype; + + drawtype = gimp_drawable_type(drawable->id); + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup("apply_lens"); + + gtk_init(&argc, &argv); + gtk_rc_parse(gimp_gtkrc()); + + dlg = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dlg), "Lens effect"); + gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(dlg), "destroy", + (GtkSignalFunc)lens_close_callback, + NULL); + + button = gtk_button_new_with_label("OK"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc)lens_ok_callback, + dlg); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), + button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect_object(GTK_OBJECT(button), "clicked", + (GtkSignalFunc)gtk_widget_destroy, + GTK_OBJECT(dlg)); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), + button, TRUE, TRUE, 0); + gtk_widget_show(button); + + frame = gtk_frame_new("Parameter Settings"); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), frame, TRUE, TRUE, 0); + vbox = gtk_vbox_new(FALSE, 5); + gtk_container_border_width(GTK_CONTAINER(vbox), 10); + gtk_container_add(GTK_CONTAINER(frame), vbox); + + toggle = gtk_radio_button_new_with_label(group, + "Keep original surroundings"); + group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) lens_toggle_update, + &lvals.keep_surr); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), lvals.keep_surr); + gtk_widget_show(toggle); + + toggle = + gtk_radio_button_new_with_label(group, + drawtype == INDEXEDA_IMAGE || + drawtype == INDEXED_IMAGE ? + "Set surroundings to index 0" : + "Set surroundings to background color"); + group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) lens_toggle_update, + &lvals.use_bkgr); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), lvals.use_bkgr); + gtk_widget_show(toggle); + + if((drawtype == INDEXEDA_IMAGE) || + (drawtype == GRAYA_IMAGE) || + (drawtype == RGBA_IMAGE)) { + toggle = gtk_radio_button_new_with_label(group, + "Make surroundings transparent"); + group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) lens_toggle_update, + &lvals.set_transparent); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), + lvals.set_transparent); + gtk_widget_show(toggle); + } + + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); + + label = gtk_label_new("Lens refraction index: "); + gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0); + gtk_widget_show(label); + + entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); + gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); + sprintf(buffer, "%.2f", lvals.refraction); + gtk_entry_set_text(GTK_ENTRY(entry), buffer); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc)lens_entry_callback, + NULL); + gtk_widget_show(entry); + + gtk_widget_show(hbox); + gtk_widget_show(vbox); + gtk_widget_show(frame); + gtk_widget_show(dlg); + + gtk_main(); + gdk_flush(); + + return bint.run; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/autostretch_hsv.c gimp-0.99.pre11/plug-ins/autostretch_hsv.c --- gimp-0.99.10/plug-ins/autostretch_hsv.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/autostretch_hsv.c Wed Aug 13 20:45:59 1997 @@ -0,0 +1,434 @@ +/* Autostretch HSV 0.10 --- image filter plug-in for The Gimp image + * manipulation program + * + * Copyright (C) 1997 Scott Goehring + * Copyright (C) 1996 Federico Mena Quintero + * + * You can contact me at scott@poverty.bloomington.in.us + * 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; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* This simple plug-in does an automatic contrast stretch. For each + channel in the image, it finds the minimum and maximum values... it + uses those values to stretch the individual histograms to the full + contrast range. For some images it may do just what you want; for + others it may be total crap :) This version operates in HSV space + and preserves hue, unlike the original Contrast Autostretch. */ + + +#include +#include +#include "libgimp/gimp.h" + +/* Declare local functions. + */ +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); + +static void autostretch_hsv (GDrawable * drawable); +static void indexed_autostretch_hsv (gint32 image_ID); + +static void calc_rgb_to_hsv(guchar *rgb, double *h, double *s, double *v); +static void calc_hsv_to_rgb(guchar *rgb, double h, double s, double v); + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + + +MAIN (); + +static void +query () +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure ("plug_in_autostretch_hsv", + "Automatically stretch the contrast of the specified drawable to cover all possible ranges.", + "This simple plug-in does an automatic contrast stretch. For each channel in the image, it finds the minimum and maximum values... it uses those values to stretch the individual histograms to the full contrast range. For some images it may do just what you want; for others it may be total crap :). This version differs from Contrast Autostretch in that it works in HSV space, and preserves hue.", + "Scott Goehring and Federico Mena Quintero", + "Scott Goehring and Federico Mena Quintero", + "1997", + "/Filters/Image/Auto-Stretch HSV", + "RGB*, INDEXED*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[1]; + GDrawable *drawable; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + + gint32 image_ID; + + run_mode = param[0].data.d_int32; + + /* Get the specified drawable */ + drawable = gimp_drawable_get (param[2].data.d_drawable); + image_ID = param[1].data.d_image; + + /* Make sure that the drawable is gray or RGB color */ + if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id)) + { + gimp_progress_init ("Auto-Stretching Contrast..."); + gimp_tile_cache_ntiles (2 * (drawable->width / gimp_tile_width () + 1)); + autostretch_hsv (drawable); + + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush (); + } + else if (gimp_drawable_indexed (drawable->id)) + { + indexed_autostretch_hsv (image_ID); + + /* GIMP doesn't implicitly update an image whose cmap has + changed - it probably should. */ + + gimp_drawable_update (drawable->id, 0, 0, + gimp_drawable_width(drawable->id), + gimp_drawable_height(drawable->id)); + gimp_displays_flush (); + } + else + { + /* gimp_message ("autostretch_hsv: cannot operate on indexed color images"); */ + status = STATUS_EXECUTION_ERROR; + } + + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + gimp_drawable_detach (drawable); +} + + +static void +indexed_autostretch_hsv(gint32 image_ID) /* a.d.m. */ +{ + guchar *cmap; + gint ncols,i; + + double shi = 0.0, vhi = 0.0, slo = 1.0, vlo = 1.0; + + cmap = gimp_image_get_cmap (image_ID, &ncols); + + if (cmap==NULL) + { + printf("autostretch_hsv: cmap was NULL! Quitting...\n"); + gimp_quit(); + } + + for (i=0;i shi) shi = s; + if (s < slo) slo = s; + if (v > vhi) vhi = v; + if (v < vlo) vlo = v; + } + + for (i=0;iid, &x1, &y1, &x2, &y2); + has_alpha = gimp_drawable_has_alpha (drawable->id); + alpha = (has_alpha) ? drawable->bpp - 1 : drawable->bpp; + + /* Initialize progress */ + progress = 0; + max_progress = (x2 - x1) * (y2 - y1) * 2; + + gimp_pixel_rgn_init (&src_rgn, drawable, x1, y1, (x2 - x1), (y2 - y1), FALSE, FALSE); + + for (pr = gimp_pixel_rgns_register (1, &src_rgn); pr != NULL; pr = gimp_pixel_rgns_process (pr)) + { + src = src_rgn.data; + + for (y = 0; y < src_rgn.h; y++) + { + s = src; + for (x = 0; x < src_rgn.w; x++) + { + if (!has_alpha || (has_alpha && s[alpha])) + { + double h, z, v; + calc_rgb_to_hsv(s, &h, &z, &v); + if (z > shi) shi = z; + if (z < slo) slo = z; + if (v > vhi) vhi = v; + if (v < vlo) vlo = v; + } + + s += src_rgn.bpp; + } + + src += src_rgn.rowstride; + } + + /* Update progress */ + progress += src_rgn.w * src_rgn.h; + + gimp_progress_update ((double) progress / (double) max_progress); + } + + /* Now substitute pixel vales */ + gimp_pixel_rgn_init (&src_rgn, drawable, x1, y1, (x2 - x1), (y2 - y1), FALSE, FALSE); + gimp_pixel_rgn_init (&dest_rgn, drawable, x1, y1, (x2 - x1), (y2 - y1), TRUE, TRUE); + + for (pr = gimp_pixel_rgns_register (2, &src_rgn, &dest_rgn); pr != NULL; pr = gimp_pixel_rgns_process (pr)) + { + src = src_rgn.data; + dest = dest_rgn.data; + + for (y = 0; y < src_rgn.h; y++) + { + s = src; + d = dest; + + for (x = 0; x < src_rgn.w; x++) + { + double h, z, v; + calc_rgb_to_hsv(s, &h, &z, &v); + if (shi!=slo) + z = (z-slo) / (shi-slo); + if (vhi!=vlo) + v = (v-vlo) / (vhi-vlo); + calc_hsv_to_rgb(d, h, z, v); + + if (has_alpha) + d[alpha] = s[alpha]; + + s += src_rgn.bpp; + d += dest_rgn.bpp; + } + + src += src_rgn.rowstride; + dest += dest_rgn.rowstride; + + } + + /* Update progress */ + progress += src_rgn.w * src_rgn.h; + + gimp_progress_update ((double) progress / (double) max_progress); + } + + /* update the region */ + gimp_drawable_flush (drawable); + gimp_drawable_merge_shadow (drawable->id, TRUE); + gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); +} + +static void +calc_rgb_to_hsv(guchar *rgb, double *hue, double *sat, double *val) +{ + double red, green, blue; + double h, s, v; + double min, max; + double delta; + + red = rgb[0] / 255.0; + green = rgb[1] / 255.0; + blue = rgb[2] / 255.0; + + h = 0.0; /* Shut up -Wall */ + + if (red > green) + { + if (red > blue) + max = red; + else + max = blue; + + if (green < blue) + min = green; + else + min = blue; + } + else + { + if (green > blue) + max = green; + else + max = blue; + + if (red < blue) + min = red; + else + min = blue; + } + + v = max; + + if (max != 0.0) + s = (max - min) / max; + else + s = 0.0; + + if (s == 0.0) + h = 0.0; + else + { + delta = max - min; + + if (red == max) + h = (green - blue) / delta; + else if (green == max) + h = 2 + (blue - red) / delta; + else if (blue == max) + h = 4 + (red - green) / delta; + + h /= 6.0; + + if (h < 0.0) + h += 1.0; + else if (h > 1.0) + h -= 1.0; + } + + *hue = h; + *sat = s; + *val = v; +} + +static void +calc_hsv_to_rgb(guchar *rgb, double h, double s, double v) +{ + double hue, saturation, value; + double f, p, q, t; + + if (s == 0.0) + { + h = v; + s = v; + v = v; /* heh */ + } + else + { + hue = h * 6.0; + saturation = s; + value = v; + + if (hue == 6.0) + hue = 0.0; + + f = hue - (int) hue; + p = value * (1.0 - saturation); + q = value * (1.0 - saturation * f); + t = value * (1.0 - saturation * (1.0 - f)); + + switch ((int) hue) + { + case 0: + h = value; + s = t; + v = p; + break; + + case 1: + h = q; + s = value; + v = p; + break; + + case 2: + h = p; + s = value; + v = t; + break; + + case 3: + h = p; + s = q; + v = value; + break; + + case 4: + h = t; + s = p; + v = value; + break; + + case 5: + h = value; + s = p; + v = q; + break; + } + } + + rgb[0] = h*255; + rgb[1] = s*255; + rgb[2] = v*255; + +} + diff -u --recursive --new-file gimp-0.99.10/plug-ins/blinds.c gimp-0.99.pre11/plug-ins/blinds.c --- gimp-0.99.10/plug-ins/blinds.c Tue Jun 3 22:01:45 1997 +++ gimp-0.99.pre11/plug-ins/blinds.c Wed Aug 13 20:31:35 1997 @@ -3,10 +3,10 @@ * * This is a plug-in for the GIMP. * - * Blinds plug-in. Distort an image as though it was stuck to + * Blinds plug-in. Distort an image as though it was stuck to * window blinds and the blinds where opened/closed. * - * Copyright (C) 1997 Andy Thomas + * Copyright (C) 1997 Andy Thomas alt@picnic.demon.co.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 @@ -21,29 +21,52 @@ * 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., 675 Mass Ave, Cambridge, MA 02139, USA. - * + * * A fair proprotion of this code was taken from the Whirl plug-in * which was copyrighted by Federico Mena Quintero (as below). - * + * * Whirl plug-in --- distort an image into a whirlpool - * Copyright (C) 1997 Federico Mena Quintero + * Copyright (C) 1997 Federico Mena Quintero + * + */ + +/* Change log:- + * + * Version 0.5 10 June 1997. + * Changes required to work with 0.99.10. + * + * Version 0.4 20 May 1997. + * Fixed problem with using this plugin in RUN_NONINTERACTIVE mode + * + * Version 0.3 8 May 1997. + * Make preview work in Quartics words "The Right Way". * + * Allow the background to be transparent. + * + * Version 0.2 1 May 1997 (not released). + * Added patches supplied by Tim Mooney mooney@dogbert.cc.ndsu.NoDak.edu + * to allow the plug-in to build with Digitals compiler. */ #include #include -#include #include "gtk/gtk.h" #include "libgimp/gimp.h" + /***** Magic numbers *****/ /* Don't make preview >255!!! It won't work for horizontal blinds */ -#define PREVIEW_SIZE 128 +#define PREVIEW_SIZE 128 #define SCALE_WIDTH 150 #define ENTRY_WIDTH 30 +/* Even more stuff from Quartics plugins */ +#define CHECK_SIZE 8 +#define CHECK_DARK ((int) (1.0 / 3.0 * 255)) +#define CHECK_LIGHT ((int) (2.0 / 3.0 * 255)) + #define MAX_FANS 10 #define HORIZONTAL 0 @@ -57,6 +80,7 @@ gint angledsp; gint numsegs; gint orientation; + gint bg_trans; } BlindVals; typedef struct { @@ -70,7 +94,7 @@ static BlindsInterface bint = { NULL, /* Preview */ - { 'b', 'l', 'a', 'h' }, /* Preview_row */ + {'4','u'}, /* Preview_row */ FALSE, /* run */ NULL, 4 /* bpp of drawable */ @@ -90,6 +114,7 @@ GParam *param, gint *nreturn_vals, GParam **return_vals); +static void check (GDrawable * drawable); static gint blinds_dialog (void); static void blinds_close_callback (GtkWidget *widget, gpointer data); @@ -97,10 +122,11 @@ static void blinds_scale_update (GtkAdjustment *adjustment, gint *size_val); static void blinds_entry_update(GtkWidget *widget, gint *value); static void blinds_toggle_update (GtkWidget *widget, gpointer data); +static void blinds_button_update (GtkWidget *widget, gpointer data); static void dialog_update_preview(void); static void cache_preview(void); static void apply_blinds(void); -static void blinds_get_bg(guchar *bg); +static int blinds_get_bg(guchar *bg); GPlugInInfo PLUG_IN_INFO = { @@ -115,7 +141,8 @@ { 30, 3, - HORIZONTAL + HORIZONTAL, + FALSE }; /* Stuff for the preview bit */ @@ -124,6 +151,8 @@ static gint preview_width, preview_height; static gint do_horizontal; static gint do_vertical; +static gint do_trans; +static gint has_alpha; MAIN (); @@ -138,15 +167,15 @@ { PARAM_DRAWABLE, "drawable", "Input drawable" }, { PARAM_INT32, "angle_dsp", "Angle of Displacement " }, { PARAM_INT32, "number_of_segments", "Number of segments in blinds" }, - { PARAM_INT32, "orientation", "orientation; 0 = Horizontal, 1 = Vertical" } + { PARAM_INT32, "orientation", "orientation; 0 = Horizontal, 1 = Vertical" }, + { PARAM_INT32, "backgndg_trans", "background transparent; FALSE,TRUE" } }; static GParamDef *return_vals = NULL; static int nargs = sizeof (args) / sizeof (args[0]); static int nreturn_vals = 0; gimp_install_procedure ("plug_in_blinds", - "Adds a blinds effect to the image. Rather like\n" - "putting the image on a set of window blinds and the closing or opening the blinds", + "Adds a blinds effect to the image. Rather like putting the image on a set of window blinds and the closing or opening the blinds", "More here later", "Andy Thomas", "Andy Thomas", @@ -181,17 +210,17 @@ values[0].type = PARAM_STATUS; values[0].data.d_status = status; - blindsdrawable = - drawable = + blindsdrawable = + drawable = gimp_drawable_get (param[2].data.d_drawable); gimp_drawable_mask_bounds(drawable->id, &sel_x1, &sel_y1, &sel_x2, &sel_y2); sel_width = sel_x2 - sel_x1; sel_height = sel_y2 - sel_y1; - + /* Calculate preview size */ - + if (sel_width > sel_height) { pwidth = MIN(sel_width, PREVIEW_SIZE); pheight = sel_height * pwidth / sel_width; @@ -199,9 +228,9 @@ pheight = MIN(sel_height, PREVIEW_SIZE); pwidth = sel_width * pheight / sel_height; } - + preview_width = MAX(pwidth, 2); /* Min size is 2 */ - preview_height = MAX(pheight, 2); + preview_height = MAX(pheight, 2); switch (run_mode) { @@ -215,13 +244,14 @@ break; case RUN_NONINTERACTIVE: - if (nparams != 5) + if (nparams != 7) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) { bvals.angledsp = param[3].data.d_int32; bvals.numsegs = param[4].data.d_int32; bvals.orientation = param[5].data.d_int32; + bvals.bg_trans = param[6].data.d_int32; } break; @@ -238,7 +268,7 @@ gimp_progress_init ("Adding Blinds ..."); apply_blinds(); - + if (run_mode != RUN_NONINTERACTIVE) gimp_displays_flush (); @@ -272,6 +302,7 @@ GtkWidget *toggle_vbox; GtkWidget *toggle; GSList *orientation_group = NULL; + GSList *bgtype_group = NULL; guchar *color_cube; gchar **argv; gint argc; @@ -283,6 +314,7 @@ do_horizontal = (bvals.orientation == HORIZONTAL); do_vertical = (bvals.orientation == VERTICAL); + do_trans = (bvals.bg_trans == TRUE); gtk_init (&argc, &argv); gtk_rc_parse (gimp_gtkrc ()); @@ -292,11 +324,11 @@ gtk_preview_set_install_cmap(gimp_install_cmap()); color_cube = gimp_color_cube(); gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], color_cube[3]); - + gtk_widget_set_default_visual(gtk_preview_get_visual()); gtk_widget_set_default_colormap(gtk_preview_get_cmap()); - cache_preview(); /* Get the preview image and store it */ + cache_preview(); /* Get the preview image and store it also set has_alpha */ dlg = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dlg), "Blinds"); @@ -329,9 +361,9 @@ frame = gtk_frame_new ("preview"); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); gtk_container_border_width (GTK_CONTAINER (frame), 10); - table = gtk_table_new (5, 5, FALSE); - gtk_container_border_width (GTK_CONTAINER (table), 10); - gtk_container_add (GTK_CONTAINER (frame), table); + table = gtk_table_new (5, 5, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_container_add (GTK_CONTAINER (frame), table); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); bint.preview = gtk_preview_new(GTK_PREVIEW_COLOR); gtk_preview_size(GTK_PREVIEW(bint.preview), preview_width, preview_height); @@ -339,11 +371,11 @@ gtk_frame_set_shadow_type (GTK_FRAME (xframe), GTK_SHADOW_IN); gtk_container_add(GTK_CONTAINER(xframe), bint.preview); gtk_widget_show(xframe); - gtk_table_attach(GTK_TABLE(table), xframe, 0, 1, 0, 1, GTK_EXPAND , GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), xframe, 0, 1, 0, 2, GTK_EXPAND , GTK_EXPAND, 0, 0); gtk_widget_show(frame); /* ALT-I */ gtk_container_add(GTK_CONTAINER(frame), xframe); - gtk_widget_show(table); + gtk_widget_show(table); gtk_widget_show(bint.preview); frame = gtk_frame_new ("Orientation"); @@ -353,7 +385,7 @@ toggle_vbox = gtk_vbox_new (FALSE, 5); gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 5); gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - + toggle = gtk_radio_button_new_with_label (orientation_group, "Horizontal"); orientation_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); @@ -374,7 +406,32 @@ gtk_widget_show (toggle_vbox); gtk_widget_show(frame); + + frame = gtk_frame_new ("Background"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_table_attach (GTK_TABLE (table), frame, 1, 2, 1, 2, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 5, 5); + toggle_vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 5); + gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); + + toggle = gtk_check_button_new_with_label ("Transparent"); + gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) blinds_button_update, + &do_trans); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_trans); + if(!has_alpha) + { + gtk_widget_set_sensitive(toggle,FALSE); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), FALSE); + } + + gtk_widget_show (toggle); + + gtk_widget_show (toggle_vbox); + gtk_widget_show(frame); frame = gtk_frame_new ("Parameter Settings"); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); @@ -407,7 +464,7 @@ gtk_object_set_user_data(GTK_OBJECT(entry), size_data); gtk_object_set_user_data(size_data, entry); gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); - sprintf(buf, "%d", bvals.angledsp); + sprintf(buf, "%0.2d", bvals.angledsp); gtk_entry_set_text(GTK_ENTRY(entry), buf); gtk_signal_connect(GTK_OBJECT(entry), "changed", (GtkSignalFunc) blinds_entry_update, @@ -460,6 +517,9 @@ else bvals.orientation = VERTICAL; + /* Use trans bg ? */ + bvals.bg_trans = do_trans; + return bint.run; } @@ -496,7 +556,28 @@ } else *toggle_val = FALSE; -} +} + +static void +blinds_button_update(GtkWidget *widget, + gpointer data) +{ + int *toggle_val; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + { + /* Only do for event that sets a toggle button to true */ + /* This will break if any more toggles are added? */ + *toggle_val = TRUE; + } + else + *toggle_val = FALSE; + + dialog_update_preview(); + +} static void @@ -504,20 +585,20 @@ { GtkWidget *entry; char buf[256]; - + if (*value != adjustment->value) { *value = adjustment->value; - + entry = gtk_object_get_user_data(GTK_OBJECT(adjustment)); sprintf(buf,"%d",*value); - + gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value); gtk_entry_set_text(GTK_ENTRY(entry), buf); gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value); - + dialog_update_preview(); } -} +} static void blinds_entry_update(GtkWidget *widget, gint *value) @@ -538,9 +619,9 @@ gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed"); dialog_update_preview(); - } - } -} + } + } +} /* Cache the preview image - updates are a lot faster. */ @@ -557,42 +638,40 @@ gimp_pixel_rgn_init(&src_rgn,blindsdrawable,sel_x1,sel_y1,sel_width,sel_height,FALSE,FALSE); - src_rows = g_new(guchar ,sel_width*4); + src_rows = g_new(guchar ,sel_width*4); p = bint.pv_cache = g_new(guchar ,preview_width*preview_height*4); - bint.img_bpp = gimp_drawable_bpp(blindsdrawable->id); + bint.img_bpp = gimp_drawable_bpp(blindsdrawable->id); - if(gimp_drawable_has_alpha(blindsdrawable->id)) - bint.img_bpp--; + has_alpha = gimp_drawable_has_alpha(blindsdrawable->id); if(bint.img_bpp < 3) { - bint.img_bpp = 3; + bint.img_bpp = 3 + has_alpha; } switch ( gimp_drawable_type (blindsdrawable->id) ) { case GRAYA_IMAGE: - case GRAY_IMAGE : + case GRAY_IMAGE: isgrey = 1; - break; - default: - break; } for (y = 0; y < preview_height; y++) { - + gimp_pixel_rgn_get_row(&src_rgn, src_rows, sel_x1, sel_y1 + (y*sel_height)/preview_height, sel_width); - + for (x = 0; x < (preview_width); x ++) { /* Get the pixels of each col */ int i; - for (i = 0 ; i < bint.img_bpp; i++ ) - p[x*bint.img_bpp+i] = src_rows[((x*sel_width)/preview_width)*src_rgn.bpp +((isgrey)?0:i)]; + for (i = 0 ; i < 3; i++ ) + p[x*bint.img_bpp+i] = src_rows[((x*sel_width)/preview_width)*src_rgn.bpp +((isgrey)?0:i)]; + if(has_alpha) + p[x*bint.img_bpp+3] = src_rows[((x*sel_width)/preview_width)*src_rgn.bpp + ((isgrey)?1:3)]; } p += (preview_width*bint.img_bpp); } @@ -600,7 +679,7 @@ } -static void +static void blindsapply(guchar *srow,guchar *drow,gint width,gint bpp,guchar *bg) { guchar *src; @@ -619,14 +698,6 @@ /* In the process copy the src row to the destination row */ - - /* Not required since preview has no alpha channel - * and image should have correct bpp when apply is called. - * - * if(bpp>3) - * bg[3] = 255; - */ - /* Fill in with background color ? */ for (i = 0 ; i < width ; i++) { @@ -661,9 +732,9 @@ src = &srow[point*bpp]; dst = &drow[point*bpp]; - + /* Copy pixels across */ - + for (j = 0 ; j < bpp; j++) { dst[j] = src[j]; @@ -686,9 +757,9 @@ fw = fanwidths[k]/2; dx = (int)(ang * ((double)(fw - (double)(i%fw)))); - src = &srow[(available+i)*bpp]; + src = &srow[(available+i)*bpp]; dst = &drow[(available+i+dx)*bpp]; - + for (j = 0 ; j < bpp; j++) { dst[j] = src[j]; @@ -696,7 +767,7 @@ /* Right side */ j = i + 1; - src = &srow[(available + fanwidths[k] - j - (fanwidths[k]%2))*bpp]; + src = &srow[(available + fanwidths[k] - j - (fanwidths[k]%2))*bpp]; dst = &drow[(available + fanwidths[k] - j - (fanwidths[k]%2) - dx)*bpp]; for (j = 0 ; j < bpp; j++) @@ -710,18 +781,19 @@ } } -static void +static int blinds_get_bg(guchar *bg) { GParam *return_vals; gint nreturn_vals; /* Get the background color */ + int retval = FALSE; /*Return TRUE if of GREYA type */ switch ( gimp_drawable_type (blindsdrawable->id) ) { case RGBA_IMAGE: - bg[3] = 255; + bg[3] = (do_trans == TRUE)?0:255; case RGB_IMAGE : return_vals = gimp_run_procedure ("gimp_palette_get_foreground", @@ -746,29 +818,28 @@ } break; case GRAYA_IMAGE: - bg[2] = 0; - bg[1] = 255; - bg[0] = 0; - break; - case GRAY_IMAGE : + retval = TRUE; + bg[3] = (do_trans == TRUE)?0:255; + case GRAY_IMAGE: bg[2] = 0; bg[1] = 0; bg[0] = 0; break; - default: break; } + return retval; } static void dialog_update_preview(void) { - int y; + int x, y; guchar *p; guchar bg[4]; - + gint check,check_0,check_1; + p = bint.pv_cache; blinds_get_bg(bg); @@ -776,27 +847,60 @@ if(do_vertical) { for (y = 0; y < preview_height; y++) { - + /* bint.preview_row - this row contains the row to apply the action to */ - + blindsapply(p,bint.preview_row,preview_width,bint.img_bpp,bg); - gtk_preview_draw_row(GTK_PREVIEW(bint.preview), bint.preview_row, 0, y, preview_width); + if ((y / CHECK_SIZE) & 1) { + check_0 = CHECK_DARK; + check_1 = CHECK_LIGHT; + } else { + check_0 = CHECK_LIGHT; + check_1 = CHECK_DARK; + } + if(bint.img_bpp > 3) + { + int i,j; + for (i = 0, j = 0 ; i < sizeof(bint.preview_row); i += 4, j += 3 ) + { + gint alphaval; + if (((i/4) / CHECK_SIZE) & 1) + check = check_0; + else + check = check_1; + + alphaval = bint.preview_row[i + 3]; + + bint.preview_row[j] = + check + (((bint.preview_row[i] - check)*alphaval)/255); + bint.preview_row[j + 1] = + check + (((bint.preview_row[i + 1] - check)*alphaval)/255); + bint.preview_row[j + 2] = + check + (((bint.preview_row[i + 2] - check)*alphaval)/255); + } + } + + gtk_preview_draw_row(GTK_PREVIEW(bint.preview), bint.preview_row, 0, y, preview_width); + p += preview_width*bint.img_bpp; - } + } } else { /* Horizontal blinds */ /* Apply the blinds algo to a single column - - * this act as a transfomation matrix for the + * this act as a transfomation matrix for the * rows. Make row 0 invalid so we can find it again! */ int i; + int loop1,loop2; guchar *sr = g_new(guchar,(preview_height)*4); guchar *dr = g_new(guchar,(preview_height)*4); guchar dummybg[4]; + /* Copy into here after translation*/ + guchar copy_row[PREVIEW_SIZE*4]; memset(dummybg,0,4); memset(dr,0,(preview_height)*4); /* all dr rows are background rows */ @@ -805,10 +909,11 @@ for (i = 0 ; i < preview_width ; i++) { int j; + int bd = bint.img_bpp; guchar *dst; - dst = &bint.preview_row[i*bint.img_bpp]; - - for (j = 0 ; j < bint.img_bpp; j++) + dst = &bint.preview_row[i*bd]; + + for (j = 0 ; j < bd; j++) { dst[j] = bg[j]; } @@ -821,11 +926,20 @@ /* Bit of a fiddle since blindsapply really works on an image * row not a set of bytes. - preview can't be > 255 - * or must make dr sr int rows. + * or must make dr sr int rows. */ blindsapply(sr,dr,preview_height,1,dummybg); for (y = 0; y < preview_height; y++) { + + if ((y / CHECK_SIZE) & 1) { + check_0 = CHECK_DARK; + check_1 = CHECK_LIGHT; + } else { + check_0 = CHECK_LIGHT; + check_1 = CHECK_DARK; + } + if(dr[y] == 0) { /* Draw background line */ @@ -837,13 +951,36 @@ p = bint.pv_cache + (preview_width*bint.img_bpp*(dr[y]-1)); } + if(bint.img_bpp > 3) + { + /* Take account of alpha channel HERE*/ + for (loop1 = 0, loop2 = 0 ; + loop1 < preview_width*bint.img_bpp; + loop1 += 4, loop2 += 3) + { + gint alphaval; + if (((loop1/4) / CHECK_SIZE) & 1) + check = check_0; + else + check = check_1; + + alphaval = p[loop1 + 3]; + + copy_row[loop2] = + check + (((p[loop1] - check)*alphaval)/255); + copy_row[loop2 + 1] = + check + (((p[loop1 + 1] - check)*alphaval)/255); + copy_row[loop2 + 2] = + check + (((p[loop1 + 2] - check)*alphaval)/255); + } + p = ©_row[0]; + } gtk_preview_draw_row(GTK_PREVIEW(bint.preview), p, 0, y, preview_width); - } - + } g_free(sr); g_free(dr); } - + gtk_widget_draw(bint.preview, NULL); gdk_flush(); } @@ -864,47 +1001,49 @@ int x,y; guchar bg[4]; - blinds_get_bg(bg); + /* Adjust aplha channel if GREYA */ + if(blinds_get_bg(bg) == TRUE) + bg[1] = (do_trans == TRUE)?0:255; gimp_pixel_rgn_init(&src_rgn,blindsdrawable,sel_x1,sel_y1,sel_width,sel_height,FALSE,FALSE); gimp_pixel_rgn_init(&des_rgn,blindsdrawable,sel_x1,sel_y1,sel_width,sel_height,TRUE,TRUE); - src_rows = g_new(guchar ,(MAX(sel_width,sel_height))*4*STEP); - des_rows = g_new(guchar ,(MAX(sel_width,sel_height))*4*STEP); + src_rows = g_new(guchar ,(MAX(sel_width,sel_height))*4*STEP); + des_rows = g_new(guchar ,(MAX(sel_width,sel_height))*4*STEP); if(do_vertical) { - for (y = 0; y < sel_height; y += STEP) + for (y = 0; y < sel_height; y += STEP) { int rr; int step; - + if((y + STEP) > sel_height) step = sel_height - y; else step = STEP; - + gimp_pixel_rgn_get_rect(&src_rgn, src_rows, sel_x1, sel_y1 + y, sel_width, step); - + /* OK I could make this better */ for(rr = 0 ; rr < STEP; rr++) blindsapply(src_rows+(sel_width*rr*src_rgn.bpp), des_rows+(sel_width*rr*src_rgn.bpp), sel_width,src_rgn.bpp,bg); - + gimp_pixel_rgn_set_rect(&des_rgn, des_rows, sel_x1, sel_y1 + y, sel_width, step); - + gimp_progress_update((double)y/(double)sel_height); } } @@ -912,7 +1051,7 @@ { /* Horizontal blinds */ /* Apply the blinds algo to a single column - - * this act as a transfomation matrix for the + * this act as a transfomation matrix for the * rows. Make row 0 invalid so we can find it again! */ int i; @@ -920,6 +1059,7 @@ gint *dr = g_new(gint,(sel_height)*4); guchar *dst = g_new(guchar,STEP*4); guchar dummybg[4]; + guchar *p; memset(dummybg,0,4); memset(dr,0,(sel_height)*4); /* all dr rows are background rows */ @@ -930,7 +1070,7 @@ /* Hmmm. does this work portably? */ /* This "swaps the intergers around that are held in in the - * sr & dr arrays. + * sr & dr arrays. */ blindsapply((guchar*)sr,(guchar*)dr,sel_height,sizeof(gint),dummybg); @@ -940,31 +1080,31 @@ int j; guchar *bgdst; bgdst = &dst[i*src_rgn.bpp]; - + for (j = 0 ; j < src_rgn.bpp; j++) { bgdst[j] = bg[j]; } } - for (x = 0; x < sel_width; x += STEP) + for (x = 0; x < sel_width; x += STEP) { int rr; int step; guchar *p; - + if((x + STEP) > sel_width) step = sel_width - x; else step = STEP; - + gimp_pixel_rgn_get_rect(&src_rgn, src_rows, sel_x1 + x, sel_y1, step, sel_height); - + /* OK I could make this better */ for(rr = 0 ; rr < sel_height; rr++) { @@ -987,7 +1127,7 @@ sel_y1, step, sel_height); - + gimp_progress_update((double)x/(double)sel_width); } @@ -1001,6 +1141,7 @@ gimp_drawable_flush(blindsdrawable); gimp_drawable_merge_shadow(blindsdrawable->id, TRUE); - gimp_drawable_update(blindsdrawable->id, sel_x1, sel_y1, sel_width, sel_height); - + gimp_drawable_update(blindsdrawable->id, sel_x1, sel_y1, sel_width, sel_height); + } + diff -u --recursive --new-file gimp-0.99.10/plug-ins/blur.c gimp-0.99.pre11/plug-ins/blur.c --- gimp-0.99.10/plug-ins/blur.c Thu Apr 17 19:18:54 1997 +++ gimp-0.99.pre11/plug-ins/blur.c Wed Aug 13 20:31:35 1997 @@ -151,7 +151,9 @@ guchar *tmp; gint row, col; gint x1, y1, x2, y2; - + gint has_alpha, ind; + + /* Get the input area. This is the bounding box of the selection in * the image (or the entire image if there is no selection). Only * operating on the input area is simply an optimization. It doesn't @@ -166,7 +168,8 @@ width = drawable->width; height = drawable->height; bytes = drawable->bpp; - + has_alpha = gimp_drawable_has_alpha(drawable->id); + /* allocate row buffers */ prev_row = (guchar *) malloc ((x2 - x1 + 2) * bytes); cur_row = (guchar *) malloc ((x2 - x1 + 2) * bytes); @@ -191,11 +194,41 @@ blur_prepare_row (&srcPR, nr, x1, row + 1, (x2 - x1)); d = dest; + ind = 0; for (col = 0; col < (x2 - x1) * bytes; col++) - *d++ = ((gint) pr[col - bytes] + (gint) pr[col] + (gint) pr[col + bytes] + - (gint) cr[col - bytes] + (gint) cr[col] + (gint) cr[col + bytes] + - (gint) nr[col - bytes] + (gint) nr[col] + (gint) nr[col + bytes]) / 9; - + { + ind++; + + if (ind==bytes || !(has_alpha)) + { /* we always do the alpha channel, + or if there's none we have no problem + so the algorithm stays the same */ + *d++ = ((gint) pr[col - bytes] + (gint) pr[col] + (gint) pr[col + bytes] + + (gint) cr[col - bytes] + (gint) cr[col] + (gint) cr[col + bytes] + + (gint) nr[col - bytes] + (gint) nr[col] + (gint) nr[col + bytes]) / 9; + ind=0; + } + else { /* we have an alpha channel picture, and do the color part here */ + *d++ = ((gint) (((gdouble) (pr[col - bytes] * pr[col - ind]) + + (gdouble) (pr[col] * pr[col + bytes - ind]) + + (gdouble) (pr[col + bytes] * pr[col + 2*bytes - ind]) + + (gdouble) (cr[col - bytes] * cr[col - ind]) + + (gdouble) (cr[col] * cr[col + bytes - ind]) + + (gdouble) (cr[col + bytes] * cr[col + 2*bytes - ind]) + + (gdouble) (nr[col - bytes] * nr[col - ind]) + + (gdouble) (nr[col] * nr[col + bytes - ind]) + + (gdouble) (nr[col + bytes] * nr[col + 2*bytes - ind])) + / ((gdouble) pr[col - ind] + + (gdouble) pr[col + bytes - ind] + + (gdouble) pr[col + 2*bytes - ind] + + (gdouble) cr[col - ind] + + (gdouble) cr[col + bytes - ind] + + (gdouble) cr[col + 2*bytes - ind] + + (gdouble) nr[col - ind] + + (gdouble) nr[col + bytes - ind] + + (gdouble) nr[col + 2*bytes - ind]))); + } + } /* store the dest */ gimp_pixel_rgn_set_row (&destPR, dest, x1, row, (x2 - x1)); diff -u --recursive --new-file gimp-0.99.10/plug-ins/bmp.c gimp-0.99.pre11/plug-ins/bmp.c --- gimp-0.99.10/plug-ins/bmp.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/bmp.c Thu Jun 19 16:09:15 1997 @@ -0,0 +1,165 @@ +/* bmp.c */ +/* This is a File input and output filter for */ +/* Gimp. It loads and saves images in windows(TM) */ +/* bitmap format. */ +/* Some Parts that deal with the interaction with */ +/* the Gimp are taken from the GIF plugin by */ +/* Peter Mattis & Spencer Kimball and from the */ +/* PCX plugin by Francisco Bustamante. */ +/* */ +/* Alexander.Schulz@stud.uni-karlsruhe.de */ + +#include +#include +#include +#include +#include +#include "bmp.h" + + +FILE *errorfile; +char *prog_name="bmp"; +char *filename; +int interactive_bmp; + +/* Declare some local functions. + */ +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +MAIN (); + +static void +query () +{ + static GParamDef load_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_STRING, "filename", "The name of the file to load" }, + { PARAM_STRING, "raw_filename", "The name entered" }, + }; + static GParamDef load_return_vals[] = + { + { PARAM_IMAGE, "image", "Output image" }, + }; + static int nload_args = sizeof (load_args) / sizeof (load_args[0]); + static int nload_return_vals = sizeof (load_return_vals) / sizeof (load_return_vals[0]); + + static GParamDef save_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Drawable to save" }, + { PARAM_STRING, "filename", "The name of the file to save the image in" }, + { PARAM_STRING, "raw_filename", "The name entered" }, + }; + static int nsave_args = sizeof (save_args) / sizeof (save_args[0]); + + gimp_install_procedure ("file_bmp_load", + "Loads files of Windows BMP file format", + "Loads files of Windows BMP file format", + "Alexander Schulz", + "Alexander Schulz", + "1997", + "/BMP", + NULL, + PROC_PLUG_IN, + nload_args, nload_return_vals, + load_args, load_return_vals); + + gimp_install_procedure ("file_bmp_save", + "Saves files in Windows BMP file format", + "Saves files in Windows BMP file format", + "Alexander Schulz", + "Alexander Schulz", + "1997", + "/BMP", + "INDEXED*, GRAY*, RGB*", + PROC_PLUG_IN, + nsave_args, 0, + save_args, NULL); + + gimp_register_load_handler ("file_bmp_load", "bmp", ""); + gimp_register_save_handler ("file_bmp_save", "bmp", ""); +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[2]; + GStatusType status = STATUS_SUCCESS; + GRunModeType run_mode; + gint32 image_ID; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 1; + *return_vals = values; + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_CALLING_ERROR; + + if (strcmp (name, "file_bmp_load") == 0) + { + image_ID = ReadBMP(param[1].data.d_string); + + if (image_ID != -1) + { + *nreturn_vals = 2; + values[0].data.d_status = STATUS_SUCCESS; + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image_ID; + } + else + { + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + } + else if (strcmp (name, "file_bmp_save") == 0) + { + switch (run_mode) + { + case RUN_INTERACTIVE: + interactive_bmp = TRUE; + break; + + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are there! */ + interactive_bmp = FALSE; + if (nparams != 5) + status = STATUS_CALLING_ERROR; + break; + + case RUN_WITH_LAST_VALS: + interactive_bmp = FALSE; + break; + + default: + break; + } + + *nreturn_vals = 1; + if (WriteBMP(param[3].data.d_string, param[1].data.d_int32, param[2].data.d_int32)) + { + values[0].data.d_status = STATUS_SUCCESS; + } + else + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } +} + diff -u --recursive --new-file gimp-0.99.10/plug-ins/bmp.h gimp-0.99.pre11/plug-ins/bmp.h --- gimp-0.99.10/plug-ins/bmp.h Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/bmp.h Thu Jun 19 16:23:50 1997 @@ -0,0 +1,56 @@ +#include + +#define TRUE 1 +#define FALSE 0 +#define MAXCOLORS 256 +#define Image gint32 + +#define BitSet(byte, bit) (((byte) & (bit)) == (bit)) + +#define ReadOK(file,buffer,len) (fread(buffer, len, 1, file) != 0) +#define WriteOK(file,buffer,len) (fwrite(buffer, len, 1, file) != 0) + +extern gint32 ReadBMP (char *); +extern gint WriteBMP (char *,gint32,gint32); +extern gint ReadColorMap(FILE *, unsigned char[256][3], int, int, int *); +extern Image ReadImage(FILE *, int, int, unsigned char[256][3], int, int, int, int, int); +extern void WriteColorMap(FILE *, int *, int *, int *, int); +extern void WriteImage(FILE *,char *,int,int,int,int,int,int); + +extern int interactive_bmp; +extern char *prog_name; +extern char *filename; +extern FILE *errorfile; + +static struct + { + unsigned long bfSize; /* 02 */ + unsigned long reserverd; /* 06 */ + unsigned long bfOffs; /* 0A */ + unsigned long biSize; /* 0E */ + }Bitmap_File_Head; + +static struct + { + unsigned long biWidth; /* 12 */ + unsigned long biHeight; /* 16 */ + unsigned long biPlanes_biBitCnt; /* 1A */ + unsigned long biCompr; /* 1E */ + unsigned long biSizeIm; /* 22 */ + unsigned long biXPels; /* 26 */ + unsigned long biYPels; /* 2A */ + unsigned long biClrUsed; /* 2E */ + unsigned long biClrImp; /* 32 */ + /* 36 */ + }Bitmap_Head; + +static struct + { + unsigned long bcWidth_bcHeight; /* 12 */ + unsigned long bcPlanes_bcBitCnt; /* 1A */ + }Bitmap_OS2_Head; + +#define biBitCnt ((Bitmap_Head.biPlanes_biBitCnt & 0xffff0000) >> 16) +#define bcBitCnt ((Bitmap_OS2_Head.biPlanes_biBitCnt & 0xffff0000) >> 16) +#define bcHeight ((Bitmap_OS2_Head.bcWidth_bcHeight & 0xffff0000) >> 16) +#define bcWidth (Bitmap_OS2_Head.bcWidth_bcHeight & 0x0000ffff) diff -u --recursive --new-file gimp-0.99.10/plug-ins/bmpread.c gimp-0.99.pre11/plug-ins/bmpread.c --- gimp-0.99.10/plug-ins/bmpread.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/bmpread.c Thu Jun 19 16:16:21 1997 @@ -0,0 +1,342 @@ +/* bmpread.c reads any bitmap I could get for testing */ +/* except OS2 bitmaps (wrong colors) */ +/* Alexander.Schulz@stud.uni-karlsruhe.de */ + +#include +#include +#include +#include +#include +#include "bmp.h" + +gint32 ReadBMP (name) + char *name; +{ + FILE *fd; + char *temp_buf; + char buf[5]; + int ColormapSize, SpeicherZeile, Maps, Grey; + unsigned char ColorMap[256][3]; + + temp_buf = g_malloc (strlen (name) + 11); + sprintf (temp_buf, "Loading %s:", name); + gimp_progress_init (temp_buf); + g_free (temp_buf); + + filename = name; + fd = fopen (filename, "rb"); + + /* Is this a valid File? Should never be used because gimp tests it. */ + + if (!fd) + { + printf ("%s: can't open \"%s\"\n", prog_name, filename); + return -1; + } + + /* It is a File. Now is it a Bitmap? */ + + if (!ReadOK(fd,buf,2) || (strncmp(buf,"BM",2))) + { + printf ("%s: not a valid BMP file %s\n", prog_name,buf); + return -1; + } + + /* How long is the Header? */ + + if (!ReadOK (fd, &Bitmap_File_Head, 0x10)) + { + printf ("%s: error reading bitmap file header\n", prog_name); + return -1; + } + + /* Is it a Windows (R) Bitmap or not */ + + if (Bitmap_File_Head.biSize!=40) + { + printf("\nos2 unsupported!\n"); + if (!ReadOK (fd, &Bitmap_OS2_Head, Bitmap_File_Head.biSize)) + { + printf ("%s: error reading bitmap header\n", prog_name); + return -1; + } + Bitmap_Head.biPlanes_biBitCnt=Bitmap_OS2_Head.bcPlanes_bcBitCnt; + Bitmap_File_Head.bfSize=(Bitmap_File_Head.bfSize*4)-(Bitmap_File_Head.bfOffs*3); + Bitmap_Head.biHeight=bcHeight; + Bitmap_Head.biWidth=bcWidth; + Bitmap_Head.biClrUsed=0; + Bitmap_Head.biCompr=0; + Maps=3; + } + else + { + if (!ReadOK (fd, &Bitmap_Head, 36)) + { + printf ("\n%s: error reading bitmap header\n", prog_name); + return -1; + } + Maps=4; + } + + /* This means wrong file Format. I test this because it could crash the */ + /* entire gimp. */ + + if (biBitCnt>24) + { + printf("\n%s: to many colors: %u\n",prog_name,(unsigned int) biBitCnt); + return -1; + } + + /* There should be some colors used! */ + + ColormapSize = (Bitmap_File_Head.bfOffs-Bitmap_File_Head.biSize-14) / Maps; + if ((Bitmap_Head.biClrUsed==0) && (biBitCnt<24)) Bitmap_Head.biClrUsed=ColormapSize; + if (biBitCnt==24) SpeicherZeile=((Bitmap_File_Head.bfSize-Bitmap_File_Head.bfOffs)/Bitmap_Head.biHeight); + else SpeicherZeile=((Bitmap_File_Head.bfSize-Bitmap_File_Head.bfOffs)/Bitmap_Head.biHeight)*(8/biBitCnt); + +#ifdef DEBUG + printf("\nSize: %u, Colors: %u, Bits: %u, Width: %u, Height: %u, Comp: %u, Zeile: %u\n", + Bitmap_File_Head.bfSize,Bitmap_Head.biClrUsed,biBitCnt,Bitmap_Head.biWidth, + Bitmap_Head.biHeight, Bitmap_Head.biCompr, SpeicherZeile); +#endif + + /* Get the Colormap */ + + if (ReadColorMap(fd, ColorMap, ColormapSize, Maps, &Grey) == -1) return -1; + +#ifdef DEBUG + printf("Colormap read\n"); +#endif + + /* Get the Image and return the ID or -1 on error*/ + + return(ReadImage(fd, Bitmap_Head.biWidth, Bitmap_Head.biHeight, ColorMap, + Bitmap_Head.biClrUsed, biBitCnt, Bitmap_Head.biCompr, SpeicherZeile, Grey)); + +} + +gint ReadColorMap (fd, buffer, number, size, grey) + FILE *fd; + int number; + unsigned char buffer[256][3]; + int size; + int *grey; +{ + int i; + unsigned char rgb[4]; + + *grey=(number>2); + for (i = 0; i < number ; i++) + { + if (!ReadOK (fd, rgb, size)) + { + printf ("%s: bad colormap\n", prog_name); + return -1; + } + + /* Bitmap save the colors in another order! But change only once! */ + + if (size==4) { + buffer[i][0] = rgb[2]; + buffer[i][1] = rgb[1]; + buffer[i][2] = rgb[0]; + } else { + /* this one is for old os2 Bitmaps, but it dosn't work well */ + buffer[i][0] = rgb[1]; + buffer[i][1] = rgb[0]; + buffer[i][2] = rgb[2]; + } + *grey=((*grey) && (rgb[0]==rgb[1]) && (rgb[1]==rgb[2])); + } + return(0); +} + +Image ReadImage (fd, len, height, cmap, ncols, bpp, compression, spzeile, grey) + FILE *fd; + int len, height; + unsigned char cmap[256][3]; + int ncols, bpp, compression, spzeile, grey; +{ + char *name_buf; + unsigned char v,wieviel; + GPixelRgn pixel_rgn; + char buf[16]; + int xpos = 0, ypos = 0; + Image image; + gint32 layer; + GDrawable *drawable; + guchar *dest, *temp; + guchar gimp_cmap[768]; + long rowstride, channels; + int i, j, cur_progress, max_progress, egal; + + /* Make a new image in the gimp */ + + if (grey) + { + image = gimp_image_new (len, height, GRAY); + layer = gimp_layer_new (image, "Background", len, height, GRAY_IMAGE, 100, NORMAL_MODE); + channels = 1; + } + else + { + if (bpp<24) + { + image = gimp_image_new (len, height, INDEXED); + layer = gimp_layer_new (image, "Background", len, height, INDEXED_IMAGE, 100, NORMAL_MODE); + channels = 1; + } + else + { + image = gimp_image_new (len, height, RGB); + layer = gimp_layer_new (image, "Background", len, height, RGB_IMAGE, 100, NORMAL_MODE); + channels = 3; + } + } + + name_buf = g_malloc (strlen (filename) + 10); + sprintf (name_buf, "%s", filename); + gimp_image_set_filename(image,name_buf); + free (name_buf); + + gimp_image_add_layer(image,layer,0); + drawable = gimp_drawable_get(layer); + + dest = g_malloc(drawable->width*drawable->height*channels); + rowstride = drawable->width * channels; + + ypos=height-1; /* Bitmaps begin in the lower left corner */ + cur_progress = 0; + max_progress = height; + + if (bpp==24) + { + while (ReadOK(fd,buf,3)) + { + temp = dest + (ypos * rowstride) + (xpos * channels); + *temp=buf[2]; + temp++; + *temp=buf[1]; + temp++; + *temp=buf[0]; + xpos++; + if (xpos == len) + { + egal=ReadOK(fd,buf,spzeile-(len*3)); + ypos--; + xpos=0; + cur_progress++; + if ((cur_progress % 5) == 0) + gimp_progress_update ((double) cur_progress / (double) max_progress); + } + if (ypos < 0) break; + } + } + else { switch(compression) + { + case 0: /* uncompressed */ + { + while (ReadOK(fd,&v,1)) + { + for (i=1;(i<=(8/bpp)) && (xpos> (8-(i*bpp)); + } + if (xpos == len) + { + egal=ReadOK(fd,buf,(spzeile-len)/(8/bpp)); + ypos--; + xpos=0; + cur_progress++; + if ((cur_progress % 5) == 0) + gimp_progress_update ((double) cur_progress / (double) max_progress); + } + if (ypos < 0) break; + } + break; + } + default: /* Compressed images */ + { + while (TRUE) + { + /*temp = dest + (ypos * rowstride) + (xpos * channels);*/ + egal=ReadOK(fd,buf,2); + if ((unsigned char) buf[0]!=0) + /* Count + Color - record */ + { + for (j=0;((unsigned char) j < (unsigned char) buf[0]) && (xpos> (8-(i*bpp)); + } + } + } + if (((unsigned char) buf[0]==0) && ((unsigned char) buf[1]>2)) + /* unkomprimierter record */ + { + wieviel=buf[1]; + for (j=0;j> (8-(i*bpp)); + i++; + xpos++; + } + } + if ( (wieviel / (8/bpp)) % 2) egal=ReadOK(fd,&v,1); + /*if odd(x div (8 div bpp )) then blockread(f,z^,1);*/ + } + if (((unsigned char) buf[0]==0) && ((unsigned char) buf[1]==0)) + /* Zeilenende */ + { + ypos--; + xpos=0; + cur_progress++; + if ((cur_progress % 5) == 0) + gimp_progress_update ((double) cur_progress / (double) max_progress); + } + if (((unsigned char) buf[0]==0) && ((unsigned char) buf[1]==1)) + /* Bitmapende */ + { + break; + } + if (((unsigned char) buf[0]==0) && ((unsigned char) buf[1]==2)) + /* Deltarecord */ + { + xpos+=(unsigned char) buf[2]; + ypos+=(unsigned char) buf[3]; + } + } + break; + } + }} + + fclose(fd); + if (bpp<24) for (i = 0, j = 0; i < ncols; i++) + { + gimp_cmap[j++] = cmap[i][0]; + gimp_cmap[j++] = cmap[i][1]; + gimp_cmap[j++] = cmap[i][2]; + } + + gimp_progress_update (1); + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, TRUE, FALSE); + gimp_pixel_rgn_set_rect(&pixel_rgn, dest, 0, 0, drawable->width, drawable->height); + if (bpp<24) gimp_image_set_cmap(image, gimp_cmap, ncols); + gimp_drawable_flush(drawable); + gimp_drawable_detach(drawable); + g_free(dest); + return(image); + +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/bmpwrite.c gimp-0.99.pre11/plug-ins/bmpwrite.c --- gimp-0.99.10/plug-ins/bmpwrite.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/bmpwrite.c Thu Jun 19 16:22:11 1997 @@ -0,0 +1,464 @@ +/* bmpwrite.c Writes Bitmap files. Even RLE encoded ones. */ +/* (Windows (TM) doesn't read all of those, but who */ +/* cares? ;-) */ +/* Alexander.Schulz@stud.uni-karlsruhe.de */ + + +#include +#include +#include +#include +#include +#include "bmp.h" + +guchar *pixels; +int cur_progress; + +int max_progress; + +typedef struct +{ + gint run; +} GIFSaveInterface; + +static GIFSaveInterface gsint = +{ + FALSE /* run */ +}; + +int encoded = 0; + + +static gint save_dialog (); +static void save_close_callback (GtkWidget *widget, + gpointer data); +static void save_ok_callback (GtkWidget *widget, + gpointer data); +static void save_toggle_update (GtkWidget *widget, + gpointer data); + +/* +static void item_callback (int, void *, void *); +static void ok_callback (int, void *, void *); +static void cancel_callback (int, void *, void *); + +static int dialog_ID; +static int group_ID; +static int encoded_ID; +*/ + +gint +WriteBMP (filename,image,drawable_ID) + char *filename; + gint32 image,drawable_ID; +{ + FILE *outfile; + int Red[MAXCOLORS]; + int Green[MAXCOLORS]; + int Blue[MAXCOLORS]; + unsigned char *cmap; + int rows, cols, channels, MapSize, SpZeile; + long BitsPerPixel; + int colors; + char *temp_buf,*pixels; + GPixelRgn pixel_rgn; + GDrawable *drawable; + GDrawableType drawable_type; + int i; + + /* first: can we save this image? */ + + drawable = gimp_drawable_get(drawable_ID); + drawable_type = gimp_drawable_type(drawable_ID); + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE); + switch (drawable_type) + { + case RGB_IMAGE: + case GRAY_IMAGE: + case INDEXED_IMAGE: + break; + default: + printf("bmp: cannot operate on unknown image types or alpha images"); + gimp_quit (); + break; + } + + /* We can save it. So what colors do we use? */ + + switch (drawable_type) + { + case RGB_IMAGE: + colors = 0; + BitsPerPixel = 24; + MapSize = 0; + channels = 3; + break; + case GRAY_IMAGE: + colors = 256; + BitsPerPixel=8; + MapSize=1024; + channels = 1; + for (i = 0; i < colors; i++) + { + Red[i] = i; + Green[i] = i; + Blue[i] = i; + } + break; + case INDEXED_IMAGE: + cmap = gimp_image_get_cmap (image, &colors); + MapSize = 4*colors; + channels = 1; + if (colors>16) BitsPerPixel=8; else if (colors>2) BitsPerPixel=4; + else BitsPerPixel=1; + + for (i = 0; i < colors; i++) + { + Red[i] = *cmap++; + Green[i] = *cmap++; + Blue[i] = *cmap++; + } + break; + default: + fprintf (stderr, "%s: you should not receive this error for any reason\n", prog_name); + break; + } + + /* Perhaps someone wants RLE encoded Bitmaps */ + + encoded = 0; + if (((BitsPerPixel==8) || (BitsPerPixel==4)) && interactive_bmp) {if (! save_dialog ()) {return -1;}} + + + /* Let's take some file */ + + outfile = fopen (filename, "wb"); + if (!outfile) + { + fprintf (stderr, "can't open %s\n", filename); + return -1; + } + + /* fetch the image */ + + pixels = (guchar *) g_malloc(drawable->width*drawable->height*channels); + gimp_pixel_rgn_get_rect(&pixel_rgn, pixels, 0, 0, drawable->width, drawable->height); + + /* And let's begin the progress */ + + temp_buf = g_malloc (strlen (filename) + 11); + sprintf (temp_buf, "Saving %s:", filename); + gimp_progress_init (temp_buf); + g_free (temp_buf); + cur_progress = 0; + max_progress = drawable->height; + + /* Now, we need some further information ... */ + + cols = drawable->width; + rows = drawable->height; + + /* ... that we write to our headers. */ + + if ((((cols*BitsPerPixel)/8) % 4) == 0) SpZeile=((cols*BitsPerPixel)/8); + else SpZeile=((((cols*BitsPerPixel)/8)/4)+1)*4; + Bitmap_File_Head.bfSize=0x36+MapSize+(rows*SpZeile); + Bitmap_File_Head.reserverd=0; + Bitmap_File_Head.bfOffs=0x36+MapSize; + Bitmap_File_Head.biSize=40; + Bitmap_Head.biWidth=cols; + Bitmap_Head.biHeight=rows; + Bitmap_Head.biPlanes_biBitCnt=(BitsPerPixel << 16) + 1; + if (encoded==0) Bitmap_Head.biCompr=0; + else if (BitsPerPixel==8) Bitmap_Head.biCompr=1; + else if (BitsPerPixel==4) Bitmap_Head.biCompr=2; + else Bitmap_Head.biCompr=0; + Bitmap_Head.biSizeIm=cols*rows; + Bitmap_Head.biXPels=1; + Bitmap_Head.biYPels=1; + if (BitsPerPixel<24) Bitmap_Head.biClrUsed=colors; + else Bitmap_Head.biClrUsed=0; + Bitmap_Head.biClrImp=Bitmap_Head.biClrUsed; + +#ifdef DEBUG + printf("\nSize: %u, Colors: %u, Bits: %u, Width: %u, Height: %u, Comp: %u, Zeile: %u\n", + Bitmap_File_Head.bfSize,Bitmap_Head.biClrUsed,biBitCnt,Bitmap_Head.biWidth, + Bitmap_Head.biHeight, Bitmap_Head.biCompr,SpZeile); +#endif + + /* And now write the header and the colormap (if any) to disk */ + + WriteOK(outfile,"BM",2); + WriteOK(outfile,&Bitmap_File_Head,16); + WriteOK(outfile,&Bitmap_Head,36); + WriteColorMap(outfile,Red,Green,Blue,MapSize); + + /* After that is done, we write the image ... */ + + WriteImage(outfile, pixels, cols, rows, encoded, channels, BitsPerPixel, SpZeile); + + /* ... and exit normally */ + + fclose(outfile); + gimp_drawable_detach(drawable); + g_free(pixels); + return TRUE; +} + +void WriteColorMap(FILE *f, int red[MAXCOLORS], int green[MAXCOLORS], + int blue[MAXCOLORS], int size) +{ + char trgb[4]; + int i; + + size=size/4; + trgb[3]=0; + for (i=0;i=0;ypos--) /* for each row */ + { + for (i=0;i=0;ypos--) /* for each row */ + { + for (xpos=0;xpos=0;ypos--) /* each row separately */ + { + for (xpos=0;xpos2) */ + { + buf[0]=(unsigned char) j; + if (bpp==4) + { + buf[1]=buf[1] | (buf[1] << 4); + } + WriteOK(f,buf,2); /* Count -- Color */ + laenge+=2; + } + else /* unpacked */ + { + xpos-=j; + j=3; + xpos+=j; + v=*(src + (ypos * rowstride) + ((xpos-1) * channels)); + buf[0]=0; + WriteOK(f,buf,1); + laenge++; + temp = src + (ypos * rowstride) + (xpos * channels); + while ((j<255) && (xposaction_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + /* parameter settings */ + frame = gtk_frame_new ("Save Options"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); + vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (vbox), 5); + gtk_container_add (GTK_CONTAINER (frame), vbox); + + toggle = gtk_check_button_new_with_label ("RLE encoded"); + gtk_box_pack_start (GTK_BOX (vbox), toggle, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &encoded); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), encoded); + gtk_widget_show (toggle); + + gtk_widget_show (vbox); + gtk_widget_show (frame); + gtk_widget_show (dlg); + + gtk_main (); + gdk_flush (); + return gsint.run; +} + +static void +save_close_callback (GtkWidget *widget, + gpointer data) +{ + gtk_main_quit (); +} + +static void +save_ok_callback (GtkWidget *widget, + gpointer data) +{ + gsint.run = TRUE; + gtk_widget_destroy (GTK_WIDGET (data)); +} + +static void +save_toggle_update (GtkWidget *widget, + gpointer data) +{ + int *toggle_val; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/build gimp-0.99.pre11/plug-ins/build --- gimp-0.99.10/plug-ins/build Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/build Thu Aug 14 01:25:48 1997 @@ -0,0 +1,228 @@ +#!/bin/sh + +# save the program name +progname=$0 + +# need to know common directories +srcdir="." +top_srcdir=".." +top_builddir=".." +prefix="/usr/local" + +# need to know some file and library location +gtkxconfig="$top_builddir/gtk+/gtk+.xconfig" +libgimp="$top_builddir/libgimp/libgimp.la" +libgimpui="$top_builddir/libgimp/libgimpui.la" +libgtk="$top_builddir/gtk+/gtk/libgtk.la" +libgdk="$top_builddir/gtk+/gdk/libgdk.la" +libglib="$top_builddir/gtk+/glib/libglib.la" + +# print out a usage summary and exit +usage () +{ + cat <" + + -h Display this help message and exit. + --help + + -s Specify a source file or files. If + --source a source file is not specified the name + of the source file will be determined + from the name of the plugin. For example, + the plugin "blur" would have the source + file "blur.c" associated with it. + + -v Print out messages saying what is happening + --verbose at each step of the build process. + + -n Print out commands that would be executed + --nothing but don't actually execute them. + + -e Print the build environment and exit. + --environment + + = Set the build environment variable tp + have the value . + -= Append to the build environment + variable . + += Prepend to the build environment + variable +EOF + exit 0 +} + +# initialize various variable to blank +plugin= +sources= +verbose= +environment= +nothing= +prev= + +# loop over the options +for option +do + # if the previous option takes an argument + # we take care of setting the appropriate variable + # here + if test -n "$prev"; then + eval "$prev=\"\$$prev \$option\"" + prev= + continue + fi + + case "$option" in + -h|--help) usage ;; + -s|--source) prev="sources" ;; + -v|--verbose) verbose="true" ;; + -e|--environment) environment="true" ;; + -n|--nothing) nothing="true" ;; + *=*) + # if the option was of the form [-+]= + # then we want to evaluate the argument as it + # is intended to set an environment variable. + # this would fairly simple, except for having to + # deal with the [-+] symbols that can be prepended. + # these have to be stripped off and converted into + # the corresponding "post_" and "pre_" strings + # respectively. + opt=`echo "$option" | sed 's/=[_a-zA-Z0-9]*//'` + arg=`echo "$option" | sed 's/[-+_a-zA-Z0-9]*=//'` + + case "$opt" in + -*) opt=`echo "$opt" | sed 's/-//'` + opt="post_$opt" ;; + +*) opt=`echo "$opt" | sed 's/+//'` + opt="pre_$opt" ;; + esac + + eval "$opt=\$arg" ;; + *) + if test -z "$plugin"; then + plugin="$option" + else + usage + fi ;; + esac +done + +# get build environment variables + +if test ! -f $gtkxconfig; then + echo "error: could not find \"$gtkxconfig\"" +fi + +# extract the X flags from the gtk+.xconfig file +X_CFLAGS=`grep X_CFLAGS $gtkxconfig | sed 's/X_CFLAGS[ \t]*=[ \t]*//'` +X_LDFLAGS=`grep X_LDFLAGS $gtkxconfig | sed 's/X_LDFLAGS[ \t]*=[ \t]*//'` +X_LIBS=`grep X_LIBS $gtkxconfig | sed 's/X_LIBS[ \t]*=[ \t]*//'` + +# we only set environment variables if they aren't already defined +CC=${CC:-"$pre_CC gcc $post_CC"} +LIBTOOL=${LIBTOOL:-"$pre_LIBTOOL $top_builddir/libtool $post_LIBTOOL"} +CFLAGS=${CFLAGS:-"$pre_CFLAGS -g -O2 -Wall $post_CFLAGS"} +INCLUDES=${INCLUDES:-"$pre_INCLUDES $X_CFLAGS -I$top_srcdir -I$top_srcdir/gtk+ -I/usr/local/include $post_INCLUDES"} +DEFS=${DEFS:-"$pre_DEFS -DHAVE_CONFIG_H -I. -I$srcdir -I.. $post_defs"} +CPPFLAGS=${CPPFLAGS:-"$pre_CPPFLAGS $post_CPPFLAGS"} +LDFLAGS=${LDFLAGS:-"$pre_LDFLAGS $post_LDFLAGS"} +LDADD=${LDADD:-"$pre_LDADD $X_LDFLAGS -L/usr/local/lib $post_LDADD"} +LIBS=${LIBS:-"$pre_LIBS $X_LIBS $libgimp $libgtk $libgdk $libglib -lc -lm $post_LIBS"} +COMPILE=${COMPILE:-"$pre_COMPILE $CC $DEFS $INCLUDES $CPPFLAGS $CFLAGS $post_COMPILE"} +LINK=${LINK:-"$pre_LINK $LIBTOOL --mode=link $CC $LDFLAGS -o $plugin $post_LINK"} + +# print out the environment and exit if the user specified us to do so +if test -n "$environment"; then + echo CC = $CC + echo LIBTOOL = $LIBTOOL + echo CFLAGS = $CFLAGS + echo INCLUDES = $INCLUDES + echo DEFS = $DEFS + echo CPPFLAGS = $CPPFLAGS + echo LDFLAGS = $LDFLAGS + echo LDADD = $LDADD + echo LIBS = $LIBS + echo COMPILE = $COMPILE + echo LINK = $LINK + exit 0 +fi + +# if a name for a plugin wasn't specified then nothing can be done +if test -z "$plugin"; then + usage +fi + +# strip off the extension if it is present (we'll add it +# back in real soon to determine the name of the source file +# to use) +plugin=`echo $plugin | sed 's/\.c//'` + +# if the user didn't specify any sources, then calculate +# the source file based on the plugin name +if test -z "$sources"; then + sources="$plugin.c" +fi + +# show the user what we're doing +echo "plugin: $plugin" +echo "sources: $sources" + +# compile the source files. a source file is only compiled +# if either a) its object file doesn't exist or b) it is +# newer than its object file. +objects= +for file in $sources; do + objfile=`echo "$file" | sed 's/\.c/\.o/'` + + if test ! -f "$objfile" || test "$file" -nt "$objfile"; then + cmd="$COMPILE -c $file" + + if test -n "$verbose"; then + echo $cmd + else + echo "compiling $file" + fi + + if test -z "$nothing"; then + eval "$cmd" + fi + fi + + objects="$objects $objfile"; +done + +deps="$objects $libgimp $libgtk $libgdk $libglib" + +# determine if the plugin needs to be linked with libgimpui. +# (most plugins don't). we simply check the sources to see +# if they include "gimpui.h" +needlibgimpui=`grep gimpui.h $sources` +if test -n "needlibgimpui"; then + LIBS="$libgimpui $LIBS" + deps="$deps $libgimpui" +fi + +# determine if the plugin needs to be linked. if any of the +# dependencies (objects or libraries) are newer than the plugin +# or the plugin does not exist it will be built. +cmd= +for file in $deps; do + if test ! -f "$plugin" || test "$file" -nt "$plugin"; then + cmd="$LINK $objects $LDADD $LIBS" + break + fi +done + +if test -n "$cmd"; then + if test -n "$verbose"; then + echo $cmd + else + echo "linking $plugin" + fi + + if test -z "$nothing"; then + eval "$cmd" + fi +else + echo "\`$plugin' is up to date" +fi diff -u --recursive --new-file gimp-0.99.10/plug-ins/compose.c gimp-0.99.pre11/plug-ins/compose.c --- gimp-0.99.10/plug-ins/compose.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/compose.c Wed Aug 13 20:47:56 1997 @@ -0,0 +1,867 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * Compose plug-in (C) 1997 Peter Kirchgessner + * e-mail: pkirchg@aol.com, WWW: http://members.aol.com/pkirchg + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * This plug-in composes RGB-images from several types of channels + */ + +/* Event history: + * V 1.00, PK, 29-Jul-97, Creation + */ +static char ident[] = "@(#) GIMP Compose plug-in v1.00 29-Jul-97"; + +#include +#include +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" +#include "libgimp/gimpmenu.h" + +/* Declare local functions + */ +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); + +static gint32 compose (char *compose_type, + gint32 *compose_ID); + +static gint32 create_new_image (char *filename, guint width, guint height, + GDrawableType gdtype, gint32 *layer_ID, GDrawable **drawable, + GPixelRgn *pixel_rgn); + +static int cmp_icase (char *s1, char *s2); + +static void compose_rgb (unsigned char **src, int numpix, + unsigned char *dst); +static void compose_rgba (unsigned char **src, int numpix, + unsigned char *dst); +static void compose_hsv (unsigned char **src, int numpix, + unsigned char *dst); +static void compose_cmy (unsigned char **src, int numpix, + unsigned char *dst); +static void compose_cmyk (unsigned char **src, int numpix, + unsigned char *dst); + +static void hsv_to_rgb (unsigned char *h, unsigned char *s, + unsigned char *v, unsigned char *rgb); + +static gint compose_dialog (char *compose_type, + gint32 image_ID); + +static gint check_gray (gint32 image_id, + gint32 drawable_id, + gpointer data); + +static void image_menu_callback (gint32 id, + gpointer data); + +static void compose_close_callback (GtkWidget *widget, + gpointer data); +static void compose_ok_callback (GtkWidget *widget, + gpointer data); +static void compose_type_toggle_update (GtkWidget *widget, + gpointer data); + +/* Maximum number of images to compose */ +#define MAX_COMPOSE_IMAGES 4 + + +/* Description of a composition */ +typedef struct { + char *compose_type; /* Type of composition ("RGB", "RGBA",...) */ + int num_images; /* Number of input images needed */ + char *channel_name[MAX_COMPOSE_IMAGES]; /* channel names for dialog */ + char *filename; /* Name of new image */ + /* Compose functon */ + void (*compose_fun)(unsigned char **src, int numpix, unsigned char *dst); +} COMPOSE_DSC; + +/* Array of available compositions. */ +static COMPOSE_DSC compose_dsc[] = { + { "RGB", 3, { "Red:", "Green: ", "Blue:", "N/A" }, + "rgb-compose", compose_rgb }, + { "RGBA", 4, { "Red:", "Green: ", "Blue:", "Alpha:" }, + "rgba-compose", compose_rgba }, + { "HSV", 3, { "Hue:", "Saturation:", "Value:", "N/A" }, + "hsv-compose", compose_hsv }, + { "CMY", 3, { "Cyan:", "Magenta: ", "Yellow:", "N/A" }, + "cmy-compose", compose_cmy }, + { "CMYK", 4, { "Cyan:", "Magenta: ", "Yellow:", "Black:" }, + "cmyk-compose", compose_cmyk } +}; + +#define MAX_COMPOSE_TYPES (sizeof (compose_dsc) / sizeof (compose_dsc[0])) + + +typedef struct { + gint32 compose_ID[MAX_COMPOSE_IMAGES]; /* Image IDs of input images */ + char compose_type[32]; /* type of composition */ +} ComposeVals; + +/* Dialog structure */ +typedef struct { + GtkWidget *channel_label[MAX_COMPOSE_IMAGES]; /* The labels to change */ + + gint32 select_ID[MAX_COMPOSE_IMAGES]; /* Image Ids selected by menu */ + gint compose_flag[MAX_COMPOSE_TYPES]; /* toggle data of compose type */ + gint run; +} ComposeInterface; + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +static ComposeVals composevals = +{ + { 0 }, /* Image IDs of images to compose */ + "rgb" /* Type of composition */ +}; + +static ComposeInterface composeint = +{ + { NULL }, /* Label Widgets */ + { 0 }, /* Image IDs from menues */ + { 0 }, /* Compose type toggle flags */ + FALSE /* run */ +}; + +static GRunModeType run_mode; + + +MAIN (); + +static void +query () +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "First input image" }, + { PARAM_DRAWABLE, "drawable", "Input drawable (not used)" }, + { PARAM_IMAGE, "image", "Second input image" }, + { PARAM_IMAGE, "image", "Third input image" }, + { PARAM_IMAGE, "image", "Fourth input image" }, + { PARAM_STRING, "compose_type", "What to compose: RGB, RGBA, HSV,\ + CMY, CMYK" } + }; + static GParamDef return_vals[] = + { + { PARAM_IMAGE, "new_image", "Output image" } + }; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = sizeof (return_vals) / sizeof (return_vals[0]); + + gimp_install_procedure ("plug_in_compose", + "Compose an image from different types of channels", + "This function creates a new image from\ + different channel informations kept in gray images", + "Peter Kirchgessner", + "Peter Kirchgessner (pkirchg@aol.com)", + "1997", + "/Image/Channel Ops/Compose", + "GRAY", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[2]; + GStatusType status = STATUS_SUCCESS; + gint32 image_ID; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 2; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + values[1].type = PARAM_IMAGE; + values[1].data.d_int32 = -1; + + switch (run_mode) + { + case RUN_INTERACTIVE: + /* Possibly retrieve data */ + gimp_get_data ("plug_in_compose", &composevals); + + /* First acquire information with a dialog */ + if (! compose_dialog (composevals.compose_type, param[1].data.d_int32)) + return; + break; + + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are there! */ + if (nparams != 7) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) + { + composevals.compose_ID[0] = param[1].data.d_int32; + composevals.compose_ID[1] = param[3].data.d_int32; + composevals.compose_ID[2] = param[4].data.d_int32; + composevals.compose_ID[3] = param[5].data.d_int32; + strncpy (composevals.compose_type, param[6].data.d_string, + sizeof (composevals.compose_type)); + composevals.compose_type[sizeof (composevals.compose_type)-1] = '\0'; + } + break; + + case RUN_WITH_LAST_VALS: + /* Possibly retrieve data */ + gimp_get_data ("plug_in_compose", &composevals); + break; + + default: + break; + } + + if (status == STATUS_SUCCESS) + { + if (run_mode != RUN_NONINTERACTIVE) + gimp_progress_init ("Composing..."); + + image_ID = compose (composevals.compose_type, composevals.compose_ID); + + if (image_ID <= 0) + { + status = STATUS_EXECUTION_ERROR; + } + else + { + values[1].data.d_int32 = image_ID; + gimp_image_enable_undo (image_ID); + gimp_image_clean_all (image_ID); + if (run_mode != RUN_NONINTERACTIVE) + gimp_display_new (image_ID); + } + + /* Store data */ + if (run_mode == RUN_INTERACTIVE) + gimp_set_data ("plug_in_compose", &composevals, sizeof (ComposeVals)); + } + + values[0].data.d_status = status; +} + + +/* Compose an image from several gray-images */ +static gint32 +compose (char *compose_type, + gint32 *compose_ID) + +{int width, height, tile_height, scan_lines; + int num_images, compose_idx; + int i, j; + gint num_layers; + gint32 *g32, layer_ID_src[MAX_COMPOSE_IMAGES], layer_ID_dst, image_ID_dst; + unsigned char *src[MAX_COMPOSE_IMAGES], *dst = (unsigned char *)ident; + GDrawableType gdtype_dst; + GDrawable *drawable_src[MAX_COMPOSE_IMAGES], *drawable_dst; + GPixelRgn pixel_rgn_src[MAX_COMPOSE_IMAGES], pixel_rgn_dst; + + /* Search type of composing */ + compose_idx = -1; + for (j = 0; j < MAX_COMPOSE_TYPES; j++) + { + if (cmp_icase (compose_type, compose_dsc[j].compose_type) == 0) + compose_idx = j; + } + if (compose_idx < 0) + return (-1); + + num_images = compose_dsc[compose_idx].num_images; + + /* Check image sizes */ + width = gimp_image_width (compose_ID[0]); + height = gimp_image_height (compose_ID[0]); + tile_height = gimp_tile_height (); + + for (j = 1; j < num_images; j++) + { + if ( (width != (int)gimp_image_width (compose_ID[j])) + || (height != (int)gimp_image_height (compose_ID[j]))) + { + printf ("compose: images have different size\n"); + return -1; + } + } + + /* Get first layer/drawable/pixel region for all input images */ + for (j = 0; j < num_images; j++) + { + /* Get first layer of image */ + g32 = gimp_image_get_layers (compose_ID[j], &num_layers); + if ((g32 == NULL) || (num_layers <= 0)) + { + printf ("compose: error in getting layer IDs\n"); + return (-1); + } + layer_ID_src[j] = g32[0]; + + /* Get drawable for layer */ + drawable_src[j] = gimp_drawable_get (layer_ID_src[j]); + if (drawable_src[j]->bpp != 1) + { + printf ("compose: image is not a gray image\n"); + return (-1); + } + + /* Get pixel region */ + gimp_pixel_rgn_init (&(pixel_rgn_src[j]), drawable_src[j], 0, 0, + width, height, FALSE, FALSE); + + /* Get memory for retrieving information */ + src[j] = (unsigned char *)g_malloc (tile_height * width + * drawable_src[j]->bpp); + if (src[j] == NULL) + { + printf ("compose: not enough memory\n"); + return (-1); + } + } + + /* Create new image */ + gdtype_dst = (compose_dsc[compose_idx].compose_fun == compose_rgba) + ? RGBA_IMAGE : RGB_IMAGE; + image_ID_dst = create_new_image (compose_dsc[compose_idx].filename, + width, height, gdtype_dst, + &layer_ID_dst, &drawable_dst, &pixel_rgn_dst); + dst = (unsigned char *)g_malloc (tile_height * width * drawable_dst->bpp); + if (dst == NULL) + { + for (j = 0; j < num_images; j++) g_free (src[j]); + printf ("compose: not enough memory\n"); + return (-1); + } + + /* Do the composition */ + i = 0; + while (i < height) + { + scan_lines = (i+tile_height-1 < height) ? tile_height : (height-i); + + /* Get source pixel regions */ + for (j = 0; j < num_images; j++) + gimp_pixel_rgn_get_rect (&(pixel_rgn_src[j]), src[j], 0, i, + width, scan_lines); + + /* Do the composition */ + compose_dsc[compose_idx].compose_fun (src, width*tile_height, dst); + + /* Set destination pixel region */ + gimp_pixel_rgn_set_rect (&pixel_rgn_dst, dst, 0, i, width, scan_lines); + + i += scan_lines; + + if (run_mode != RUN_NONINTERACTIVE) + gimp_progress_update (((double)i) / (double)height); + } + + for (j = 0; j < num_images; j++) + { + g_free (src[j]); + gimp_drawable_flush (drawable_src[j]); + gimp_drawable_detach (drawable_src[j]); + } + g_free (dst); + gimp_drawable_flush (drawable_dst); + gimp_drawable_detach (drawable_dst); + + return image_ID_dst; +} + + +/* Create an image. Sets layer_ID, drawable and rgn. Returns image_ID */ +static gint32 +create_new_image (char *filename, + guint width, + guint height, + GDrawableType gdtype, + gint32 *layer_ID, + GDrawable **drawable, + GPixelRgn *pixel_rgn) + +{gint32 image_ID; + GImageType gitype; + + if ((gdtype == GRAY_IMAGE) || (gdtype == GRAYA_IMAGE)) + gitype = GRAY; + else if ((gdtype == INDEXED_IMAGE) || (gdtype == INDEXEDA_IMAGE)) + gitype = INDEXED; + else + gitype = RGB; + + image_ID = gimp_image_new (width, height, gitype); + gimp_image_set_filename (image_ID, filename); + + *layer_ID = gimp_layer_new (image_ID, "Background", width, height, + gdtype, 100, NORMAL_MODE); + gimp_image_add_layer (image_ID, *layer_ID, 0); + + *drawable = gimp_drawable_get (*layer_ID); + gimp_pixel_rgn_init (pixel_rgn, *drawable, 0, 0, (*drawable)->width, + (*drawable)->height, TRUE, FALSE); + + return (image_ID); +} + + +/* Compare two strings ignoring case (could also be done by strcasecmp() */ +/* but is it available everywhere ?) */ +static int cmp_icase (char *s1, char *s2) + +{int c1, c2; + + c1 = toupper (*s1); c2 = toupper (*s2); + while (*s1 && *s2) + { + if (c1 != c2) return (c2 - c1); + c1 = toupper (*(++s1)); c2 = toupper (*(++s2)); + } + return (c2 - c1); +} + + +static void +compose_rgb (unsigned char **src, + int numpix, + unsigned char *dst) + +{register unsigned char *red_src = src[0]; + register unsigned char *green_src = src[1]; + register unsigned char *blue_src = src[2]; + register unsigned char *rgb_dst = dst; + register int count = numpix; + + while (count-- > 0) + { + *(rgb_dst++) = *(red_src++); + *(rgb_dst++) = *(green_src++); + *(rgb_dst++) = *(blue_src++); + } +} + + +static void +compose_rgba (unsigned char **src, + int numpix, + unsigned char *dst) + +{register unsigned char *red_src = src[0]; + register unsigned char *green_src = src[1]; + register unsigned char *blue_src = src[2]; + register unsigned char *alpha_src = src[3]; + register unsigned char *rgb_dst = dst; + register int count = numpix; + + while (count-- > 0) + { + *(rgb_dst++) = *(red_src++); + *(rgb_dst++) = *(green_src++); + *(rgb_dst++) = *(blue_src++); + *(rgb_dst++) = *(alpha_src++); + } +} + + +static void +compose_hsv (unsigned char **src, + int numpix, + unsigned char *dst) + +{register unsigned char *hue_src = src[0]; + register unsigned char *sat_src = src[1]; + register unsigned char *val_src = src[2]; + register unsigned char *rgb_dst = dst; + register int count = numpix; + + while (count-- > 0) + { + hsv_to_rgb (hue_src++, sat_src++, val_src++, rgb_dst); + rgb_dst += 3; + } +} + + +static void +compose_cmy (unsigned char **src, + int numpix, + unsigned char *dst) + +{register unsigned char *cyan_src = src[0]; + register unsigned char *magenta_src = src[1]; + register unsigned char *yellow_src = src[2]; + register unsigned char *rgb_dst = dst; + register int count = numpix; + + while (count-- > 0) + { + *(rgb_dst++) = 255 - *(cyan_src++); + *(rgb_dst++) = 255 - *(magenta_src++); + *(rgb_dst++) = 255 - *(yellow_src++); + } +} + + +static void +compose_cmyk (unsigned char **src, + int numpix, + unsigned char *dst) + +{register unsigned char *cyan_src = src[0]; + register unsigned char *magenta_src = src[1]; + register unsigned char *yellow_src = src[2]; + register unsigned char *black_src = src[3]; + register unsigned char *rgb_dst = dst; + register int count = numpix; + int cyan, magenta, yellow, black; + + while (count-- > 0) + { + black = (int)*(black_src++); + if (black) + { + cyan = (int)*(cyan_src++); + magenta = (int)*(magenta_src++); + yellow = (int)*(yellow_src++); + cyan += black; if (cyan > 255) cyan = 255; + magenta += black; if (magenta > 255) magenta = 255; + yellow += black; if (yellow > 255) yellow = 255; + *(rgb_dst++) = 255 - cyan; + *(rgb_dst++) = 255 - magenta; + *(rgb_dst++) = 255 - yellow; + } + else + { + *(rgb_dst++) = 255 - *(cyan_src++); + *(rgb_dst++) = 255 - *(magenta_src++); + *(rgb_dst++) = 255 - *(yellow_src++); + } + } +} + + +static gint +compose_dialog (char *compose_type, + gint32 image_ID) +{ + GtkWidget *dlg; + GtkWidget *button; + GtkWidget *toggle; + GtkWidget *left_frame, *right_frame; + GtkWidget *left_vbox, *right_vbox; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *table; + GtkWidget *image_option_menu, *image_menu; + GSList *group; + gchar **argv; + gint argc; + int j, compose_idx; + + /* Check default compose type */ + compose_idx = -1; + for (j = 0; j < MAX_COMPOSE_TYPES; j++) + { + if (cmp_icase (compose_type, compose_dsc[j].compose_type) == 0) + compose_idx = j; + } + if (compose_idx < 0) compose_idx = 0; + + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("Compose"); + + gtk_init (&argc, &argv); + gtk_rc_parse (gimp_gtkrc ()); + + dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Compose"); + gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) compose_close_callback, + NULL); + + /* Action area */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) compose_ok_callback, dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, + TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, + TRUE, TRUE, 0); + gtk_widget_show (button); + + /* parameter settings */ + hbox = gtk_hbox_new (FALSE, 0); + gtk_container_border_width (GTK_CONTAINER (hbox), 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), hbox, TRUE, TRUE, 0); + gtk_widget_show (hbox); + + /* The left frame keeps the compose type toggles */ + left_frame = gtk_frame_new ("Compose channels:"); + gtk_frame_set_shadow_type (GTK_FRAME (left_frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (left_frame), 10); + gtk_box_pack_start (GTK_BOX (hbox), left_frame, TRUE, TRUE, 0); + + left_vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (left_vbox), 10); + gtk_container_add (GTK_CONTAINER (left_frame), left_vbox); + + /* The right frame keeps the selection menues for images. */ + /* Because the labels within this frame will change when a toggle */ + /* in the left frame is changed, fill in the right part first. */ + /* Otherwise it can occur, that a non-existing label might be changed. */ + + right_frame = gtk_frame_new ("Channel representations:"); + gtk_frame_set_shadow_type (GTK_FRAME (right_frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (right_frame), 10); + gtk_box_pack_start (GTK_BOX (hbox), right_frame, TRUE, TRUE, 0); + + right_vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (right_vbox), 10); + gtk_container_add (GTK_CONTAINER (right_frame), right_vbox); + + table = gtk_table_new (MAX_COMPOSE_IMAGES, 3, FALSE); + gtk_table_set_row_spacings (GTK_TABLE (table), 5); + gtk_table_set_col_spacings (GTK_TABLE (table), 5); + gtk_box_pack_start (GTK_BOX (right_vbox), table, TRUE, TRUE, 0); + gtk_widget_show (table); + + /* Channel names */ + for (j = 0; j < MAX_COMPOSE_IMAGES; j++) + { + composeint.channel_label[j] = label = + gtk_label_new (compose_dsc[compose_idx].channel_name[j]); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 1, 2, j, j+1, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (label); + } + + /* Menues to select images */ + for (j = 0; j < MAX_COMPOSE_IMAGES; j++) + { + composeint.select_ID[j] = image_ID; + image_option_menu = gtk_option_menu_new (); + image_menu = gimp_image_menu_new (check_gray, image_menu_callback, + &(composeint.select_ID[j]), composeint.select_ID[j]); + gtk_table_attach (GTK_TABLE (table), image_option_menu, 2, 3, j, j+1, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + gtk_widget_show (image_option_menu); + gtk_option_menu_set_menu (GTK_OPTION_MENU (image_option_menu), image_menu); + } + + /* Compose types */ + group = NULL; + for (j = 0; j < MAX_COMPOSE_TYPES; j++) + { + toggle = gtk_radio_button_new_with_label (group, + compose_dsc[j].compose_type); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (left_vbox), toggle, TRUE, TRUE, 0); + composeint.compose_flag[j] = (j == compose_idx); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) compose_type_toggle_update, + &(composeint.compose_flag[j])); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), + composeint.compose_flag[j]); + gtk_widget_show (toggle); + } + + gtk_widget_show (left_vbox); + gtk_widget_show (right_vbox); + gtk_widget_show (left_frame); + gtk_widget_show (right_frame); + gtk_widget_show (dlg); + + gtk_main (); + gdk_flush (); + + return composeint.run; +} + + +/* hsv_to_rgb has been taken from the compose-plug-in of GIMP V 0.54 + * and hass been modified a little bit + */ +static void +hsv_to_rgb (unsigned char *h, + unsigned char *s, + unsigned char *v, + unsigned char *rgb) + +{double hue, sat, val; + double f, p, q, t; + int red, green, blue; + + if (*s == 0) + { + rgb[0] = rgb[1] = rgb[2] = *v; + } + else + { + hue = *h * 6.0 / 255.0; + sat = *s / 255.0; + val = *v / 255.0; + + f = hue - (int) hue; + p = val * (1.0 - sat); + q = val * (1.0 - (sat * f)); + t = val * (1.0 - (sat * (1.0 - f))); + + switch ((int) hue) + { + case 0: + red = (int)(val * 255.0); + green = (int)(t * 255.0); + blue = (int)(p * 255.0); + break; + case 1: + red = (int)(q * 255.0); + green = (int)(val * 255.0); + blue = (int)(p * 255.0); + break; + case 2: + red = (int)(p * 255.0); + green = (int)(val * 255.0); + blue = (int)(t * 255.0); + break; + case 3: + red = (int)(p * 255.0); + green = (int)(q * 255.0); + blue = (int)(val * 255.0); + break; + case 4: + red = (int)(t * 255.0); + green = (int)(p * 255.0); + blue = (int)(val * 255.0); + break; + case 5: + red = (int)(val * 255.0); + green = (int)(p * 255.0); + blue = (int)(q * 255.0); + break; + } + if (red < 0) red = 0; else if (red > 255) red = 255; + if (green < 0) green = 0; else if (green > 255) green = 255; + if (blue < 0) blue = 0; else if (blue > 255) blue = 255; + rgb[0] = (unsigned char)red; + rgb[1] = (unsigned char)green; + rgb[2] = (unsigned char)blue; + } +} + +/* Compose interface functions */ + +static gint +check_gray (gint32 image_id, + gint32 drawable_id, + gpointer data) + +{ + return (gimp_image_base_type (image_id) == GRAY); +} + + +static void +image_menu_callback (gint32 id, + gpointer data) +{ + *(gint32 *)data = id; +} + + +static void +compose_close_callback (GtkWidget *widget, + gpointer data) +{ + gtk_main_quit (); +} + + +static void +compose_ok_callback (GtkWidget *widget, + gpointer data) +{int j; + + composeint.run = TRUE; + gtk_widget_destroy (GTK_WIDGET (data)); + + for (j = 0; j < MAX_COMPOSE_IMAGES; j++) + composevals.compose_ID[j] = composeint.select_ID[j]; + + for (j = 0; j < MAX_COMPOSE_TYPES; j++) + { + if (composeint.compose_flag[j]) + { + strcpy (composevals.compose_type, compose_dsc[j].compose_type); + break; + } + } +} + + +static void +compose_type_toggle_update (GtkWidget *widget, + gpointer data) +{ + gint *toggle_val; + gint compose_idx, j; + + toggle_val = (gint *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + { + *toggle_val = TRUE; + compose_idx = toggle_val - &(composeint.compose_flag[0]); + for (j = 0; j < MAX_COMPOSE_IMAGES; j++) + gtk_label_set (GTK_LABEL (composeint.channel_label[j]), + compose_dsc[compose_idx].channel_name[j]); + } + else + *toggle_val = FALSE; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/convmatrix.c gimp-0.99.pre11/plug-ins/convmatrix.c --- gimp-0.99.10/plug-ins/convmatrix.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/convmatrix.c Wed Aug 13 20:49:08 1997 @@ -0,0 +1,893 @@ +/* Convolution Matrix plug-in for the GIMP -- Version 0.1 + * Copyright (C) 1997 Lauri Alanko + * + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * The GNU General Public License is also available from + * http://www.fsf.org/copyleft/gpl.html + * + * + * CHANGELOG: + * v0.11 20.7.1997 + * Negative values in the matrix are now abs'ed when used to weight + * alpha. Embossing effects should work properly now. Also fixed a + * totally idiotic bug with embossing. + * + * v0.1 2.7.1997 + * Initial release. Works... kinda. + * + * + * TODO: + * + * - remove channels selector (that's what the channels dialog is for) + * - remove idiotic slowdowns + * - clean up code + * - preview + * - optimize properly + * - save & load matrices + * - spiffy frontend for designing matrices + * + * What else? + * + * + */ + +#include +#include +#include +#include +#include "libgimp/gimp.h" +#include "gtk/gtk.h" +#include +#include +#include + + +typedef enum { + EXTEND, + WRAP, + CLEAR, + MIRROR +}BorderMode; + +GDrawable *drawable; + +char * const channel_labels[]={ + "Grey","Red","Green","Blue","Alpha" +}; + +char * const bmode_labels[]={ + "Extend","Wrap","Crop" +}; + +/* Declare local functions. */ +static void query(void); +static void run(char *name, + int nparams, + GParam * param, + int *nreturn_vals, + GParam ** return_vals); +static gint dialog(); + +static void doit(void); +static void check_config(void); + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +gint bytes; +gint sx1, sy1, sx2, sy2; +int run_flag = 0; + +typedef struct { + gfloat matrix[5][5]; + gfloat divisor; + gfloat offset; + gint alpha_alg; + BorderMode bmode; + gint channels[5]; + gint autoset; +} config; + +const config default_config = +{ + { + {0,0,0,0,0}, + {0,0,0,0,0}, + {0,0,1,0,0}, + {0,0,0,0,0}, + {0,0,0,0,0} + }, /* matrix */ + 1, /* divisor */ + 0, /* offset */ + 1, /* Alpha-handling algorithm */ + CLEAR, /* border-mode */ + {1,1,1,1,1}, /* Channels mask */ + 0 /* autoset */ +}; + +config my_config; + +struct{ + GtkWidget *matrix[5][5]; + GtkWidget *divisor; + GtkWidget *offset; + GtkWidget *alpha_alg; + GtkWidget *bmode[3]; + GtkWidget *channels[5]; + GtkWidget *autoset; + GtkWidget *ok; +}my_widgets; + + +MAIN(); + +static void query() +{ + static GParamDef args[] = + { + {PARAM_INT32, "run_mode", "Interactive, non-interactive"}, + {PARAM_IMAGE, "image", "Input image (unused)"}, + {PARAM_DRAWABLE, "drawable", "Input drawable"}, +/* {PARAM_FLOATARRAY, "matrix", "The 5x5 convolution matrix"}, + {PARAM_INT32, "alpha_alg", "Enable weighting by alpha channel"}, + {PARAM_FLOAT, "divisor", "Divisor"}, + {PARAM_FLOAT, "offset", "Offset"}, + + {PARAM_INT32ARRAY, "channels", "Mask of the channels to be filtered"}, + {PARAM_INT32, "bmode", "Mode for treating image borders"} + */ + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof(args) / sizeof(args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure("plug_in_convmatrix", + "A generic 5x5 convolution matrix", + "", + "Lauri Alanko", + "Lauri Alanko", + "1997", + "/Filters/Image/Convolution Matrix", + "RGB*, GRAY*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void run(char *name, int n_params, GParam * param, int *nreturn_vals, + GParam ** return_vals) +{ + static GParam values[1]; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + int x,y; + + // kill(getpid(),SIGKILL); + *nreturn_vals = 1; + *return_vals = values; + + run_mode = param[0].data.d_int32; + + /* Get the specified drawable */ + drawable = gimp_drawable_get(param[2].data.d_drawable); + + my_config=default_config; + if (run_mode == RUN_NONINTERACTIVE) { + if(n_params!=9) + status=STATUS_CALLING_ERROR; + else{ + for(y=0;y<5;y++) + for(x=0;x<5;x++) + my_config.matrix[x][y]=param[3].data.d_floatarray[y*5+x]; + my_config.divisor=param[4].data.d_float; + my_config.offset=param[5].data.d_float; + my_config.alpha_alg=param[6].data.d_int32; + my_config.bmode=param[6].data.d_int32; + for(y=0;y<5;y++) + my_config.channels[y]=param[7].data.d_int32array[y]; + check_config(); + } + } else { + gimp_get_data("plug_in_convmatrix", &my_config); + + if (run_mode == RUN_INTERACTIVE) { + /* Oh boy. We get to do a dialog box, because we can't really expect the + * user to set us up with the right values using gdb. + */ + check_config(); + if (!dialog()) { + /* The dialog was closed, or something similarly evil happened. */ + status = STATUS_EXECUTION_ERROR; + } + } + } + + if (status == STATUS_SUCCESS) { + + /* Make sure that the drawable is gray or RGB color */ + if (gimp_drawable_color(drawable->id) || + gimp_drawable_gray(drawable->id)) { + gimp_progress_init("Applying convolution"); + gimp_tile_cache_ntiles(2 * (drawable->width / + gimp_tile_width() + 1)); + + doit(); + + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush(); + + if (run_mode == RUN_INTERACTIVE) + gimp_set_data("plug_in_convmatrix", &my_config, + sizeof(my_config)); + } else { + status = STATUS_EXECUTION_ERROR; + } + gimp_drawable_detach(drawable); + } + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; +} + + +/* A generic wrapper to gimp_pixel_rgn_get_row which handles unlimited + * wrapping or gives you transparent regions outside the image */ + +static void my_get_row(GPixelRgn *PR, guchar *dest, int x, int y, int w){ + int width, height, bytes; + int i; + width=PR->drawable->width; + height=PR->drawable->height; + bytes=PR->drawable->bpp; + + /* Y-wrappings */ + + switch(my_config.bmode){ + case WRAP: + /* Wrapped, so we get the proper row from the other side */ + while(y<0) /* This is the _sure_ way to wrap. :) */ + y+=height; + while(y>=height) + y-=height; + break; + case CLEAR: + /* Beyond borders, so set full transparent. */ + if(y<0 || y>=height){ + memset(dest,0,w*bytes); + return; /* Done, so back. */ + } + case MIRROR: + /* The border lines are _not_ duplicated in the mirror image */ + /* is this right? */ + while(y<0 || y>=height){ + if(y<0) + y=-y; /* y=-y-1 */ + if(y>=height) + y=2*height-y-2; /* y=2*height-y-1 */ + } + break; + case EXTEND: + y=CLAMP(y,0,height-1); + break; + } + switch(my_config.bmode){ + case CLEAR: + if(x<0){ + i=MIN(w,-x); + memset(dest,0,i*bytes); + dest+=i*bytes; + w-=i; + x+=i; + } + if(w){ + i=MIN(w,width); + gimp_pixel_rgn_get_row(PR, dest, x, y, i); + dest+=i*bytes; + w-=i; + x+=i; + } + if(w) + memset(dest,0,w*bytes); + break; + + case WRAP: + while(x<0) + x+=width; + i=MIN(w, width-x); + gimp_pixel_rgn_get_row(PR, dest, x, y, i); + w-=i; + dest+=i*bytes; + x=0; + while(w){ + i=MIN(w, width); + gimp_pixel_rgn_get_row(PR, dest, x, y, i); + w-=i; + dest+=i*bytes; + } + break; + case EXTEND: + if(x<0){ + gimp_pixel_rgn_get_pixel(PR, dest, 0, y); + x++; + w--; + dest+=bytes; + while(x<0 && w){ + for(i=0;ibpp; + for(y=0;y<5;y++) + for(x=0;x<5;x++){ + temp=my_config.matrix[x][y]; + matrixsum+=ABS(temp); + } + } + for(y=0;y<5;y++) + for(x=0;x<5;x++){ + temp=my_config.matrix[x][y]; + if(i!=(bytes-1) && my_config.alpha_alg==1){ + temp*=srcrow[y][xoff+x*bytes+bytes-1-i]; + alphasum+=ABS(temp); + } + temp*=srcrow[y][xoff+x*bytes]; + sum+=temp; + } + sum/=my_config.divisor; + if(i!=(bytes-1) && my_config.alpha_alg==1){ + if(alphasum!=0) + sum=sum*matrixsum/alphasum; + else + sum=0; +/* sum=srcrow[2][xoff+2*bytes]*my_config.matrix[2][2];*/ + } + sum+=my_config.offset; + return sum; +} +static void doit(void) +{ + GPixelRgn srcPR, destPR; + gint width, height, row, col; + int w, h, i; + guchar *destrow[3], *srcrow[5], *temprow; + gfloat sum; + gint xoff; + gint chanmask[4]; + /* Get the input area. This is the bounding box of the selection in + * the image (or the entire image if there is no selection). Only + * operating on the input area is simply an optimization. It doesn't + * need to be done for correct operation. (It simply makes it go + * faster, since fewer pixels need to be operated on). + */ + gimp_drawable_mask_bounds(drawable->id, &sx1, &sy1, &sx2, &sy2); + w=sx2-sx1; + h=sy2-sy1; + + /* Get the size of the input image. (This will/must be the same + * as the size of the output image. + */ + width = drawable->width; + height = drawable->height; + bytes = drawable->bpp; + + if(gimp_drawable_color(drawable->id)) + for(i=0;i<3;i++) + chanmask[i]=my_config.channels[i+1]; + else /* Grayscale */ + chanmask[0]=my_config.channels[0]; + if(gimp_drawable_has_alpha(drawable->id)) + chanmask[bytes-1]=my_config.channels[4]; + + for(i=0;i<5;i++) + srcrow[i]=(guchar *) malloc ((w + 4) * bytes); + for(i=0;i<3;i++) + destrow[i]=(guchar *) malloc ((w) * bytes); + + /* initialize the pixel regions */ + gimp_pixel_rgn_init(&srcPR, drawable, sx1-2, sy1-2, w+4, h+4, FALSE, FALSE); + gimp_pixel_rgn_init(&destPR, drawable, sx1, sy1, w, h, TRUE, TRUE); + + + /* initialize source arrays */ + for(i=0;i<5;i++) + my_get_row(&srcPR, srcrow[i], sx1-2, sy1+i-2,w+4); + + + for (row=sy1;rowsy1+1) + gimp_pixel_rgn_set_row(&destPR,destrow[0], sx1,row-2,w); + temprow=destrow[0]; + destrow[0]=destrow[1]; + destrow[1]=destrow[2]; + destrow[2]=temprow; + temprow=srcrow[0]; + for(i=0;i<4;i++) + srcrow[i]=srcrow[i+1]; + srcrow[4]=temprow; + my_get_row(&srcPR,srcrow[4],sx1-2,row+3,w+4); + gimp_progress_update((double)(row-sy1)/h); + } + /* put the final rows in the buffer in place */ + if(h<3) + gimp_pixel_rgn_set_row(&destPR,destrow[2], sx1,row-3,w); + if(h>1) + gimp_pixel_rgn_set_row(&destPR,destrow[0], sx1,row-2,w); + if(h>2) + gimp_pixel_rgn_set_row(&destPR,destrow[1], sx1,row-1,w); + /* update the timred region */ + gimp_drawable_flush(drawable); + gimp_drawable_merge_shadow(drawable->id, TRUE); + gimp_drawable_update(drawable->id, sx1, sy1, sx2 - sx1, sy2 - sy1); +} + +/*************************************************** + * GUI stuff + */ + +void fprint(gfloat f, guchar *buffer){ + int i,t; + + snprintf(buffer, 10, "%.7f", f); + for(i=0;buffer[i]!='.';i++); + t=i-1; + while(buffer[i]!='\0'){ + if(buffer[i]!='0') + t=i; + i++; + } + buffer[t]='\0'; +} + +static void redraw_matrix(void){ + int x,y; + gchar buffer[12]; + for(y=0;y<5;y++) + for(x=0;x<5;x++){ + fprint(my_config.matrix[x][y],buffer); + + gtk_entry_set_text(GTK_ENTRY(my_widgets.matrix[x][y]),buffer); + + } +} + +static void redraw_channels(void){ + int i; + for(i=0;i<5;i++) + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(my_widgets.channels[i]), + my_config.channels[i]>0); +} + +static void redraw_autoset(void){ + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(my_widgets.autoset),my_config.autoset); +} +static void redraw_alpha_alg(void){ + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(my_widgets.alpha_alg),my_config.alpha_alg>0); +} + +static void redraw_off_and_div(void){ + gchar buffer[12]; + fprint(my_config.divisor,buffer); + gtk_entry_set_text(GTK_ENTRY(my_widgets.divisor),buffer); + fprint(my_config.offset,buffer); + gtk_entry_set_text(GTK_ENTRY(my_widgets.offset),buffer); +} + +static void redraw_bmode(void){ + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(my_widgets.bmode[my_config.bmode]),TRUE); +} + +static void redraw_all(void){ + redraw_matrix(); + redraw_off_and_div(); + redraw_autoset(); + redraw_alpha_alg(); + redraw_bmode(); + redraw_channels(); +} + +static void check_matrix(void){ + int x,y; + int valid=0; + gfloat sum=0.0; + for(y=0;y<5;y++) + for(x=0;x<5;x++){ + sum+=my_config.matrix[x][y]; + if(my_config.matrix[x][y]!=0.0) + valid=1; + } + + if(my_config.autoset){ + if(sum>0){ + my_config.offset=0; + my_config.divisor=sum; + }else if(sum<0){ + my_config.offset=255; + my_config.divisor=-sum; + }else{ + my_config.offset=128; + /* The sum is 0, so this is probably some sort of + * embossing filter. Should divisor be autoset to 1 + * or left undefined, ie. for the user to define? */ + my_config.divisor=1; + } + redraw_off_and_div(); + } +/* gtk_widget_set_sensitive(my_widgets.ok,valid); */ +} + +static void close_callback(GtkWidget * widget, gpointer data) +{ + gtk_main_quit(); +} + +static void ok_callback(GtkWidget * widget, gpointer data) +{ + run_flag = 1; + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +static void check_config(void){ + int i; + for(i=0;i<5;i++) + if(my_config.channels[i]<0) + my_config.channels[i]=0; + if(gimp_drawable_color(drawable->id)) + my_config.channels[0]=-1; + else if(gimp_drawable_gray(drawable->id)) + for(i=1;i<4;i++) + my_config.channels[i]=-1; + if(!gimp_drawable_has_alpha(drawable->id)){ + my_config.channels[4]=-1; + my_config.alpha_alg=-1; + } +} + + +static void defaults_callback(GtkWidget * widget, gpointer data) +{ + my_config=default_config; + check_config(); + redraw_all(); + +} + + +static void entry_callback(GtkWidget * widget, gpointer data) +{ + gfloat *value=(gfloat *)data; + *value=atof(gtk_entry_get_text(GTK_ENTRY(widget))); +#if 0 + check_matrix(); +#else + if(widget==my_widgets.divisor) + gtk_widget_set_sensitive(GTK_WIDGET(my_widgets.ok),(*value!=0.0)); + else if(widget!=my_widgets.offset) + check_matrix(); +#endif +} + +static void my_toggle_callback(GtkWidget * widget, gpointer data) +{ + int val=GTK_TOGGLE_BUTTON(widget)->active; + if(val) + *(int *)data=TRUE; + else + *(int *)data=FALSE; + if(widget==my_widgets.alpha_alg){ + gtk_widget_set_sensitive(my_widgets.bmode[CLEAR],val); + if(val==0 && my_config.bmode==CLEAR){ + my_config.bmode=EXTEND; + redraw_bmode(); + } + }else if(widget==my_widgets.autoset){ + gtk_widget_set_sensitive(my_widgets.divisor,!val); + gtk_widget_set_sensitive(my_widgets.offset,!val); + check_matrix(); + } +} + +static void my_bmode_callback(GtkWidget * widget, gpointer data){ + my_config.bmode=(int)data-1; +} + + + + +static gint dialog() +{ + GtkWidget *dlg; + GtkWidget *button; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *table; + GtkWidget *outbox; + GtkWidget *box; + GtkWidget *inbox; + GtkWidget *yetanotherbox; + GtkWidget *frame; + gchar buffer[32]; + gchar **argv; + gint argc; + gint x,y,i; + GSList *group; + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup("convmatrix"); + + gtk_init(&argc, &argv); + gtk_rc_parse (gimp_gtkrc ()); + + dlg = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dlg), "Convolution Matrix"); + gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(dlg), "destroy", + (GtkSignalFunc) close_callback, NULL); + + /* Action area */ + my_widgets.ok = button = gtk_button_new_with_label("OK"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) ok_callback, + GTK_OBJECT(dlg)); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Defaults"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect_object(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) defaults_callback, + GTK_OBJECT(dlg)); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect_object(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) close_callback, + GTK_OBJECT(dlg)); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + +/* Outbox */ + outbox=gtk_hbox_new(FALSE,0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dlg)->vbox), outbox, TRUE, TRUE, 0); + +/* Outbox:YABox */ + yetanotherbox=gtk_vbox_new(FALSE,0); + gtk_box_pack_start (GTK_BOX (outbox), yetanotherbox, TRUE, TRUE, 0); + +/* Outbox:YABox:Frame */ + frame = gtk_frame_new ("Matrix"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start (GTK_BOX (yetanotherbox), frame, TRUE, TRUE, 0); + +/* Outbox:YABox:Frame:Inbox */ + inbox=gtk_vbox_new(FALSE,0); + gtk_container_add(GTK_CONTAINER(frame),inbox); + /* The main table */ + /* Set its size (y, x) */ + +/* Outbox:YABox:Frame:Inbox:Table */ + table = gtk_table_new(5, 5, TRUE); + gtk_container_border_width(GTK_CONTAINER(table), 10); + gtk_container_add (GTK_CONTAINER (inbox), table); + gtk_widget_show(table); + + gtk_table_set_row_spacings(GTK_TABLE(table), 5); + gtk_table_set_col_spacings(GTK_TABLE(table), 5); + + + /* The 5x5 matrix entry fields */ + for(y=0;y<5;y++) + for(x=0;x<5;x++){ + my_widgets.matrix[x][y]= entry = gtk_entry_new(); + gtk_table_attach(GTK_TABLE(table), entry, x, x+1, y, y+1, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize(entry, 40, 0); + + gtk_entry_set_text(GTK_ENTRY(entry), buffer); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.matrix[x][y]); + + gtk_widget_show(entry); + } + + gtk_widget_show(table); + /* The remaining two parameters */ + +/* Outbox:YABox:Frame:Inbox:Box */ + box=gtk_hbox_new(TRUE,0); + gtk_container_border_width(GTK_CONTAINER(box),10); + gtk_box_pack_start(GTK_BOX(inbox), box, TRUE, TRUE, 0); + + /* divisor */ + + + label=gtk_label_new("Divisor"); + gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0); + gtk_widget_show(label); + + my_widgets.divisor=entry=gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(box), entry, TRUE, TRUE, 0); + gtk_container_add(GTK_CONTAINER(frame),entry); + gtk_widget_set_usize(entry, 40, 0); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.divisor); + gtk_widget_show(entry); + + + /* Offset */ + + + label=gtk_label_new("Offset"); + gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0); + gtk_widget_show(label); + + my_widgets.offset=entry=gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(box), entry, TRUE, TRUE, 0); + gtk_container_add(GTK_CONTAINER(frame),entry); + gtk_widget_set_usize(entry, 40, 0); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.offset); + gtk_widget_show(entry); + + gtk_widget_show(box); + gtk_widget_show(inbox); + gtk_widget_show(frame); + +/* Outbox:YABox:Box */ + + box=gtk_hbox_new(TRUE,0); + gtk_box_pack_start(GTK_BOX(yetanotherbox),box, TRUE, TRUE, 0); + + my_widgets.autoset=button=gtk_check_button_new_with_label("Automatic"); + gtk_box_pack_start(GTK_BOX(box), button, TRUE, FALSE,0); + gtk_signal_connect(GTK_OBJECT(button), "toggled", + (GtkSignalFunc) my_toggle_callback, &my_config.autoset); + gtk_widget_show(button); + + + /* Alpha-weighting */ + + my_widgets.alpha_alg=button=gtk_check_button_new_with_label("Alpha-weighting"); + if(my_config.alpha_alg==-1) + gtk_widget_set_sensitive(button,0); + gtk_box_pack_start(GTK_BOX(box),button,TRUE,TRUE,0); + gtk_signal_connect(GTK_OBJECT(button), "toggled",(GtkSignalFunc)my_toggle_callback,&my_config.alpha_alg); + gtk_widget_show(button); + + gtk_widget_show(box); + gtk_widget_show(yetanotherbox); +/* Outbox:Inbox */ + inbox=gtk_vbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(outbox),inbox, TRUE, TRUE,0); + + /* Wrap-modes */ +/* OutBox:Inbox:Frame */ + frame=gtk_frame_new("Border"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start(GTK_BOX(inbox), frame, TRUE, TRUE,0); + +/* OutBox:Inbox:Frame:Box */ + box=gtk_vbox_new(TRUE, 0); + gtk_container_add(GTK_CONTAINER(frame),box); + + group=NULL; + + + for(i=0;i<3;i++){ + my_widgets.bmode[i]=button=gtk_radio_button_new_with_label(group,bmode_labels[i]); + group=gtk_radio_button_group(GTK_RADIO_BUTTON(button)); + gtk_box_pack_start(GTK_BOX(box),button,TRUE,TRUE,0); + gtk_widget_show(button); + gtk_signal_connect(GTK_OBJECT(button),"toggled", + (GtkSignalFunc)my_bmode_callback,(gpointer)(i+1)); + /* Gaahh! We cast an int to a gpointer! So sue me. + * The +1 should protect against some null pointers */ + } + + gtk_widget_show(box); + + gtk_widget_show(frame); + +/* OutBox:Inbox:Frame */ + frame=gtk_frame_new("Channels"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start(GTK_BOX(inbox), frame, TRUE, TRUE,0); + +/* OutBox:Inbox:Frame:Box */ + box=gtk_vbox_new(TRUE, 0); + gtk_container_add(GTK_CONTAINER(frame),box); + for(i=0;i<5;i++){ + my_widgets.channels[i]=button=gtk_check_button_new_with_label(channel_labels[i]); + if(my_config.channels[i]<0) + gtk_widget_set_sensitive(button,0); + gtk_signal_connect(GTK_OBJECT(button), "toggled",(GtkSignalFunc)my_toggle_callback,&my_config.channels[i]); + gtk_box_pack_start(GTK_BOX(box),button,TRUE,TRUE,0); + gtk_widget_show(button); + } + + gtk_widget_show(box); + + gtk_widget_show(frame); + + gtk_widget_show(inbox); + + gtk_widget_show(outbox); + + gtk_widget_show(dlg); + redraw_all(); + gtk_widget_set_sensitive(my_widgets.bmode[CLEAR],(my_config.alpha_alg>0)); + gtk_main(); + gdk_flush(); + return run_flag; +} + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/decompose.c gimp-0.99.pre11/plug-ins/decompose.c --- gimp-0.99.10/plug-ins/decompose.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/decompose.c Wed Aug 13 20:48:00 1997 @@ -0,0 +1,979 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * Decompose plug-in (C) 1997 Peter Kirchgessner + * e-mail: pkirchg@aol.com, WWW: http://members.aol.com/pkirchg + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * This filter decomposes RGB-images into several types of channels + */ + +/* Event history: + * V 1.00, PK, 29-Jul-97, Creation + */ +static char ident[] = "@(#) GIMP Decompose plug-in v1.00 29-Jul-97"; + +#include +#include +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" + +/* Declare local functions + */ +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); + +static gint32 decompose (gint32 image_id, + gint32 drawable_ID, + char *extract_type, + gint32 *drawable_ID_dst); + +static gint32 create_new_image (char *filename, guint width, guint height, + GImageType type, gint32 *layer_ID, GDrawable **drawable, + GPixelRgn *pixel_rgn); + +static int cmp_icase (char *s1, char *s2); +static void rgb_to_hsv (unsigned char *r, unsigned char *g, unsigned char *b, + unsigned char *h, unsigned char *s, unsigned char *v); + +static void extract_rgb (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_red (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_green (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_blue (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_alpha (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_hsv (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_hue (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_sat (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_val (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_cmy (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_cyan (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_magenta (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_yellow (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_cmyk (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_cyank (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_magentak (unsigned char *src, int bpp, int numpix, + unsigned char **dst); +static void extract_yellowk (unsigned char *src, int bpp, int numpix, + unsigned char **dst); + + +static gint decompose_dialog (void); + +static void decompose_close_callback (GtkWidget *widget, + gpointer data); +static void decompose_ok_callback (GtkWidget *widget, + gpointer data); +static void decompose_toggle_update (GtkWidget *widget, + gpointer data); + +/* Maximum number of new images generated by an extraction */ +#define MAX_EXTRACT_IMAGES 4 + +/* Description of an extraction */ +typedef struct { + char *type; /* What to extract */ + int dialog; /* Dialog-Flag. Set it to 1 if you want to appear */ + /* this extract function within the dialog */ + int num_images; /* Number of images to create */ + char *channel_name[MAX_EXTRACT_IMAGES]; /* Names of channels to extract */ + /* Function that performs the extraction */ + void (*extract_fun)(unsigned char *src, int bpp, int numpix, + unsigned char **dst); +} EXTRACT; + +static EXTRACT extract[] = { + { "RGB", 1, 3, { "red", "green", "blue" }, extract_rgb }, + { "Red", 0, 1, { "red" }, extract_red }, + { "Green", 0, 1, { "green" }, extract_green }, + { "Blue", 0, 1, { "blue" }, extract_blue }, + { "HSV", 1, 3, { "hue", "saturation", "value", }, extract_hsv }, + { "Hue", 0, 1, { "hue" }, extract_hue }, + { "Saturation",0,1, { "saturation", }, extract_sat }, + { "Value", 0, 1, { "value", }, extract_val }, + { "CMY", 1, 3, { "cyan", "magenta", "yellow" }, extract_cmy }, + { "Cyan", 0, 1, { "cyan", }, extract_cyan }, + { "Magenta", 0, 1, { "magenta", }, extract_magenta }, + { "Yellow", 0, 1, { "yellow", }, extract_yellow }, + { "CMYK", 1, 4, { "cyan_k", "magenta_k", "yellow_k", "black" }, extract_cmyk }, + { "Cyan_K", 0, 1, { "cyan_k", }, extract_cyank }, + { "Magenta_K", 0,1, { "magenta_k", }, extract_magentak }, + { "Yellow_K", 0, 1, { "yellow_k", }, extract_yellowk }, + { "Alpha", 1, 1, { "alpha" }, extract_alpha } +}; + +/* Number of types of extractions */ +#define NUM_EXTRACT_TYPES (sizeof (extract)/sizeof (extract[0])) + + +typedef struct { + char extract_type[32]; +} DecoVals; + +typedef struct { + gint extract_flag[NUM_EXTRACT_TYPES]; + gint run; +} DecoInterface; + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +static DecoVals decovals = +{ + "rgb" /* Decompose type */ +}; + +static DecoInterface decoint = +{ + { 0 }, /* extract flags */ + FALSE /* run */ +}; + +static GRunModeType run_mode; + + +MAIN (); + +static void +query () +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image (unused)" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_STRING, "decompose_type", "What to decompose: RGB, Red, Green,\ + Blue, HSV, Hue, Saturation, Value, CMY, Cyan, Magenta, Yellow, CMYK,\ + Cyan_K, Magenta_K, Yellow_K, Alpha" } + }; + static GParamDef return_vals[] = + { + { PARAM_IMAGE, "new_image", "Output gray image" }, + { PARAM_IMAGE, "new_image", "Output gray image (N/A for single channel extract)" }, + { PARAM_IMAGE, "new_image", "Output gray image (N/A for single channel extract)" }, + { PARAM_IMAGE, "new_image", "Output gray image (N/A for single channel extract)" }, + }; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = sizeof (return_vals) / sizeof (return_vals[0]); + + gimp_install_procedure ("plug_in_decompose", + "Decompose an image into different types of channels", + "This function creates new gray images with\ + different channel information in each of them", + "Peter Kirchgessner", + "Peter Kirchgessner (pkirchg@aol.com)", + "1997", + "/Image/Channel Ops/Decompose", + "RGB*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[MAX_EXTRACT_IMAGES+1]; + GStatusType status = STATUS_SUCCESS; + GDrawableType drawable_type; + gint32 num_images; + gint32 image_ID_extract[MAX_EXTRACT_IMAGES]; + gint j; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = MAX_EXTRACT_IMAGES+1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + for (j = 0; j < MAX_EXTRACT_IMAGES; j++) + { + values[j+1].type = PARAM_IMAGE; + values[j+1].data.d_int32 = -1; + } + + switch (run_mode) + { + case RUN_INTERACTIVE: + /* Possibly retrieve data */ + gimp_get_data ("plug_in_decompose", &decovals); + + /* First acquire information with a dialog */ + if (! decompose_dialog ()) + return; + break; + + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are there! */ + if (nparams != 4) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) + { + strncpy (decovals.extract_type, param[3].data.d_string, + sizeof (decovals.extract_type)); + decovals.extract_type[sizeof (decovals.extract_type)-1] = '\0'; + } + break; + + case RUN_WITH_LAST_VALS: + /* Possibly retrieve data */ + gimp_get_data ("plug_in_decompose", &decovals); + break; + + default: + break; + } + + /* Make sure that the drawable is RGB color */ + drawable_type = gimp_drawable_type (param[2].data.d_drawable); + if ((drawable_type != RGB_IMAGE) && (drawable_type != RGBA_IMAGE)) + { + printf ("plug_in_decompose: Can only work on RGB*_IMAGE\n"); + status = STATUS_CALLING_ERROR; + } + if (status == STATUS_SUCCESS) + { + if (run_mode != RUN_NONINTERACTIVE) + gimp_progress_init ("Decomposing..."); + + num_images = decompose (param[1].data.d_image, param[2].data.d_drawable, + decovals.extract_type, image_ID_extract); + + if (num_images <= 0) + { + status = STATUS_EXECUTION_ERROR; + } + else + { + for (j = 0; j < num_images; j++) + { + values[j+1].data.d_int32 = image_ID_extract[j]; + gimp_image_enable_undo (image_ID_extract[j]); + gimp_image_clean_all (image_ID_extract[j]); + if (run_mode != RUN_NONINTERACTIVE) + gimp_display_new (image_ID_extract[j]); + } + + /* Store data */ + if (run_mode == RUN_INTERACTIVE) + gimp_set_data ("plug_in_decompose", &decovals, sizeof (DecoVals)); + } + } + + values[0].data.d_status = status; +} + + +/* Decompose an image. It returns the number of new (gray) images. + The image IDs for the new images are returned in image_ID_dst. + On failure, -1 is returned. +*/ +static gint32 +decompose (gint32 image_ID, + gint32 drawable_ID, + char *extract_type, + gint32 *image_ID_dst) + +{ + int i, j, extract_idx, scan_lines; + int height, width, tile_height, num_images; + unsigned char *src = (unsigned char *)ident; /* Just to satisfy gcc/lint */ + char filename[1024]; + unsigned char *dst[MAX_EXTRACT_IMAGES]; + gint32 layer_ID_dst[MAX_EXTRACT_IMAGES]; + GDrawable *drawable_src, *drawable_dst[MAX_EXTRACT_IMAGES]; + GPixelRgn pixel_rgn_src, pixel_rgn_dst[MAX_EXTRACT_IMAGES]; + + extract_idx = -1; /* Search extract type */ + for (j = 0; j < NUM_EXTRACT_TYPES; j++) + { + if (cmp_icase (extract_type, extract[j].type) == 0) + { + extract_idx = j; + break; + } + } + if (extract_idx < 0) return (-1); + + /* Check structure of source image */ + drawable_src = gimp_drawable_get (drawable_ID); + if (drawable_src->bpp < 3) + { + printf ("decompose: not an RGB image\n"); + return (-1); + } + if ( (extract[extract_idx].extract_fun == extract_alpha) + && (!gimp_drawable_has_alpha (drawable_ID))) + { + printf ("decompose: No alpha channel available\n"); + return (-1); + } + + width = drawable_src->width; + height = drawable_src->height; + + tile_height = gimp_tile_height (); + gimp_pixel_rgn_init (&pixel_rgn_src, drawable_src, 0, 0, width, height, + FALSE, FALSE); + + /* allocate a buffer for retrieving information from the src pixel region */ + src = (unsigned char *)g_malloc (tile_height * width * drawable_src->bpp); + + /* Create all new gray images */ + num_images = extract[extract_idx].num_images; + if (num_images > MAX_EXTRACT_IMAGES) num_images = MAX_EXTRACT_IMAGES; + + for (j = 0; j < num_images; j++) + { + sprintf (filename, "%s-%s", gimp_image_get_filename (image_ID), + extract[extract_idx].channel_name[j]); + + image_ID_dst[j] = create_new_image (filename, width, height, GRAY, + layer_ID_dst+j, drawable_dst+j, pixel_rgn_dst+j); + dst[j] = (unsigned char *)g_malloc (tile_height * width); + } + if (dst[num_images-1] == NULL) + { + printf ("decompose: out of memory\n"); + for (j = 0; j < num_images; j++) + { + if (dst[j] != NULL) g_free (dst[j]); + } + return (-1); + } + + i = 0; + while (i < height) + { + /* Get source pixel region */ + scan_lines = (i+tile_height-1 < height) ? tile_height : (height-i); + gimp_pixel_rgn_get_rect (&pixel_rgn_src, src, 0, i, width, scan_lines); + + /* Extract the channel information */ + extract[extract_idx].extract_fun (src, drawable_src->bpp, scan_lines*width, + dst); + + /* Set destination pixel regions */ + for (j = 0; j < num_images; j++) + gimp_pixel_rgn_set_rect (&(pixel_rgn_dst[j]), dst[j], 0, i, width, + scan_lines); + i += scan_lines; + + if (run_mode != RUN_NONINTERACTIVE) + gimp_progress_update (((double)i) / (double)height); + } + g_free (src); + for (j = 0; j < num_images; j++) + { + gimp_drawable_flush (drawable_dst[j]); + gimp_drawable_detach (drawable_dst[j]); + g_free (dst[j]); + } + + gimp_drawable_flush (drawable_src); + gimp_drawable_detach (drawable_src); + + return (num_images); +} + + +/* Create an image. Sets layer_ID, drawable and rgn. Returns image_ID */ +static gint32 +create_new_image (char *filename, + guint width, + guint height, + GImageType type, + gint32 *layer_ID, + GDrawable **drawable, + GPixelRgn *pixel_rgn) + +{gint32 image_ID; + GDrawableType gdtype; + + if (type == GRAY) gdtype = GRAY_IMAGE; + else if (type == INDEXED) gdtype = INDEXED_IMAGE; + else gdtype = RGB_IMAGE; + + image_ID = gimp_image_new (width, height, type); + gimp_image_set_filename (image_ID, filename); + + *layer_ID = gimp_layer_new (image_ID, "Background", width, height, + gdtype, 100, NORMAL_MODE); + gimp_image_add_layer (image_ID, *layer_ID, 0); + + *drawable = gimp_drawable_get (*layer_ID); + gimp_pixel_rgn_init (pixel_rgn, *drawable, 0, 0, (*drawable)->width, + (*drawable)->height, TRUE, FALSE); + + return (image_ID); +} + + +/* Compare two strings ignoring case (could also be done by strcasecmp() */ +/* but is it available everywhere ?) */ +static int cmp_icase (char *s1, char *s2) + +{int c1, c2; + + c1 = toupper (*s1); c2 = toupper (*s2); + while (*s1 && *s2) + { + if (c1 != c2) return (c2 - c1); + c1 = toupper (*(++s1)); c2 = toupper (*(++s2)); + } + return (c2 - c1); +} + + +/* Convert RGB to HSV. This routine was taken from decompose plug-in + of GIMP V 0.54 and modified a little bit. +*/ +static void rgb_to_hsv (unsigned char *r, unsigned char *g, unsigned char *b, + unsigned char *h, unsigned char *s, unsigned char *v) + +{ + int red = (int)*r, green = (int)*g, blue = (int)*b; + double hue; + int min, max, delta, sat_i; + + if (red > green) + { + if (red > blue) + max = red; + else + max = blue; + + if (green < blue) + min = green; + else + min = blue; + } + else + { + if (green > blue) + max = green; + else + max = blue; + + if (red < blue) + min = red; + else + min = blue; + } + + *v = (unsigned char)max; + + if (max != 0) + sat_i = ((max - min) * 255) / max; + else + sat_i = 0; + + *s = (unsigned char)sat_i; + + if (sat_i == 0) + { + *h = 0; + } + else + { + delta = max - min; + if (red == max) + hue = (green - blue) / (double)delta; + else if (green == max) + hue = 2.0 + (blue - red) / (double)delta; + else + hue = 4.0 + (red - green) / (double)delta; + hue *= 42.5; + + if (hue < 0.0) + hue += 255.0; + if (hue > 255.0) + hue -= 255.0; + + *h = (unsigned char)hue; + } +} + + +/* Extract functions */ + +static void extract_rgb (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *red_dst = dst[0]; + register unsigned char *green_dst = dst[1]; + register unsigned char *blue_dst = dst[2]; + register int count = numpix, offset = bpp-3; + + while (count-- > 0) + { + *(red_dst++) = *(rgb_src++); + *(green_dst++) = *(rgb_src++); + *(blue_dst++) = *(rgb_src++); + rgb_src += offset; + } +} + + +static void extract_red (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *red_dst = dst[0]; + register int count = numpix, offset = bpp; + + while (count-- > 0) + { + *(red_dst++) = *rgb_src; + rgb_src += offset; + } +} + + +static void extract_green (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src+1; + register unsigned char *green_dst = dst[0]; + register int count = numpix, offset = bpp; + + while (count-- > 0) + { + *(green_dst++) = *rgb_src; + rgb_src += offset; + } +} + + +static void extract_blue (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src+2; + register unsigned char *blue_dst = dst[0]; + register int count = numpix, offset = bpp; + + while (count-- > 0) + { + *(blue_dst++) = *rgb_src; + rgb_src += offset; + } +} + + +static void extract_alpha (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src+3; + register unsigned char *alpha_dst = dst[0]; + register int count = numpix, offset = bpp; + + while (count-- > 0) + { + *(alpha_dst++) = *rgb_src; + rgb_src += offset; + } +} + + +static void extract_cmy (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *cyan_dst = dst[0]; + register unsigned char *magenta_dst = dst[1]; + register unsigned char *yellow_dst = dst[2]; + register int count = numpix, offset = bpp-3; + + while (count-- > 0) + { + *(cyan_dst++) = 255 - *(rgb_src++); + *(magenta_dst++) = 255 - *(rgb_src++); + *(yellow_dst++) = 255 - *(rgb_src++); + rgb_src += offset; + } +} + + +static void extract_hsv (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *hue_dst = dst[0]; + register unsigned char *sat_dst = dst[1]; + register unsigned char *val_dst = dst[2]; + register int count = numpix, offset = bpp; + + while (count-- > 0) + { + rgb_to_hsv (rgb_src, rgb_src+1, rgb_src+2, hue_dst++, sat_dst++, val_dst++); + rgb_src += offset; + } +} + + +static void extract_hue (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *hue_dst = dst[0]; + unsigned char dmy; + unsigned char *dummy = &dmy; + register int count = numpix, offset = bpp; + + while (count-- > 0) + { + rgb_to_hsv (rgb_src, rgb_src+1, rgb_src+2, hue_dst++, dummy, dummy); + rgb_src += offset; + } +} + + +static void extract_sat (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *sat_dst = dst[0]; + unsigned char dmy; + unsigned char *dummy = &dmy; + register int count = numpix, offset = bpp; + + while (count-- > 0) + { + rgb_to_hsv (rgb_src, rgb_src+1, rgb_src+2, dummy, sat_dst++, dummy); + rgb_src += offset; + } +} + + +static void extract_val (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *val_dst = dst[0]; + unsigned char dmy; + unsigned char *dummy = &dmy; + register int count = numpix, offset = bpp; + + while (count-- > 0) + { + rgb_to_hsv (rgb_src, rgb_src+1, rgb_src+2, dummy, dummy, val_dst++); + rgb_src += offset; + } +} + + +static void extract_cyan (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *cyan_dst = dst[0]; + register int count = numpix, offset = bpp-1; + + while (count-- > 0) + { + *(cyan_dst++) = 255 - *(rgb_src++); + rgb_src += offset; + } +} + + +static void extract_magenta (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src+1; + register unsigned char *magenta_dst = dst[0]; + register int count = numpix, offset = bpp-1; + + while (count-- > 0) + { + *(magenta_dst++) = 255 - *(rgb_src++); + rgb_src += offset; + } +} + + +static void extract_yellow (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src+2; + register unsigned char *yellow_dst = dst[0]; + register int count = numpix, offset = bpp-1; + + while (count-- > 0) + { + *(yellow_dst++) = 255 - *(rgb_src++); + rgb_src += offset; + } +} + + +static void extract_cmyk (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *cyan_dst = dst[0]; + register unsigned char *magenta_dst = dst[1]; + register unsigned char *yellow_dst = dst[2]; + register unsigned char *black_dst = dst[3]; + register unsigned char k, s; + register int count = numpix, offset = bpp-3; + + while (count-- > 0) + { + *cyan_dst = k = 255 - *(rgb_src++); + *magenta_dst = s = 255 - *(rgb_src++); + if (s < k) k = s; + *yellow_dst = s = 255 - *(rgb_src++); + if (s < k) k = s; /* Black intensity is minimum of c, m, y */ + if (k) + { + *cyan_dst -= k; /* Remove common part of c, m, y */ + *magenta_dst -= k; + *yellow_dst -= k; + } + cyan_dst++; + magenta_dst++; + yellow_dst++; + *(black_dst++) = k; + + rgb_src += offset; + } +} + + +static void extract_cyank (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *cyan_dst = dst[0]; + register unsigned char s, k; + register int count = numpix, offset = bpp-3; + + while (count-- > 0) + { + *cyan_dst = k = 255 - *(rgb_src++); + s = 255 - *(rgb_src++); /* magenta */ + if (s < k) k = s; + s = 255 - *(rgb_src++); /* yellow */ + if (s < k) k = s; + if (k) *cyan_dst -= k; + cyan_dst++; + + rgb_src += offset; + } +} + + +static void extract_magentak (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *magenta_dst = dst[0]; + register unsigned char s, k; + register int count = numpix, offset = bpp-3; + + while (count-- > 0) + { + k = 255 - *(rgb_src++); /* cyan */ + *magenta_dst = s = 255 - *(rgb_src++); /* magenta */ + if (s < k) k = s; + s = 255 - *(rgb_src++); /* yellow */ + if (s < k) k = s; + if (k) *magenta_dst -= k; + magenta_dst++; + + rgb_src += offset; + } +} + + +static void extract_yellowk (unsigned char *src, int bpp, int numpix, + unsigned char **dst) + +{register unsigned char *rgb_src = src; + register unsigned char *yellow_dst = dst[0]; + register unsigned char s, k; + register int count = numpix, offset = bpp-3; + + while (count-- > 0) + { + k = 255 - *(rgb_src++); /* cyan */ + s = 255 - *(rgb_src++); /* magenta */ + if (s < k) k = s; + *yellow_dst = s = 255 - *(rgb_src++); + if (s < k) k = s; + if (k) *yellow_dst -= k; + yellow_dst++; + + rgb_src += offset; + } +} + + +static gint +decompose_dialog (void) +{ + GtkWidget *dlg; + GtkWidget *button; + GtkWidget *toggle; + GtkWidget *frame; + GtkWidget *vbox; + GSList *group; + gchar **argv; + gint argc; + int j; + + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("Decompose"); + + gtk_init (&argc, &argv); + gtk_rc_parse (gimp_gtkrc ()); + + dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Decompose"); + gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) decompose_close_callback, + NULL); + + /* Action area */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) decompose_ok_callback, + dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + /* parameter settings */ + frame = gtk_frame_new ("Extract channels:"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); + + vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (vbox), 10); + gtk_container_add (GTK_CONTAINER (frame), vbox); + + group = NULL; + for (j = 0; j < NUM_EXTRACT_TYPES; j++) + { + if (!extract[j].dialog) continue; + toggle = gtk_radio_button_new_with_label (group, extract[j].type); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (vbox), toggle, TRUE, TRUE, 0); + decoint.extract_flag[j] = + (cmp_icase (decovals.extract_type, extract[j].type) == 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) decompose_toggle_update, + &(decoint.extract_flag[j])); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), + decoint.extract_flag[j]); + gtk_widget_show (toggle); + } + gtk_widget_show (vbox); + gtk_widget_show (frame); + gtk_widget_show (dlg); + + gtk_main (); + gdk_flush (); + + return decoint.run; +} + + +/* Decompose interface functions */ + +static void +decompose_close_callback (GtkWidget *widget, + gpointer data) +{ + gtk_main_quit (); +} + +static void +decompose_ok_callback (GtkWidget *widget, + gpointer data) +{int j; + + decoint.run = TRUE; + gtk_widget_destroy (GTK_WIDGET (data)); + + for (j = 0; j < NUM_EXTRACT_TYPES; j++) + { + if (decoint.extract_flag[j]) + { + strcpy (decovals.extract_type, extract[j].type); + break; + } + } +} + +static void +decompose_toggle_update (GtkWidget *widget, + gpointer data) +{ + gint *toggle_val; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/deinterlace.c gimp-0.99.pre11/plug-ins/deinterlace.c --- gimp-0.99.10/plug-ins/deinterlace.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/deinterlace.c Wed Aug 13 21:12:58 1997 @@ -0,0 +1,261 @@ +/* Deinterlace 1.00 - image processing plug-in for the Gimp 1.0 API + * + * Copyright (C) 1997 Andrew Kieschnick (andrewk@mail.utexas.edu) + * + * Original deinterlace for the Gimp 0.54 API by Federico Mena Quintero + * + * Copyright (C) 1996 Federico Mena Quintero + * + * Any bugs in this code are probably my (Andrew Kieschnick's) fault, as I + * pretty much rewrote it from scratch. + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include "megawidget.h" + + +/* Declare local functions. + */ +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); + +static void deinterlace (GDrawable *drawable); + +static gint deinterlace_dialog(void); + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +static gint DeinterlaceValue = 1; + +MAIN (); + +static void +query () +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image (unused)" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_INT32, "evenodd", "0 = keep odd, 1 = keep even" }, + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure ("plug_in_deinterlace", + "Deinterlace", + "Deinterlace is useful for processing images from video capture cards. When only the odd or even fields get captured, deinterlace can be used to interpolate between the existing fields to correct this.", + "Andrew Kieschnick", + "Andrew Kieschnick", + "1997", + "/Filters/Image/Deinterlace", + "RGB*, GRAY*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[1]; + GDrawable *drawable; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + + run_mode = param[0].data.d_int32; + + /* Get the specified drawable */ + drawable = gimp_drawable_get (param[2].data.d_drawable); + + switch (run_mode) + { + case RUN_INTERACTIVE: + gimp_get_data("plug_in_deinterlace", &DeinterlaceValue); + if (! deinterlace_dialog()) + status = STATUS_EXECUTION_ERROR; + break; + + case RUN_NONINTERACTIVE: + if (nparams != 1) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) + DeinterlaceValue = param[3].data.d_int32; + break; + + case RUN_WITH_LAST_VALS: + gimp_get_data("plug_in_deinterlace", &DeinterlaceValue); + break; + + default: + break; + } + + if (status == STATUS_SUCCESS) + { + /* Make sure that the drawable is gray or RGB color */ + if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id)) + { + gimp_progress_init ("deinterlace"); + gimp_tile_cache_ntiles (2 * (drawable->width / gimp_tile_width () + 1)); + deinterlace (drawable); + + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush (); + if (run_mode == RUN_INTERACTIVE) + gimp_set_data("plug_in_deinterlace", &DeinterlaceValue, sizeof(DeinterlaceValue)); + } + else + { + /* gimp_message ("deinterlace: cannot operate on indexed color images"); */ + status = STATUS_EXECUTION_ERROR; + } + } + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + gimp_drawable_detach (drawable); +} + +static void +deinterlace (GDrawable *drawable) +{ + GPixelRgn srcPR, destPR; + gint width, height; + gint bytes; + guchar *dest; + guchar *upper; + guchar *lower; + gint row, col; + gint x1, y1, x2, y2; + + /* Get the input area. This is the bounding box of the selection in + * the image (or the entire image if there is no selection). Only + * operating on the input area is simply an optimization. It doesn't + * need to be done for correct operation. (It simply makes it go + * faster, since fewer pixels need to be operated on). + */ + + gimp_drawable_mask_bounds (drawable->id, &x1, &y1, &x2, &y2); + + /* Get the size of the input image. (This will/must be the same + * as the size of the output image. + */ + width = drawable->width; + height = drawable->height; + bytes = drawable->bpp; + + /* allocate row buffers */ + dest = (guchar *) malloc ((x2 - x1) * bytes); + upper = (guchar *) malloc ((x2 - x1) * bytes); + lower = (guchar *) malloc ((x2 - x1) * bytes); + + /* initialize the pixel regions */ + gimp_pixel_rgn_init (&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); + gimp_pixel_rgn_init (&destPR, drawable, 0, 0, width, height, TRUE, TRUE); + + /* loop through the rows, performing our magic*/ + for (row = y1; row < y2; row++) + { + + gimp_pixel_rgn_get_row (&srcPR, dest, x1, row, (x2-x1)); + +/* Only do interpolation if the row: + (1) Isn't one we want to keep + (2) Has both an upper and a lower row + Otherwise, just duplicate the source row + */ + if (!((row % 2 == DeinterlaceValue) || (row - 1 < 0) || (row + 1 >= height))) { + gimp_pixel_rgn_get_row (&srcPR, upper, x1, row-1, (x2-x1)); + gimp_pixel_rgn_get_row (&srcPR, lower, x1, row+1, (x2-x1)); + for (col=(x1*bytes); col < (x2*bytes); col++) + dest[col]=(upper[col]+lower[col])>>1; + } + gimp_pixel_rgn_set_row (&destPR, dest, x1, row, (x2-x1)); + + if ((row % 5) == 0) + gimp_progress_update ((double) row / (double) (y2 - y1)); + } + + /* update the deinterlaced region */ + + gimp_drawable_flush (drawable); + gimp_drawable_merge_shadow (drawable->id, TRUE); + gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); + + free (dest); +} + +static gint deinterlace_dialog() +{ + GtkWidget *dlg; + GtkWidget *vbox; + gint runp; + struct mwRadioGroup modes[] = { + { "Keep Odd Fields", 0}, + { "Keep Even Fields", 0}, + { NULL, 0}}; + + modes[DeinterlaceValue].var = 1; + + dlg = mw_app_new("plug_in_deinterlace", "Deinterlace", &runp); + + vbox = gtk_vbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), vbox, TRUE, TRUE, 0); + gtk_widget_show(vbox); + + mw_radio_group_new(vbox, "Mode", modes); + + gtk_widget_show(dlg); + gtk_main(); + gdk_flush(); + + DeinterlaceValue = mw_radio_result(modes); + + if (runp) + return 1; + else + return 0; +} + + + + + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/depthmerge.c gimp-0.99.pre11/plug-ins/depthmerge.c --- gimp-0.99.10/plug-ins/depthmerge.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/depthmerge.c Wed Aug 13 20:50:06 1997 @@ -0,0 +1,1206 @@ +/* TODO: + * - Debug + * - Clean up source + * - Package, distribute + */ + +/* Depth Merge -- Combine two image layers via corresponding depth maps + * Copyright (C) 1997 Sean Cier (scier@cmu.edu) + * + * A plug-in for The GIMP + * The GIMP is Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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. + */ + +/* Version 0.1: (6 July 1997) + * Initial Release + */ + +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" +#include "libgimp/gimpui.h" + + +#define DEBUG + +#ifndef CLAMP +#define CLAMP(x,a,b) (((x) < (a)) ? (a) : ((x) > (b)) ? (b) : (x)) +#endif +#ifndef LERP +#define LERP(frac,a,b) ((frac)*(b) + (1-(frac))*(a)) +#endif + + +#define PLUG_IN_NAME "plug_in_depth_merge" +#define PLUG_IN_TITLE "Depth Merge" +#define PLUG_IN_VERSION "0.1; 6 July 1997" + +#define PREVIEW_SIZE 256 +#define SCALE_WIDTH 200 +#define ENTRY_WIDTH 60 +#define CHECK_SIZE 8 +#define CHECK_DARK 255*1/3 +#define CHECK_LIGHT 255*2/3 + + + +/* ----- DepthMerge ----- */ + +struct _DepthMerge; + +typedef struct _DepthMergeValueEdit { + struct _DepthMerge *dm; + float *value; + GtkAdjustment *scaleData; + GtkWidget *entry; + float min, max; +} DepthMergeValueEdit; + +typedef struct _DepthMergeInterface { + gint active; + + GtkWidget *dialog; + + GtkWidget *preview; + gint previewWidth; + gint previewHeight; + + DepthMergeValueEdit *overlapValueEdit; + DepthMergeValueEdit *offsetValueEdit; + DepthMergeValueEdit *scale1ValueEdit; + DepthMergeValueEdit *scale2ValueEdit; + + guchar *checkRow0, *checkRow1; + guchar *previewSource1, *previewSource2, + *previewDepthMap1, *previewDepthMap2; + + gint run; +} DepthMergeInterface; + +typedef struct _DepthMergeParams { + gint32 result; + gint32 source1, source2; + gint32 depthMap1, depthMap2; + gfloat overlap; + gfloat offset; + gfloat scale1, scale2; +} DepthMergeParams; + + +typedef struct _DepthMerge { + DepthMergeInterface *interface; + DepthMergeParams params; + + GDrawable *resultDrawable, + *source1Drawable, *source2Drawable, + *depthMap1Drawable, *depthMap2Drawable; + gint selectionX0, selectionY0, selectionX1, selectionY1, + selectionWidth, selectionHeight; + gint resultHasAlpha; +} DepthMerge; + +void DepthMerge_initParams( DepthMerge *dm); +void DepthMerge_construct( DepthMerge *dm); +void DepthMerge_destroy( DepthMerge *dm); +gint32 DepthMerge_execute( DepthMerge *dm); +void DepthMerge_executeRegion( DepthMerge *dm, + guchar *source1Row, + guchar *source2Row, + guchar *depthMap1Row, + guchar *depthMap2Row, + guchar *resultRow, + gint length); +gint32 DepthMerge_dialog( DepthMerge *dm); +DepthMergeValueEdit * + DepthMerge_createValueEdit( DepthMerge *dm, + char *title, GtkTable *table, + int row, int startCol, + float *value, + float min, float max, float step); +void DepthMerge_buildPreviewSourceImage(DepthMerge *dm); +void DepthMerge_updatePreview( DepthMerge *dm); + + +gint constraintResultSizeAndResultColorOrGray(gint32 imageId, + gint32 drawableId, gpointer data); +gint constraintResultSizeAndGray(gint32 imageId, + gint32 drawableId, gpointer data); +void dialogOkCallback( GtkWidget *widget, gpointer data); +void dialogCancelCallback(GtkWidget *widget, gpointer data); +void dialogCloseCallback( GtkWidget *widget, gpointer data); +void dialogSource1ChangedCallback( gint32 id, gpointer data); +void dialogSource2ChangedCallback( gint32 id, gpointer data); +void dialogDepthMap1ChangedCallback(gint32 id, gpointer data); +void dialogDepthMap2ChangedCallback(gint32 id, gpointer data); +void dialogValueScaleUpdateCallback(GtkAdjustment *adjustment, gpointer data); +void dialogValueEntryUpdateCallback(GtkWidget *widget, gpointer data); + + +void util_fillReducedBuffer(guchar *dest, gint destWidth, gint destHeight, + gint destBPP, gint destHasAlpha, + GDrawable *sourceDrawable, + gint x0, gint y0, + gint sourceWidth, gint sourceHeight); +void util_convertColorspace(guchar *dest, + gint destBPP, gint destHasAlpha, + guchar *source, + gint sourceBPP, gint sourceHasAlpha, + gint length); + +/* ----- plug-in entry points ----- */ + +static void query(); +static void run(char *name, + int numParams, GParam *param, + int *numReturnVals, GParam **returnVals); + +GPlugInInfo PLUG_IN_INFO = { + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run /* run_proc */ +}; + +MAIN() + +static void query() { + static GParamDef args[] = { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image (unused)" }, + { PARAM_DRAWABLE, "result", "Result" }, + { PARAM_DRAWABLE, "source1", "Source 1" }, + { PARAM_DRAWABLE, "source2", "Source 2" }, + { PARAM_DRAWABLE, "depthMap1", "Depth map 1" }, + { PARAM_DRAWABLE, "depthMap2", "Depth map 2" }, + { PARAM_FLOAT, "overlap", "Overlap" }, + { PARAM_FLOAT, "offset", "Depth relative offset" }, + { PARAM_FLOAT, "scale1", "Depth relative scale 1" }, + { PARAM_FLOAT, "scale2", "Depth relative scale 2" }, + }; + static int numArgs = sizeof(args) / sizeof(GParamDef); + + gimp_install_procedure(PLUG_IN_NAME, + "Combine two images using corresponding depth maps (z-buffers)", + "Taking as input two full-colour, full-alpha images and two corresponding " + "grayscale depth maps, this plug-in combines the images based on which " + "is closer (has a lower depth map value) at each point.", + "Sean Cier", + "Sean Cier", + PLUG_IN_VERSION, + "/Filters/Effects/Depth merge", + "RGB*, GRAY*", + PROC_PLUG_IN, + numArgs, + 0, + args, + NULL); +} + + +static void run(char *name, + int numParams, GParam *param, + int *numReturnVals, GParam **returnVals) { + static GParam values[1]; + GRunModeType runMode; + GStatusType status; + DepthMerge dm; + + runMode = (GRunModeType)param[0].data.d_int32; + status = STATUS_SUCCESS; + *numReturnVals = 1; + *returnVals = values; + + switch (runMode) { + case RUN_INTERACTIVE: + DepthMerge_initParams(&dm); + gimp_get_data(PLUG_IN_NAME, &(dm.params)); + dm.params.result = param[2].data.d_drawable; + DepthMerge_construct(&dm); + if (!DepthMerge_dialog(&dm)) { + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_SUCCESS; + return; + } + break; + case RUN_NONINTERACTIVE: + DepthMerge_initParams(&dm); + if (numParams != 11) + status = STATUS_CALLING_ERROR; + else { + dm.params.result = param[ 2].data.d_drawable; + dm.params.source1 = param[ 3].data.d_drawable; + dm.params.source2 = param[ 4].data.d_drawable; + dm.params.depthMap1 = param[ 5].data.d_drawable; + dm.params.depthMap2 = param[ 6].data.d_drawable; + dm.params.overlap = param[ 7].data.d_float; + dm.params.offset = param[ 8].data.d_float; + dm.params.scale1 = param[ 9].data.d_float; + dm.params.scale2 = param[10].data.d_float; + } + DepthMerge_construct(&dm); + break; + case RUN_WITH_LAST_VALS: + DepthMerge_initParams(&dm); + gimp_get_data(PLUG_IN_NAME, &(dm.params)); + DepthMerge_construct(&dm); + break; + default: + status = STATUS_CALLING_ERROR; + } + + if (status == STATUS_SUCCESS) { + gimp_tile_cache_ntiles((dm.resultDrawable->width + gimp_tile_width() - 1) / + gimp_tile_width()); + + if (!DepthMerge_execute(&dm)) + status = STATUS_EXECUTION_ERROR; + else { + if (runMode != RUN_NONINTERACTIVE) + gimp_displays_flush(); + if (runMode == RUN_INTERACTIVE) + gimp_set_data(PLUG_IN_NAME, &(dm.params), sizeof(DepthMergeParams)); + } + } + + DepthMerge_destroy(&dm); + + values[0].data.d_status = status; +} + + +/* ----- DepthMerge ----- */ + +void DepthMerge_initParams(DepthMerge *dm) { + dm->params.result = -1; + dm->params.source1 = -1; + dm->params.source2 = -1; + dm->params.depthMap1 = -1; + dm->params.depthMap2 = -1; + dm->params.overlap = 0; + dm->params.offset = 0; + dm->params.scale1 = 1; + dm->params.scale2 = 1; +} + +void DepthMerge_construct(DepthMerge *dm) { + dm->interface = NULL; + + dm->resultDrawable = gimp_drawable_get(dm->params.result); + gimp_drawable_mask_bounds(dm->resultDrawable->id, + &(dm->selectionX0), &(dm->selectionY0), + &(dm->selectionX1), &(dm->selectionY1)); + dm->selectionWidth = dm->selectionX1 - dm->selectionX0; + dm->selectionHeight = dm->selectionY1 - dm->selectionY0; + dm->resultHasAlpha = gimp_drawable_has_alpha(dm->resultDrawable->id); + + dm->source1Drawable = (dm->params.source1 == -1) ? NULL : + gimp_drawable_get(dm->params.source1 ); + dm->source2Drawable = (dm->params.source2 == -1) ? NULL : + gimp_drawable_get(dm->params.source2 ); + dm->depthMap1Drawable = (dm->params.depthMap1 == -1) ? NULL : + gimp_drawable_get(dm->params.depthMap1); + dm->depthMap2Drawable = (dm->params.depthMap2 == -1) ? NULL : + gimp_drawable_get(dm->params.depthMap2); + + dm->params.overlap = CLAMP(dm->params.overlap, 0, 2); + dm->params.offset = CLAMP(dm->params.offset, -1, 1); + dm->params.scale1 = CLAMP(dm->params.scale1, -1, 1); + dm->params.scale2 = CLAMP(dm->params.scale2, -1, 1); +} + +void DepthMerge_destroy(DepthMerge *dm) { + if (dm->interface != NULL) { + g_free(dm->interface->overlapValueEdit); + g_free(dm->interface->offsetValueEdit ); + g_free(dm->interface->scale1ValueEdit ); + g_free(dm->interface->scale2ValueEdit ); + g_free(dm->interface->checkRow0); + g_free(dm->interface->checkRow1); + g_free(dm->interface->previewSource1 ); + g_free(dm->interface->previewSource2 ); + g_free(dm->interface->previewDepthMap1); + g_free(dm->interface->previewDepthMap2); + g_free(dm->interface); + } + if (dm->resultDrawable != NULL) + gimp_drawable_detach(dm->resultDrawable); + if (dm->source1Drawable != NULL) + gimp_drawable_detach(dm->source1Drawable ); + if (dm->source2Drawable != NULL) + gimp_drawable_detach(dm->source2Drawable ); + if (dm->depthMap1Drawable != NULL) + gimp_drawable_detach(dm->depthMap1Drawable); + if (dm->depthMap2Drawable != NULL) + gimp_drawable_detach(dm->depthMap2Drawable); +} + + +gint32 DepthMerge_execute(DepthMerge *dm) { + int x, y; + GPixelRgn source1Rgn, source2Rgn, depthMap1Rgn, depthMap2Rgn, + resultRgn; + guchar *source1Row, *source2Row, *depthMap1Row, *depthMap2Row, + *resultRow, + *tempRow; + gint source1HasAlpha, source2HasAlpha, + depthMap1HasAlpha, depthMap2HasAlpha; + + gimp_progress_init("Depth-merging..."); + + resultRow = (guchar *)g_malloc(dm->selectionWidth * 4); + source1Row = (guchar *)g_malloc(dm->selectionWidth * 4); + source2Row = (guchar *)g_malloc(dm->selectionWidth * 4); + depthMap1Row = (guchar *)g_malloc(dm->selectionWidth ); + depthMap2Row = (guchar *)g_malloc(dm->selectionWidth ); + tempRow = (guchar *)g_malloc(dm->selectionWidth * 4); + + if (dm->source1Drawable != NULL) { + source1HasAlpha = gimp_drawable_has_alpha(dm->source1Drawable->id); + gimp_pixel_rgn_init(&source1Rgn, dm->source1Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight, + FALSE, FALSE); + } else + for (x = 0; x < dm->selectionWidth; x++) { + source1Row[4*x ] = 0; + source1Row[4*x+1] = 0; + source1Row[4*x+2] = 0; + source1Row[4*x+3] = 255; + } + if (dm->source2Drawable != NULL) { + source2HasAlpha = gimp_drawable_has_alpha(dm->source2Drawable->id); + gimp_pixel_rgn_init(&source2Rgn, dm->source2Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight, + FALSE, FALSE); + } else + for (x = 0; x < dm->selectionWidth; x++) { + source2Row[4*x ] = 0; + source2Row[4*x+1] = 0; + source2Row[4*x+2] = 0; + source2Row[4*x+3] = 255; + } + if (dm->depthMap1Drawable != NULL) { + depthMap1HasAlpha = gimp_drawable_has_alpha(dm->depthMap1Drawable->id); + gimp_pixel_rgn_init(&depthMap1Rgn, dm->depthMap1Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight, + FALSE, FALSE); + } else + for (x = 0; x < dm->selectionWidth; x++) { + depthMap1Row[x ] = 0; + } + if (dm->depthMap2Drawable != NULL) { + depthMap2HasAlpha = gimp_drawable_has_alpha(dm->depthMap2Drawable->id); + gimp_pixel_rgn_init(&depthMap2Rgn, dm->depthMap2Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight, + FALSE, FALSE); + } else + for (x = 0; x < dm->selectionWidth; x++) { + depthMap2Row[x ] = 0; + } + gimp_pixel_rgn_init(&resultRgn, dm->resultDrawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight, + TRUE, TRUE); + + for (y = dm->selectionY0; y < dm->selectionY1; y++) { + if (dm->source1Drawable != NULL) { + gimp_pixel_rgn_get_row(&source1Rgn, tempRow, + dm->selectionX0, y, + dm->selectionWidth); + util_convertColorspace(source1Row, 4, TRUE, + tempRow, + dm->source1Drawable->bpp, source1HasAlpha, + dm->selectionWidth); + } + if (dm->source2Drawable != NULL) { + gimp_pixel_rgn_get_row(&source2Rgn, tempRow, + dm->selectionX0, y, + dm->selectionWidth); + util_convertColorspace(source2Row, 4, TRUE, + tempRow, + dm->source2Drawable->bpp, source2HasAlpha, + dm->selectionWidth); + } + if (dm->depthMap1Drawable != NULL) { + gimp_pixel_rgn_get_row(&depthMap1Rgn, tempRow, + dm->selectionX0, y, + dm->selectionWidth); + util_convertColorspace(depthMap1Row, 1, FALSE, + tempRow, + dm->depthMap1Drawable->bpp, depthMap1HasAlpha, + dm->selectionWidth); + } + if (dm->depthMap2Drawable != NULL) { + gimp_pixel_rgn_get_row(&depthMap2Rgn, tempRow, + dm->selectionX0, y, + dm->selectionWidth); + util_convertColorspace(depthMap2Row, 1, FALSE, + tempRow, + dm->depthMap2Drawable->bpp, depthMap2HasAlpha, + dm->selectionWidth); + } + + DepthMerge_executeRegion(dm, + source1Row, source2Row, depthMap1Row, depthMap2Row, + resultRow, + dm->selectionWidth); + util_convertColorspace(tempRow, dm->resultDrawable->bpp, dm->resultHasAlpha, + resultRow, 4, TRUE, + dm->selectionWidth); + + gimp_pixel_rgn_set_row(&resultRgn, tempRow, + dm->selectionX0, y, + dm->selectionWidth); + + gimp_progress_update((double)(y-dm->selectionY0) / (double)(dm->selectionHeight-1)); + } + + g_free(resultRow); + g_free(source1Row); + g_free(source2Row); + g_free(depthMap1Row); + g_free(depthMap2Row); + g_free(tempRow); + + gimp_drawable_flush(dm->resultDrawable); + gimp_drawable_merge_shadow(dm->resultDrawable->id, TRUE); + gimp_drawable_update(dm->resultDrawable->id, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); + return(TRUE); +} + +void DepthMerge_executeRegion(DepthMerge *dm, + guchar *source1Row, guchar *source2Row, + guchar *depthMap1Row, guchar *depthMap2Row, + guchar *resultRow, gint length) { + float scale1, scale2, offset, invOverlap; + float frac, depth1, depth2; + unsigned short c1[4], c2[4], cR1[4], cR2[4], cR[4], temp; + int i, tempInt; + + invOverlap = 1.0 / MAX(dm->params.overlap, 0.001); + offset = dm->params.offset; + scale1 = dm->params.scale1; + scale2 = dm->params.scale2; + + for (i = 0; i < length; i++) { + depth1 = depthMap1Row[i] * (1.0/255.0); + depth2 = depthMap2Row[i] * (1.0/255.0); + + frac = (depth2*scale2 - (depth1*scale1 + offset)) * invOverlap; + frac = (frac+1.0)/2.0; + frac = CLAMP(frac, 0.0, 1.0); + + /* c1 -> color corresponding to source1 */ + c1[0] = source1Row[4*i ]; + c1[1] = source1Row[4*i+1]; + c1[2] = source1Row[4*i+2]; + c1[3] = source1Row[4*i+3]; + + /* c2 -> color corresponding to source2 */ + c2[0] = source2Row[4*i ]; + c2[1] = source2Row[4*i+1]; + c2[2] = source2Row[4*i+2]; + c2[3] = source2Row[4*i+3]; + + if (frac != 0) { + /* cR1 -> result if c1 is completely on top */ + cR1[0] = c1[3]*c1[0] + (255-c1[3])*c2[0]; + cR1[1] = c1[3]*c1[1] + (255-c1[3])*c2[1]; + cR1[2] = c1[3]*c1[2] + (255-c1[3])*c2[2]; + cR1[3] = 255 *c1[3] + (255-c1[3])*c2[3]; + } + + if (frac != 1) { + /* cR2 -> result if c2 is completely on top */ + cR2[0] = c2[3]*c2[0] + (255-c2[3])*c1[0]; + cR2[1] = c2[3]*c2[1] + (255-c2[3])*c1[1]; + cR2[2] = c2[3]*c2[2] + (255-c2[3])*c1[2]; + cR2[3] = 255 *c2[3] + (255-c2[3])*c1[3]; + } + + if (frac == 1) { + cR[0] = cR1[0]; + cR[1] = cR1[1]; + cR[2] = cR1[2]; + cR[3] = cR1[3]; + } else if (frac == 0) { + cR[0] = cR2[0]; + cR[1] = cR2[1]; + cR[2] = cR2[2]; + cR[3] = cR2[3]; + } else { + tempInt = LERP(frac, cR2[0], cR1[0]); cR[0] = CLAMP(tempInt,0,255*255); + tempInt = LERP(frac, cR2[1], cR1[1]); cR[1] = CLAMP(tempInt,0,255*255); + tempInt = LERP(frac, cR2[2], cR1[2]); cR[2] = CLAMP(tempInt,0,255*255); + tempInt = LERP(frac, cR2[3], cR1[3]); cR[3] = CLAMP(tempInt,0,255*255); + } + + temp = cR[0]/255; resultRow[4*i ] = CLAMP(temp, 0, 255); + temp = cR[1]/255; resultRow[4*i+1] = CLAMP(temp, 0, 255); + temp = cR[2]/255; resultRow[4*i+2] = CLAMP(temp, 0, 255); + temp = cR[3]/255; resultRow[4*i+3] = CLAMP(temp, 0, 255); + } +} + +gint32 DepthMerge_dialog(DepthMerge *dm) { + GtkWidget *topTable; + GtkWidget *previewFrame; + GtkWidget *sourceTable; + GtkWidget *tempLabel; + GtkWidget *tempOptionMenu; + GtkWidget *tempMenu; + GtkWidget *numericParameterTable; + GtkWidget *tempButton; + gint argc; + gchar **argv; + guchar *color_cube; + + dm->interface = (DepthMergeInterface *)g_malloc(sizeof(DepthMergeInterface)); + dm->interface->active = FALSE; + dm->interface->run = FALSE; + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup(PLUG_IN_NAME); + + gtk_init(&argc, &argv); + gtk_rc_parse(gimp_gtkrc()); + + gdk_set_use_xshm(gimp_use_xshm()); + + gtk_preview_set_gamma(gimp_gamma()); + gtk_preview_set_install_cmap(gimp_install_cmap()); + color_cube = gimp_color_cube(); + gtk_preview_set_color_cube(color_cube[0], + color_cube[1], + color_cube[2], + color_cube[3]); + + gtk_widget_set_default_visual(gtk_preview_get_visual()); + gtk_widget_set_default_colormap(gtk_preview_get_cmap()); + + dm->interface->dialog = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dm->interface->dialog), PLUG_IN_TITLE); + gtk_window_position(GTK_WINDOW(dm->interface->dialog), GTK_WIN_POS_MOUSE); + gtk_container_border_width(GTK_CONTAINER(dm->interface->dialog), 0); + gtk_signal_connect(GTK_OBJECT(dm->interface->dialog), "destroy", + (GtkSignalFunc)dialogCloseCallback, NULL); + + /* topTable */ + topTable = gtk_table_new(3, 3, FALSE); + gtk_container_border_width(GTK_CONTAINER(topTable), 6); + gtk_table_set_row_spacings(GTK_TABLE(topTable), 4); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dm->interface->dialog)->vbox), topTable, + FALSE, FALSE, 0); + gtk_widget_show(topTable); + + /* Preview */ + previewFrame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(previewFrame), GTK_SHADOW_IN); + gtk_table_attach(GTK_TABLE(topTable), previewFrame, 1, 2, 0, 1, 0, 0, 0, 0); + gtk_widget_show(previewFrame); + + dm->interface->previewWidth = MIN(dm->selectionWidth, PREVIEW_SIZE); + dm->interface->previewHeight = MIN(dm->selectionHeight, PREVIEW_SIZE); + dm->interface->preview = gtk_preview_new(GTK_PREVIEW_COLOR); + gtk_preview_size(GTK_PREVIEW(dm->interface->preview), + dm->interface->previewWidth, + dm->interface->previewHeight); + gtk_container_add(GTK_CONTAINER(previewFrame), dm->interface->preview); + gtk_widget_show(dm->interface->preview); + + DepthMerge_buildPreviewSourceImage(dm); + + /* Source and Depth Map selection */ + sourceTable = gtk_table_new(2, 4, FALSE); + gtk_container_border_width(GTK_CONTAINER(sourceTable), 2); + gtk_table_attach(GTK_TABLE(topTable), sourceTable, 0, 3, 1, 2, + GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0); + gtk_widget_show(sourceTable); + + tempLabel = gtk_label_new("Source 1"); + gtk_misc_set_alignment(GTK_MISC(tempLabel), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(sourceTable), tempLabel, 0, 1, 0, 1, + GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(tempLabel); + tempOptionMenu = gtk_option_menu_new(); + gtk_table_attach(GTK_TABLE(sourceTable), tempOptionMenu, 1, 2, 0, 1, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_show(tempOptionMenu); + tempMenu = gimp_drawable_menu_new( + constraintResultSizeAndResultColorOrGray, + dialogSource1ChangedCallback, + dm, + dm->params.source1); + gtk_option_menu_set_menu(GTK_OPTION_MENU(tempOptionMenu), tempMenu); + gtk_widget_show(tempOptionMenu); + + tempLabel = gtk_label_new("Depth Map"); + gtk_misc_set_alignment(GTK_MISC(tempLabel), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(sourceTable), tempLabel, 2, 3, 0, 1, + GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(tempLabel); + tempOptionMenu = gtk_option_menu_new(); + gtk_table_attach(GTK_TABLE(sourceTable), tempOptionMenu, 3, 4, 0, 1, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_show(tempOptionMenu); + tempMenu = gimp_drawable_menu_new( + constraintResultSizeAndResultColorOrGray, + dialogDepthMap1ChangedCallback, + dm, + dm->params.depthMap1); + gtk_option_menu_set_menu(GTK_OPTION_MENU(tempOptionMenu), tempMenu); + gtk_widget_show(tempOptionMenu); + + tempLabel = gtk_label_new("Source 2"); + gtk_misc_set_alignment(GTK_MISC(tempLabel), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(sourceTable), tempLabel, 0, 1, 1, 2, + GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(tempLabel); + tempOptionMenu = gtk_option_menu_new(); + gtk_table_attach(GTK_TABLE(sourceTable), tempOptionMenu, 1, 2, 1, 2, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_show(tempOptionMenu); + tempMenu = gimp_drawable_menu_new( + constraintResultSizeAndResultColorOrGray, + dialogSource2ChangedCallback, + dm, + dm->params.source2); + gtk_option_menu_set_menu(GTK_OPTION_MENU(tempOptionMenu), tempMenu); + gtk_widget_show(tempOptionMenu); + + tempLabel = gtk_label_new("Depth Map"); + gtk_misc_set_alignment(GTK_MISC(tempLabel), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(sourceTable), tempLabel, 2, 3, 1, 2, + GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(tempLabel); + tempOptionMenu = gtk_option_menu_new(); + gtk_table_attach(GTK_TABLE(sourceTable), tempOptionMenu, 3, 4, 1, 2, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_show(tempOptionMenu); + tempMenu = gimp_drawable_menu_new( + constraintResultSizeAndResultColorOrGray, + dialogDepthMap2ChangedCallback, + dm, + dm->params.depthMap2); + gtk_option_menu_set_menu(GTK_OPTION_MENU(tempOptionMenu), tempMenu); + gtk_widget_show(tempOptionMenu); + + /* Numeric parameters */ + numericParameterTable = gtk_table_new(4, 3, FALSE); + gtk_container_border_width(GTK_CONTAINER(numericParameterTable), 2); + gtk_table_attach(GTK_TABLE(topTable), numericParameterTable, 0, 3, 2, 3, + GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0); + gtk_widget_show(numericParameterTable); + + dm->interface->overlapValueEdit = + DepthMerge_createValueEdit(dm, "Overlap", + GTK_TABLE(numericParameterTable), 0, 0, + &(dm->params.overlap), + 0, 2, 0.001); + dm->interface->offsetValueEdit = + DepthMerge_createValueEdit(dm, "Offset", + GTK_TABLE(numericParameterTable), 1, 0, + &(dm->params.offset), + -1, 1, 0.001); + dm->interface->scale1ValueEdit = + DepthMerge_createValueEdit(dm, "Scale 1", + GTK_TABLE(numericParameterTable), 2, 0, + &(dm->params.scale1), + -1, 1, 0.001); + dm->interface->scale2ValueEdit = + DepthMerge_createValueEdit(dm, "Scale 2", + GTK_TABLE(numericParameterTable), 3, 0, + &(dm->params.scale2), + -1, 1, 0.001); + + /* Buttons */ + + gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dm->interface->dialog)->action_area), 6); + tempButton = gtk_button_new_with_label("OK"); + GTK_WIDGET_SET_FLAGS(tempButton, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(tempButton), "clicked", + (GtkSignalFunc)dialogOkCallback, + dm); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dm->interface->dialog)->action_area), + tempButton, TRUE, TRUE, 0); + gtk_widget_grab_default(tempButton); + gtk_widget_show(tempButton); + + tempButton = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(tempButton, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(tempButton), "clicked", + (GtkSignalFunc)dialogCancelCallback, + dm); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dm->interface->dialog)->action_area), + tempButton, TRUE, TRUE, 0); + gtk_widget_show(tempButton); + + /* Done */ + + dm->interface->active = TRUE; + gtk_widget_show(dm->interface->dialog); + DepthMerge_updatePreview(dm); + + gtk_main(); + gdk_flush(); + + return(dm->interface->run); +} + + +DepthMergeValueEdit *DepthMerge_createValueEdit(DepthMerge *dm, + char *title, GtkTable *table, + int row, int startCol, + float *value, + float min, float max, + float step) { + GtkWidget *label; + GtkWidget *scale; + GtkWidget *entry; + GtkObject *scaleData; + DepthMergeValueEdit *valueEdit; + char buf[256]; + + valueEdit = (DepthMergeValueEdit *)g_malloc(sizeof(DepthMergeValueEdit)); + valueEdit->dm = dm; + valueEdit->value = value; + + *(valueEdit->value) = CLAMP(*(valueEdit->value), min, max); + + label = gtk_label_new(title); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 1.0); + gtk_table_attach(table, label, startCol, startCol+1, row, row+1, + GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + scaleData = gtk_adjustment_new(*value, + min, max, + step, step, + 0.0); + gtk_signal_connect(GTK_OBJECT(scaleData), "value_changed", + (GtkSignalFunc)dialogValueScaleUpdateCallback, + valueEdit); + scale = gtk_hscale_new(GTK_ADJUSTMENT(scaleData)); + gtk_widget_set_usize(scale, SCALE_WIDTH, 0); + gtk_table_attach(table, scale, startCol+1, startCol+2, row, row+1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); + gtk_scale_set_digits(GTK_SCALE(scale), 3); + gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_CONTINUOUS); + gtk_widget_show(scale); + + entry = gtk_entry_new(); + gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); + sprintf(buf, "%0.3f", (float)*value); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) dialogValueEntryUpdateCallback, + valueEdit); + gtk_table_attach(GTK_TABLE(table), entry, startCol+2, startCol+3, row, row+1, + GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(entry); + + valueEdit->scaleData = GTK_ADJUSTMENT(scaleData); + valueEdit->entry = entry; + valueEdit->min = min; + valueEdit->max = max; + + return(valueEdit); +} + + +void DepthMerge_buildPreviewSourceImage(DepthMerge *dm) { + int x; + + dm->interface->checkRow0 = (guchar *)g_malloc(dm->interface->previewWidth * + sizeof(guchar)); + dm->interface->checkRow1 = (guchar *)g_malloc(dm->interface->previewWidth * + sizeof(guchar)); + + for (x = 0; x < dm->interface->previewWidth; x++) { + if ((x / CHECK_SIZE) & 1) { + dm->interface->checkRow0[x] = CHECK_DARK; + dm->interface->checkRow1[x] = CHECK_LIGHT; + } else { + dm->interface->checkRow0[x] = CHECK_LIGHT; + dm->interface->checkRow1[x] = CHECK_DARK; + } + } + + dm->interface->previewSource1 = + (guchar *)g_malloc(dm->interface->previewWidth * + dm->interface->previewHeight * 4); + util_fillReducedBuffer(dm->interface->previewSource1, + dm->interface->previewWidth, + dm->interface->previewHeight, + 4, TRUE, + dm->source1Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); + dm->interface->previewSource2 = + (guchar *)g_malloc(dm->interface->previewWidth * + dm->interface->previewHeight * 4); + util_fillReducedBuffer(dm->interface->previewSource2, + dm->interface->previewWidth, + dm->interface->previewHeight, + 4, TRUE, + dm->source2Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); + dm->interface->previewDepthMap1 = + (guchar *)g_malloc(dm->interface->previewWidth * + dm->interface->previewHeight * 1); + util_fillReducedBuffer(dm->interface->previewDepthMap1, + dm->interface->previewWidth, + dm->interface->previewHeight, + 1, FALSE, + dm->depthMap1Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); + dm->interface->previewDepthMap2 = + (guchar *)g_malloc(dm->interface->previewWidth * + dm->interface->previewHeight * 1); + util_fillReducedBuffer(dm->interface->previewDepthMap2, + dm->interface->previewWidth, + dm->interface->previewHeight, + 1, FALSE, + dm->depthMap2Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); +} + +void DepthMerge_updatePreview(DepthMerge *dm) { + int x, y; + guchar *source1Row, *source2Row, *depthMap1Row, *depthMap2Row, + *resultRowRGBA, *resultRow, + *checkRow; + + if (!dm->interface->active) return; + + resultRowRGBA = (guchar *)g_malloc(dm->interface->previewWidth * 4); + resultRow = (guchar *)g_malloc(dm->interface->previewWidth * 3); + + for (y = 0; y < dm->interface->previewHeight; y++) { + checkRow = ((y/CHECK_SIZE)&1) ? + dm->interface->checkRow1 : + dm->interface->checkRow0; + + source1Row = + &(dm->interface->previewSource1[ y * dm->interface->previewWidth * 4]); + source2Row = + &(dm->interface->previewSource2[ y * dm->interface->previewWidth * 4]); + depthMap1Row = + &(dm->interface->previewDepthMap1[y * dm->interface->previewWidth ]); + depthMap2Row = + &(dm->interface->previewDepthMap2[y * dm->interface->previewWidth ]); + + DepthMerge_executeRegion(dm, + source1Row, source2Row, depthMap1Row, depthMap2Row, + resultRowRGBA, + dm->interface->previewWidth); + for (x = 0; x < dm->interface->previewWidth; x++) { + resultRow[x*3 ] = + ((int)( resultRowRGBA[x*4+3])*(int)resultRowRGBA[x*4 ] + + (int)(255 - resultRowRGBA[x*4+3])*(int)checkRow[x] ) / 255; + resultRow[x*3+1] = + ((int)( resultRowRGBA[x*4+3])*(int)resultRowRGBA[x*4+1] + + (int)(255 - resultRowRGBA[x*4+3])*(int)checkRow[x] ) / 255; + resultRow[x*3+2] = + ((int)( resultRowRGBA[x*4+3])*(int)resultRowRGBA[x*4+2] + + (int)(255 - resultRowRGBA[x*4+3])*(int)checkRow[x] ) / 255; + } + gtk_preview_draw_row(GTK_PREVIEW(dm->interface->preview), resultRow, 0, y, + dm->interface->previewWidth); + } + + g_free(resultRowRGBA); + g_free(resultRow); + + gtk_widget_draw(dm->interface->preview, NULL); + gdk_flush(); +} + + +/* ----- Callbacks ----- */ + + +gint constraintResultSizeAndResultColorOrGray(gint32 imageId, + gint32 drawableId, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + + return((drawableId == -1) || + ((gimp_drawable_width( drawableId) == + gimp_drawable_width( dm->params.result)) && + (gimp_drawable_height(drawableId) == + gimp_drawable_height(dm->params.result)) && + ((gimp_drawable_color(drawableId) && + (gimp_drawable_color(dm->params.result))) || + gimp_drawable_gray( drawableId)))); +} + +gint constraintResultSizeAndGray(gint32 imageId, + gint32 drawableId, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + + return((drawableId == -1) || + ((gimp_drawable_width( drawableId) == + gimp_drawable_width( dm->params.result)) && + (gimp_drawable_height(drawableId) == + gimp_drawable_height(dm->params.result)) && + (gimp_drawable_gray( drawableId)))); +} + +void dialogOkCallback(GtkWidget *widget, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + dm->interface->run = TRUE; + gtk_widget_destroy(dm->interface->dialog); +} + +void dialogCancelCallback(GtkWidget *widget, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + dm->interface->run = FALSE; + gtk_widget_destroy(dm->interface->dialog); +} + +void dialogCloseCallback(GtkWidget *widget, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + gtk_main_quit(); +} + + +void dialogSource1ChangedCallback(gint32 id, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + + if (dm->source1Drawable != NULL) + gimp_drawable_detach(dm->source1Drawable ); + dm->params.source1 = id; + dm->source1Drawable = (dm->params.source1 == -1) ? NULL : + gimp_drawable_get(dm->params.source1 ); + + util_fillReducedBuffer(dm->interface->previewSource1, + dm->interface->previewWidth, + dm->interface->previewHeight, + 4, TRUE, + dm->source1Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); + + DepthMerge_updatePreview(dm); +} +void dialogSource2ChangedCallback(gint32 id, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + + if (dm->source2Drawable != NULL) + gimp_drawable_detach(dm->source2Drawable ); + dm->params.source2 = id; + dm->source2Drawable = (dm->params.source2 == -1) ? NULL : + gimp_drawable_get(dm->params.source2 ); + + util_fillReducedBuffer(dm->interface->previewSource2, + dm->interface->previewWidth, + dm->interface->previewHeight, + 4, TRUE, + dm->source2Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); + + DepthMerge_updatePreview(dm); +} +void dialogDepthMap1ChangedCallback(gint32 id, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + + if (dm->depthMap1Drawable != NULL) + gimp_drawable_detach(dm->depthMap1Drawable); + dm->params.depthMap1 = id; + dm->depthMap1Drawable = (dm->params.depthMap1 == -1) ? NULL : + gimp_drawable_get(dm->params.depthMap1); + + util_fillReducedBuffer(dm->interface->previewDepthMap1, + dm->interface->previewWidth, + dm->interface->previewHeight, + 1, FALSE, + dm->depthMap1Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); + + DepthMerge_updatePreview(dm); +} +void dialogDepthMap2ChangedCallback(gint32 id, gpointer data) { + DepthMerge *dm = (DepthMerge *)data; + + if (dm->depthMap2Drawable != NULL) + gimp_drawable_detach(dm->depthMap2Drawable); + dm->params.depthMap2 = id; + dm->depthMap2Drawable = (dm->params.depthMap2 == -1) ? NULL : + gimp_drawable_get(dm->params.depthMap2); + + util_fillReducedBuffer(dm->interface->previewDepthMap2, + dm->interface->previewWidth, + dm->interface->previewHeight, + 1, FALSE, + dm->depthMap2Drawable, + dm->selectionX0, dm->selectionY0, + dm->selectionWidth, dm->selectionHeight); + + DepthMerge_updatePreview(dm); +} + +void dialogValueScaleUpdateCallback(GtkAdjustment *adjustment, gpointer data) { + DepthMergeValueEdit *valueEdit = (DepthMergeValueEdit *)data; + char buf[256]; + + if (*(valueEdit->value) != adjustment->value) { + *(valueEdit->value) = adjustment->value; + + sprintf(buf, "%0.3f", (float)(adjustment->value)); + + gtk_signal_handler_block_by_data(GTK_OBJECT(valueEdit->entry), data); + gtk_entry_set_text(GTK_ENTRY(valueEdit->entry), buf); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(valueEdit->entry), data); + + DepthMerge_updatePreview(valueEdit->dm); + } +} + +void dialogValueEntryUpdateCallback(GtkWidget *widget, gpointer data) { + DepthMergeValueEdit *valueEdit = (DepthMergeValueEdit *)data; + float newValue; + + newValue = atof(gtk_entry_get_text(GTK_ENTRY(widget))); + + if ((*(valueEdit->value) != newValue) && + (newValue >= valueEdit->min) && + (newValue <= valueEdit->max)) { + valueEdit->scaleData->value = newValue; + + gtk_signal_emit_by_name(GTK_OBJECT(valueEdit->scaleData), + "value_changed"); + + DepthMerge_updatePreview(valueEdit->dm); + } +} + + +/* ----- Utility routines ----- */ + +void util_fillReducedBuffer(guchar *dest, gint destWidth, gint destHeight, + gint destBPP, gint destHasAlpha, + GDrawable *sourceDrawable, + gint x0, gint y0, + gint sourceWidth, gint sourceHeight) { + GPixelRgn rgn; + guchar *rowBuffer, *reducedRowBuffer; + int x, y, xPrime, yPrime, sourceHasAlpha; + + if ((sourceDrawable == NULL) || (sourceWidth == 0) || (sourceHeight == 0)) { + for (x = 0; x < destWidth*destHeight*destBPP; x++) + dest[x] = 0; + return; + } + + rowBuffer = (guchar *)g_malloc(sourceWidth * sourceDrawable->bpp); + reducedRowBuffer = (guchar *)g_malloc(destWidth * sourceDrawable->bpp); + gimp_pixel_rgn_init(&rgn, sourceDrawable, x0, y0, sourceWidth, sourceHeight, + FALSE, FALSE); + sourceHasAlpha = gimp_drawable_has_alpha(sourceDrawable->id); + + for (y = 0; y < destHeight; y++) { + yPrime = y*(sourceHeight-1)/(destHeight-1); + gimp_pixel_rgn_get_row(&rgn, rowBuffer, x0, yPrime+y0, + sourceWidth); + for (x = 0; x < destWidth; x++) { + xPrime = x*(sourceWidth-1)/(destWidth-1); + memcpy(&(reducedRowBuffer[x *sourceDrawable->bpp]), + &(rowBuffer[ xPrime*sourceDrawable->bpp]), + sourceDrawable->bpp); + } + util_convertColorspace(&(dest[y*destWidth*destBPP]), destBPP, destHasAlpha, + reducedRowBuffer, sourceDrawable->bpp, sourceHasAlpha, + destWidth); + } + + g_free(rowBuffer); + g_free(reducedRowBuffer); +} + + +/* Utterly pathetic kludge to convert between color spaces; + likes gray and rgb best, of course. Others will be creatively mutilated, + and even rgb->gray is pretty bad */ +void util_convertColorspace(guchar *dest, + gint destBPP, gint destHasAlpha, + guchar *source, + gint sourceBPP, gint sourceHasAlpha, + gint length) { + int i, j, accum; + int sourceColorBPP = sourceHasAlpha ? (sourceBPP-1) : sourceBPP; + int destColorBPP = destHasAlpha ? (destBPP -1) : destBPP; + + if (((sourceColorBPP != 1) && (sourceColorBPP != 3)) || + ((destColorBPP != 1) && (destColorBPP != 3))) + fprintf(stderr, "Warning: I don't _like_ this color space. This is a suggestion, not a threat.\n"); + + if ((sourceColorBPP == destColorBPP) && + (sourceBPP == destBPP )) { + memcpy(dest, source, length*sourceBPP); + return; + } + + if (sourceColorBPP == 1) { + /* Duplicate single "gray" source byte across all dest bytes */ + for (i = 0; i < length; i++) { + for (j = 0; j < destColorBPP; j++) + dest[i*destBPP + j] = source[i*sourceBPP]; + } + } else if (destColorBPP == 1) { + /* Average all source bytes into single "gray" dest byte */ + for (i = 0; i < length; i++) { + accum = 0; + for (j = 0; j < sourceColorBPP; j++) + accum += source[i*sourceBPP + j]; + dest[i*destBPP] = accum/sourceColorBPP; + } + } else if (destColorBPP < sourceColorBPP) { + /* Copy as many corresponding bytes from source to dest as will fit */ + for (i = 0; i < length; i++) { + for (j = 0; j < destColorBPP; j++) + dest[i*destBPP + j] = source[i*sourceBPP + j]; + } + } else /* destColorBPP > sourceColorBPP */ { + /* Fill extra dest bytes with zero */ + for (i = 0; i < length; i++) { + for (j = 0; j < sourceColorBPP; j++) + dest[i*destBPP + j] = source[i*sourceBPP + j]; + for ( ; j < destColorBPP; j++) + dest[i*destBPP + j] = 0; + } + } + + if (destHasAlpha) { + if (sourceHasAlpha) + for (i = 0; i < length; i++) + dest[i*destBPP + destColorBPP] = + source[i*sourceBPP + sourceColorBPP]; + else + for (i = 0; i < length; i++) + dest[i*destBPP + destColorBPP] = + 255; + } +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/despeckle.c gimp-0.99.pre11/plug-ins/despeckle.c --- gimp-0.99.10/plug-ins/despeckle.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/despeckle.c Wed Aug 13 20:50:48 1997 @@ -0,0 +1,1211 @@ +/* + * "$Id: despeckle.c,v 1.11 1997/06/12 16:58:11 mike Exp mike $" + * + * Despeckle (adaptive median) filter for The GIMP -- an image manipulation + * program + * + * Copyright 1997 Michael Sweet. This code is based off Quartic's bumpmap + * filter and the median filter (described in most image processing books...) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contents: + * + * main() - Main entry - just call gimp_main()... + * query() - Respond to a plug-in query... + * run() - Run the filter... + * despeckle() - Despeckle an image using a median filter. + * despeckle_dialog() - Popup a dialog window for the filter box size... + * preview_init() - Initialize the preview window... + * preview_scroll_callback() - Update the preview when a scrollbar is moved. + * preview_update() - Update the preview window. + * preview_exit() - Free all memory used by the preview window... + * dialog_create_ivalue() - Create an integer value control... + * dialog_iscale_update() - Update the value field using the scale. + * dialog_ientry_update() - Update the value field using the text entry. + * dialog_adaptive_callback() - Update the filter type... + * dialog_recursive_callback() - Update the filter type... + * dialog_ok_callback() - Start the filter... + * dialog_cancel_callback() - Cancel the filter... + * dialog_close_callback() - Exit the filter dialog application. + * + * Revision History: + * + * $Log: despeckle.c,v $ + * Revision 1.11 1997/06/12 16:58:11 mike + * Optimized final despeckle - now grab gimp_tile_height() rows at a time + * for faster filtering. + * + * Revision 1.10 1997/06/08 23:30:29 mike + * Improved the preview update speed significantly by loading the entire + * source (preview) image first. + * + * Revision 1.9 1997/06/08 16:48:21 mike + * Renamed "adaptive" argument to "type" (filter type). + * + * Revision 1.8 1997/06/08 12:45:09 mike + * Added recursive filter option. + * Cleaned up UI. + * + * Revision 1.7 1997/06/08 04:27:19 mike + * Updated documentation. + * Moved plug-in back to original location in menu tree. + * + * Revision 1.6 1997/06/08 04:24:56 mike + * Added filter type argument & control. + * + * Revision 1.5 1997/06/08 04:12:36 mike + * Added preview window. + * + * Revision 1.4 1997/06/08 02:18:22 mike + * Updated to adjust the despeckling radius based upon the window's + * histogram. This improves filter quality significantly as surface + * details are preserved and not blurred... + * + * Revision 1.3 1997/06/07 01:29:47 mike + * Added some minor optimizations. + * Updated version to 1.01. + * Fixed minor bug in dialog_ientry_update() - was using gdouble instead + * of gint for new_value... + * + * Revision 1.2 1997/06/07 01:03:07 mike + * Updated docos, changed maximum radius to 20. + * + * Revision 1.1 1997/06/07 00:01:15 mike + * Initial Revision. + */ + +#include +#include +#include +#include +#include +#include + + +/* + * Macros... + */ + +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) + + +/* + * Constants... + */ + +#define PLUG_IN_NAME "plug_in_despeckle" +#define PLUG_IN_VERSION "1.1" +#define PREVIEW_SIZE 128 +#define SCALE_WIDTH 64 +#define ENTRY_WIDTH 64 +#define MAX_RADIUS 20 + +#define FILTER_ADAPTIVE 0x01 +#define FILTER_RECURSIVE 0x02 + + +/* + * Local functions... + */ + +static void query(void); +static void run(char *, int, GParam *, int *, GParam **); +static void despeckle(void); +static gint despeckle_dialog(void); +static void dialog_create_ivalue(char *, GtkTable *, int, gint *, int, int); +static void dialog_iscale_update(GtkAdjustment *, gint *); +static void dialog_ientry_update(GtkWidget *, gint *); +static void dialog_adaptive_callback(GtkWidget *, gpointer); +static void dialog_recursive_callback(GtkWidget *, gpointer); +static void dialog_ok_callback(GtkWidget *, gpointer); +static void dialog_cancel_callback(GtkWidget *, gpointer); +static void dialog_close_callback(GtkWidget *, gpointer); + +static void preview_init(void); +static void preview_exit(void); +static void preview_update(void); +static void preview_scroll_callback(void); + + +/* + * Globals... + */ + +GPlugInInfo PLUG_IN_INFO = + { + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run /* run_proc */ + }; + +GtkWidget *preview; /* Preview widget */ +int preview_width, /* Width of preview widget */ + preview_height, /* Height of preview widget */ + preview_x1, /* Upper-left X of preview */ + preview_y1, /* Upper-left Y of preview */ + preview_x2, /* Lower-right X of preview */ + preview_y2; /* Lower-right Y of preview */ +guchar *preview_src, /* Source pixel rows */ + *preview_dst, /* Destination pixel row */ + *preview_sort; /* Pixel value sort array */ +GtkObject *hscroll_data, /* Horizontal scrollbar data */ + *vscroll_data; /* Vertical scrollbar data */ + +GDrawable *drawable = NULL; /* Current image */ +int sel_x1, /* Selection bounds */ + sel_y1, + sel_x2, + sel_y2; +int sel_width, /* Selection width */ + sel_height; /* Selection height */ +int img_bpp; /* Bytes-per-pixel in image */ +int despeckle_radius = 3; /* Radius of median filter box */ +int filter_type = FILTER_ADAPTIVE; + /* Type of filter */ +gint run_filter = FALSE; /* True if we should run the filter */ + + +/* + * 'main()' - Main entry - just call gimp_main()... + */ + +int +main(int argc, /* I - Number of command-line args */ + char *argv[]) /* I - Command-line args */ +{ + return (gimp_main(argc, argv)); +} + + +/* + * 'query()' - Respond to a plug-in query... + */ + +static void +query(void) +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_INT32, "radius", "Filter box radius (default = 3)" }, + { PARAM_INT32, "type", "Filter type (0 = median, 1 = adaptive, 2 = recursive-median, 3 = recursive-adaptive)" } + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof(args) / sizeof(args[0]), + nreturn_vals = 0; + + + gimp_install_procedure(PLUG_IN_NAME, + "Despeckle filter, typically used to \'despeckle\' a photographic image.", + "This plug-in selectively performs a median or adaptive box filter on an image.", + "Michael Sweet", "Michael Sweet", + PLUG_IN_VERSION, "/Filters/Image/Despeckle...", "RGB*, GRAY*", + PROC_PLUG_IN, nargs, nreturn_vals, args, return_vals); +} + + +/* + * 'run()' - Run the filter... + */ + +static void +run(char *name, /* I - Name of filter program. */ + int nparams, /* I - Number of parameters passed in */ + GParam *param, /* I - Parameter values */ + int *nreturn_vals, /* O - Number of return values */ + GParam **return_vals) /* O - Return values */ +{ + GRunModeType run_mode; /* Current run mode */ + GStatusType status; /* Return status */ + static GParam values[1]; /* Return values */ + + + /* + * Initialize parameter data... + */ + + status = STATUS_SUCCESS; + run_mode = param[0].data.d_int32; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + *nreturn_vals = 1; + *return_vals = values; + + /* + * Get drawable information... + */ + + drawable = gimp_drawable_get(param[2].data.d_drawable); + + gimp_drawable_mask_bounds(drawable->id, &sel_x1, &sel_y1, &sel_x2, &sel_y2); + + sel_width = sel_x2 - sel_x1; + sel_height = sel_y2 - sel_y1; + img_bpp = gimp_drawable_bpp(drawable->id); + + /* + * See how we will run + */ + + switch (run_mode) + { + case RUN_INTERACTIVE : + /* + * Possibly retrieve data... + */ + + gimp_get_data(PLUG_IN_NAME, &despeckle_radius); + + /* + * Get information from the dialog... + */ + + if (!despeckle_dialog()) + return; + break; + + case RUN_NONINTERACTIVE : + /* + * Make sure all the arguments are present... + */ + + if (nparams != 4) + status = STATUS_CALLING_ERROR; + else + despeckle_radius = param[3].data.d_int32; + break; + + case RUN_WITH_LAST_VALS : + /* + * Possibly retrieve data... + */ + + gimp_get_data(PLUG_IN_NAME, &despeckle_radius); + break; + + default : + status = STATUS_CALLING_ERROR; + break;; + }; + + /* + * Despeckle the image... + */ + + if (status == STATUS_SUCCESS) + { + if ((gimp_drawable_color(drawable->id) || + gimp_drawable_gray(drawable->id))) + { + /* + * Set the tile cache size... + */ + + gimp_tile_cache_ntiles((drawable->width + gimp_tile_width() - 1) / + gimp_tile_width()); + + /* + * Run! + */ + + despeckle(); + + /* + * If run mode is interactive, flush displays... + */ + + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush(); + + /* + * Store data... + */ + + if (run_mode == RUN_INTERACTIVE) + gimp_set_data(PLUG_IN_NAME, &despeckle_radius, sizeof(despeckle_radius)); + } + else + status = STATUS_EXECUTION_ERROR; + }; + + /* + * Reset the current run status... + */ + + values[0].data.d_status = status; + + /* + * Detach from the drawable... + */ + + gimp_drawable_detach(drawable); +} + + +/* + * 'despeckle()' - Despeckle an image using a median filter. + * + * A median filter basically collects pixel values in a region around the + * target pixel, sorts them, and uses the median value. This code uses a + * circular row buffer to improve performance. + * + * The adaptive filter is based on the median filter but analizes the histogram + * of the region around the target pixel and adjusts the despeckle radius + * accordingly. + */ + +static void +despeckle(void) +{ + GPixelRgn src_rgn, /* Source image region */ + dst_rgn; /* Destination image region */ + guchar **src_rows, /* Source pixel rows */ + *dst_row, /* Destination pixel row */ + *src_ptr, /* Source pixel pointer */ + *sort, /* Pixel value sort array */ + *sort_ptr; /* Current sort value */ + int sort_count, /* Number of soft values */ + i, j, t, d, /* Looping vars */ + x, y, /* Current location in image */ + row, /* Current row in src_rows */ + rowcount, /* Number of rows loaded */ + lasty, /* Last row loaded in src_rows */ + trow, /* Looping var */ + startrow, /* Starting row for loop */ + endrow, /* Ending row for loop */ + max_row, /* Maximum number of filled src_rows */ + size, /* Width/height of the filter box */ + width, /* Byte width of the image */ + xmin, xmax, tx, /* Looping vars */ + radius, /* Current radius */ + hist0, /* Histogram count for 0 values */ + hist255; /* Histogram count for 255 values */ + + + /* + * Let the user know what we're doing... + */ + + gimp_progress_init("Despeckling..."); + + /* + * Setup for filter... + */ + + gimp_pixel_rgn_init(&src_rgn, drawable, sel_x1, sel_y1, sel_width, sel_height, FALSE, FALSE); + gimp_pixel_rgn_init(&dst_rgn, drawable, sel_x1, sel_y1, sel_width, sel_height, TRUE, TRUE); + + size = despeckle_radius * 2 + 1; + max_row = 2 * gimp_tile_height(); + width = sel_width * img_bpp; + + src_rows = g_malloc(max_row * sizeof(guchar *)); + src_rows[0] = g_malloc(max_row * width * sizeof(guchar)); + + for (row = 1; row < max_row; row ++) + src_rows[row] = src_rows[0] + row * width; + + dst_row = g_malloc(width * sizeof(guchar)); + sort = g_malloc(size * size * sizeof(guchar)); + + /* + * Pre-load the first "size" rows for the filter... + */ + + if (sel_height < gimp_tile_height()) + rowcount = sel_height; + else + rowcount = gimp_tile_height(); + + gimp_pixel_rgn_get_rect(&src_rgn, src_rows[0], sel_x1, sel_y1, sel_width, + rowcount); + + row = rowcount; + lasty = sel_y1 + rowcount; + + /* + * Despeckle... + */ + + for (y = sel_y1 ; y < sel_y2; y ++) + { + if ((y + despeckle_radius) >= lasty && + lasty < sel_y2) + { + /* + * Load the next block of rows... + */ + + rowcount -= gimp_tile_height(); + if ((i = sel_y2 - lasty) > gimp_tile_height()) + i = gimp_tile_height(); + + gimp_pixel_rgn_get_rect(&src_rgn, src_rows[row], sel_x1, lasty, sel_width, i); + + rowcount += i; + lasty += i; + row = (row + i) % max_row; + }; + + /* + * Now find the median pixels and save the results... + */ + + radius = despeckle_radius; + + for (x = 0; x < width; x ++) + { + hist0 = 0; + hist255 = 0; + xmin = x - radius * img_bpp; + xmax = x + (radius + 1) * img_bpp; + + if (xmin < 0) + xmin = x % img_bpp; + + if (xmax > width) + xmax = width; + + startrow = (row + y - lasty - radius + max_row) % max_row; + endrow = (row + y - lasty + radius + 1 + max_row) % max_row; + + for (sort_ptr = sort, trow = startrow; + trow != endrow; + trow = (trow + 1) % max_row) + for (tx = xmin, src_ptr = src_rows[trow] + xmin; + tx < xmax; + tx += img_bpp, sort_ptr ++, src_ptr += img_bpp) + { + if ((*sort_ptr = *src_ptr) == 0) + hist0 ++; + else if (*sort_ptr == 255) + hist255 ++; + }; + + /* + * Shell sort the color values... + */ + + sort_count = sort_ptr - sort; + + for (d = sort_count / 2; d > 0; d = d / 2) + for (i = d; i < sort_count; i ++) + for (j = i - d, sort_ptr = sort + j; + j >= 0 && sort_ptr[0] > sort_ptr[d]; + j -= d, sort_ptr -= d) + { + t = sort_ptr[0]; + sort_ptr[0] = sort_ptr[d]; + sort_ptr[d] = t; + }; + + /* + * Assign the median value... + */ + + t = sort_count / 2; + + if (sort_count & 1) + dst_row[x] = (sort[t] + sort[t + 1]) / 2; + else + dst_row[x] = sort[t]; + + /* + * Save the change to the source image too if the user wants the + * recursive method... + */ + + if (filter_type & FILTER_RECURSIVE) + src_rows[(row + y - lasty + max_row) % max_row][x] = dst_row[x]; + + /* + * Check the histogram and adjust the radius accordingly... + */ + + if (filter_type & FILTER_ADAPTIVE) + { + if (hist0 >= radius || hist255 >= radius) + { + if (radius < despeckle_radius) + radius ++; + } + else if (radius > 1) + radius --; + }; + }; + + gimp_pixel_rgn_set_row(&dst_rgn, dst_row, sel_x1, y, sel_width); + + if ((y & 15) == 0) + gimp_progress_update((double)(y - sel_y1) / (double)sel_height); + }; + + /* + * OK, we're done. Free all memory used... + */ + + g_free(src_rows[0]); + g_free(src_rows); + g_free(dst_row); + g_free(sort); + + /* + * Update the screen... + */ + + gimp_drawable_flush(drawable); + gimp_drawable_merge_shadow(drawable->id, TRUE); + gimp_drawable_update(drawable->id, sel_x1, sel_y1, sel_width, sel_height); +} + + +/* + * 'despeckle_dialog()' - Popup a dialog window for the filter box size... + */ + +static gint +despeckle_dialog(void) +{ + GtkWidget *dialog, /* Dialog window */ + *table, /* Table "container" for controls */ + *ptable, /* Preview table */ + *ftable, /* Filter table */ + *frame, /* Frame for preview */ + *scrollbar, /* Horizontal + vertical scroller */ + *button; /* OK/Cancel buttons */ + gint argc; /* Fake argc for GUI */ + gchar **argv; /* Fake argv for GUI */ + guchar *color_cube; /* Preview color cube... */ + + + /* + * Initialize the program's display... + */ + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup("despeckle"); + + gtk_init(&argc, &argv); + gtk_rc_parse(gimp_gtkrc()); + gdk_set_use_xshm(gimp_use_xshm()); + + signal(SIGBUS, SIG_DFL); + signal(SIGSEGV, SIG_DFL); + gtk_preview_set_gamma(gimp_gamma()); + gtk_preview_set_install_cmap(gimp_install_cmap()); + color_cube = gimp_color_cube(); + gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], color_cube[3]); + + gtk_widget_set_default_visual(gtk_preview_get_visual()); + gtk_widget_set_default_colormap(gtk_preview_get_cmap()); + + /* + * Dialog window... + */ + + dialog = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dialog), "Despeckle"); + gtk_window_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); + gtk_container_border_width(GTK_CONTAINER(dialog), 0); + gtk_signal_connect(GTK_OBJECT(dialog), "destroy", + (GtkSignalFunc) dialog_close_callback, + NULL); + + /* + * Top-level table for dialog... + */ + + table = gtk_table_new(3, 3, FALSE); + gtk_container_border_width(GTK_CONTAINER(table), 6); + gtk_table_set_row_spacings(GTK_TABLE(table), 4); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, FALSE, FALSE, 0); + gtk_widget_show(table); + + /* + * Preview window... + */ + + ptable = gtk_table_new(2, 2, FALSE); + gtk_container_border_width(GTK_CONTAINER(ptable), 0); + gtk_table_attach(GTK_TABLE(table), ptable, 0, 2, 0, 1, 0, 0, 0, 0); + gtk_widget_show(ptable); + + frame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); + gtk_table_attach(GTK_TABLE(ptable), frame, 0, 1, 0, 1, 0, 0, 0, 0); + gtk_widget_show(frame); + + preview_width = MIN(sel_width, PREVIEW_SIZE); + preview_height = MIN(sel_height, PREVIEW_SIZE); + + preview = gtk_preview_new(GTK_PREVIEW_COLOR); + gtk_preview_size(GTK_PREVIEW(preview), preview_width, preview_height); + gtk_container_add(GTK_CONTAINER(frame), preview); + gtk_widget_show(preview); + + hscroll_data = gtk_adjustment_new(0, 0, sel_width - 1, 1.0, + MIN(preview_width, sel_width), + MIN(preview_width, sel_width)); + + gtk_signal_connect(hscroll_data, "value_changed", + (GtkSignalFunc)preview_scroll_callback, NULL); + + scrollbar = gtk_hscrollbar_new(GTK_ADJUSTMENT(hscroll_data)); + gtk_range_set_update_policy(GTK_RANGE(scrollbar), GTK_UPDATE_CONTINUOUS); + gtk_table_attach(GTK_TABLE(ptable), scrollbar, 0, 1, 1, 2, GTK_FILL, 0, 0, 0); + gtk_widget_show(scrollbar); + + vscroll_data = gtk_adjustment_new(0, 0, sel_height - 1, 1.0, + MIN(preview_height, sel_height), + MIN(preview_height, sel_height)); + + gtk_signal_connect(vscroll_data, "value_changed", + (GtkSignalFunc)preview_scroll_callback, NULL); + + scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(vscroll_data)); + gtk_range_set_update_policy(GTK_RANGE(scrollbar), GTK_UPDATE_CONTINUOUS); + gtk_table_attach(GTK_TABLE(ptable), scrollbar, 1, 2, 0, 1, 0, GTK_FILL, 0, 0); + gtk_widget_show(scrollbar); + + preview_init(); + + /* + * Filter type controls... + */ + + ftable = gtk_table_new(4, 1, FALSE); + gtk_container_border_width(GTK_CONTAINER(ftable), 4); + gtk_table_attach(GTK_TABLE(table), ftable, 2, 3, 0, 1, 0, 0, 0, 0); + gtk_widget_show(ftable); + + button = gtk_check_button_new_with_label("Adaptive"); + gtk_table_attach(GTK_TABLE(ftable), button, 0, 1, 0, 1, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), + (filter_type & FILTER_ADAPTIVE) ? TRUE : FALSE); + gtk_signal_connect(GTK_OBJECT(button), "toggled", + (GtkSignalFunc)dialog_adaptive_callback, + NULL); + gtk_widget_show(button); + + button = gtk_check_button_new_with_label("Recursive"); + gtk_table_attach(GTK_TABLE(ftable), button, 0, 1, 1, 2, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), + (filter_type & FILTER_RECURSIVE) ? TRUE : FALSE); + gtk_signal_connect(GTK_OBJECT(button), "toggled", + (GtkSignalFunc)dialog_recursive_callback, + NULL); + gtk_widget_show(button); + + /* + * Box size (radius) control... + */ + + dialog_create_ivalue("Radius", GTK_TABLE(table), 2, &despeckle_radius, 1, MAX_RADIUS); + + /* + * OK, cancel buttons... + */ + + gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 6); + + button = gtk_button_new_with_label("OK"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) dialog_ok_callback, + dialog); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) dialog_cancel_callback, + dialog); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + /* + * Show it and wait for the user to do something... + */ + + gtk_widget_show(dialog); + + preview_update(); + + gtk_main(); + gdk_flush(); + + /* + * Free the preview data... + */ + + preview_exit(); + + /* + * Return ok/cancel... + */ + + return (run_filter); +} + + +/* + * 'preview_init()' - Initialize the preview window... + */ + +static void +preview_init(void) +{ + int row, /* Current row in preview_srcs */ + size, /* Size of filter box */ + width; /* Byte width of the image */ + + + /* + * Setup for preview filter... + */ + + size = despeckle_radius * 2 + 1; + width = preview_width * img_bpp; + + preview_src = g_malloc(width * preview_height * sizeof(guchar *)); + preview_dst = g_malloc(width * sizeof(guchar)); + preview_sort = g_malloc(size * size * sizeof(guchar)); + + preview_x1 = sel_x1; + preview_y1 = sel_y1; + preview_x2 = preview_x1 + MIN(preview_width, sel_width); + preview_y2 = preview_y1 + MIN(preview_height, sel_height); +} + + +/* + * 'preview_scroll_callback()' - Update the preview when a scrollbar is moved. + */ + +static void +preview_scroll_callback(void) +{ + preview_x1 = sel_x1 + GTK_ADJUSTMENT(hscroll_data)->value; + preview_y1 = sel_y1 + GTK_ADJUSTMENT(vscroll_data)->value; + preview_x2 = preview_x1 + MIN(preview_width, sel_width); + preview_y2 = preview_y1 + MIN(preview_height, sel_height); + + preview_update(); +} + + +/* + * 'preview_update()' - Update the preview window. + */ + +static void +preview_update(void) +{ + GPixelRgn src_rgn; /* Source image region */ + guchar *sort_ptr, /* Current preview_sort value */ + *src_ptr, /* Current source pixel */ + *dst_ptr; /* Current destination pixel */ + int sort_count, /* Number of soft values */ + i, j, t, d, /* Looping vars */ + x, y, /* Current location in image */ + size, /* Width/height of the filter box */ + width, /* Byte width of the image */ + xmin, xmax, tx, /* Looping vars */ + radius, /* Current radius */ + hist0, /* Histogram count for 0 values */ + hist255; /* Histogram count for 255 values */ + guchar rgb[PREVIEW_SIZE * 3], /* Output image */ + *rgb_ptr; /* Pixel pointer for output */ + + + /* + * Setup for filter... + */ + + gimp_pixel_rgn_init(&src_rgn, drawable, preview_x1, preview_y1, preview_width, preview_height, FALSE, FALSE); + + /* + * Pre-load the preview rectangle... + */ + + size = despeckle_radius * 2 + 1; + width = preview_width * img_bpp; + + gimp_pixel_rgn_get_rect(&src_rgn, preview_src, preview_x1, preview_y1, + preview_width, preview_height); + + /* + * Despeckle... + */ + + for (y = 0; y < preview_height; y ++) + { + /* + * Now find the median pixels and save the results... + */ + + radius = despeckle_radius; + + if (y < radius || y >= (preview_height - radius)) + memcpy(preview_dst, preview_src + y * width, width); + else + { + for (x = 0, dst_ptr = preview_dst; x < width; x ++, dst_ptr ++) + { + hist0 = 0; + hist255 = 0; + xmin = x - radius * img_bpp; + xmax = x + (radius + 1) * img_bpp; + + if (xmin < 0) + xmin = x % img_bpp; + + if (xmax > width) + xmax = width; + + for (i = -radius, sort_ptr = preview_sort, + src_ptr = preview_src + width * (y - radius); + i <= radius; + i ++, src_ptr += width) + for (tx = xmin; tx < xmax; tx += img_bpp, sort_ptr ++) + { + if ((*sort_ptr = src_ptr[tx]) == 0) + hist0 ++; + else if (*sort_ptr == 255) + hist255 ++; + }; + + /* + * Shell preview_sort the color values... + */ + + sort_count = sort_ptr - preview_sort; + + for (d = sort_count / 2; d > 0; d = d / 2) + for (i = d; i < sort_count; i ++) + for (j = i - d, sort_ptr = preview_sort + j; + j >= 0 && sort_ptr[0] > sort_ptr[d]; + j -= d, sort_ptr -= d) + { + t = sort_ptr[0]; + sort_ptr[0] = sort_ptr[d]; + sort_ptr[d] = t; + }; + + /* + * Assign the median value... + */ + + t = sort_count / 2; + + if (sort_count & 1) + *dst_ptr = (preview_sort[t] + preview_sort[t + 1]) / 2; + else + *dst_ptr = preview_sort[t]; + + /* + * Save the change to the source image too if the user wants the + * recursive method... + */ + + if (filter_type & FILTER_RECURSIVE) + preview_src[y * width + x] = *dst_ptr; + + /* + * Check the histogram and adjust the radius accordingly... + */ + + if (filter_type & FILTER_ADAPTIVE) + { + if (hist0 >= radius || hist255 >= radius) + { + if (radius < despeckle_radius) + radius ++; + } + else if (radius > 1) + radius --; + }; + }; + }; + + /* + * Draw this row... + */ + + switch (img_bpp) + { + case 1 : + case 2 : + for (x = 0, dst_ptr = preview_dst, rgb_ptr = rgb; + x < preview_width; + x ++, dst_ptr += img_bpp, rgb_ptr += 3) + rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] = *dst_ptr; + + gtk_preview_draw_row(GTK_PREVIEW(preview), rgb, 0, y, preview_width); + break; + + case 3 : + gtk_preview_draw_row(GTK_PREVIEW(preview), preview_dst, 0, y, + preview_width); + break; + + case 4 : + for (x = 0, dst_ptr = preview_dst, rgb_ptr = rgb; + x < preview_width; + x ++, dst_ptr += 4, rgb_ptr += 3) + { + rgb_ptr[0] = dst_ptr[0]; + rgb_ptr[1] = dst_ptr[1]; + rgb_ptr[2] = dst_ptr[2]; + }; + + gtk_preview_draw_row(GTK_PREVIEW(preview), rgb, 0, y, preview_width); + break; + }; + }; + + gtk_widget_draw(preview, NULL); + gdk_flush(); +} + + +/* + * 'preview_exit()' - Free all memory used by the preview window... + */ + +static void +preview_exit(void) +{ + int row, /* Looping var */ + size; /* Size of row buffer */ + + + size = MAX_RADIUS * 2 + 1; + + g_free(preview_src); + g_free(preview_dst); + g_free(preview_sort); +} + + +/* + * 'dialog_create_ivalue()' - Create an integer value control... + */ + +static void +dialog_create_ivalue(char *title, /* I - Label for control */ + GtkTable *table, /* I - Table container to use */ + int row, /* I - Row # for container */ + gint *value, /* I - Value holder */ + int left, /* I - Minimum value for slider */ + int right) /* I - Maximum value for slider */ +{ + GtkWidget *label, /* Control label */ + *scale, /* Scale widget */ + *entry; /* Text widget */ + GtkObject *scale_data; /* Scale data */ + char buf[256]; /* String buffer */ + + + /* + * Label... + */ + + label = gtk_label_new(title); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 1.0); + gtk_table_attach(table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + /* + * Scale... + */ + + scale_data = gtk_adjustment_new(*value, left, right, 1.0, 1.0, 1.0); + + gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", + (GtkSignalFunc) dialog_iscale_update, + value); + + scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); + gtk_widget_set_usize(scale, SCALE_WIDTH, 0); + gtk_table_attach(table, scale, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); + gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_CONTINUOUS); + gtk_widget_show(scale); + + /* + * Text entry... + */ + + entry = gtk_entry_new(); + gtk_object_set_user_data(GTK_OBJECT(entry), scale_data); + gtk_object_set_user_data(scale_data, entry); + gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); + sprintf(buf, "%d", *value); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) dialog_ientry_update, + value); + gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(entry); +} + + +/* + * 'dialog_iscale_update()' - Update the value field using the scale. + */ + +static void +dialog_iscale_update(GtkAdjustment *adjustment, /* I - New value */ + gint *value) /* I - Current value */ +{ + GtkWidget *entry; /* Text entry widget */ + char buf[256]; /* Text buffer */ + + + if (*value != adjustment->value) + { + *value = adjustment->value; + + entry = gtk_object_get_user_data(GTK_OBJECT(adjustment)); + sprintf(buf, "%d", *value); + + gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value); + + preview_update(); + }; +} + + +/* + * 'dialog_ientry_update()' - Update the value field using the text entry. + */ + +static void +dialog_ientry_update(GtkWidget *widget, /* I - Entry widget */ + gint *value) /* I - Current value */ +{ + GtkAdjustment *adjustment; + gint new_value; + + + new_value = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); + + if (*value != new_value) + { + adjustment = gtk_object_get_user_data(GTK_OBJECT(widget)); + + if ((new_value >= adjustment->lower) && + (new_value <= adjustment->upper)) + { + *value = new_value; + adjustment->value = new_value; + + gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed"); + + preview_update(); + }; + }; +} + + +/* + * 'dialog_adaptive_callback()' - Update the filter type... + */ + +static void +dialog_adaptive_callback(GtkWidget *widget, /* I - Toggle button */ + gpointer data) /* I - Data */ +{ + if (GTK_TOGGLE_BUTTON(widget)->active) + filter_type |= FILTER_ADAPTIVE; + else + filter_type &= ~FILTER_ADAPTIVE; + + preview_update(); +} + + +/* + * 'dialog_recursive_callback()' - Update the filter type... + */ + +static void +dialog_recursive_callback(GtkWidget *widget, /* I - Toggle button */ + gpointer data) /* I - Data */ +{ + if (GTK_TOGGLE_BUTTON(widget)->active) + filter_type |= FILTER_RECURSIVE; + else + filter_type &= ~FILTER_RECURSIVE; + + preview_update(); +} + + +/* + * 'dialog_ok_callback()' - Start the filter... + */ + +static void +dialog_ok_callback(GtkWidget *widget, /* I - OK button widget */ + gpointer data) /* I - Dialog window */ +{ + run_filter = TRUE; + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +/* + * 'dialog_cancel_callback()' - Cancel the filter... + */ + +static void +dialog_cancel_callback(GtkWidget *widget, /* I - Cancel button widget */ + gpointer data) /* I - Dialog window */ +{ + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +/* + * 'dialog_close_callback()' - Exit the filter dialog application. + */ + +static void +dialog_close_callback(GtkWidget *widget, /* I - Dialog window */ + gpointer data) /* I - Dialog window */ +{ + gtk_main_quit(); +} + + +/* + * End of "$Id: despeckle.c,v 1.11 1997/06/12 16:58:11 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/dgimp/Makefile gimp-0.99.pre11/plug-ins/dgimp/Makefile --- gimp-0.99.10/plug-ins/dgimp/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/dgimp/Makefile Thu Aug 14 01:25:49 1997 @@ -0,0 +1,369 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# These 3 variables are declared here so that Automake doesn't +# give warnings. The "include" directive that follows them +# includes the gtk+ configuration file which contains the +# actual definitions of the 3 variables. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = ../.. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gimp +pkglibdir = $(libdir)/gimp +pkgincludedir = $(includedir)/gimp + +top_builddir = ../.. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBJPEG_INC = +LIBJPEG_LIB = +LIBPNG_INC = +LIBPNG_LIB = +LIBTIFF_INC = +LIBTIFF_LIB = +LIBTOOL = $(top_builddir)/libtool +LN_S = ln -s +MAKEINFO = makeinfo +PACKAGE = gimp +RANLIB = ranlib +VERSION = 0.99.10 +gimpdatadir = ${prefix}/share/gimp/0.99.10 +gimpdir = .gimp +gimpplugindir = ${exec_prefix}/lib/gimp/0.99.10 + +X_CFLAGS = +X_LDFLAGS = +X_LIBS = + +GTK_XCONFIG = $(top_builddir)/gtk+/gtk+.xconfig + +scriptdata = + +pluginlibdir = $(gimpplugindir)/plug-ins + +noinst_PROGRAMS = dgimp lgp + +dgimp_SOURCES = \ + dgimp.c \ + dgimp_invert.c \ + dgimp_procs.h \ + dgimp_utils.c + +lgp_SOURCES = \ + lgp.c \ + lgp_invert.c \ + lgp_procs.h + +EXTRA_DIST = README + +INCLUDES = \ + $(X_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/gtk+ \ + -I$(top_srcdir)/gtk+/glib + +dgimp_LDADD = \ + $(top_builddir)/libgimp/libgimp.la \ + $(top_builddir)/gtk+/gtk/libgtk.la \ + $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/gtk+/glib/libglib.la \ + $(X_LDFLAGS) \ + $(X_LIBS) \ + -lc \ + -lm + +lgp_LDADD = \ + $(top_builddir)/libgimp/libgimp.la \ + $(top_builddir)/gtk+/gtk/libgtk.la \ + $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/gtk+/glib/libglib.la \ + $(X_LDFLAGS) \ + $(X_LIBS) \ + -lc \ + -lm + +DEPS = \ + $(top_builddir)/libgimp/libgimp.la \ + $(top_builddir)/gtk+/gtk/libgtk.la \ + $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/gtk+/glib/libglib.la + +dgimp_DEPENDENCIES = $(DEPS) +lgp_DEPENDENCIES = $(DEPS) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../../config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(noinst_PROGRAMS) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I../.. +CPPFLAGS = +LDFLAGS = +LIBS = +dgimp_OBJECTS = dgimp.o dgimp_invert.o dgimp_utils.o +dgimp_LDFLAGS = +lgp_OBJECTS = lgp.o lgp_invert.o +lgp_LDFLAGS = +CFLAGS = -g -O2 -Wall +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = README Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +DEP_FILES = .deps/dgimp.P .deps/dgimp_invert.P .deps/dgimp_utils.P \ +.deps/lgp.P .deps/lgp_invert.P +SOURCES = $(dgimp_SOURCES) $(lgp_SOURCES) +OBJECTS = $(dgimp_OBJECTS) $(lgp_OBJECTS) + +default: all + +.SUFFIXES: +.SUFFIXES: .c .lo .o +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu plug-ins/dgimp/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-noinstPROGRAMS: + +clean-noinstPROGRAMS: + test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + +distclean-noinstPROGRAMS: + +maintainer-clean-noinstPROGRAMS: + +.c.o: + $(COMPILE) -c $< + +mostlyclean-compile: + rm -f *.o core + +clean-compile: + +distclean-compile: + rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + rm -f *.lo + +clean-libtool: + rm -rf .libs + +distclean-libtool: + +maintainer-clean-libtool: + +dgimp: $(dgimp_OBJECTS) $(dgimp_DEPENDENCIES) + @rm -f dgimp + $(LINK) $(dgimp_LDFLAGS) $(dgimp_OBJECTS) $(dgimp_LDADD) $(LIBS) + +lgp: $(lgp_OBJECTS) $(lgp_DEPENDENCIES) + @rm -f lgp + $(LINK) $(lgp_LDFLAGS) $(lgp_OBJECTS) $(lgp_LDADD) $(LIBS) + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) + here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = plug-ins/dgimp + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu plug-ins/dgimp/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp +info: +dvi: +check: all + $(MAKE) +installcheck: +install-exec: + @$(NORMAL_INSTALL) + +install-data: + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: + +all: Makefile $(PROGRAMS) + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-noinstPROGRAMS mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +clean: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \ + clean-depend clean-generic mostlyclean + +distclean: distclean-noinstPROGRAMS distclean-compile distclean-libtool \ + distclean-tags distclean-depend distclean-generic clean + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-noinstPROGRAMS \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ +clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile mostlyclean-libtool distclean-libtool \ +clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck install-exec install-data \ +install uninstall all installdirs mostlyclean-generic distclean-generic \ +clean-generic maintainer-clean-generic clean mostlyclean distclean \ +maintainer-clean + +include $(GTK_XCONFIG) + +.PHONY: files + +files: + @files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \ + echo $$p; \ + done + @for subdir in $(SUBDIRS); do \ + files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \ + for file in $$files; do \ + echo $$subdir/$$file; \ + done; \ + done + +$(GTK_XCONFIG): + touch $(GTK_XCONFIG) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/plug-ins/dgimp/Makefile.in gimp-0.99.pre11/plug-ins/dgimp/Makefile.in --- gimp-0.99.10/plug-ins/dgimp/Makefile.in Sat Jun 7 00:26:30 1997 +++ gimp-0.99.pre11/plug-ins/dgimp/Makefile.in Wed Aug 13 23:23:05 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -47,15 +47,25 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBJPEG_INC = @LIBJPEG_INC@ LIBJPEG_LIB = @LIBJPEG_LIB@ +LIBPNG_INC = @LIBPNG_INC@ +LIBPNG_LIB = @LIBPNG_LIB@ LIBTIFF_INC = @LIBTIFF_INC@ LIBTIFF_LIB = @LIBTIFF_LIB@ LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -139,7 +149,7 @@ CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = README Makefile.am Makefile.in @@ -147,13 +157,15 @@ TAR = tar GZIP = --best +DEP_FILES = .deps/dgimp.P .deps/dgimp_invert.P .deps/dgimp_utils.P \ +.deps/lgp.P .deps/lgp_invert.P SOURCES = $(dgimp_SOURCES) $(lgp_SOURCES) OBJECTS = $(dgimp_OBJECTS) $(lgp_OBJECTS) default: all .SUFFIXES: -.SUFFIXES: .c .o .lo +.SUFFIXES: .c .lo .o $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu plug-ins/dgimp/Makefile @@ -196,13 +208,13 @@ distclean-libtool: maintainer-clean-libtool: -$(dgimp_OBJECTS): ../../config.h dgimp: $(dgimp_OBJECTS) $(dgimp_DEPENDENCIES) + @rm -f dgimp $(LINK) $(dgimp_LDFLAGS) $(dgimp_OBJECTS) $(dgimp_LDADD) $(LIBS) -$(lgp_OBJECTS): ../../config.h lgp: $(lgp_OBJECTS) $(lgp_DEPENDENCIES) + @rm -f lgp $(LINK) $(lgp_LDFLAGS) $(lgp_OBJECTS) $(lgp_LDADD) $(LIBS) tags: TAGS @@ -213,11 +225,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - done; \ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -231,89 +240,64 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = plug-ins/dgimp + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu plug-ins/dgimp/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done -dgimp.o dgimp.lo: dgimp.c ../../gtk+/gtk/gtk.h ../../gtk+/gdk/gdk.h \ - ../../gtk+/gdk/gdktypes.h ../../gtk+/glib/glib.h \ - ../../gtk+/glib/glibconfig.h ../../gtk+/gdk/gdkcursors.h \ - ../../gtk+/gtk/gtkaccelerator.h ../../gtk+/gtk/gtkobject.h \ - ../../gtk+/gtk/gtkenums.h ../../gtk+/gtk/gtktypeutils.h \ - ../../gtk+/gtk/gtkadjustment.h ../../gtk+/gtk/gtkdata.h \ - ../../gtk+/gtk/gtkalignment.h ../../gtk+/gtk/gtkbin.h \ - ../../gtk+/gtk/gtkcontainer.h ../../gtk+/gtk/gtkwidget.h \ - ../../gtk+/gtk/gtkstyle.h ../../gtk+/gtk/gtkaspectframe.h \ - ../../gtk+/gtk/gtkframe.h ../../gtk+/gtk/gtkarrow.h \ - ../../gtk+/gtk/gtkmisc.h ../../gtk+/gtk/gtkbox.h \ - ../../gtk+/gtk/gtkbutton.h ../../gtk+/gtk/gtkcheckbutton.h \ - ../../gtk+/gtk/gtktogglebutton.h \ - ../../gtk+/gtk/gtkcheckmenuitem.h ../../gtk+/gtk/gtkmenuitem.h \ - ../../gtk+/gtk/gtkitem.h ../../gtk+/gtk/gtkcolorsel.h \ - ../../gtk+/gtk/gtkwindow.h ../../gtk+/gtk/gtkvbox.h \ - ../../gtk+/gtk/gtkpreview.h ../../gtk+/gtk/gtkentry.h \ - ../../gtk+/gtk/gtkhbox.h ../../gtk+/gtk/gtklabel.h \ - ../../gtk+/gtk/gtkmain.h ../../gtk+/gtk/gtksignal.h \ - ../../gtk+/gtk/gtkrange.h ../../gtk+/gtk/gtkscale.h \ - ../../gtk+/gtk/gtkhscale.h ../../gtk+/gtk/gtktable.h \ - ../../gtk+/gtk/gtkcurve.h ../../gtk+/gtk/gtkdialog.h \ - ../../gtk+/gtk/gtkdrawingarea.h ../../gtk+/gtk/gtkfilesel.h \ - ../../gtk+/gtk/gtkgc.h ../../gtk+/gtk/gtkhruler.h \ - ../../gtk+/gtk/gtkruler.h ../../gtk+/gtk/gtkhscrollbar.h \ - ../../gtk+/gtk/gtkscrollbar.h ../../gtk+/gtk/gtkhseparator.h \ - ../../gtk+/gtk/gtkseparator.h ../../gtk+/gtk/gtkimage.h \ - ../../gtk+/gtk/gtklist.h ../../gtk+/gtk/gtklistitem.h \ - ../../gtk+/gtk/gtkmenu.h ../../gtk+/gtk/gtkmenushell.h \ - ../../gtk+/gtk/gtkmenubar.h ../../gtk+/gtk/gtkmenufactory.h \ - ../../gtk+/gtk/gtknotebook.h ../../gtk+/gtk/gtkoptionmenu.h \ - ../../gtk+/gtk/gtkpixmap.h ../../gtk+/gtk/gtkprogressbar.h \ - ../../gtk+/gtk/gtkradiobutton.h \ - ../../gtk+/gtk/gtkradiomenuitem.h ../../gtk+/gtk/gtkrc.h \ - ../../gtk+/gtk/gtkscrolledwindow.h \ - ../../gtk+/gtk/gtkvscrollbar.h ../../gtk+/gtk/gtkviewport.h \ - ../../gtk+/gtk/gtktext.h ../../gtk+/gtk/gtktooltips.h \ - ../../gtk+/gtk/gtktree.h ../../gtk+/gtk/gtktreeitem.h \ - ../../gtk+/gtk/gtkvruler.h ../../gtk+/gtk/gtkvscale.h \ - ../../gtk+/gtk/gtkvseparator.h ../../libgimp/gimp.h \ - ../../libgimp/gimpenums.h ../../libgimp/gimpprotocol.h \ - ../../libgimp/gimpwire.h dgimp_procs.h -dgimp_invert.o dgimp_invert.lo: dgimp_invert.c ../../libgimp/gimp.h \ - ../../gtk+/glib/glib.h ../../gtk+/glib/glibconfig.h \ - ../../libgimp/gimpenums.h dgimp_procs.h -dgimp_utils.o dgimp_utils.lo: dgimp_utils.c ../../libgimp/gimp.h \ - ../../gtk+/glib/glib.h ../../gtk+/glib/glibconfig.h \ - ../../libgimp/gimpenums.h dgimp_procs.h -lgp.o lgp.lo: lgp.c ../../config.h ../../libgimp/gimp.h \ - ../../gtk+/glib/glib.h ../../gtk+/glib/glibconfig.h \ - ../../libgimp/gimpenums.h ../../libgimp/gimpprotocol.h \ - ../../libgimp/gimpwire.h lgp_procs.h -lgp_invert.o lgp_invert.lo: lgp_invert.c ../../libgimp/gimp.h \ - ../../gtk+/glib/glib.h ../../gtk+/glib/glibconfig.h \ - ../../libgimp/gimpenums.h lgp_procs.h +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp info: dvi: check: all $(MAKE) installcheck: install-exec: - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: -all: $(PROGRAMS) Makefile +all: Makefile $(PROGRAMS) install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: @@ -325,28 +309,28 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) mostlyclean: mostlyclean-noinstPROGRAMS mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ mostlyclean-generic clean: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \ - clean-generic mostlyclean + clean-depend clean-generic mostlyclean distclean: distclean-noinstPROGRAMS distclean-compile distclean-libtool \ - distclean-tags distclean-generic clean + distclean-tags distclean-depend distclean-generic clean rm -f config.status rm -f libtool maintainer-clean: maintainer-clean-noinstPROGRAMS \ maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-tags maintainer-clean-generic \ - distclean + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." @@ -355,10 +339,12 @@ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile mostlyclean-libtool distclean-libtool \ clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ -installcheck install-exec install-data install uninstall all \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck install-exec install-data \ +install uninstall all installdirs mostlyclean-generic distclean-generic \ +clean-generic maintainer-clean-generic clean mostlyclean distclean \ +maintainer-clean include $(GTK_XCONFIG) diff -u --recursive --new-file gimp-0.99.10/plug-ins/dialog.c gimp-0.99.pre11/plug-ins/dialog.c --- gimp-0.99.10/plug-ins/dialog.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/dialog.c Wed Aug 13 21:21:31 1997 @@ -0,0 +1,219 @@ +#include +#include +#include +#include "magiceye.h" + +int returnvalue = 0; +gint magiceye_ID; + + +gint magic_dialog(void) +{ + GtkWidget *dialog, *button, *label, *menue, *omenue, *frame, *table, *scale, *toggle; + GtkDialog *weg; + gchar **argv; + gint argc; + + GtkObject *scale_data; + argc = 1; + argv = g_new(gchar *,1); + argv[0] = g_strdup("magiceye"); + + gtk_init(&argc,&argv); + + /* Dialog */ + dialog = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dialog), "Magic Eye"); + gtk_window_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(dialog), "destroy", (GtkSignalFunc) close_callback, NULL); + + + /* OK-Button */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) ok_callback, + dialog); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + + /* Create-Button */ + button = gtk_button_new_with_label("Create"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) magiceye_update, + NULL); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show(button); + + + /* Cancel-Button */ + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dialog)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + + /* Rahmen */ + frame = gtk_frame_new("Magic Eye Options"); + gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_ETCHED_IN); + gtk_container_border_width(GTK_CONTAINER(frame),10); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), frame, TRUE, TRUE, 0); + + + /* Tabelle */ + table = gtk_table_new(6, 4, FALSE); + gtk_container_border_width(GTK_CONTAINER(table), 5); + gtk_container_add(GTK_CONTAINER(frame), table); + + gtk_table_set_row_spacings (GTK_TABLE (table),5); + gtk_table_set_col_spacings (GTK_TABLE (table),5); + + + /* Label */ + label = gtk_label_new("Background: "); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(label); + + + /* Menue */ + omenue = gtk_option_menu_new(); + menue = GTK_WIDGET(gimp_drawable_menu_new(magiceye_constrain,drawable_callback,&magiceye_ID,magiceye_ID)); + gtk_option_menu_set_menu(GTK_OPTION_MENU(omenue), menue); + gtk_table_attach(GTK_TABLE(table), omenue, 1, 4, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + + + /* Label */ + label = gtk_label_new("Strip-Width: "); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(label); + + + /* Breiten-Regler */ + strip_width = STDWIDTH; + scale_data = gtk_adjustment_new (strip_width, 0.0, 300.0, 1.0, 10.0, 0.0); + scale = gtk_hscale_new (GTK_ADJUSTMENT (scale_data)); + gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_TOP); + gtk_scale_set_digits (GTK_SCALE (scale), 0); + gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED); + gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed", + (GtkSignalFunc) scale_update, + &strip_width); + gtk_table_attach(GTK_TABLE(table), scale, 0, 4, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(scale); + + + /* Label */ + label = gtk_label_new("Depth: "); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(label); + + + /* Tiefen-Regler */ + depth = STDDEPTH; + scale_data = gtk_adjustment_new (depth, 0.0, 100.0, 1.0, 10.0, 0.0); + scale = gtk_hscale_new (GTK_ADJUSTMENT (scale_data)); + gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_TOP); + gtk_scale_set_digits (GTK_SCALE (scale), 0); + gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED); + gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed", + (GtkSignalFunc) scale_update, + &depth); + gtk_table_attach(GTK_TABLE(table), scale, 1, 4, 4, 5, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(scale); + + + /* Links oder Mitte? */ + from_left = STDFROMLEFT; + toggle = gtk_check_button_new_with_label ("From left"); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) toggle_update, + &from_left); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), from_left); + gtk_table_attach(GTK_TABLE(table), toggle, 0, 2, 5, 6, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (toggle); + + + /* Hoch oder runter? */ + up_down = STDUPDOWN; + toggle = gtk_check_button_new_with_label ("Down"); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) toggle_update, + &up_down); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), up_down); + gtk_table_attach(GTK_TABLE(table), toggle, 2, 4, 5, 6, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (toggle); + + + /* Darstellung */ + gtk_container_add(GTK_CONTAINER(frame), table); + gtk_widget_show(omenue); + gtk_widget_show(table); + gtk_widget_show(frame); + gtk_widget_show(dialog); + gtk_main(); + return returnvalue; +} + +void +scale_update (GtkAdjustment *adjustment, + double *scale_val) +{ + *scale_val = adjustment->value; +} + +void +toggle_update(GtkWidget *widget, + gpointer data) +{ + int *toggle_val; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} + +void close_callback(GtkWidget *widget, gpointer data) +{ + gtk_main_quit(); +} + +void ok_callback(GtkWidget *widget, gpointer data) +{ + returnvalue = 1; + gtk_widget_destroy(GTK_WIDGET(data)); +} + +gint magiceye_constrain(gint32 image, gint32 drawable_ID, gpointer data) +{ + gint moeglich; + + moeglich = (gimp_drawable_color(drawable_ID) || gimp_drawable_indexed(drawable_ID) ||gimp_drawable_gray(drawable_ID)); +#ifdef DEBUG + printf("%i %i\n",moeglich,drawable_ID); +#endif + if (drawable_ID == -1) return TRUE; + return moeglich; +} + +void drawable_callback(gint32 id, gpointer data) +{ + /* (gint32 *) data = id; */ + magiceye_ID = id; +} + +void magiceye_update(GtkWidget *widget, gpointer data) +{ + gint32 image_ID, new_layer; + + image_ID = magiceye (map_drawable, &new_layer); + if (image_ID>0) gimp_display_new (image_ID); +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/displace.c gimp-0.99.pre11/plug-ins/displace.c --- gimp-0.99.10/plug-ins/displace.c Tue Jun 3 22:02:17 1997 +++ gimp-0.99.pre11/plug-ins/displace.c Wed Aug 13 20:31:35 1997 @@ -22,14 +22,14 @@ * * Extensive modifications to the dialog box, parameters, and some * legibility stuff in displace() by Federico Mena Quintero --- - * quartic@polloux.fciencias.unam.mx. If there are any bugs in these + * federico@nuclecu.unam.mx. If there are any bugs in these * changes, they are my fault and not Stephen's. * * JTL: May 29th 1997 * Added (part of) the patch from Eiichi Takamori -- the part which removes the border artefacts * (http://ha1.seikyou.ne.jp/home/taka/gimp/displace/displace.html) * Added ability to use transparency as the identity transformation - * (Full transparency is treated as if it was grey 128) + * (Full transparency is treated as if it was grey 0.5) * and the possibility to use RGB/RGBA pictures where the intensity of the pixel is taken into account * */ @@ -40,6 +40,8 @@ #include #include #include +#include +#include #include "gtk/gtk.h" #include "libgimp/gimp.h" #include "libgimp/gimpui.h" @@ -299,8 +301,9 @@ argv = g_new (gchar *, 1); argv[0] = g_strdup ("displace"); + printf("displace: pid = %d\n", getpid()); + gtk_init (&argc, &argv); - gtk_rc_parse (gimp_gtkrc ()); dlg = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dlg), "Displace"); @@ -488,11 +491,11 @@ gint k; gdouble xm_val, ym_val; - gint xm_alpha=0; - gint ym_alpha=0; - gint xm_bytes=1; - gint ym_bytes=1; - + gint xm_alpha = 0; + gint ym_alpha = 0; + gint xm_bytes = 1; + gint ym_bytes = 1; + /* Get selection area */ gimp_drawable_mask_bounds (drawable->id, &x1, &y1, &x2, &y2); @@ -513,7 +516,8 @@ { map_x = gimp_drawable_get (dvals.displace_map_x); gimp_pixel_rgn_init (&map_x_rgn, map_x, x1, y1, (x2 - x1), (y2 - y1), FALSE, FALSE); - if (gimp_drawable_has_alpha(map_x->id)) xm_alpha = 1; + if (gimp_drawable_has_alpha(map_x->id)) + xm_alpha = 1; xm_bytes = gimp_drawable_bpp(map_x->id); } else @@ -523,7 +527,8 @@ { map_y = gimp_drawable_get (dvals.displace_map_y); gimp_pixel_rgn_init (&map_y_rgn, map_y, x1, y1, (x2 - x1), (y2 - y1), FALSE, FALSE); - if (gimp_drawable_has_alpha(map_y->id)) ym_alpha = 1; + if (gimp_drawable_has_alpha(map_y->id)) + ym_alpha = 1; ym_bytes = gimp_drawable_bpp(map_y->id); } else @@ -531,7 +536,6 @@ gimp_pixel_rgn_init (&dest_rgn, drawable, x1, y1, (x2 - x1), (y2 - y1), TRUE, TRUE); - /* Register the pixel regions */ if (dvals.do_x && dvals.do_y) pr = gimp_pixel_rgns_register (3, &dest_rgn, &map_x_rgn, &map_y_rgn); @@ -542,7 +546,6 @@ else pr = NULL; - for (pr = pr; pr != NULL; pr = gimp_pixel_rgns_process (pr)) { destrow = dest_rgn.data; @@ -550,52 +553,58 @@ mxrow = map_x_rgn.data; if (dvals.do_y) myrow = map_y_rgn.data; - + for (y = dest_rgn.y; y < (dest_rgn.y + dest_rgn.h); y++) { dest = destrow; mx = mxrow; my = myrow; - + /* * We could move the displacement image address calculation out of here, * but when we can have different sized displacement and destination * images we'd have to move it back anyway. */ - + for (x = dest_rgn.x; x < (dest_rgn.x + dest_rgn.w); x++) { if (dvals.do_x) { - xm_val = displace_map_give_value(mx, xm_alpha, xm_bytes); - amnt = dvals.amount_x * ((((double) xm_val) - 128.0) - / 128.0); - needx = x + amnt; - mx += xm_bytes * sizeof(guchar); + xm_val = displace_map_give_value(mx, xm_alpha, xm_bytes); + amnt = dvals.amount_x * (xm_val - 127.5) / 127.5; + needx = x + amnt; + mx += xm_bytes; } else needx = x; - + if (dvals.do_y) { - ym_val = displace_map_give_value(my, ym_alpha, ym_bytes); - amnt = dvals.amount_y * ((((double) ym_val) - 128.0) - / 128.0); - needy = y + amnt; - my += ym_bytes * sizeof(guchar); } + ym_val = displace_map_give_value(my, ym_alpha, ym_bytes); + amnt = dvals.amount_y * (ym_val - 127.5) / 127.5; + needy = y + amnt; + my += ym_bytes; + } else needy = y; - + /* Calculations complete; now copy the proper pixel */ + + if (needx >= 0.0) + xi = (int) needx; + else + xi = -((int) -needx + 1); - xi = needx; - yi = needy; - + if (needy >= 0.0) + yi = (int) needy; + else + yi = -((int) -needy + 1); + tile = displace_pixel (drawable, tile, width, height, x1, y1, x2, y2, xi, yi, &row, &col, pixel[0]); tile = displace_pixel (drawable, tile, width, height, x1, y1, x2, y2, xi + 1, yi, &row, &col, pixel[1]); tile = displace_pixel (drawable, tile, width, height, x1, y1, x2, y2, xi, yi + 1, &row, &col, pixel[2]); tile = displace_pixel (drawable, tile, width, height, x1, y1, x2, y2, xi + 1, yi + 1, &row, &col, pixel[3]); - + for (k = 0; k < bytes; k++) { values[0] = pixel[0][k]; @@ -603,19 +612,19 @@ values[2] = pixel[2][k]; values[3] = pixel[3][k]; val = bilinear(needx, needy, values); - + *dest++ = val; } /* for */ } - + destrow += dest_rgn.rowstride; - + if (dvals.do_x) mxrow += map_x_rgn.rowstride; if (dvals.do_y) myrow += map_y_rgn.rowstride; } - + progress += dest_rgn.w * dest_rgn.h; gimp_progress_update ((double) progress / (double) max_progress); } /* for */ @@ -633,29 +642,28 @@ gimp_drawable_flush (drawable); gimp_drawable_merge_shadow (drawable->id, TRUE); gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); - } /* displace */ static gdouble displace_map_give_value(guchar *pt, gint alpha, gint bytes) { - gdouble ret, val_alpha; + gdouble ret, val_alpha; + + if (bytes >= 3) + ret = 0.30 * pt[0] + 0.59 * pt[1] + 0.11 * pt[2]; + else ret = (gdouble) *pt; - - if (bytes >= 3) - ret = 0.3 * (gdouble) *pt - + 0.59 * (gdouble) *(pt + sizeof(guchar)) - + 0.11 * (gdouble) *(pt + 2*sizeof(guchar)); - if (alpha) - { - val_alpha = *(pt + (bytes - 1)*sizeof(guchar)); - ret = ( (ret - 127.5) * val_alpha / 255 ) + 127.5; - }; - - return (ret); + + if (alpha) + { + val_alpha = pt[bytes - 1]; + ret = ((ret - 127.5) * val_alpha / 255.0) + 127.5; + }; + + return (ret); } -/*****/ + static GTile * displace_pixel (GDrawable * drawable, @@ -726,6 +734,7 @@ return tile; } + static guchar bilinear (gdouble x, gdouble y, guchar *v) { @@ -739,10 +748,10 @@ if (y < 0) y += 1.0; - m0 = (1.0 - x) * v[0] + x * v[1]; - m1 = (1.0 - x) * v[2] + x * v[3]; + m0 = (gdouble) v[0] + x * ((gdouble) v[1] - v[0]); + m1 = (gdouble) v[2] + x * ((gdouble) v[3] - v[2]); - return (guchar) ((1.0 - y) * m0 + y * m1); + return (guchar) (m0 + y * (m1 - m0)); } /* bilinear */ @@ -761,9 +770,7 @@ return TRUE; if (gimp_drawable_width (drawable_id) == drawable->width && - gimp_drawable_height (drawable_id) == drawable->height - /* && gimp_drawable_gray (drawable_id) */ - ) + gimp_drawable_height (drawable_id) == drawable->height) return TRUE; else return FALSE; diff -u --recursive --new-file gimp-0.99.10/plug-ins/edge.c gimp-0.99.pre11/plug-ins/edge.c --- gimp-0.99.10/plug-ins/edge.c Fri Jun 6 02:09:22 1997 +++ gimp-0.99.pre11/plug-ins/edge.c Wed Aug 13 20:31:35 1997 @@ -19,22 +19,27 @@ */ /* - * Ported to GIMP Plug-in API 1.0 by Eiichi Takamori - * $Id: edge.c 1.2 Tue, 03 Jun 1997 20:22:04 -0700 pmattis $ + * Ported to GIMP Plug-in API 1.0 + * version 1.07 + * This version requires GIMP v0.99.10 or above. * - * This version works with GIMP v0.99.6 or above. - * This is alpha release. + * This plug-in performs edge detection. The code is based on edge.c + * for GIMP 0.54 by Peter Mattis. + * + * Eiichi Takamori + * http://ha1.seikyou.ne.jp/home/taka/gimp/ + * + * Tips: you can enter arbitrary value into entry. + * (not bounded between 1.0 and 10.0) + * + * Changes from version 1.06 to version 1.07: + * - Added entry + * - Cleaned up code a bit * * Differences from Peter Mattis's original `edge' plug-in: * - Added Wrapmode. (useful for tilable images) * - Enhanced speed in this version. * - It works with the alpha channel. - * - * BUGS: - * - The dialog must contain both entry and scale. - * - I modified the algorithm (especially around the boundary of - * image), but I don't know much about it, wondering whether - * this is the right thing */ @@ -45,11 +50,15 @@ #include "libgimp/gimp.h" #include "libgimp/gimpui.h" +#ifdef RCSID +static char rcsid[] = "$Id: edge.c,v 1.7 1997/06/08 14:05:46 takamori Exp $"; +#endif /* Some useful macros */ -#define SCALE_WIDTH 125 #define TILE_CACHE_SIZE 48 +#define SCALE_WIDTH 92 +#define ENTRY_WIDTH 40 #define WRAP 0 #define SMEAR 1 @@ -64,6 +73,15 @@ gint run; } EdgeInterface; +typedef struct { + GTile *tile; + gint row, col; /* tile's row, col */ + gint bpp; + gint tile_width, tile_height; + GDrawable *drawable; + gint drawable_width, drawable_height; +} TileBuf; + /* * Function prototypes. */ @@ -85,9 +103,15 @@ gpointer data); static void edge_scale_update (GtkAdjustment *ajustment, gpointer data); - +static void edge_entry_update (GtkWidget *entry, + gpointer data); static long long_sqrt (long n); +static void init_tile_buf ( TileBuf *buf, GDrawable *drawable ); +static void get_tile_pixel ( TileBuf *buf, gint x, gint y, + guchar *pixel, gint wrapmode ); +static void end_tile_buf ( TileBuf *buf ); + /***** Local vars *****/ GPlugInInfo PLUG_IN_INFO = @@ -127,10 +151,16 @@ static GParamDef *return_vals = NULL; static gint nargs = sizeof (args) / sizeof (args[0]); static gint nreturn_vals = 0; + gchar *help_string = + " Perform edge detection on the contents of the specified" + " drawable. It applies, I think, convolusion with 3x3 kernel. AMOUNT" + " is an arbitrary constant, WRAPMODE is like displace plug-in" + " (useful for tilable image)."; + gimp_install_procedure ("plug_in_edge", "Perform edge detection on the contents of the specified drawable", - "Perform edge detection on the contents of the specified drawable. Apply convolusion with 3x3 kernel (or it seems that). AMOUNT is an arbitrary constant, WRAPMODE is like displace plug-in (useful for tilable image). ", + help_string, "Peter Mattis & (ported to 1.0 by) Eiichi Takamori", "Peter Mattis", "1996", @@ -221,30 +251,10 @@ /********************************************************************* TileBuf Util Routines: Util routines for getting arbitrary pixel + CAUTION -- the tile is read only !! **********************************************************************/ -/* Wrap mode -- like `displace' plug-in */ -#ifndef WRAP -#define WRAP 0 -#define SMEAR 1 -#define BLACK 2 -#endif - -typedef struct { - GTile *tile; - gint row, col; /* tile's row, col */ - gint bpp; - gint tile_width, tile_height; - GDrawable *drawable; - gint drawable_width, drawable_height; -} TileBuf; - -static void init_tile_buf ( TileBuf *buf, GDrawable *drawable ); -static void get_tile_pixel ( TileBuf *buf, gint x, gint y, - guchar *pixel, gint wrapmode ); -static void end_tile_buf ( TileBuf *buf ); - static void init_tile_buf( TileBuf *buf, GDrawable *drawable ) { @@ -299,7 +309,7 @@ y = buf->drawable_height - 1; break; case BLACK: - if ( x < 0 || x >= buf->drawable_width || + if ( x < 0 || x >= buf->drawable_width || y < 0 || y >= buf->drawable_height ) { for ( b = 0; b < buf->bpp; b++ ) @@ -311,7 +321,7 @@ return; } - + col = x / buf->tile_width; offx = x % buf->tile_width; row = y / buf->tile_height; @@ -358,16 +368,16 @@ * Compute the integer square root of the integer argument n * Method is to divide n by x computing the quotient x and remainder r * Notice that the divisor x is changing as the quotient x changes - * + * * Instead of shifting the dividend/remainder left, we shift the * quotient/divisor right. The binary point starts at the extreme * left, and shifts two bits at a time to the extreme right. - * + * * The residue contains n-x^2. (Within these comments, the ^ operator * signifies exponentiation rather than exclusive or. Also, the / * operator returns fractions, rather than truncating, so 1/4 means * one fourth, not zero.) - * + * * Since (x + 1/2)^2 == x^2 + x + 1/4, * n - (x + 1/2)^2 == (n - x^2) - (x + 1/4) * Thus, we can increase x by 1/2 if we decrease (n-x^2) by (x+1/4) @@ -388,8 +398,8 @@ root = lsqrt_max4pow; /* x + 1/4, shifted all the way left */ /* half = root + root; 1/2, shifted likewise */ - /* - * Unwind iterations corresponding to leading zero bits + /* + * Unwind iterations corresponding to leading zero bits */ while (root > residue) root >>= 2; @@ -420,13 +430,13 @@ } while (half); /* When 1/2 == 0, bin. point is at far right */ - /* + /* * round up if (x+1/2)^2 < n */ if (root < residue) ++root; - /* + /* * Guaranteed to be correctly rounded (or truncated) */ return root; @@ -465,6 +475,8 @@ gint max_progress; gint wrapmode; + if (evals.amount < 1.0 ) evals.amount = 1.0; + init_tile_buf( &buf, drawable ); gimp_drawable_mask_bounds ( drawable->id, &x1, &y1, &x2, &y2); @@ -485,7 +497,7 @@ gimp_pixel_rgn_init( &src_rgn, drawable, x1, y1, x2-x1, y2-y1, FALSE, FALSE ); gimp_pixel_rgn_init( &dest_rgn, drawable, x1, y1, x2-x1, y2-y1, TRUE, TRUE ); - for( pr = gimp_pixel_rgns_register( 2, &src_rgn, &dest_rgn ); + for( pr = gimp_pixel_rgns_register( 2, &src_rgn, &dest_rgn ); pr != NULL; pr = gimp_pixel_rgns_process(pr) ) { @@ -555,7 +567,7 @@ get_tile_pixel( &buf, x-1, y+1, pix02, wrapmode ); get_tile_pixel( &buf, x , y+1, pix12, wrapmode ); get_tile_pixel( &buf, x+1, y+1, pix22, wrapmode ); - + for( chan = 0; chan < alpha; chan++ ) { /* make convolusion */ @@ -604,12 +616,15 @@ GtkWidget *label; GtkWidget *scale; GtkObject *scale_data; - GSList *group = NULL; - gchar **argv; - gint argc; - gint use_wrap = (evals.wrapmode == WRAP); - gint use_smear = (evals.wrapmode == SMEAR); - gint use_black = (evals.wrapmode == BLACK); + GtkWidget *entry; + gchar buffer[256]; + GSList *group = NULL; + gchar **argv; + gint argc; + gint use_wrap = (evals.wrapmode == WRAP); + gint use_smear = (evals.wrapmode == SMEAR); + gint use_black = (evals.wrapmode == BLACK); + gdouble init_val; argc = 1; argv = g_new (gchar *, 1); @@ -648,37 +663,67 @@ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); gtk_container_border_width (GTK_CONTAINER (frame), 10); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); - table = gtk_table_new (2, 2, FALSE); + + table = gtk_table_new (2, 3, FALSE); gtk_container_border_width (GTK_CONTAINER (table), 5); gtk_container_add (GTK_CONTAINER (frame), table); - label = gtk_label_new ("Amount"); + /* + Label, scale, entry for evals.amount + */ + + label = gtk_label_new ("Amount:"); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 0); gtk_widget_show (label); - scale_data = gtk_adjustment_new (evals.amount, 1.0, 10.0, 0.1, 0.1, 0.0); + /* This prevents annoying change of adjustment */ + init_val = evals.amount < 1.0 ? 1.0 : + evals.amount > 10.0 ? 10.0 : evals.amount; + scale_data = gtk_adjustment_new (init_val, 1.0, 10.0, 0.1, 0.1, 0.0); + scale = gtk_hscale_new (GTK_ADJUSTMENT (scale_data)); gtk_widget_set_usize (scale, SCALE_WIDTH, 0); - gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE); +#if 0 gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_TOP); gtk_scale_set_digits (GTK_SCALE (scale), 1); gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED); +#endif + + entry = gtk_entry_new (); + gtk_widget_set_usize (entry, ENTRY_WIDTH, 0); + + gtk_widget_show (scale); + gtk_widget_show (entry); + + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, + GTK_FILL, 0, 5, 0); + gtk_table_attach (GTK_TABLE (table), scale, 2, 3, 0, 1, + GTK_EXPAND | GTK_FILL, 0, 5, 0); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1, + GTK_FILL, 0, 0, 0); + gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed", (GtkSignalFunc) edge_scale_update, - &evals.amount); - gtk_widget_show (scale); + &evals.amount); + sprintf (buffer, "%0.1f", evals.amount); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) edge_entry_update, + &evals.amount); + + gtk_object_set_user_data (GTK_OBJECT (entry), scale_data); + gtk_object_set_user_data (scale_data, entry); + + + /* + Radio buttons WRAP, SMEAR, BLACK ... + */ hbox = gtk_hbox_new (FALSE, 5); gtk_container_border_width (GTK_CONTAINER (hbox), 5); - gtk_table_attach (GTK_TABLE (table), hbox, 0, 2, 1, 2, GTK_FILL, GTK_FILL | GTK_EXPAND, 0, 0); - -#if 0 - label = gtk_label_new ("On Edges:"); - gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); - gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5); - gtk_widget_show (label); -#endif + gtk_table_attach (GTK_TABLE (table), hbox, 0, 3, 1, 2, + GTK_FILL, GTK_FILL, 0, 0); toggle = gtk_radio_button_new_with_label (group, "Wrap"); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); @@ -762,16 +807,41 @@ edge_scale_update (GtkAdjustment *adjustment, gpointer data) { + GtkWidget *entry; gdouble *ptr = (gdouble *) data; + *ptr = adjustment->value; -} + entry = gtk_object_get_user_data (GTK_OBJECT (adjustment)); + if (entry) + { + gchar buffer[256]; + sprintf (buffer, "%0.1f", *ptr); + gtk_signal_handler_block_by_data (GTK_OBJECT (entry), data); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_handler_unblock_by_data (GTK_OBJECT (entry), data); + } +} - -/* - * Local Variables: - * mode: c - * c-basic-offset: 2 - * End: - */ +static void +edge_entry_update (GtkWidget *entry, + gpointer data) +{ + GtkAdjustment *adjustment; + gdouble *ptr = (gdouble *) data; + gdouble new_val; + + *ptr = atof (gtk_entry_get_text (GTK_ENTRY (entry))); + + adjustment = gtk_object_get_user_data (GTK_OBJECT (entry)); + if (adjustment) + { + new_val = *ptr < adjustment->lower ? adjustment->lower : + *ptr > adjustment->upper ? adjustment->upper : *ptr; + adjustment->value = new_val; + gtk_signal_handler_block_by_data (GTK_OBJECT (adjustment), data); + gtk_signal_emit_by_name (GTK_OBJECT (adjustment), "value_changed"); + gtk_signal_handler_unblock_by_data (GTK_OBJECT (adjustment), data); + } +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/emboss.c gimp-0.99.pre11/plug-ins/emboss.c --- gimp-0.99.10/plug-ins/emboss.c Fri Jun 6 02:09:21 1997 +++ gimp-0.99.pre11/plug-ins/emboss.c Wed Aug 13 21:14:19 1997 @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: emboss.c 1.1.1.2.1.1 Sat, 26 Apr 1997 22:43:00 -0700 pmattis $ + * $Id: emboss.c,v 1.4 1997/04/14 21:44:35 erich Exp $ */ #include @@ -84,7 +84,7 @@ static inline void EmbossInit(gdouble azimuth, gdouble elevation, gushort width45); static inline void EmbossRow(guchar *src, guchar *texture, guchar *dst, - gushort xSize, gushort bypp, gint has_alpha); + gushort xSize, gushort bypp); #define DtoR(d) ((d)*(M_PI/(gdouble)180)) @@ -122,7 +122,7 @@ "Eric L. Hernes", "1997", "/Filters/Distorts/Emboss", - "RGB*, GRAY*", + "RGB", PROC_PLUG_IN, nargs, nrets, args, rets); @@ -170,7 +170,7 @@ case RUN_NONINTERACTIVE: /* XXX: add code here for non-interactive running */ - if (nparam != 7) { + if (nparam != 6) { rvals[0].data.d_status = STATUS_CALLING_ERROR; break; } @@ -241,16 +241,10 @@ void EmbossRow(guchar *src, guchar *texture, guchar *dst, - gushort xSize, gushort bypp, gint has_alpha) { + gushort xSize, gushort bypp) { glong Nx, Ny, NdotL; guchar *s1, *s2, *s3; gint x, shade, b; - gint alpha; - - if (has_alpha) - alpha = bypp - 1; - else - alpha = bypp; /* mung pixels, avoiding edge pixels */ s1 = src + bypp; @@ -281,20 +275,20 @@ /* do something with the shading result */ if ( texture ) { - for(b = 0; b < alpha; b++) { + for(b=0;b<3;b++) { *dst++ = (*texture++ * shade) >> 8; } - if (has_alpha) { - *dst++=s2[alpha]; /* preserve the alpha */ + if (bypp == 4) { + *dst++=s2[3]; /* preserve the alpha */ texture++; } } else { - for(b = 0; b < alpha; b++) { + for(b=0;b<3;b++) { *dst++ = shade; } - if (has_alpha) - *dst++=s2[alpha]; /* preserve the alpha */ + if (bypp == 4) *dst++=s2[3]; /* preserve the alpha */ + } } if (texture) texture += bypp; @@ -308,14 +302,12 @@ guint width, height; gint bypp, rowsize; guchar *srcbuf, *dstbuf; - gint has_alpha; drw=gimp_drawable_get(argp->drw); - + width=drw->width; height=drw->height; bypp=drw->bpp; - has_alpha = gimp_drawable_has_alpha (drw->id); p_update = height/20; rowsize = width * bypp; @@ -331,25 +323,28 @@ EmbossInit(DtoR(argp->azimuth), DtoR(argp->elevation), argp->depth); gimp_progress_init("Emboss"); + fprintf(stderr, "cache!\n"); + gimp_tile_cache_ntiles((width + gimp_tile_width() - 1) / gimp_tile_width()); + /* first row */ gimp_pixel_rgn_get_rect(&src, srcbuf, 0, 0, width, 3); bcopy(srcbuf+rowsize, srcbuf, rowsize); EmbossRow(srcbuf, argp->embossp ? (guchar *)0 : srcbuf, - dstbuf, width, bypp, has_alpha); + dstbuf, width, bypp); gimp_pixel_rgn_set_row(&dst, dstbuf, 0, 0, width); /* last row */ gimp_pixel_rgn_get_rect(&src, srcbuf, 0, height-3, width, 3); bcopy(srcbuf+rowsize, srcbuf+rowsize*2, rowsize); EmbossRow(srcbuf, argp->embossp ? (guchar *)0 : srcbuf, - dstbuf, width, bypp, has_alpha); + dstbuf, width, bypp); gimp_pixel_rgn_set_row(&dst, dstbuf, 0, height-1, width); for(y=0 ;yembossp ? (guchar *)0 : srcbuf, - dstbuf, width, bypp, has_alpha); + dstbuf, width, bypp); gimp_pixel_rgn_set_row(&dst, dstbuf, 0, y+1, width); } @@ -360,7 +355,7 @@ gimp_drawable_merge_shadow (drw->id, TRUE); gimp_drawable_update(drw->id, 0, 0, width, height); gimp_displays_flush(); - + return 0; } @@ -370,7 +365,7 @@ GtkWidget *table; GtkWidget *preview; GtkWidget *frame; - + gint runp; struct mwRadioGroup functions[] = { { "Emboss", 0 }, @@ -379,20 +374,20 @@ }; functions[!argp->embossp].var = 1; - + dlg = mw_app_new("plug_in_emboss", "Emboss", &runp); hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), hbox, TRUE, TRUE, 0); gtk_widget_show(hbox); - + preview = mw_preview_new(hbox, thePreview, &emboss_do_preview); gtk_object_set_data(GTK_OBJECT(preview), "piArgs", argp); gtk_object_set_data(GTK_OBJECT(preview), "mwRadioGroup", &functions); emboss_do_preview(preview); mw_radio_group_new(hbox, "Function", functions); - + frame = gtk_frame_new("Parameters"); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); gtk_container_border_width(GTK_CONTAINER(frame), 10); @@ -434,7 +429,7 @@ struct mwRadioGroup *rgp; guchar *dst, *c; gint y, rowsize; - + if(theWidget==NULL){ theWidget=w; } @@ -451,7 +446,7 @@ EmbossInit(DtoR(ap->azimuth), DtoR(ap->elevation), ap->depth); EmbossRow(c, ap->embossp ? (guchar *)0 : c, - dst, thePreview->width, thePreview->bpp, FALSE); + dst, thePreview->width, thePreview->bpp); gtk_preview_draw_row(GTK_PREVIEW(theWidget), dst, 0, 0, thePreview->width); @@ -459,14 +454,14 @@ bcopy(thePreview->bits+((thePreview->height-1)*rowsize), c+(rowsize*2), rowsize); EmbossRow(c, ap->embossp ? (guchar *)0 : c, - dst, thePreview->width, thePreview->bpp, FALSE); + dst, thePreview->width, thePreview->bpp); gtk_preview_draw_row(GTK_PREVIEW(theWidget), dst, 0, thePreview->height-1, thePreview->width); free(c); for(y=0, c=thePreview->bits;yheight-2; y++, c+=rowsize){ EmbossRow(c, ap->embossp ? (guchar *)0 : c, - dst, thePreview->width, thePreview->bpp, FALSE); + dst, thePreview->width, thePreview->bpp); gtk_preview_draw_row(GTK_PREVIEW(theWidget), dst, 0, y, thePreview->width); } diff -u --recursive --new-file gimp-0.99.10/plug-ins/exchange.c gimp-0.99.pre11/plug-ins/exchange.c --- gimp-0.99.10/plug-ins/exchange.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/exchange.c Wed Aug 13 20:43:10 1997 @@ -0,0 +1,417 @@ +/* + * This is a plug-in for the GIMP. + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + */ + +/* + * Exchange one color with the other (settable threshold to convert from + * one color-shade to another...might do wonders on certain images, or be + * totally useless on others). + * + * Author: robert@experimental.net + * + * TODO: + * - preview (working on it already :) + * - threshold for each channel (not hard to implement, but really + * needs a preview window) + * + */ + +#include +#include +#include "libgimp/gimp.h" +#include "gtk/gtk.h" + +/* big scales */ +#define SCALE_WIDTH 225 + +/* datastructure to store parameters in */ +typedef struct +{ + guchar fromred, fromgreen, fromblue, tored, togreen, toblue; + guchar threshold; + gint32 image; + gint32 drawable; +} myParams; + +/* lets prototype */ +static void query(); +static void run(char *, int, GParam *, int *, GParam **); +static int doDialog(); +static void exchange(GDrawable *); +static void doLabelAndScale(char *, GtkWidget *, guchar *); + +static void ok_callback(GtkWidget *, gpointer); +static void close_callback(GtkWidget *, gpointer); +static void scale_callback(GtkAdjustment *, gpointer); + +/* some global variables */ +myParams xargs = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +int running = 0; + +/* lets declare what we want to do */ +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +/* run program */ +MAIN(); + +/* tell GIMP who we are */ +static +void query() +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_INT8, "fromred", "Red value (from)" }, + { PARAM_INT8, "fromgreen", "Green value (from)" }, + { PARAM_INT8, "fromblue", "Blue value (from)" }, + { PARAM_INT8, "tored", "Red value (to)" }, + { PARAM_INT8, "togreen", "Green value (to)" }, + { PARAM_INT8, "toblue", "Blue value (to)" }, + { PARAM_INT8, "threshold", "Threshold" }, + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof(args) / sizeof(args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure("plug_in_exchange", + "Color exchange", + "Exchange one color with another, optionally setting a threshold to convert from one shade to another", + "robert@experimental.net", + "robert@experimental.net", + "June 17th, 1997", + "/Filters/Image/Color exchange", + "RGB*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +/* main function */ +static +void run(char *name, int nparams, GParam *param, int *nreturn_vals, GParam **return_vals) +{ + static GParam values[1]; + GRunModeType runmode; + GDrawable *drawable; + gint32 imageID; + GStatusType status = STATUS_SUCCESS; + + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + switch (runmode = param[0].data.d_int32) + { + case RUN_INTERACTIVE: + /* retrieve stored arguments (if any) */ + gimp_get_data("plug_in_exchange", &xargs); + /* initialize using foreground color */ + gimp_palette_get_foreground(&xargs.fromred, &xargs.fromgreen, &xargs.fromblue); + if (!xargs.image && !xargs.drawable) + xargs.threshold = 0; + /* and initialize some other things */ + xargs.image = param[1].data.d_image; + xargs.drawable = param[2].data.d_drawable; + if (!doDialog()) + return; + break; + case RUN_WITH_LAST_VALS: + /* + * instead of recalling the last-set values, + * run with the current foreground as 'from' + * color, making ALT-F somewhat more useful. + */ + gimp_palette_get_foreground(&xargs.fromred, &xargs.fromgreen, &xargs.fromblue); + break; + case RUN_NONINTERACTIVE: + status = STATUS_EXECUTION_ERROR; + return; + default: + break; + } + + /* Get the specified drawable */ + drawable = gimp_drawable_get(param[2].data.d_drawable); + imageID = param[1].data.d_image; + + if (status == STATUS_SUCCESS) + { + if (gimp_drawable_color(drawable->id)) + { + gimp_progress_init("Color exchange..."); + gimp_tile_cache_ntiles(2 * (drawable->width / gimp_tile_width() + 1)); + exchange(drawable); + /* store our settings */ + gimp_set_data("plug_in_exchange", &xargs, sizeof(myParams)); + /* and flush */ + gimp_displays_flush(); + } + else + status = STATUS_EXECUTION_ERROR; + } + values[0].data.d_status = status; + gimp_drawable_detach(drawable); +} + +/* do the exchanging */ +static +void exchange(GDrawable *drawable) +{ + GPixelRgn srcPR, destPR; + guchar *src_row; + guchar *dest_row; + gint width, height; + gint x, y, bpp; + gint x1, y1, x2, y2; + + /* + * Get the input area. This is the bounding box of the selection in + * the image (or the entire image if there is no selection). Only + * operating on the input area is simply an optimization. It doesn't + * need to be done for correct operation. (It simply makes it go + * faster, since fewer pixels need to be operated on). + */ + gimp_drawable_mask_bounds(drawable->id, &x1, &y1, &x2, &y2); + + /* + * Get the size of the input image. (This will/must be the same + * as the size of the output image. + */ + width = drawable->width; + height = drawable->height; + bpp = drawable->bpp; + + /* allocate row buffers */ + src_row = (guchar *) malloc((x2 - x1) * bpp); + dest_row = (guchar *) malloc((x2 - x1) * bpp); + + /* initialize the pixel regions */ + gimp_pixel_rgn_init(&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); + gimp_pixel_rgn_init(&destPR, drawable, 0, 0, width, height, TRUE, TRUE); + + for (y = y1; y < y2; y++) + { + gimp_pixel_rgn_get_row(&srcPR, src_row, x1, y, (x2 - x1)); + for (x = x1; x < x2; x++) + { + guchar red, green, blue, + minred, mingreen, minblue, + maxred, maxgreen, maxblue; + int rest, wanted = 0, + redx = 0, greenx = 0, bluex = 0; + + /* get boundary values */ + minred = MAX((int) xargs.fromred - xargs.threshold, 0); + mingreen = MAX((int) xargs.fromgreen - xargs.threshold, 0); + minblue = MAX((int) xargs.fromblue - xargs.threshold, 0); + + maxred = MIN((int) xargs.fromred + xargs.threshold, 255); + maxgreen = MIN((int) xargs.fromgreen + xargs.threshold, 255); + maxblue = MIN((int) xargs.fromblue + xargs.threshold, 255); + + /* get current pixel values */ + red = src_row[x * bpp]; + green = src_row[x * bpp + 1]; + blue = src_row[x * bpp + 2]; + + /* + * check if we want this pixel (does it fall between + * our boundary?) + */ + if (red >= minred && red <= maxred && + green >= mingreen && green <= maxgreen && + blue >= minblue && blue <= maxblue) + { + redx = red - xargs.fromred; + greenx = green - xargs.fromgreen; + bluex = blue - xargs.fromblue; + wanted = 1; + } + + /* exchange if needed */ + dest_row[x * bpp] = wanted ? MAX(MIN(xargs.tored + redx, 255), 0) : src_row[x * bpp]; + dest_row[x * bpp + 1] = wanted ? MAX(MIN(xargs.togreen + greenx, 255), 0) : src_row[x * bpp + 1]; + dest_row[x * bpp + 2] = wanted ? MAX(MIN(xargs.toblue + bluex, 255), 0) : src_row[x * bpp + 2]; + + /* copy rest (most likely alpha-channel) */ + for (rest = 3; rest < bpp; rest++) + dest_row[x * bpp + rest] = src_row[x * bpp + rest]; + } + /* store the dest */ + gimp_pixel_rgn_set_row(&destPR, dest_row, x1, y, (x2 - x1)); + /* and tell the user what we're doing */ + if ((y % 10) == 0) + gimp_progress_update((double) y / (double) (y2 - y1)); + } + /* update the processed region */ + gimp_drawable_flush(drawable); + gimp_drawable_merge_shadow(drawable->id, TRUE); + gimp_drawable_update(drawable->id, x1, y1, (x2 - x1), (y2 - y1)); + /* and clean up */ + free(src_row); + free(dest_row); +} + +/* show our dialog */ +static +int doDialog() +{ + GtkWidget *dialog; + GtkWidget *button; + GtkWidget *frame; + GtkWidget *table; + GtkWidget *mainbox; + GtkWidget *tobox; + GtkWidget *frombox; + gchar **argv; + gint argc; + int framenumber; + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup("exchange"); + + gtk_init(&argc, &argv); + + /* set up the dialog */ + dialog = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dialog), "Color Exchange"); + gtk_window_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(dialog), "destroy", + (GtkSignalFunc) close_callback, + NULL); + + /* lets create some buttons */ + button = gtk_button_new_with_label("Ok"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) ok_callback, + dialog); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), + button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) close_callback, + dialog); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), + button, TRUE, TRUE, 0); + gtk_widget_show(button); + + /* do some boxes here */ + mainbox = gtk_vbox_new(FALSE, 5); + gtk_container_border_width(GTK_CONTAINER(mainbox), 10); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), mainbox, TRUE, TRUE, 0); + frombox = gtk_hbox_new(FALSE, 5); + gtk_container_border_width(GTK_CONTAINER(frombox), 10); + gtk_box_pack_start(GTK_BOX(mainbox), frombox, TRUE, TRUE, 0); + tobox = gtk_hbox_new(FALSE, 5); + gtk_container_border_width(GTK_CONTAINER(tobox), 10); + gtk_box_pack_start(GTK_BOX(mainbox), tobox, TRUE, TRUE, 0); + + /* and our scales */ + for (framenumber = 0; framenumber < 2; framenumber++) + { + frame = gtk_frame_new(framenumber ? "To color" : "From color"); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_box_pack_start(framenumber ? GTK_BOX(tobox) : GTK_BOX(frombox), + frame, TRUE, TRUE, 0); + gtk_widget_show(frame); + table = gtk_table_new(8, 2, FALSE); + gtk_container_border_width(GTK_CONTAINER(table), 10); + gtk_container_add(GTK_CONTAINER(frame), table); + doLabelAndScale("Red", table, framenumber ? &xargs.tored : &xargs.fromred); + doLabelAndScale("Green", table, framenumber ? &xargs.togreen : &xargs.fromgreen); + doLabelAndScale("Blue", table, framenumber ? &xargs.toblue : &xargs.fromblue); + if (!framenumber) + doLabelAndScale("Threshold", table, &xargs.threshold); + gtk_widget_show(table); + } + + /* show everything */ + gtk_widget_show(tobox); + gtk_widget_show(frombox); + gtk_widget_show(mainbox); + gtk_widget_show(dialog); + gtk_main(); + gdk_flush(); + + return running; +} + +static +void doLabelAndScale(char *labelname, GtkWidget *table, guchar *dest) +{ + static int idx = -1; + GtkWidget *label, *scale; + GtkObject *scale_data; + + idx++; + label = gtk_label_new(labelname); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, idx, idx + 1, GTK_FILL, 0, 5, 0); + scale_data = gtk_adjustment_new(*dest, 0.0, 255.0, 0.0, 0.0, 0.0); + scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); + gtk_widget_set_usize(scale, SCALE_WIDTH, 0); + /* just need 1:1 resolution on scales */ + gtk_scale_set_digits(GTK_SCALE(scale), 0); + gtk_table_attach(GTK_TABLE(table), scale, 1, 2, idx, idx + 1, GTK_FILL, 0, 0, 0); + gtk_scale_set_value_pos(GTK_SCALE(scale), GTK_POS_TOP); + gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_DELAYED); + gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", + (GtkSignalFunc) scale_callback, + dest); + gtk_widget_show(label); + gtk_widget_show(scale); +} + +static +void ok_callback(GtkWidget *widget, gpointer data) +{ + running = 1; + gtk_widget_destroy(GTK_WIDGET(data)); +} + +static +void close_callback(GtkWidget *widget, gpointer data) +{ + gtk_main_quit(); +} + +static +void scale_callback(GtkAdjustment *adj, gpointer data) +{ + guchar *val = data; + + *val = (guchar) adj->value; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/faxg3.c gimp-0.99.pre11/plug-ins/faxg3.c --- gimp-0.99.10/plug-ins/faxg3.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/faxg3.c Thu Aug 14 00:47:20 1997 @@ -0,0 +1,469 @@ +/* + * This is a plugin for the GIMP. + * + * Copyright (C) 1997 Jochen Friedrich + * Parts Copyright (C) 1995 Gert Doering + * Parts Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#define VERSION "0.6" + +#include +#include +#include +#include + +#include +#include +#include "g3.h" + +/* Declare local functions. + */ +gint32 emitgimp (int, int, char *, int, char *); +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); +static gint32 load_image (char *); + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +MAIN (); + +static void query () +{ + static GParamDef load_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_STRING, "filename", "The name of the file to load" }, + { PARAM_STRING, "raw_filename", "The name of the file to load" }, + }; + static GParamDef load_return_vals[] = + { + { PARAM_IMAGE, "image", "Output image" }, + }; + static int nload_args = sizeof (load_args) / sizeof (load_args[0]); + static int nload_return_vals = sizeof (load_return_vals) / sizeof (load_return_vals[0]); + + gimp_install_procedure ("file_faxg3_load", + "loads g3 fax files", + "This plug-in loads Fax G3 Image files.", + "Jochen Friedrich", + "Jochen Friedrich, Gert Doering, Spencer Kimball & Peter Mattis", + VERSION, + "/Fax G3", + NULL, + PROC_PLUG_IN, + nload_args, nload_return_vals, + load_args, load_return_vals); + + gimp_register_magic_load_handler ("file_faxg3_load", "g3", "", "0,short,0x0001,0,short,0x0014"); +} + +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[2]; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + gint32 image_ID; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 1; + *return_vals = values; + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_CALLING_ERROR; + if (strcmp (name, "file_faxg3_load") == 0) + { + *nreturn_vals = 2; + image_ID = load_image (param[1].data.d_string); + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image_ID; + + if (image_ID != -1) + { + values[0].data.d_status = STATUS_SUCCESS; + } + else + { + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + } +} + +#ifdef DEBUG +void putbin (unsigned long d ) +{ +unsigned long i = 0x80000000; + + while ( i!=0 ) + { + putc( ( d & i ) ? '1' : '0', stderr ); + i >>= 1; + } + putc( '\n', stderr ); +} +#endif + +static int byte_tab[ 256 ]; +static int o_stretch; /* -stretch: double each line */ +static int o_stretch_force=-1; /* -1: guess from filename */ +static int o_lj; /* -l: LJ output */ +static int o_turn; /* -t: turn 90 degrees right */ + +struct g3_tree * black, * white; + +#define CHUNK 2048; +static char rbuf[2048]; /* read buffer */ +static int rp; /* read pointer */ +static int rs; /* read buffer size */ + +#define MAX_ROWS 4300 +#define MAX_COLS 1728 /* !! FIXME - command line parameter */ + +static gint32 +load_image (char *filename) +{ + gint32 image_ID; + + int data; + int hibit; + struct g3_tree * p; + int nr_pels; + int fd; + int color; + int i, rr, rsize; + int cons_eol; + + int bperrow = MAX_COLS/8; /* bytes per bit row */ + char *bitmap; /* MAX_ROWS by (bperrow) bytes */ + char *bp; /* bitmap pointer */ + char *name; + int row; + int max_rows; /* max. rows allocated */ + int col, hcol; /* column, highest column ever used */ + + name = (char *) malloc (strlen (filename) + 12); + sprintf (name, "Loading %s:", filename); + gimp_progress_init (name); + free (name); + + /* initialize lookup trees */ + build_tree( &white, t_white ); + build_tree( &white, m_white ); + build_tree( &black, t_black ); + build_tree( &black, m_black ); + + init_byte_tab( 0, byte_tab ); + + fd = open(filename, O_RDONLY ); + + hibit = 0; + data = 0; + + cons_eol = 0; /* consecutive EOLs read - zero yet */ + + color = 0; /* start with white */ + rr = 0; + + lseek(fd, 0L, 2); + rsize = tell(fd); + lseek(fd, 0L, 0); + + rs = read( fd, rbuf, sizeof(rbuf) ); + if ( rs < 0 ) { perror( "read" ); close( rs ); exit(8); } + rr += rs; + gimp_progress_update ((float)rr/rsize/2.0); + + /* skip GhostScript header */ + rp = ( rs >= 64 && strcmp( rbuf+1, "PC Research, Inc" ) == 0 ) ? 64 : 0; + + /* initialize bitmap */ + + row = col = hcol = 0; + bitmap = (char *) malloc( ( max_rows = MAX_ROWS ) * MAX_COLS / 8 ); + if ( bitmap == NULL ) + { + fprintf( stderr, "cannot allocate %d bytes for bitmap", + max_rows * MAX_COLS/8 ); + close( fd ); + exit(9); + } + memset( bitmap, 0, max_rows * MAX_COLS/8 ); + bp = &bitmap[ row * MAX_COLS/8 ]; + + while ( rs > 0 && cons_eol < 4 ) /* i.e., while (!EOF) */ + { +#ifdef DEBUG + fprintf( stderr, "hibit=%2d, data=", hibit ); + putbin( data ); +#endif + while ( hibit < 20 ) + { + data |= ( byte_tab[ (int) (unsigned char) rbuf[ rp++] ] << hibit ); + hibit += 8; + + if ( rp >= rs ) + { + rs = read( fd, rbuf, sizeof( rbuf ) ); + if ( rs < 0 ) { perror( "read2"); break; } + rr += rs; + gimp_progress_update ((float)rr/rsize/2.0); + rp = 0; + if ( rs == 0 ) { goto do_write; } + } +#ifdef DEBUG + fprintf( stderr, "hibit=%2d, data=", hibit ); + putbin( data ); +#endif + } + + if ( color == 0 ) /* white */ + p = white->nextb[ data & BITM ]; + else /* black */ + p = black->nextb[ data & BITM ]; + + while ( p != NULL && ! ( p->nr_bits ) ) + { + data >>= FBITS; + hibit -= FBITS; + p = p->nextb[ data & BITM ]; + } + + if ( p == NULL ) /* invalid code */ + { + fprintf( stderr, "invalid code, row=%d, col=%d, file offset=%lx, skip to eol\n", + row, col, (unsigned long) lseek( fd, 0, 1 ) - rs + rp ); + while ( ( data & 0x03f ) != 0 ) + { + data >>= 1; hibit--; + if ( hibit < 20 ) + { + data |= ( byte_tab[ (int) (unsigned char) rbuf[ rp++] ] << hibit ); + hibit += 8; + + if ( rp >= rs ) /* buffer underrun */ + { rs = read( fd, rbuf, sizeof( rbuf ) ); + if ( rs < 0 ) { perror( "read4"); break; } + rr += rs; + gimp_progress_update ((float)rr/rsize/2.0); + rp = 0; + if ( rs == 0 ) goto do_write; + } + } + } + nr_pels = -1; /* handle as if eol */ + } + else /* p != NULL <-> valid code */ + { + data >>= p->nr_bits; + hibit -= p->nr_bits; + + nr_pels = ( (struct g3_leaf *) p ) ->nr_pels; +#ifdef DEBUG + fprintf( stderr, "PELs: %d (%c)\n", nr_pels, '0'+color ); +#endif + } + + /* handle EOL (including fill bits) */ + if ( nr_pels == -1 ) + { +#ifdef DEBUG + fprintf( stderr, "hibit=%2d, data=", hibit ); + putbin( data ); +#endif + /* skip filler 0bits -> seek for "1"-bit */ + while ( ( data & 0x01 ) != 1 ) + { + if ( ( data & 0xf ) == 0 ) /* nibble optimization */ + { + hibit-= 4; data >>= 4; + } + else + { + hibit--; data >>= 1; + } + /* fill higher bits */ + if ( hibit < 20 ) + { + data |= ( byte_tab[ (int) (unsigned char) rbuf[ rp++] ] << hibit ); + hibit += 8; + + if ( rp >= rs ) /* buffer underrun */ + { rs = read( fd, rbuf, sizeof( rbuf ) ); + if ( rs < 0 ) { perror( "read3"); break; } + rr += rs; + gimp_progress_update ((float)rr/rsize/2.0); + rp = 0; + if ( rs == 0 ) goto do_write; + } + } +#ifdef DEBUG + fprintf( stderr, "hibit=%2d, data=", hibit ); + putbin( data ); +#endif + } /* end skip 0bits */ + hibit--; data >>=1; + + color=0; + + if ( col == 0 ) + cons_eol++; /* consecutive EOLs */ + else + { + if ( col > hcol && col <= MAX_COLS ) hcol = col; + row++; + + /* bitmap memory full? make it larger! */ + if ( row >= max_rows ) + { + char * p = (char *) realloc( bitmap, + ( max_rows += 500 ) * MAX_COLS/8 ); + if ( p == NULL ) + { + perror( "realloc() failed, page truncated" ); + rs = 0; + } + else + { + bitmap = p; + memset( &bitmap[ row * MAX_COLS/8 ], 0, + ( max_rows - row ) * MAX_COLS/8 ); + } + } + + col=0; bp = &bitmap[ row * MAX_COLS/8 ]; + cons_eol = 0; + } + } + else /* not eol */ + { + if ( col+nr_pels > MAX_COLS ) nr_pels = MAX_COLS - col; + + if ( color == 0 ) /* white */ + col += nr_pels; + else /* black */ + { + register int bit = ( 0x80 >> ( col & 07 ) ); + register char *w = & bp[ col>>3 ]; + + for ( i=nr_pels; i > 0; i-- ) + { + *w |= bit; + bit >>=1; if ( bit == 0 ) { bit = 0x80; w++; } + col++; + } + } + if ( nr_pels < 64 ) color = !color; /* terminating code */ + } + } /* end main loop */ + +do_write: /* write pbm (or whatever) file */ + + if( fd != 0 ) close(fd); /* close input file */ + +#ifdef DEBUG + fprintf( stderr, "consecutive EOLs: %d, max columns: %d\n", cons_eol, hcol ); +#endif + + return emitgimp(hcol, row, bitmap, bperrow, filename ); + +} + +/* hcol is the number of columns, row the number of rows + * bperrow is the number of bytes actually used by hcol, which may + * be greater than (hcol+7)/8 [in case of an unscaled g3 image less + * than 1728 pixels wide] + */ + +gint32 emitgimp ( int hcol, int row, char *bitmap, int bperrow, char *filename ) +{ + GPixelRgn pixel_rgn; + GDrawable *drawable; + gint32 image_ID; + gint32 layer_ID; + guchar *buf; + guchar tmp; + int x,y,xx,yy,tile_height; + +#ifdef DEBUG + fprintf( stderr, "emit gimp: %d x %d\n", hcol, row); +#endif + + image_ID = gimp_image_new (hcol, row, GRAY); + gimp_image_set_filename (image_ID, filename); + + layer_ID = gimp_layer_new (image_ID, "Background", + hcol, + row, + GRAY_IMAGE, 100, NORMAL_MODE); + gimp_image_add_layer (image_ID, layer_ID, 0); + + drawable = gimp_drawable_get (layer_ID); + gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, TRUE, FALSE); + tile_height = gimp_tile_height (); +#ifdef DEBUG + fprintf( stderr, "tile height: %d\n", tile_height); +#endif + + buf = g_new(guchar, hcol*tile_height); + xx=0; + yy=0; + for (y=0; y>3)]; + buf[xx++]=tmp&(128>>(x&7))?0:255; + } + if ((y-yy) == tile_height-1) { +#ifdef DEBUG + fprintf( stderr, "update tile height: %d\n", tile_height); +#endif + gimp_pixel_rgn_set_rect (&pixel_rgn, buf, 0, yy, hcol, tile_height); + gimp_progress_update (0.5+(float)y/row/2.0); + xx=0; + yy += tile_height; + } + } + if (row-yy) { +#ifdef DEBUG + fprintf( stderr, "update rest: %d\n", row-yy); +#endif + gimp_pixel_rgn_set_rect (&pixel_rgn, buf, 0, yy, hcol, row-yy); + } + gimp_progress_update (1.0); + + g_free (buf); + + gimp_drawable_flush (drawable); + + return image_ID; + +} + diff -u --recursive --new-file gimp-0.99.10/plug-ins/film.c gimp-0.99.pre11/plug-ins/film.c --- gimp-0.99.10/plug-ins/film.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/film.c Wed Aug 13 21:16:11 1997 @@ -0,0 +1,1534 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * Film plug-in (C) 1997 Peter Kirchgessner + * e-mail: pkirchg@aol.com, WWW: http://members.aol.com/pkirchg + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * This plug-in generates a film roll with several images + */ + +/* Event history: + * V 1.00, PK, 01-Jul-97, Creation + * V 1.01, PK, 24-Jul-97, Fix problem with previews on Irix + */ +static char ident[] = "@(#) GIMP Film plug-in v1.01 24-Jul-97"; + +#include +#include +#include +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" + +/* Maximum number of pictures per film */ +#define MAX_FILM_PICTURES 64 + +/* Declare local functions + */ +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); + + +/* Define how the plug-in works. Values marked (r) are with regard */ +/* to film_height (i.e. it should be a value from 0.0 to 1.0) */ +typedef struct { + int film_height; /* height of the film */ + unsigned char film_color[3]; /* color of film */ + double picture_height; /* height of picture (r) */ + double picture_space; /* space between pictures (r) */ + double hole_offset; /* distance from hole to edge of film (r) */ + double hole_width; /* width of hole (r) */ + double hole_height; /* height of holes (r) */ + double hole_space; /* distance of holes (r) */ + double number_height; /* height of picture numbering (r) */ + int number_start; /* number for first picture */ + unsigned char number_color[3]; /* color of number */ + char number_fontf[256]; /* font family to use for numbering */ + int number_pos[2]; /* flags where to draw numbers (top/bottom) */ + int num_images; /* number of images */ + gint32 image[MAX_FILM_PICTURES]; /* list of image IDs */ +} FilmVals; + + +/* Handling for color selection dialogs */ +typedef struct +{ + GtkWidget *activate; /* The button that activates the color sel. dialog */ + GtkWidget *colselect; /* The colour selection dialog itself */ + GtkWidget *preview; /* The colour preview */ + unsigned char color[3];/* The selected colour */ +} CSEL; + +/* Data to use for the dialog */ +typedef struct +{ + GtkWidget *dialog; + GtkWidget *left_entry[3]; + GtkWidget *image_list_all; + GtkWidget *image_list_film; + int prv_width, prv_height; + CSEL csel[2]; + int number_pos[2]; + gint run; +} FilmInterface; + + +static gint32 create_new_image (char *filename, guint width, guint height, + GDrawableType gdtype, gint32 *layer_ID, GDrawable **drawable, + GPixelRgn *pixel_rgn); + +static char *compose_image_name (gint32 image_ID); + +static gint32 film (void); + +static int check_filmvals (void); + +static void convert_to_rgb (GDrawable *srcdrawable, int numpix, + unsigned char *src, unsigned char *dst); + +static void set_pixels (int numpix, unsigned char *dst, + unsigned char *rgb); + +static int scale_layer (gint32 src_layer, int src_x0, int src_y0, + int src_width, int src_height, + gint32 dst_layer, int dst_x0, int dst_y0, + int dst_width, int dst_height); + +static unsigned char *create_hole_rgb (int width, int height); + +static void draw_hole_rgb (GDrawable *drw, int x, int y, + int width, int height, unsigned char *hole); + +static void draw_number (gint32 layer_ID, int num, int x, int y, + int height); + +static GtkWidget *add_label_with_entry (char *label_text, char *entry_text, + int tab_index, GtkWidget *table); + +static void add_color_button (int csel_index, int tab_index, + GtkWidget *table); + +static void add_list_item_callback (GtkWidget *widget, GtkWidget *list); +static void del_list_item_callback (GtkWidget *widget, GtkWidget *list); + +static GtkWidget *add_image_list (int add_box_flag, int n, gint32 *image_id, + GtkWidget *frame); + +static gint film_dialog (gint32 image_ID); +static void film_close_callback (GtkWidget *widget, + gpointer data); +static void film_color_button_callback (GtkWidget *widget, + gpointer data); +static void film_ok_callback (GtkWidget *widget, + gpointer data); +static void numbering_toggle_update (GtkWidget *widget, + gpointer data); +static void color_select_ok_callback (GtkWidget *widget, + gpointer data); +static void color_select_cancel_callback (GtkWidget *widget, + gpointer data); +static void color_preview_show (GtkWidget *widget, + unsigned char *color); + + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +static FilmVals filmvals = +{ + 256, /* Height of film */ + { 0, 0, 0 }, /* Color of film */ + 0.695, /* Picture height */ + 0.040, /* Picture spacing */ + 0.058, /* Hole offset to edge of film */ + 0.052, /* Hole width */ + 0.081, /* Hole height */ + 0.081, /* Hole distance */ + 0.052, /* Image number height */ + 1, /* Start index of numbering */ + { 239, 159, 0 }, /* Color of number */ + "courier", /* Font family for numbering */ + { 1, 1 }, /* Numbering on top and bottom */ + 0, /* Number of images */ + { 0 } /* Input image list */ +}; + + +static FilmInterface filmint = +{ + NULL, /* dialog */ + { NULL }, /* left entries */ + NULL, NULL, /* image list widgets */ + 50, 20, /* size of preview */ + { + { NULL, NULL, NULL, { 0 } }, /* Color selection dialogs */ + { NULL, NULL, NULL, { 0 } } + }, + { 0 }, + FALSE /* run */ +}; + + +static GRunModeType run_mode; + + +MAIN (); + +static void +query () +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image (only used as default image\ + in interactive mode)" }, + { PARAM_DRAWABLE, "drawable", "Input drawable (not used)" }, + { PARAM_INT32, "film_height", "Height of film" }, + { PARAM_COLOR, "film_color", "Color of the film" }, + { PARAM_INT32, "number_start", "Start index for numbering" }, + { PARAM_STRING, "number_fontf", "Font family for drawing numbers" }, + { PARAM_COLOR, "number_color", "Color for numbers" }, + { PARAM_INT32, "at_top", "Flag for drawing numbers at top of film" }, + { PARAM_INT32, "at_bottom", "Flag for drawing numbers at bottom of film" }, + { PARAM_INT32, "num_images", "Number of images to be used for film" }, + { PARAM_INT32ARRAY, "image_ids", "num_images image IDs to be used for film"} + }; + static GParamDef return_vals[] = + { + { PARAM_IMAGE, "new_image", "Output image" } + }; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = sizeof (return_vals) / sizeof (return_vals[0]); + + gimp_install_procedure ("plug_in_film", + "Compose several images to a roll film", + "Compose several images to a roll film", + "Peter Kirchgessner", + "Peter Kirchgessner (pkirchg@aol.com)", + "1997", + "/Filters/Darkroom/Film", + "INDEXED*, GRAY*, RGB*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[2]; + GStatusType status = STATUS_SUCCESS; + gint32 image_ID; + int k; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 2; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + values[1].type = PARAM_IMAGE; + values[1].data.d_int32 = -1; + + switch (run_mode) + { + case RUN_INTERACTIVE: + /* Possibly retrieve data */ + gimp_get_data ("plug_in_film", &filmvals); + + /* First acquire information with a dialog */ + if (! film_dialog (param[1].data.d_int32)) + return; + break; + + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are there! */ + /* Also we want to have some images to compose */ + if ((nparams != 12) || (param[10].data.d_int32 < 1)) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) + { + filmvals.film_height = param[3].data.d_int32; + filmvals.film_color[0] = param[4].data.d_color.red; + filmvals.film_color[1] = param[4].data.d_color.green; + filmvals.film_color[2] = param[4].data.d_color.blue; + filmvals.number_start = param[5].data.d_int32; + k = sizeof (filmvals.number_fontf); + strncpy (filmvals.number_fontf, param[6].data.d_string, k); + filmvals.number_fontf[k-1] = '\0'; + filmvals.number_color[0] = param[7].data.d_color.red; + filmvals.number_color[1] = param[7].data.d_color.green; + filmvals.number_color[2] = param[7].data.d_color.blue; + filmvals.number_pos[0] = param[8].data.d_int32; + filmvals.number_pos[1] = param[9].data.d_int32; + filmvals.num_images = param[10].data.d_int32; + if (filmvals.num_images > MAX_FILM_PICTURES) + filmvals.num_images = MAX_FILM_PICTURES; + for (k = 0; k < filmvals.num_images; k++) + filmvals.image[k] = param[11].data.d_int32array[k]; + } + break; + + case RUN_WITH_LAST_VALS: + /* Possibly retrieve data */ + gimp_get_data ("plug_in_film", &filmvals); + break; + + default: + break; + } + + if (check_filmvals () < 0) + status = STATUS_CALLING_ERROR; + + if (status == STATUS_SUCCESS) + { + if (run_mode != RUN_NONINTERACTIVE) + gimp_progress_init ("Composing Images..."); + + image_ID = film (); + + if (image_ID <= 0) + { + status = STATUS_EXECUTION_ERROR; + } + else + { + values[1].data.d_int32 = image_ID; + gimp_image_enable_undo (image_ID); + gimp_image_clean_all (image_ID); + if (run_mode != RUN_NONINTERACTIVE) + gimp_display_new (image_ID); + } + + /* Store data */ + if (run_mode == RUN_INTERACTIVE) + gimp_set_data ("plug_in_film", &filmvals, sizeof (FilmVals)); + } + + values[0].data.d_status = status; +} + + +/* Compose a roll film image from several images */ +static gint32 +film (void) + +{ + int width, height, tile_height, scan_lines; + unsigned char *dst, *hole; + int film_height, film_width; + int picture_width, picture_height, picture_space, picture_x0, picture_y0; + int hole_offset, hole_width, hole_height, hole_space, hole_x; + int number_height, num_images, num_pictures; + int i, j, k, picture_count; + double f; + guchar f_red, f_green, f_blue; + gint nreturn_vals, num_layers; + gint32 *image_ID_src, image_ID_dst, layer_ID_src, layer_ID_dst; + gint32 *layers; + GDrawable *drawable_dst; + GPixelRgn pixel_rgn_dst; + + num_images = filmvals.num_images; + image_ID_src = filmvals.image; + + if (num_images <= 0) + return (-1); + + tile_height = gimp_tile_height (); + /* Save foreground colour */ + gimp_palette_get_foreground (&f_red, &f_green, &f_blue); + + film_height = filmvals.film_height; + picture_height = film_height * filmvals.picture_height; + picture_space = film_height * filmvals.picture_space; + picture_y0 = (film_height - picture_height)/2; + + number_height = film_height * filmvals.number_height; + + /* Calculate total film width */ + film_width = 0; + num_pictures = 0; + for (j = 0; j < num_images; j++) + { + layers = gimp_image_get_layers (image_ID_src[j], &num_layers); + /* Get scaled image size */ + width = gimp_image_width (image_ID_src[j]); + height = gimp_image_height (image_ID_src[j]); + f = ((double)picture_height) / (double)height; + picture_width = width * f; + + for (k = 0; k < num_layers; k++) + { + if (gimp_layer_is_floating_selection (layers[k])) + continue; + + film_width += (picture_space/2); /* Leading space */ + film_width += picture_width; /* Scaled image width */ + film_width += (picture_space/2); /* Trailing space */ + num_pictures++; + } + if (layers) g_free (layers); + } +#ifdef FILM_DEBUG + printf ("film_height = %d, film_width = %d\n", film_height, film_width); + printf ("picture_height = %d, picture_space = %d, picture_y0 = %d\n", + picture_height, picture_space, picture_y0); + printf ("Number of pictures = %d\n", num_pictures); +#endif + + image_ID_dst = create_new_image ("Untitled", (guint)film_width, + (guint)film_height, RGB_IMAGE, &layer_ID_dst, + &drawable_dst, &pixel_rgn_dst); + + dst = (unsigned char *)g_malloc (film_width * tile_height * 3); + if (dst == NULL) return (-1); + + /* Fill film background */ + i = 0; + while (i < film_height) + { + scan_lines = (i+tile_height-1 < film_height) ? tile_height : (film_height-i); + + set_pixels (film_width*scan_lines, dst, filmvals.film_color); + + gimp_pixel_rgn_set_rect (&pixel_rgn_dst, dst, 0, i, + film_width, scan_lines); + i += scan_lines; + } + g_free (dst); + + /* Draw all the holes */ + hole_offset = film_height * filmvals.hole_offset; + hole_width = film_height * filmvals.hole_width; + hole_height = film_height * filmvals.hole_height; + hole_space = film_height * filmvals.hole_space; + hole_x = hole_space / 2; + +#ifdef FILM_DEBUG + printf ("hole_x %d hole_offset %d hole_width %d hole_height %d hole_space %d\n", + hole_x, hole_offset, hole_width, hole_height, hole_space ); +#endif + + hole = create_hole_rgb (hole_width, hole_height); + if (hole) + { + while (hole_x < film_width) + { + draw_hole_rgb (drawable_dst, hole_x, hole_offset, + hole_width, hole_height, hole); + draw_hole_rgb (drawable_dst, hole_x, film_height-hole_offset-hole_height, + hole_width, hole_height, hole); + + hole_x += hole_width + hole_space; + } + g_free (hole); + } + gimp_drawable_detach (drawable_dst); + + /* Compose all images and layers */ + picture_x0 = 0; + picture_count = 0; + for (j = 0; j < num_images; j++) + { + width = gimp_image_width (image_ID_src[j]); + height = gimp_image_height (image_ID_src[j]); + f = ((double)picture_height) / (double)height; + picture_width = width * f; + + layers = gimp_image_get_layers (image_ID_src[j], &num_layers); + + for (k = 0; k < num_layers; k++) + { + if (gimp_layer_is_floating_selection (layers[k])) + continue; + + picture_x0 += (picture_space/2); + + layer_ID_src = layers[k]; + /* Scale the layer and insert int new image */ + if (scale_layer (layer_ID_src, 0, 0, width, height, + layer_ID_dst, picture_x0, picture_y0, + picture_width, picture_height) < 0) + { + printf ("film: error during scale_layer\n"); + return (-1); + } + + /* Draw picture numbers */ + if ((number_height > 0) + && (filmvals.number_pos[0] || filmvals.number_pos[1])) + { + gimp_palette_set_foreground (filmvals.number_color[0], + filmvals.number_color[1], + filmvals.number_color[2]); + + if (filmvals.number_pos[0]) + draw_number (layer_ID_dst, filmvals.number_start + picture_count, + picture_x0 + picture_width/2, + (hole_offset-number_height)/2, number_height); + if (filmvals.number_pos[1]) + draw_number (layer_ID_dst, filmvals.number_start + picture_count, + picture_x0 + picture_width/2, + film_height - (hole_offset + number_height)/2, + number_height); + + gimp_palette_set_foreground (f_red, f_green, f_blue); + } + + picture_x0 += picture_width + (picture_space/2); + + if (run_mode != RUN_NONINTERACTIVE) + gimp_progress_update (((double)(picture_count+1)) / (double)num_pictures); + + picture_count++; + } + } + if (layers) g_free (layers); + + /* Drawing text/numbers leaves us with a floating selection. Stop it */ + gimp_run_procedure ("gimp_floating_sel_anchor", &nreturn_vals, + PARAM_LAYER, gimp_image_floating_selection (image_ID_dst), + PARAM_END); + /* Restore foreground */ + gimp_palette_set_foreground (f_red, f_green, f_blue); + + return image_ID_dst; +} + + +/* Check filmvals. Unreasonable values are reset to a default. */ +/* If this is not possible, -1 is returned. Otherwise 0 is returned. */ +static int +check_filmvals (void) + +{ + if (filmvals.film_height < 10) filmvals.film_height = 10; + if (filmvals.number_start < 0) filmvals.number_start = 0; + if (filmvals.number_fontf[0] == '\0') + strcpy (filmvals.number_fontf, "courier"); + if (filmvals.num_images < 1) return (-1); + return (0); +} + + +/* Converts numpix pixels from src to RGB at dst */ +static void convert_to_rgb (GDrawable *srcdrawable, + int numpix, + unsigned char *src, + unsigned char *dst) + +{ + register unsigned char *from = src, *to = dst; + register int k; + register guchar *cmap, *colour; + gint ncols; + + switch (gimp_drawable_type (srcdrawable->id)) + { + case RGB_IMAGE: + memcpy ((char *)dst, (char *)src, numpix*3); + break; + + case RGBA_IMAGE: + from = src; + to = dst; + k = numpix; + while (k-- > 0) + { + *(to++) = *(from++); *(to++) = *(from++); *(to++) = *(from++); + from++; + } + break; + + case GRAY_IMAGE: + from = src; + to = dst; + k = numpix; + while (k-- > 0) + { + to[0] = to[1] = to[2] = *(from++); + to += 3; + } + break; + + case GRAYA_IMAGE: + from = src; + to = dst; + k = numpix; + while (k-- > 0) + { + to[0] = to[1] = to[2] = *from; + from += 2; + to += 3; + } + break; + + case INDEXED_IMAGE: + case INDEXEDA_IMAGE: + cmap = gimp_image_get_cmap (gimp_drawable_image_id (srcdrawable->id), + &ncols); + if (cmap) + { + from = src; + to = dst; + k = numpix; + while (k-- > 0) + { + colour = cmap + 3*(int)(*from); + *(to++) = *(colour++); + *(to++) = *(colour++); + *(to++) = *(colour++); + from += srcdrawable->bpp; + } + } + break; + + default: + printf ("convert_to_rgb: unknown image type\n"); + break; + } +} + + +/* Assigns numpix pixels starting at dst with color r,g,b */ +static void +set_pixels (int numpix, + unsigned char *dst, + unsigned char *rgb) + +{register int k; + register unsigned char ur, ug, ub, *udest; + + if ((rgb[0] == rgb[1]) && (rgb[1] == rgb[2])) + { + memset (dst, (int)rgb[0], numpix*3); + return; + } + + ur = rgb[0]; + ug = rgb[1]; + ub = rgb[2]; + k = numpix; + udest = dst; + while (k-- > 0) + { + *(udest++) = ur; + *(udest++) = ug; + *(udest++) = ub; + } +} + + +/* Scales a portion of a layer and places it in another layer. */ +/* On success, 0 is returned. Otherwise -1 is returned */ +static int scale_layer (gint32 src_layer, + int src_x0, + int src_y0, + int src_width, + int src_height, + gint32 dst_layer, + int dst_x0, + int dst_y0, + int dst_width, + int dst_height) + +{ + int tile_height, i, scan_lines, numpix; + unsigned char *src, *tmp = (unsigned char *)ident; /* Just to satisfy gcc */ + gint32 tmp_image, tmp_layer; + GDrawable *tmp_drawable, *src_drawable, *dst_drawable; + GPixelRgn tmp_pixel_rgn, src_pixel_rgn, dst_pixel_rgn; + + tile_height = gimp_tile_height (); + + src_drawable = gimp_drawable_get (src_layer); + + /*** Get a RGB copy of the source region ***/ + + tmp_image = create_new_image ("Temporary", src_width, src_height, + RGB_IMAGE, &tmp_layer, &tmp_drawable, &tmp_pixel_rgn); + + src = (unsigned char *)g_malloc (src_width * tile_height * src_drawable->bpp); + tmp = (unsigned char *)g_malloc (src_width * tile_height * tmp_drawable->bpp); + if ((src == NULL) || (tmp == NULL)) return (-1); + + gimp_pixel_rgn_init (&src_pixel_rgn, src_drawable, src_x0, src_y0, + src_width, src_height, FALSE, FALSE); + + i = 0; + while (i < src_height) + { + scan_lines = (i+tile_height-1 < src_height) ? tile_height : (src_height-i); + numpix = scan_lines*src_width; + + /* Get part of source image */ + gimp_pixel_rgn_get_rect (&src_pixel_rgn, src, src_x0, src_y0+i, + src_width, scan_lines); + + convert_to_rgb (src_drawable, numpix, src, tmp); + + /* Set part of temporary image */ + gimp_pixel_rgn_set_rect (&tmp_pixel_rgn, tmp, 0, i, src_width, scan_lines); + + i += scan_lines; + } + + /* Now we have an image that is a copy of the */ + /* source region and has been converted to RGB. */ + /* We dont need any more access to the source image. */ + gimp_drawable_detach (src_drawable); + g_free ((char *)src); + + /*** Resize the temporary image if necessary ***/ + if ((src_width != dst_width) || (src_height != dst_height)) + { + gimp_drawable_detach (tmp_drawable); + + gimp_layer_scale (tmp_layer, dst_width, dst_height, 0); + + tmp_drawable = gimp_drawable_get (tmp_layer); + } + + /*** Copy temporary image to destination image */ + gimp_pixel_rgn_init (&tmp_pixel_rgn, tmp_drawable, 0, 0, + dst_width, dst_height, FALSE, FALSE); + g_free ((char *)tmp); + tmp = (unsigned char *)g_malloc (dst_width * tile_height * tmp_drawable->bpp); + + dst_drawable = gimp_drawable_get (dst_layer); + gimp_pixel_rgn_init (&dst_pixel_rgn, dst_drawable, dst_x0, dst_y0, + dst_width, dst_height, TRUE, FALSE); + i = 0; + while (i < dst_height) + { + scan_lines = (i+tile_height-1 < dst_height) ? tile_height : (dst_height-i); + + /* Get strip of temporary image */ + gimp_pixel_rgn_get_rect (&tmp_pixel_rgn, tmp, 0, i, + dst_width, scan_lines); + + /* Set strip of destination image */ + gimp_pixel_rgn_set_rect (&dst_pixel_rgn, tmp, dst_x0, dst_y0+i, + dst_width, scan_lines); + i += scan_lines; + } + + /* No more access to the temporary image */ + gimp_drawable_detach (tmp_drawable); + g_free ((char *)tmp); + gimp_image_delete (tmp_image); + + gimp_drawable_detach (dst_drawable); + + return (0); +} + + +/* Create the RGB-pixels that make up the hole */ +static unsigned char * +create_hole_rgb (int width, int height) + +{unsigned char *hole, *top, *bottom; + int radius, length, k; + + hole =(unsigned char *)g_malloc (width*height*3); + if (hole) + { + /* Fill a rectangle with white */ + memset (hole, 255, width*height*3); + radius = height / 4; + if (radius > width/2) radius = width/2; + top = hole; + bottom = hole + (height-1)*width*3; + for (k = radius-1; k > 0; k--) /* Rounding corners */ + { + length = (int)(radius - sqrt ((double)(radius*radius - k*k)) - 0.5); + if (length > 0) + { + set_pixels (length, top, filmvals.film_color); + set_pixels (length, top+(width-length)*3, filmvals.film_color); + set_pixels (length, bottom, filmvals.film_color); + set_pixels (length, bottom+(width-length)*3, filmvals.film_color); + } + top += width*3; + bottom -= width*3; + } + } + return (hole); +} + + +/* Draw the hole at the specified position */ +static void +draw_hole_rgb (GDrawable *drw, + int x, + int y, + int width, + int height, + unsigned char *hole) + +{GPixelRgn rgn; + unsigned char *data; + int tile_height = gimp_tile_height (); + int i, j, scan_lines, d_width = gimp_drawable_width (drw->id); + int length; + + if ((width <= 0) || (height <= 0)) + return; + if ((x+width <= 0) || (x >= d_width)) + return; + length = width; /* Check that we dont draw past the image */ + if ((x+length) >= d_width) + length = d_width-x; + + data = (unsigned char *)g_malloc (length * tile_height * drw->bpp); + if (data == NULL) return; + + gimp_pixel_rgn_init (&rgn, drw, x, y, length, height, TRUE, FALSE); + + i = 0; + while (i < height) + { + scan_lines = (i+tile_height-1 < height) ? tile_height : (height-i); + if (length == width) + { + memcpy (data, hole + 3*width*i, width*scan_lines*3); + } + else /* We have to do some clipping */ + { + for (j = 0; j < scan_lines; j++) + memcpy (data + j*length*3, hole + (i+j)*width*3, length*3); + } + gimp_pixel_rgn_set_rect (&rgn, data, x, y+i, length, scan_lines); + + i += scan_lines; + } + + g_free (data); +} + + +/* Draw the number of the picture onto the film */ +static void +draw_number (gint32 layer_ID, + int num, + int x, + int y, + int height) + +{char buf[32]; + GDrawable *drw; + GParam *params; + gint nreturn_vals; + gint32 image_ID, descent; + char *family = filmvals.number_fontf; + + sprintf (buf, "%d", num); + + drw = gimp_drawable_get (layer_ID); + image_ID = gimp_drawable_image_id (layer_ID); + + /* Numbers dont need the descent. Inquire it and move the text down */ + params = gimp_run_procedure ("gimp_text_get_extents", &nreturn_vals, + PARAM_STRING, buf, + PARAM_FLOAT, (gfloat)height, + PARAM_INT32, (gint32)0, /* use pixelsize */ + PARAM_STRING, "*", /* foundry */ + PARAM_STRING, family, /* family */ + PARAM_STRING, "*", /* weight */ + PARAM_STRING, "*", /* slant */ + PARAM_STRING, "*", /* set_width */ + PARAM_STRING, "*", /* spacing */ + PARAM_END); + + if (params[0].data.d_status == STATUS_SUCCESS) + descent = params[4].data.d_int32; + else + descent = 0; + + params = gimp_run_procedure ("gimp_text", &nreturn_vals, + PARAM_IMAGE, image_ID, + PARAM_DRAWABLE, layer_ID, + PARAM_FLOAT, (gfloat)x, + PARAM_FLOAT, (gfloat)(y+descent/2), + PARAM_STRING, buf, + PARAM_INT32, (gint32)1, /* border */ + PARAM_INT32, (gint32)0, /* antialias */ + PARAM_FLOAT, (gfloat)height, + PARAM_INT32, (gint32)0, /* use pixelsize */ + PARAM_STRING, "*", /* foundry */ + PARAM_STRING, family, /* family */ + PARAM_STRING, "*", /* weight */ + PARAM_STRING, "*", /* slant */ + PARAM_STRING, "*", /* set_width */ + PARAM_STRING, "*", /* spacing */ + PARAM_END); + + if (params[0].data.d_status != STATUS_SUCCESS) + printf ("draw_number: Error in drawing text\n"); + + gimp_drawable_detach (drw); +} + + +/* Create an image. Sets layer_ID, drawable and rgn. Returns image_ID */ +static gint32 +create_new_image (char *filename, + guint width, + guint height, + GDrawableType gdtype, + gint32 *layer_ID, + GDrawable **drawable, + GPixelRgn *pixel_rgn) + +{ + gint32 image_ID; + GImageType gitype; + + if ((gdtype == GRAY_IMAGE) || (gdtype == GRAYA_IMAGE)) + gitype = GRAY; + else if ((gdtype == INDEXED_IMAGE) || (gdtype == INDEXEDA_IMAGE)) + gitype = INDEXED; + else + gitype = RGB; + + image_ID = gimp_image_new (width, height, gitype); + gimp_image_set_filename (image_ID, filename); + + *layer_ID = gimp_layer_new (image_ID, "Background", width, height, + gdtype, 100, NORMAL_MODE); + gimp_image_add_layer (image_ID, *layer_ID, 0); + + if (drawable != NULL) + { + *drawable = gimp_drawable_get (*layer_ID); + if (pixel_rgn != NULL) + gimp_pixel_rgn_init (pixel_rgn, *drawable, 0, 0, (*drawable)->width, + (*drawable)->height, TRUE, FALSE); + } + + return (image_ID); +} + + +static char * +compose_image_name (gint32 image_ID) + +{static char buffer[256]; + char *filename, *basename; + + filename = gimp_image_get_filename (image_ID); + if (filename == NULL) return (""); + + /* Compose a name of the basename and the image-ID */ + basename = strrchr (filename, '/'); + if (basename == NULL) + basename = filename; + else + basename++; + sprintf (buffer, "%s-%ld", basename, (long)image_ID); + + g_free (filename); + return (buffer); +} + + +static GtkWidget * +add_label_with_entry (char *label_text, + char *entry_text, + int tab_index, + GtkWidget *table) + +{ + GtkWidget *label; + GtkWidget *entry; + + label = gtk_label_new (label_text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, tab_index, tab_index+1, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (label); + + entry = gtk_entry_new (); + gtk_widget_set_usize (entry, 60, 0); + gtk_entry_set_text (GTK_ENTRY (entry), entry_text); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, tab_index, tab_index+1, + 0, 0, 0, 0); + gtk_widget_show (entry); + + return (entry); +} + + +static void +add_color_button (int csel_index, + int tab_index, + GtkWidget *table) + +{ + GtkWidget *label; + GtkWidget *button; + GtkWidget *preview; + + label = gtk_label_new ("Color:"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, tab_index, tab_index+1, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (label); + + button = filmint.csel[csel_index].activate = gtk_button_new (); + + memcpy (&(filmint.csel[csel_index].color[0]), + (csel_index == 0) ? filmvals.film_color : filmvals.number_color, 3); + + preview = filmint.csel[csel_index].preview = gtk_preview_new(GTK_PREVIEW_COLOR); + gtk_preview_size (GTK_PREVIEW (preview), filmint.prv_width, + filmint.prv_height); + gtk_container_add (GTK_CONTAINER (button), preview); + gtk_widget_show (preview); + + color_preview_show (preview, &(filmint.csel[csel_index].color[0])); + + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) film_color_button_callback, + (gpointer)csel_index); + gtk_table_attach (GTK_TABLE (table), button, 1, 2, tab_index, tab_index+1, + 0, 0, 0, 0); + gtk_widget_show (button); +} + + +static void +add_list_item_callback (GtkWidget *widget, + GtkWidget *list) + +{ + GList *tmp_list; + GtkWidget *label; + GtkWidget *list_item; + gint32 image_ID; + + tmp_list = GTK_LIST (list)->selection; + + while (tmp_list) + { + if ((label = (GtkWidget *)tmp_list->data) != NULL) + { + image_ID = (gint32)gtk_object_get_user_data (GTK_OBJECT (label)); + list_item = gtk_list_item_new_with_label (compose_image_name (image_ID)); + + gtk_object_set_user_data (GTK_OBJECT (list_item), (gpointer)image_ID); + gtk_container_add (GTK_CONTAINER (filmint.image_list_film), list_item); + gtk_widget_show (list_item); + } + tmp_list = tmp_list->next; + } +} + + +static void +del_list_item_callback (GtkWidget *widget, + GtkWidget *list) + +{ + GList *tmp_list; + GList *clear_list; + + tmp_list = GTK_LIST (list)->selection; + clear_list = NULL; + + while (tmp_list) + { + clear_list = g_list_prepend (clear_list, tmp_list->data); + tmp_list = tmp_list->next; + } + + clear_list = g_list_reverse (clear_list); + + gtk_list_remove_items (GTK_LIST (list), clear_list); + + tmp_list = clear_list; + + while (tmp_list) + { + gtk_widget_destroy (GTK_WIDGET (tmp_list->data)); + tmp_list = tmp_list->next; + } + + g_list_free (clear_list); +} + + +static GtkWidget * +add_image_list (int add_box_flag, + int n, + gint32 *image_id, + GtkWidget *box) + +{ + GtkWidget *box1; + GtkWidget *box2; + GtkWidget *label; + GtkWidget *scrolled_win; + GtkWidget *list; + GtkWidget *list_item; + GtkWidget *button; + int i; + + box1 = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (box), box1); + gtk_widget_show (box1); + + box2 = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (box2), 0); + gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0); + gtk_widget_show (box2); + + label = gtk_label_new (add_box_flag ? "Available images:" + : "On film:"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + scrolled_win = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (box2), scrolled_win, TRUE, TRUE, 0); + gtk_widget_show (scrolled_win); + + list = gtk_list_new (); + gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_MULTIPLE); + gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE); + gtk_container_add (GTK_CONTAINER (scrolled_win), list); + gtk_widget_show (list); + + for (i = 0; i < n; i++) + { + list_item = gtk_list_item_new_with_label (compose_image_name (image_id[i])); + + gtk_object_set_user_data (GTK_OBJECT (list_item), (gpointer)image_id[i]); + gtk_container_add (GTK_CONTAINER (list), list_item); + gtk_widget_show (list_item); + } + + button = gtk_button_new_with_label (add_box_flag ? "add -->" : "remove"); + GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + add_box_flag ? (GtkSignalFunc) add_list_item_callback + : (GtkSignalFunc) del_list_item_callback, + list); + gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0); + gtk_widget_show (button); + + return (list); +} + + +static gint +film_dialog (gint32 image_ID) + +{ + GtkWidget *dlg; + GtkWidget *button; + GtkWidget *hbox, *h0box; + GtkWidget *table; + GtkWidget *frame; + GtkWidget *toggle; + GtkWidget *vbox, *v0box; + guchar *color_cube; + char buffer[80]; + gint32 *image_id_list; + int nimages, j; + + gchar **argv; + gint argc; + + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("Film"); + + gtk_init (&argc, &argv); + gtk_rc_parse (gimp_gtkrc ()); + + gdk_set_use_xshm(gimp_use_xshm()); + + gtk_preview_set_gamma(gimp_gamma()); + gtk_preview_set_install_cmap(gimp_install_cmap()); + color_cube = gimp_color_cube(); + gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], + color_cube[3]); + gtk_widget_set_default_visual(gtk_preview_get_visual()); + gtk_widget_set_default_colormap(gtk_preview_get_cmap()); + + filmint.dialog = dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Film"); + gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) film_close_callback, + NULL); + + /* Action area */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) film_ok_callback, dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, + TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, + TRUE, TRUE, 0); + gtk_widget_show (button); + + /* parameter settings */ + hbox = gtk_hbox_new (FALSE, 0); + gtk_container_border_width (GTK_CONTAINER (hbox), 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), hbox, TRUE, TRUE, 0); + gtk_widget_show (hbox); + + /*** The frames on the left keep film options ***/ + + v0box = gtk_vbox_new (FALSE, 0); + gtk_container_border_width (GTK_CONTAINER (v0box), 0); + gtk_box_pack_start (GTK_BOX (hbox), v0box, TRUE, TRUE, 0); + gtk_widget_show (v0box); + + /* Film height/colour */ + frame = gtk_frame_new ("Film"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 5); + gtk_box_pack_start (GTK_BOX (v0box), frame, TRUE, TRUE, 0); + + vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (vbox), 5); + gtk_container_add (GTK_CONTAINER (frame), vbox); + + table = gtk_table_new (2, 2, FALSE); + gtk_table_set_row_spacings (GTK_TABLE (table), 5); + gtk_table_set_col_spacings (GTK_TABLE (table), 5); + gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0); + gtk_widget_show (table); + + /* Film height */ + sprintf (buffer, "%d", (int)filmvals.film_height); + filmint.left_entry[0] = add_label_with_entry ("Height:", buffer, 0, table); + + /* Film colour */ + add_color_button (0, 1, table); + + gtk_widget_show (vbox); + gtk_widget_show (frame); + + /* Film numbering: Startindex/Font/colour */ + frame = gtk_frame_new ("Numbering"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 5); + gtk_box_pack_start (GTK_BOX (v0box), frame, TRUE, TRUE, 0); + + vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (vbox), 5); + gtk_container_add (GTK_CONTAINER (frame), vbox); + + table = gtk_table_new (3, 2, FALSE); + gtk_table_set_row_spacings (GTK_TABLE (table), 5); + gtk_table_set_col_spacings (GTK_TABLE (table), 5); + gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0); + gtk_widget_show (table); + + /* Startindex */ + sprintf (buffer, "%d", (int)filmvals.number_start); + filmint.left_entry[1] = add_label_with_entry ("Startindex:", buffer, 0, table); + + /* Fontfamily for numbering */ + filmint.left_entry[2] = add_label_with_entry ("Font:", filmvals.number_fontf, + 1, table); + /* Numbering colour */ + add_color_button (1, 2, table); + + for (j = 0; j < 2; j++) + { + toggle = gtk_check_button_new_with_label (j ? "at bottom" : "at top"); + gtk_box_pack_start (GTK_BOX (vbox), toggle, TRUE, TRUE, 0); + filmint.number_pos[j] = filmvals.number_pos[j]; + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) numbering_toggle_update, + &(filmint.number_pos[j])); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), + filmint.number_pos[j]); + gtk_widget_show (toggle); + } + + gtk_widget_show (vbox); + gtk_widget_show (frame); + gtk_widget_show (v0box); + + h0box = gtk_hbox_new (FALSE, 0); + gtk_container_border_width (GTK_CONTAINER (h0box), 0); + gtk_box_pack_start (GTK_BOX (hbox), h0box, TRUE, TRUE, 0); + gtk_widget_show (h0box); + + /*** The right frame keeps the image selection ***/ + frame = gtk_frame_new ("Image selection"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 5); + gtk_box_pack_start (GTK_BOX (h0box), frame, TRUE, TRUE, 0); + + hbox = gtk_hbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (hbox), 5); + gtk_container_add (GTK_CONTAINER (frame), hbox); + + /* Get a list of all image names */ + image_id_list = gimp_query_images (&nimages); + filmint.image_list_all = add_image_list (1, nimages, image_id_list, hbox); + + /* Get a list of the images used for the film */ + filmint.image_list_film = add_image_list (0, 1, &image_ID, hbox); + + gtk_widget_show (hbox); + gtk_widget_show (frame); + gtk_widget_show (h0box); + + gtk_widget_show (dlg); + + gtk_main (); + gdk_flush (); + + return filmint.run; +} + + +static void +film_close_callback (GtkWidget *widget, + gpointer data) + +{ + gtk_main_quit (); +} + + +static void +film_color_button_callback (GtkWidget *widget, + gpointer data) + +{int idx, j; + GtkColorSelectionDialog *csd; + GtkWidget *dialog; + gdouble colour[3]; + + idx = (int)data; + + /* Is the colour selection dialog already running ? */ + if (filmint.csel[idx].colselect != NULL) return; + + for (j = 0; j < 3; j++) + colour[j] = filmint.csel[idx].color[j] / 255.0; + + dialog = filmint.csel[idx].colselect = gtk_color_selection_dialog_new ( + (idx == 0) ? "Films color Color Picker" + : "Numbers color Color Picker"); + csd = GTK_COLOR_SELECTION_DIALOG (dialog); + + gtk_widget_destroy (csd->help_button); + + gtk_signal_connect (GTK_OBJECT (dialog), "destroy", + (GtkSignalFunc) color_select_cancel_callback, data); + gtk_signal_connect (GTK_OBJECT (csd->ok_button), "clicked", + (GtkSignalFunc) color_select_ok_callback, data); + gtk_signal_connect (GTK_OBJECT (csd->cancel_button), "clicked", + (GtkSignalFunc) color_select_cancel_callback, data); + + gtk_color_selection_set_color (GTK_COLOR_SELECTION (csd->colorsel), colour); + + gtk_window_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); +} + + +static void +film_ok_callback (GtkWidget *widget, + gpointer data) + +{int v, num_images; + char *s; + GtkWidget *dialog; + GtkWidget *label; + GList *tmp_list; + gint32 image_ID; + + /* Read film height */ + s = gtk_entry_get_text (GTK_ENTRY (filmint.left_entry[0])); + if ((sscanf (s, "%d", &v) == 1) && (v > 9)) + filmvals.film_height = v; + + /* Read numbers start index */ + s = gtk_entry_get_text (GTK_ENTRY (filmint.left_entry[1])); + if ((sscanf (s, "%d", &v) == 1) && (v >= 0)) + filmvals.number_start = v; + + /* Read font family */ + s = gtk_entry_get_text (GTK_ENTRY (filmint.left_entry[2])); + if (strlen (s) > 0) + { + strncpy (filmvals.number_fontf, s, sizeof (filmvals.number_fontf)); + filmvals.number_fontf[sizeof (filmvals.number_fontf)-1] = '\0'; + } + + /* Read film color */ + memcpy (filmvals.film_color, &(filmint.csel[0].color[0]), 3); + + /* Read numbers color */ + memcpy (filmvals.number_color, &(filmint.csel[1].color[0]), 3); + + /* Read positioning of numbers */ + filmvals.number_pos[0] = filmint.number_pos[0]; + filmvals.number_pos[1] = filmint.number_pos[1]; + + /* Read image list */ + num_images = 0; + if (filmint.image_list_film != NULL) + { + tmp_list = GTK_LIST (filmint.image_list_film)->children; + while (tmp_list) + { + if ((label = (GtkWidget *)tmp_list->data) != NULL) + { + image_ID = (gint32)gtk_object_get_user_data (GTK_OBJECT (label)); + if ((image_ID > 0) && (num_images < MAX_FILM_PICTURES)) + filmvals.image[num_images++] = image_ID; + } + tmp_list = tmp_list->next; + } + filmvals.num_images = num_images; + } + + for (v = 0; v < sizeof(filmint.csel)/sizeof (filmint.csel[0]); v++) + { + if ((dialog = filmint.csel[v].colselect) != NULL) + { + filmint.csel[v].colselect = NULL; + gtk_widget_destroy (GTK_WIDGET (dialog)); + } + } + + filmint.run = TRUE; + gtk_widget_destroy (GTK_WIDGET (data)); +} + + +static void +numbering_toggle_update (GtkWidget *widget, + gpointer data) + +{ + int *toggle_val; + + toggle_val = (int *) data; + + *toggle_val = ((GTK_TOGGLE_BUTTON (widget)->active) != 0); +} + + +static void +color_select_ok_callback (GtkWidget *widget, + gpointer data) + +{gdouble color[3]; + int idx, j; + GtkWidget *dialog; + + idx = (int)data; + if ((dialog = filmint.csel[idx].colselect) == NULL) return; + + gtk_color_selection_get_color ( + GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel), + color); + + for (j = 0; j < 3; j++) + filmint.csel[idx].color[j] = (unsigned char)(color[j]*255.0); + + color_preview_show (filmint.csel[idx].preview, &(filmint.csel[idx].color[0])); + + filmint.csel[idx].colselect = NULL; + gtk_widget_destroy (dialog); +} + + +static void +color_select_cancel_callback (GtkWidget *widget, + gpointer data) + +{int idx; + GtkWidget *dialog; + + idx = (int)data; + if ((dialog = filmint.csel[idx].colselect) == NULL) return; + + filmint.csel[idx].colselect = NULL; + gtk_widget_destroy (dialog); +} + + +static void +color_preview_show (GtkWidget *widget, + unsigned char *rgb) + +{guchar *buf, *bp; + int j, width, height; + + width = filmint.prv_width; + height = filmint.prv_height; + + bp = buf = g_malloc (width*3); + if (buf == NULL) return; + + for (j = 0; j < width; j++) + { + *(bp++) = rgb[0]; + *(bp++) = rgb[1]; + *(bp++) = rgb[2]; + } + for (j = 0; j < height; j++) + gtk_preview_draw_row (GTK_PREVIEW (widget), buf, 0, j, width); + + gtk_widget_draw (widget, NULL); + + g_free (buf); +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/fits.c gimp-0.99.pre11/plug-ins/fits.c --- gimp-0.99.10/plug-ins/fits.c Fri Jun 6 02:04:53 1997 +++ gimp-0.99.pre11/plug-ins/fits.c Wed Aug 13 20:31:35 1997 @@ -23,8 +23,9 @@ /* Event history: * V 1.00, PK, 05-May-97: Creation * V 1.01, PK, 19-May-97: Problem with compilation on Irix fixed + * V 1.02, PK, 08-Jun-97: Bug with saving gray images fixed */ -static char ident[] = "@(#) GIMP FITS file-plugin v1.01 19-May-97"; +static char ident[] = "@(#) GIMP FITS file-plugin v1.02 08-Jun-97"; #include #include @@ -668,7 +669,9 @@ int print_ctype3 = 0; /* The CTYPE3-card may not be FITS-conforming */ static char *ctype3_card[] = { NULL, NULL, NULL, /* bpp = 0: no additional card */ - NULL, NULL, NULL, /* GRAY-image: no additional card */ + "COMMENT Image type within GIMP: GRAY_IMAGE", + NULL, + NULL, "COMMENT Image type within GIMP: GRAYA_IMAGE (gray with alpha channel)", "COMMENT Sequence for NAXIS3 : GRAY, ALPHA", "CTYPE3 = 'GRAYA ' / GRAY IMAGE WITH ALPHA CHANNEL", @@ -710,8 +713,9 @@ "COMMENT For sources see ftp://members.aol.com/pkirchg/pub/gimp"); fits_add_card (hdulist, ""); fits_add_card (hdulist, ctype3_card[bpp*3]); - fits_add_card (hdulist, ctype3_card[bpp*3+1]); - if (print_ctype3 && (ctype3_card[bpp] != NULL)) + if (ctype3_card[bpp*3+1] != NULL) + fits_add_card (hdulist, ctype3_card[bpp*3+1]); + if (print_ctype3 && (ctype3_card[bpp*3+2] != NULL)) fits_add_card (hdulist, ctype3_card[bpp*3+2]); fits_add_card (hdulist, ""); diff -u --recursive --new-file gimp-0.99.10/plug-ins/g3.c gimp-0.99.pre11/plug-ins/g3.c --- gimp-0.99.10/plug-ins/g3.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/g3.c Thu Aug 14 00:47:20 1997 @@ -0,0 +1,275 @@ +#ident "@(#)g3.c 3.1 95/08/30 Copyright (c) Gert Doering" + +#include +#include +#include +#include + +#include "g3.h" + +struct g3code t_white[66] = { +{ 0, 0, 0x0ac, 8 }, +{ 0, 1, 0x038, 6 }, +{ 0, 2, 0x00e, 4 }, +{ 0, 3, 0x001, 4 }, +{ 0, 4, 0x00d, 4 }, +{ 0, 5, 0x003, 4 }, +{ 0, 6, 0x007, 4 }, +{ 0, 7, 0x00f, 4 }, +{ 0, 8, 0x019, 5 }, +{ 0, 9, 0x005, 5 }, +{ 0, 10, 0x01c, 5 }, +{ 0, 11, 0x002, 5 }, +{ 0, 12, 0x004, 6 }, +{ 0, 13, 0x030, 6 }, +{ 0, 14, 0x00b, 6 }, +{ 0, 15, 0x02b, 6 }, +{ 0, 16, 0x015, 6 }, +{ 0, 17, 0x035, 6 }, +{ 0, 18, 0x072, 7 }, +{ 0, 19, 0x018, 7 }, +{ 0, 20, 0x008, 7 }, +{ 0, 21, 0x074, 7 }, +{ 0, 22, 0x060, 7 }, +{ 0, 23, 0x010, 7 }, +{ 0, 24, 0x00a, 7 }, +{ 0, 25, 0x06a, 7 }, +{ 0, 26, 0x064, 7 }, +{ 0, 27, 0x012, 7 }, +{ 0, 28, 0x00c, 7 }, +{ 0, 29, 0x040, 8 }, +{ 0, 30, 0x0c0, 8 }, +{ 0, 31, 0x058, 8 }, +{ 0, 32, 0x0d8, 8 }, +{ 0, 33, 0x048, 8 }, +{ 0, 34, 0x0c8, 8 }, +{ 0, 35, 0x028, 8 }, +{ 0, 36, 0x0a8, 8 }, +{ 0, 37, 0x068, 8 }, +{ 0, 38, 0x0e8, 8 }, +{ 0, 39, 0x014, 8 }, +{ 0, 40, 0x094, 8 }, +{ 0, 41, 0x054, 8 }, +{ 0, 42, 0x0d4, 8 }, +{ 0, 43, 0x034, 8 }, +{ 0, 44, 0x0b4, 8 }, +{ 0, 45, 0x020, 8 }, +{ 0, 46, 0x0a0, 8 }, +{ 0, 47, 0x050, 8 }, +{ 0, 48, 0x0d0, 8 }, +{ 0, 49, 0x04a, 8 }, +{ 0, 50, 0x0ca, 8 }, +{ 0, 51, 0x02a, 8 }, +{ 0, 52, 0x0aa, 8 }, +{ 0, 53, 0x024, 8 }, +{ 0, 54, 0x0a4, 8 }, +{ 0, 55, 0x01a, 8 }, +{ 0, 56, 0x09a, 8 }, +{ 0, 57, 0x05a, 8 }, +{ 0, 58, 0x0da, 8 }, +{ 0, 59, 0x052, 8 }, +{ 0, 60, 0x0d2, 8 }, +{ 0, 61, 0x04c, 8 }, +{ 0, 62, 0x0cc, 8 }, +{ 0, 63, 0x02c, 8 }, +{ 0, -1, 0, 11 }, /* 11 0-bits == EOL, special handling */ +{ 0, -1, 0, 0 }}; /* end of table */ + +/* make-up codes white */ +struct g3code m_white[28] = { +{ 0, 64, 0x01b, 5 }, +{ 0, 128, 0x009, 5 }, +{ 0, 192, 0x03a, 6 }, +{ 0, 256, 0x076, 7 }, +{ 0, 320, 0x06c, 8 }, +{ 0, 384, 0x0ec, 8 }, +{ 0, 448, 0x026, 8 }, +{ 0, 512, 0x0a6, 8 }, +{ 0, 576, 0x016, 8 }, +{ 0, 640, 0x0e6, 8 }, +{ 0, 704, 0x066, 9 }, +{ 0, 768, 0x166, 9 }, +{ 0, 832, 0x096, 9 }, +{ 0, 896, 0x196, 9 }, +{ 0, 960, 0x056, 9 }, +{ 0,1024, 0x156, 9 }, +{ 0,1088, 0x0d6, 9 }, +{ 0,1152, 0x1d6, 9 }, +{ 0,1216, 0x036, 9 }, +{ 0,1280, 0x136, 9 }, +{ 0,1344, 0x0b6, 9 }, +{ 0,1408, 0x1b6, 9 }, +{ 0,1472, 0x032, 9 }, +{ 0,1536, 0x132, 9 }, +{ 0,1600, 0x0b2, 9 }, +{ 0,1664, 0x006, 6 }, +{ 0,1728, 0x1b2, 9 }, +{ 0, -1, 0, 0} }; + + +struct g3code t_black[66] = { +{ 0, 0, 0x3b0, 10 }, +{ 0, 1, 0x002, 3 }, +{ 0, 2, 0x003, 2 }, +{ 0, 3, 0x001, 2 }, +{ 0, 4, 0x006, 3 }, +{ 0, 5, 0x00c, 4 }, +{ 0, 6, 0x004, 4 }, +{ 0, 7, 0x018, 5 }, +{ 0, 8, 0x028, 6 }, +{ 0, 9, 0x008, 6 }, +{ 0, 10, 0x010, 7 }, +{ 0, 11, 0x050, 7 }, +{ 0, 12, 0x070, 7 }, +{ 0, 13, 0x020, 8 }, +{ 0, 14, 0x0e0, 8 }, +{ 0, 15, 0x030, 9 }, +{ 0, 16, 0x3a0, 10 }, +{ 0, 17, 0x060, 10 }, +{ 0, 18, 0x040, 10 }, +{ 0, 19, 0x730, 11 }, +{ 0, 20, 0x0b0, 11 }, +{ 0, 21, 0x1b0, 11 }, +{ 0, 22, 0x760, 11 }, +{ 0, 23, 0x0a0, 11 }, +{ 0, 24, 0x740, 11 }, +{ 0, 25, 0x0c0, 11 }, +{ 0, 26, 0x530, 12 }, +{ 0, 27, 0xd30, 12 }, +{ 0, 28, 0x330, 12 }, +{ 0, 29, 0xb30, 12 }, +{ 0, 30, 0x160, 12 }, +{ 0, 31, 0x960, 12 }, +{ 0, 32, 0x560, 12 }, +{ 0, 33, 0xd60, 12 }, +{ 0, 34, 0x4b0, 12 }, +{ 0, 35, 0xcb0, 12 }, +{ 0, 36, 0x2b0, 12 }, +{ 0, 37, 0xab0, 12 }, +{ 0, 38, 0x6b0, 12 }, +{ 0, 39, 0xeb0, 12 }, +{ 0, 40, 0x360, 12 }, +{ 0, 41, 0xb60, 12 }, +{ 0, 42, 0x5b0, 12 }, +{ 0, 43, 0xdb0, 12 }, +{ 0, 44, 0x2a0, 12 }, +{ 0, 45, 0xaa0, 12 }, +{ 0, 46, 0x6a0, 12 }, +{ 0, 47, 0xea0, 12 }, +{ 0, 48, 0x260, 12 }, +{ 0, 49, 0xa60, 12 }, +{ 0, 50, 0x4a0, 12 }, +{ 0, 51, 0xca0, 12 }, +{ 0, 52, 0x240, 12 }, +{ 0, 53, 0xec0, 12 }, +{ 0, 54, 0x1c0, 12 }, +{ 0, 55, 0xe40, 12 }, +{ 0, 56, 0x140, 12 }, +{ 0, 57, 0x1a0, 12 }, +{ 0, 58, 0x9a0, 12 }, +{ 0, 59, 0xd40, 12 }, +{ 0, 60, 0x340, 12 }, +{ 0, 61, 0x5a0, 12 }, +{ 0, 62, 0x660, 12 }, +{ 0, 63, 0xe60, 12 }, +{ 0, -1, 0x000, 11 }, +{ 0, -1, 0, 0 } }; + +struct g3code m_black[28] = { +{ 0, 64, 0x3c0, 10 }, +{ 0, 128, 0x130, 12 }, +{ 0, 192, 0x930, 12 }, +{ 0, 256, 0xda0, 12 }, +{ 0, 320, 0xcc0, 12 }, +{ 0, 384, 0x2c0, 12 }, +{ 0, 448, 0xac0, 12 }, +{ 0, 512, 0x6c0, 13 }, +{ 0, 576,0x16c0, 13 }, +{ 0, 640, 0xa40, 13 }, +{ 0, 704,0x1a40, 13 }, +{ 0, 768, 0x640, 13 }, +{ 0, 832,0x1640, 13 }, +{ 0, 896, 0x9c0, 13 }, +{ 0, 960,0x19c0, 13 }, +{ 0,1024, 0x5c0, 13 }, +{ 0,1088,0x15c0, 13 }, +{ 0,1152, 0xdc0, 13 }, +{ 0,1216,0x1dc0, 13 }, +{ 0,1280, 0x940, 13 }, +{ 0,1344,0x1940, 13 }, +{ 0,1408, 0x540, 13 }, +{ 0,1472,0x1540, 13 }, +{ 0,1536, 0xb40, 13 }, +{ 0,1600,0x1b40, 13 }, +{ 0,1664, 0x4c0, 13 }, +{ 0,1728,0x14c0, 13 }, +{ 0, -1, 0, 0 } }; + +void tree_add_node( struct g3_tree *p, struct g3code * g3c, + int bit_code, int bit_length ) +{ +int i; + + if ( bit_length <= FBITS ) /* leaf (multiple bits) */ + { + g3c->nr_bits = bit_length; /* leaf tag */ + + if ( bit_length == FBITS ) /* full width */ + { + p->nextb[ bit_code ] = (struct g3_tree *) g3c; + } + else /* fill bits */ + for ( i=0; i< ( 1 << (FBITS-bit_length)); i++ ) + { + p->nextb[ bit_code + ( i << bit_length ) ] = (struct g3_tree *) g3c; + } + } + else /* node */ + { + struct g3_tree *p2; + + p2 = p->nextb[ bit_code & BITM ]; + if ( p2 == 0 ) /* no sub-node exists */ + { + p2 = p->nextb[ bit_code & BITM ] = + ( struct g3_tree * ) calloc( 1, sizeof( struct g3_tree )); + if ( p2 == NULL ) { perror( "malloc 3" ); exit(11); } + p2->nr_bits = 0; /* node tag */ + + } + if ( p2->nr_bits != 0 ) + { + fprintf( stderr, "internal table setup error\n" ); exit(6); + } + tree_add_node( p2, g3c, bit_code >> FBITS, bit_length - FBITS ); + } +} + +void build_tree (struct g3_tree ** p, struct g3code * c ) +{ + if ( *p == NULL ) + { + (*p) = (struct g3_tree *) calloc( 1, sizeof(struct g3_tree) ); + if ( *p == NULL ) { perror( "malloc(1)" ); exit(10); } + + (*p)->nr_bits=0; + } + + while ( c->bit_length != 0 ) + { + tree_add_node( *p, c, c->bit_code, c->bit_length ); + c++; + } +} + +void init_byte_tab (int reverse, int byte_tab[] ) +{ +int i; + if ( reverse ) for ( i=0; i<256; i++ ) byte_tab[i] = i; + else + for ( i=0; i<256; i++ ) + byte_tab[i] = ( ((i & 0x01) << 7) | ((i & 0x02) << 5) | + ((i & 0x04) << 3) | ((i & 0x08) << 1) | + ((i & 0x10) >> 1) | ((i & 0x20) >> 3) | + ((i & 0x40) >> 5) | ((i & 0x80) >> 7) ); +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/g3.h gimp-0.99.pre11/plug-ins/g3.h --- gimp-0.99.10/plug-ins/g3.h Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/g3.h Thu Aug 14 00:47:20 1997 @@ -0,0 +1,55 @@ +#ident "@(#)g3.h 3.1 95/08/30 Copyright (c) Gert Doering" + +#ifndef NULL +#define NULL 0L +#endif + +/* nr_bits is set to ( bit_length MOD FBITS ) by build_g3_tree, + * nr_pels is the number of pixels to write for that code, + * bit_code is the code itself (msb2lsb), and bit_length its length + */ + +struct g3code { int nr_bits, nr_pels, bit_code, bit_length; }; + +/* tables for makeup / terminal codes white / black, extended m_codes */ +extern struct g3code t_white[], m_white[], t_black[], m_black[], m_ext[]; + +/* The number of bits looked up simultaneously determines the amount + * of memory used by the program - some values: + * 10 bits : 87 Kbytes, 8 bits : 20 Kbytes + * 5 bits : 6 Kbytes, 1 bit : 4 Kbytes + * - naturally, using less bits is also slower... + */ + +/* +#define FBITS 5 +#define BITM 0x1f +*/ + +#define FBITS 8 +#define BITM 0xff + +/* +#define FBITS 12 +#define BITM 0xfff +*/ + +#define BITN 1< #include #include +#include #include "gtk/gtk.h" #include "libgimp/gimp.h" + + typedef struct { - int interlace; + int interlace; + int loop; + int default_delay; + int default_dispose; } GIFSaveVals; typedef struct @@ -123,6 +165,8 @@ gint run; } GIFSaveInterface; + + /* Declare some local functions. */ static void query (void); @@ -136,7 +180,7 @@ gint32 image_ID, gint32 drawable_ID); -static gint save_dialog (); +static gint save_dialog ( gint32 image_ID ); static void save_close_callback (GtkWidget *widget, gpointer data); @@ -144,6 +188,12 @@ gpointer data); static void save_toggle_update (GtkWidget *widget, gpointer data); +static void save_entry_callback (GtkWidget *widget, + gpointer data); + + + +static gint radio_pressed[3]; @@ -157,7 +207,10 @@ static GIFSaveVals gsvals = { - FALSE /* interlace */ + FALSE, /* interlace */ + TRUE, /* loop infinitely */ + 100, /* default_delay between frames (100ms) */ + 0 /* default_dispose = "don't care" */ }; static GIFSaveInterface gsint = @@ -166,6 +219,7 @@ }; + MAIN (); static void @@ -191,7 +245,10 @@ { PARAM_DRAWABLE, "drawable", "Drawable to save" }, { PARAM_STRING, "filename", "The name of the file to save the image in" }, { PARAM_STRING, "raw_filename", "The name entered" }, - { PARAM_INT32, "interlace", "Save with interlacing option enabled" } + { PARAM_INT32, "interlace", "Save as interlaced" }, + { PARAM_INT32, "loop", "(animated gif) loop infinitely" }, + { PARAM_INT32, "default_delay", "(animated gif) Default delay between framese in milliseconds" }, + { PARAM_INT32, "default_dispose", "(animated gif) Default disposal type (0=`don't care`, 1=combine, 2=replace)" } }; static int nsave_args = sizeof (save_args) / sizeof (save_args[0]); @@ -219,7 +276,7 @@ nsave_args, 0, save_args, NULL); - gimp_register_magic_load_handler ("file_gif_load", "gif", "", "0,string,GIF"); + gimp_register_magic_load_handler ("file_gif_load", "gif", "", "0,string,GIF8"); gimp_register_save_handler ("file_gif_save", "gif", ""); } @@ -237,19 +294,17 @@ run_mode = param[0].data.d_int32; - *nreturn_vals = 1; + *nreturn_vals = 2; *return_vals = values; values[0].type = PARAM_STATUS; values[0].data.d_status = STATUS_CALLING_ERROR; if (strcmp (name, "file_gif_load") == 0) { - g_debug ("fuck"); image_ID = load_image (param[1].data.d_string); if (image_ID != -1) { - *nreturn_vals = 2; values[0].data.d_status = STATUS_SUCCESS; values[1].type = PARAM_IMAGE; values[1].data.d_image = image_ID; @@ -264,21 +319,33 @@ switch (run_mode) { case RUN_INTERACTIVE: - /* Possibly retrieve data */ - gimp_get_data ("file_gif_save", &gsvals); - - /* First acquire information with a dialog */ - if (! save_dialog ()) - return; + { + /* Possibly retrieve data */ + gimp_get_data ("file_gif_save", &gsvals); + + /* First acquire information with a dialog */ + radio_pressed[0] = radio_pressed[1] = radio_pressed[2] = FALSE; + radio_pressed[gsvals.default_dispose] = TRUE; + if (! save_dialog (param[1].data.d_int32)) + return; + if (radio_pressed[0]) gsvals.default_dispose = 0x00; + else + if (radio_pressed[1]) gsvals.default_dispose = 0x01; + else + if (radio_pressed[2]) gsvals.default_dispose = 0x02; + } break; case RUN_NONINTERACTIVE: /* Make sure all the arguments are there! */ - if (nparams != 6) + if (nparams != 9) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) { gsvals.interlace = (param[5].data.d_int32) ? TRUE : FALSE; + gsvals.loop = (param[6].data.d_int32) ? TRUE : FALSE; + gsvals.default_delay = param[7].data.d_int32; + gsvals.default_dispose = param[8].data.d_int32; } break; @@ -292,7 +359,9 @@ } *nreturn_vals = 1; - if (save_image (param[3].data.d_string, param[1].data.d_int32, param[2].data.d_int32)) + if (save_image (param[3].data.d_string, + param[1].data.d_int32, + param[2].data.d_int32)) { /* Store psvals data */ gimp_set_data ("file_gif_save", &gsvals, sizeof (GIFSaveVals)); @@ -360,7 +429,7 @@ static int GetCode (FILE *, int, int); static int LWZReadByte (FILE *, int, int); static gint32 ReadImage (FILE *, char *, int, int, CMap, int, int, int, int, - guint, guint); + guint, guint, guint, guint); static gint32 @@ -378,12 +447,6 @@ char version[4]; gint32 image_ID = -1; - name_buf = g_malloc (strlen (filename) + 11); - - sprintf (name_buf, "Loading %s:", filename); - gimp_progress_init (name_buf); - g_free (name_buf); - fd = fopen (filename, "rb"); if (!fd) { @@ -391,6 +454,12 @@ return -1; } + name_buf = g_malloc (strlen (filename) + 11); + + sprintf (name_buf, "Loading %s:", filename); + gimp_progress_init (name_buf); + g_free (name_buf); + if (!ReadOK (fd, buf, 6)) { printf ("GIF: error reading magic number\n"); @@ -455,7 +524,8 @@ } if (c == '!') - { /* Extension */ + { + /* Extension */ if (!ReadOK (fd, &c, 1)) { printf ("GIF: OF / read error on extention function code\n"); @@ -497,7 +567,9 @@ grayScale, BitSet (buf[8], INTERLACE), imageCount, (guint) LM_to_uint (buf[0], buf[1]), - (guint) LM_to_uint (buf[2], buf[3]) + (guint) LM_to_uint (buf[2], buf[3]), + GifScreen.Width, + GifScreen.Height ); } else @@ -508,7 +580,10 @@ GifScreen.GrayScale, BitSet (buf[8], INTERLACE), imageCount, (guint) LM_to_uint (buf[0], buf[1]), - (guint) LM_to_uint (buf[2], buf[3])); + (guint) LM_to_uint (buf[2], buf[3]), + GifScreen.Width, + GifScreen.Height + ); } } @@ -839,7 +914,9 @@ int interlace, int number, guint leftpos, - guint toppos) + guint toppos, + guint screenwidth, + guint screenheight) { static gint32 image_ID; gint32 layer_ID; @@ -854,7 +931,7 @@ gint cur_progress, max_progress; gint v; gint i, j; - gchar framename[20]; + gchar framename[200]; /* FIXME */ gboolean alpha_frame = FALSE; /* @@ -874,18 +951,37 @@ if (frame_number == 1 ) { - image_ID = gimp_image_new (len, height, INDEXED); + image_ID = gimp_image_new (screenwidth, screenheight, INDEXED); gimp_image_set_filename (image_ID, filename); + if (Gif89.delayTime < 0) + strcpy(framename, "Background"); + else + sprintf(framename, "Background (%dms)", 10*Gif89.delayTime); + + switch (Gif89.disposal) + { + case 0x00: break; /* 'don't care' */ + case 0x01: strcat(framename," (combine)"); break; + case 0x02: strcat(framename," (replace)"); break; + case 0x03: strcat(framename," (combine)"); break; + case 0x04: + case 0x05: + case 0x06: + case 0x07: printf("GIF: Hmm... please forward this GIF to the " + "GIF plugin author!\n (adam@foxbox.org)\n"); break; + default: printf("GIF: Something got corrupted.\n"); break; + } + if (Gif89.transparent == -1) { - layer_ID = gimp_layer_new (image_ID, "Background", + layer_ID = gimp_layer_new (image_ID, framename, len, height, INDEXED_IMAGE, 100, NORMAL_MODE); } else { - layer_ID = gimp_layer_new (image_ID, "Background", + layer_ID = gimp_layer_new (image_ID, framename, len, height, INDEXEDA_IMAGE, 100, NORMAL_MODE); alpha_frame=TRUE; @@ -893,7 +989,29 @@ } else { - sprintf(framename, "Frame %d", frame_number); + if (Gif89.delayTime < 0) + sprintf(framename, "Frame %d", frame_number); + else + sprintf(framename, "Frame %d (%dms)", + frame_number, 10*Gif89.delayTime); + + switch (Gif89.disposal) + { + case 0x00: break; /* 'don't care' */ + case 0x01: strcat(framename," (combine)"); break; + case 0x02: strcat(framename," (replace)"); break; + case 0x03: strcat(framename," (combine)"); break; + case 0x04: + case 0x05: + case 0x06: + case 0x07: + strcat(framename," (unknown disposal)"); + printf("GIF: Hmm... please forward this GIF to the " + "GIF plugin author!\n (adam@foxbox.org)\n"); + break; + default: printf("GIF: Something got corrupted.\n"); break; + } + layer_ID = gimp_layer_new (image_ID, framename, len, height, INDEXEDA_IMAGE, 100, NORMAL_MODE); @@ -978,7 +1096,7 @@ } cur_progress++; - if ((cur_progress % 10) == 0) + if ((cur_progress % 16) == 0) gimp_progress_update ((double) cur_progress / (double) max_progress); } if (ypos >= height) @@ -1005,15 +1123,6 @@ gimp_drawable_flush (drawable); gimp_drawable_detach (drawable); - /* if (alpha_frame) - gimp_layer_add_alpha (layer_ID); - - if (Gif89.transparent != -1) - { - mask_ID = gimp_layer_create_mask (layer_ID, 0); - gimp_image_add_layer_mask (image_ID, layer_ID, mask_ID); - }*/ - return image_ID; } @@ -1077,7 +1186,8 @@ static void GIFEncodeHeader (FILE *, int, int, int, int, int, int, int *, int *, int *, ifunptr); static void GIFEncodeGraphicControlExt (FILE *, int, int, int, int, int, int, - int *, int *, int *, ifunptr); + int, int, int, int *, int *, int *, + ifunptr); static void GIFEncodeImageData (FILE *, int, int, int, int, int, int, int *, int *, int *, ifunptr, gint, gint); static void GIFEncodeClose (FILE *, int, int, int, int, int, int, @@ -1105,20 +1215,20 @@ static int find_unused_ia_colour (guchar *pixels, int numpixels) { - guint32 i; + int i; gboolean ix_used[256]; fprintf(stderr,"GIF: Image has >=256 colors - attempting to reduce...\n"); for (i=0;i<256;i++) - ix_used[i] = FALSE; + ix_used[i] = (gboolean)FALSE; for (i=0;i=length) + return(-1); + + if (!isdigit(str[++offset])) + return(-2); + + do + { + sum *= 10; + sum += str[offset] - '0'; + offset++; + } + while ((offsetwidth; - rows = drawable->height; + + cols = gimp_image_width(image_ID); + rows = gimp_image_height(image_ID); GIFEncodeHeader (outfile, cols, rows, gsvals.interlace, 0, transparent, BitsPerPixel, Red, Green, Blue, GetPixel); @@ -1265,7 +1444,7 @@ /* If the image has multiple layers it'll be made into an animated GIF, so write out the infinite-looping extension */ - if (nlayers > 1) + if ((nlayers > 1) && (gsvals.loop)) GIFEncodeLoopExt (outfile, cols, rows, gsvals.interlace, 0, transparent, BitsPerPixel, Red, Green, Blue, GetPixel, 0); @@ -1292,13 +1471,14 @@ pixels = (guchar *) g_malloc (drawable->width * drawable->height * - (drawable_type == INDEXEDA_IMAGE ? 2 : 1) ); + (((drawable_type == INDEXEDA_IMAGE)|| + (drawable_type == GRAYA_IMAGE)) ? 2:1) ); gimp_pixel_rgn_get_rect (&pixel_rgn, pixels, 0, 0, drawable->width, drawable->height); /* sort out whether we need to do transparency jiggery-pokery */ - if (drawable_type == INDEXEDA_IMAGE) + if ((drawable_type == INDEXEDA_IMAGE)||(drawable_type == GRAYA_IMAGE)) { /* If there appear to be no entries left in the colourmap in which to put the transparent index, try to find an entry which @@ -1320,8 +1500,20 @@ BitsPerPixel = colorstobpp (colors); /* BitsPerPixel = 8;*/ - GIFEncodeGraphicControlExt (outfile, cols, rows, gsvals.interlace, 0, - transparent, + layer_name = gimp_layer_get_name(layers[i]); + + Disposal = parse_disposal_tag(layer_name); + Delay89 = parse_ms_tag(layer_name); + + g_free(layer_name); + + if (Delay89 < 0) + Delay89 = gsvals.default_delay/10; + else + Delay89 /= 10; + + GIFEncodeGraphicControlExt (outfile, Disposal, Delay89, nlayers, cols, + rows, gsvals.interlace, 0, transparent, BitsPerPixel, Red, Green, Blue, GetPixel); GIFEncodeImageData (outfile, cols, rows, gsvals.interlace, 0, @@ -1346,15 +1538,27 @@ } static gint -save_dialog () +save_dialog ( gint32 image_ID ) { GtkWidget *dlg; GtkWidget *button; GtkWidget *toggle; + GtkWidget *label; + GtkWidget *entry; GtkWidget *frame; GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *innerframe; + GtkWidget *innervbox; + GSList *group = NULL; gchar **argv; gint argc; + gchar buffer[10]; + int nlayers; + + + gimp_image_get_layers (image_ID, &nlayers); + argc = 1; argv = g_new (gchar *, 1); @@ -1387,8 +1591,9 @@ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); gtk_widget_show (button); - /* parameter settings */ - frame = gtk_frame_new ("Save Options"); + + /* regular gif parameter settings */ + frame = gtk_frame_new ("GIF Options"); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); gtk_container_border_width (GTK_CONTAINER (frame), 10); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); @@ -1406,6 +1611,102 @@ gtk_widget_show (vbox); gtk_widget_show (frame); + + + /* additional animated gif parameter settings */ + frame = gtk_frame_new ("Animated GIF Options"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); + vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (vbox), 5); + gtk_container_add (GTK_CONTAINER (frame), vbox); + + toggle = gtk_check_button_new_with_label ("Loop"); + gtk_box_pack_start (GTK_BOX (vbox), toggle, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &gsvals.loop); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), gsvals.loop); + gtk_widget_show (toggle); + + + /* default_delay entry field */ + hbox = gtk_hbox_new (FALSE, 5); + gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0); + + label = gtk_label_new ("Default delay between frames where unspecified: "); + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 0); + gtk_widget_show (label); + + entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0); + gtk_widget_set_usize (entry, 80, 0); + sprintf (buffer, "%d", gsvals.default_delay); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) save_entry_callback, + NULL); + gtk_widget_show (entry); + + label = gtk_label_new (" milliseconds"); + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 0); + gtk_widget_show (label); + + gtk_widget_show (hbox); + + + /* Disposal selector */ + innerframe = gtk_frame_new ("Default disposal where unspecified"); + gtk_frame_set_shadow_type (GTK_FRAME (innerframe), GTK_SHADOW_IN); + gtk_container_border_width (GTK_CONTAINER (innerframe), 10); + gtk_box_pack_start (GTK_BOX (vbox), innerframe, TRUE, TRUE, 0); + innervbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (innervbox), 5); + gtk_container_add (GTK_CONTAINER (innerframe), innervbox); + + toggle = gtk_radio_button_new_with_label (group,"Don't care"); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (innervbox), toggle, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &radio_pressed[0]); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), radio_pressed[0]); + gtk_widget_show (toggle); + + toggle = gtk_radio_button_new_with_label (group,"One frame per layer (replace)"); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (innervbox), toggle, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &radio_pressed[2]); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), radio_pressed[2]); + gtk_widget_show (toggle); + + toggle = gtk_radio_button_new_with_label (group,"Make frame from cumulative layers (combine)"); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (innervbox), toggle, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &radio_pressed[1]); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), radio_pressed[1]); + gtk_widget_show (toggle); + + gtk_widget_show (innervbox); + gtk_widget_show (innerframe); + + + + gtk_widget_show (vbox); + + /* If the image has only one layer it can't be animated, so + desensitize the animation options. */ + if (nlayers == 1) gtk_widget_set_sensitive (frame, FALSE); + + gtk_widget_show (frame); + + + gtk_widget_show (dlg); gtk_main (); @@ -1490,7 +1791,7 @@ if (curx == Width) { cur_progress++; - if ((cur_progress % 10) == 0) + if ((cur_progress % 16) == 0) gimp_progress_update ((double) cur_progress / (double) max_progress); curx = 0; @@ -1668,6 +1969,9 @@ static void GIFEncodeGraphicControlExt (FILE *fp, + int Disposal, + int Delay89, + int NumFramesInImage, int GWidth, int GHeight, int GInterlace, @@ -1721,14 +2025,30 @@ /* * Write out extension for transparent colour index, if necessary. */ - if (Transparent >= 0) + if ( (Transparent >= 0) || (NumFramesInImage > 1) ) { + /* Extension Introducer - fixed. */ fputc ('!', fp); + /* Graphic Control Label - fixed. */ fputc (0xf9, fp); + /* Block Size - fixed. */ fputc (4, fp); - fputc (0x01 | 0x08, fp); /* DISPOSAL TYPE HARDWIRED FOR NOW */ - fputc (10, fp); - fputc (0, fp); /* FRAME RATE HARDWIRED TO 10fps FOR NOW */ + + /* Packed Fields - XXXdddut (d=disposal, u=userInput, t=transFlag) */ + /* s8421 */ + fputc ( ((Transparent >= 0) ? 0x01 : 0x00) /* TRANSPARENCY */ + + /* DISPOSAL */ + | ((NumFramesInImage > 1) ? (Disposal << 2) : 0x00 ), + /* 0x03 or 0x01 build frames cumulatively */ + /* 0x02 clears frame before drawing */ + /* 0x00 'don't care' */ + + fp); + + fputc (Delay89 & 255, fp); + fputc ((Delay89>>8) & 255, fp); + fputc (Transparent, fp); fputc (0, fp); } @@ -2115,29 +2435,7 @@ free_ent = ClearCode + 2; - - /* - * I had to insert this or else the second image through this - * routine would be garbled. I think that this is because otherwise - * it would cheerfully carry on compressing this image with the code - * tables from the previous image (from the GIF specs this looks like - * quite valid behaviour, but decoders don't agree); in that case this - * code should ideally be going at the end of the compression routine, - * but _that_ doesn't work. Ho hum. (--Adam) - */ - /* cl_block();*/ - /* - * This is the culprit - but I really don't understand why. - * What I *do* know is that there are far too many global variables - * in this code! :^) - * - * Update: I found the problem (I hope) - more globals were lurking - * around with values from the old run (cur_bits, cur_accum). Sigh. - * - * So the above line is commented out. If you have further problems - * with corrupt animated GIFs being saved, please try uncommenting - * the above line any let me know if it helps. (--Adam) - */ + /* Had some problems here... should be okay now. --Adam */ n_bits = g_init_bits; maxcode = MAXCODE (n_bits); @@ -2408,16 +2706,6 @@ } -/* Image comment functions */ - -static void -do_nothing_callback (GtkWidget *widget, - gpointer data) -{ - return; -} - - /* Save interface functions */ static void @@ -2447,6 +2735,19 @@ *toggle_val = TRUE; else *toggle_val = FALSE; +} + +static void +save_entry_callback (GtkWidget *widget, + gpointer data) +{ + gsvals.default_delay = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); + + if (gsvals.default_delay < 0) + gsvals.default_delay = 0; + + if (gsvals.default_delay > 65000) + gsvals.default_delay = 65000; } /* The End */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/gradmap.c gimp-0.99.pre11/plug-ins/gradmap.c --- gimp-0.99.10/plug-ins/gradmap.c Fri Jun 6 02:09:22 1997 +++ gimp-0.99.pre11/plug-ins/gradmap.c Wed Aug 13 20:31:36 1997 @@ -1,7 +1,7 @@ -/* - * This is a plugin for the GIMP v1.0. +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis * - * gradmap.c -- produce Gradient Map + * Gradient Map plug-in * Copyright (C) 1997 Eiichi Takamori * * This program is free software; you can redistribute it and/or modify @@ -17,29 +17,33 @@ * 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., 675 Mass Ave, Cambridge, MA 02139, USA. - * */ /* - * $Id: gradmap.c 1.3 Wed, 04 Jun 1997 22:56:59 -0700 pmattis $ - * - * This plug-in requires GIMP v0.99.7 (or above). - * - * This plug-in maps the image with the custom gradient (specified in - * the gradient editor). - * - * This version is very alpha, since I believe there's a memory leak - * somewhere in the code. + * version 1.06 + * This plug-in requires GIMP v0.99.10 or above. * - * The trick is very cheap that this plug-in creates new image and - * layer, blends it and then remap the contents of specified drawable - * using it. I don't know how to clean up when the temporary image is - * no longer needed. :-( - * - * Feel free about to correct my WRONG English, or to modify Plug-in Path, - * and so on. ;-) + * This plug-in maps the image using active gradient. (See help_string + * in query ()). * * Eiichi Takamori + * http://ha1.seikyou.ne.jp/home/taka/gimp/ + * + * Changes from version 1.05 to version 1.06: + * - Fixed bug that completely white pixel (= grayscale 255) was not + * mapped properly. (Thanks to Dov Grobgeld) + * + * Changes from version 1.04 to version 1.05: + * - Now it uses gimp_gradients_sample_uniform () instead of blend + * tool. Maybe right thing. + * + * Changes from revision 1.1 to version 1.04: + * - Fix bug that it didn't work with alpha channel. + * - Changed calling `gimp_blend' so that it works in v0.99.9. + * - Changed calling `gimp_blend' so that it works with Quartic's + * asupsample patch. + * - Fix the way to calculate luminosity of RGB image. + * (Thanks to Michael Lamertz) */ #include @@ -47,30 +51,36 @@ #include #include "libgimp/gimp.h" +#ifdef RCSID +static char rcsid[] = "$Id: gradmap.c,v 1.6 1997/06/12 15:35:42 takamori Exp $"; +#endif + /* Some useful macros */ -#define TILE_CACHE_SIZE 16 -#define BOUNDS(a,x,y) ((a < x) ? x : ((a > y) ? y : a)) +#define NSAMPLES 256 +#define TILE_CACHE_SIZE 32 +#define BOUNDS(a,x,y) ((a < x) ? x : ((a > y) ? y : a)) +#define LUMINOSITY(X) (X[0] * 0.30 + X[1] * 0.59 + X[2] * 0.11) /* Declare a local function. */ -static void query (void); -static void run (gchar *name, - gint nparams, - GParam *param, - gint *nreturn_vals, - GParam **return_vals); +static void query (void); +static void run (gchar *name, + gint nparams, + GParam *param, + gint *nreturn_vals, + GParam **return_vals); -static void gradmap (GDrawable *drawable); -static guchar *get_custom_gradient( GDrawable *drawable ); +static void gradmap (GDrawable *drawable); +static guchar * get_samples (GDrawable *drawable ); GPlugInInfo PLUG_IN_INFO = { - NULL, /* init_proc */ - NULL, /* quit_proc */ + NULL, /* init_proc */ + NULL, /* quit_proc */ query, /* query_proc */ - run, /* run_proc */ + run, /* run_proc */ }; MAIN (); @@ -87,10 +97,18 @@ static GParamDef *return_vals = NULL; static gint nargs = sizeof (args) / sizeof (args[0]); static gint nreturn_vals = 0; + gchar *help_string = + " This plug-in maps the contents of the specified drawable with" + " active gradient. It calculates luminosity of each pixel and" + " replaces the pixel by the sample of active gradient at the" + " position proportional to that luminosity. Complete black pixel" + " becomes the leftmost color of the gradient, and complete white" + " becomes the rightmost. Works on both Grayscale and RGB image" + " with/without alpha channel."; gimp_install_procedure ("plug_in_gradmap", - "Map the contents of the specified drawable with the cusom gradient", - "This plug-in maps the contents of the specified drawable with the cusom gradient. Black becomes the leftmost color of the gradient, and white becomes the rightmost. Other intermediate colors become the related color of the gradient. Works on grayscale and RGB image with or without alpha channel.", + "Map the contents of the specified drawable with active gradient", + help_string, "Eiichi Takamori", "Eiichi Takamori", "1997", @@ -113,8 +131,6 @@ GRunModeType run_mode; GStatusType status = STATUS_SUCCESS; - g_debug ("gradmap"); - run_mode = param[0].data.d_int32; *nreturn_vals = 1; @@ -126,7 +142,7 @@ /* Get the specified drawable */ drawable = gimp_drawable_get (param[2].data.d_drawable); - /* Make sure that the drawable is gray or RGB color */ + /* Make sure that the drawable is gray or RGB color */ if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id)) { gimp_progress_init ("Gradient Map..."); @@ -151,27 +167,27 @@ static void gradmap (GDrawable *drawable) { - GPixelRgn src_rgn, dest_rgn; - gpointer pr; - guchar *src_row, *dest_row; - guchar *src, *dest; - guchar *gradient, *grad; - gint x1, y1, x2, y2; - gint row, col; - gint alpha, has_alpha, bpp, b; - gint is_color; - gint progress, max_progress; - gint grayscale; + GPixelRgn src_rgn, dest_rgn; + gpointer pr; + guchar *src_row, *dest_row; + guchar *src, *dest; + gint progress, max_progress; + gint x1, y1, x2, y2; + gint row, col; + gint bpp, color, has_alpha, alpha; + guchar *samples, *samp; + gint lum; /* luminosity */ + gint b; gimp_drawable_mask_bounds (drawable->id, &x1, &y1, &x2, &y2); bpp = alpha = gimp_drawable_bpp( drawable->id ); + color = gimp_drawable_color( drawable->id ); has_alpha = gimp_drawable_has_alpha( drawable->id ); if( has_alpha ) alpha--; - is_color = gimp_drawable_color( drawable->id ); - gradient = get_custom_gradient(drawable); + samples = get_samples (drawable); gimp_pixel_rgn_init (&src_rgn, drawable, x1, y1, x2-x1, y2-y1, FALSE, FALSE); gimp_pixel_rgn_init (&dest_rgn, drawable, x1, y1, x2-x1, y2-y1, TRUE, TRUE); @@ -180,8 +196,6 @@ progress = 0; max_progress = (x2 - x1) * (y2 - y1); - /* g_debug("gradmap"); */ - for (pr = gimp_pixel_rgns_register (2, &src_rgn, &dest_rgn); pr != NULL; pr = gimp_pixel_rgns_process (pr)) { @@ -195,14 +209,17 @@ for ( col = 0; col < src_rgn.w; col++ ) { - if( is_color ) - grayscale = ( src[0] + src[1] + src[2] ) / 3; + if( color ) + { + lum = LUMINOSITY (src); + lum = BOUNDS (lum, 0, 255); /* to make sure */ + } else - grayscale = src[0]; + lum = src[0]; - grad = &gradient[ grayscale * bpp ]; - for( b = 0; bid, TRUE); gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); } -#define NUM_GRAD 256 - +/* + Returns 256 samples of active gradient. + Each sample has (gimp_drawable_bpp (drawable->id)) bytes. + */ static guchar * -get_custom_gradient( GDrawable *drawable ) +get_samples (GDrawable *drawable) { - GImageType image_type; - gint image_id; - GDrawableType layer_type; - gint layer_id; - GDrawable *layer_drawable; - guchar *gradient; - GPixelRgn srcrgn; - GParam *return_vals; - gint nreturn_vals; - gint bpp; + gdouble *f_samples, *f_samp; /* float samples */ + guchar *b_samples, *b_samp; /* byte samples */ + gint bpp, color, has_alpha, alpha; + gint i, j; - layer_type = gimp_drawable_type( drawable->id ); - switch( layer_type ) - { - case RGB_IMAGE: - case RGBA_IMAGE: - image_type = RGB; - break; - case GRAY_IMAGE: - case GRAYA_IMAGE: - image_type = GRAY; - break; - default: - printf("This plug-in doesn't support index image.\n"); - return NULL; - break; - } + f_samples = gimp_gradients_sample_uniform (NSAMPLES); - image_id = gimp_image_new ( NUM_GRAD, 1, image_type ); - if( image_id < 0 ) { - printf("image_new failed\n"); - return NULL; - } - layer_id = gimp_layer_new ( image_id, "Layer 1", NUM_GRAD, 1, layer_type, - 100, NORMAL_MODE ); - if( layer_id < 0 ) { - printf("layer_new failed\n"); - return NULL; - } - gimp_image_add_layer ( image_id, layer_id, 0 ); - - - return_vals = - gimp_run_procedure ( "gimp_blend", &nreturn_vals, - PARAM_IMAGE, image_id, - PARAM_DRAWABLE, layer_id, - PARAM_INT32, 3, /* blend_mode = CUSTOM */ - PARAM_INT32, 0, /* paint_mode = NORMAL */ - PARAM_INT32, 0, /* gradient_type = LINEAR */ - PARAM_FLOAT, 100.0, /* opacity = 100 */ - PARAM_FLOAT, 0.0, /* offset = 0 */ - PARAM_INT32, 0, /* repeat = 0 */ - PARAM_INT32, FALSE, /* supersample */ - PARAM_INT32, 0, /* max depth */ - PARAM_FLOAT, 0.0, /* threshold */ - PARAM_FLOAT, 0.0, /* x1 */ - PARAM_FLOAT, 0.0, /* y1 */ - PARAM_FLOAT, (double) NUM_GRAD, /* x2 */ - PARAM_FLOAT, 0.0, /* y2 */ - PARAM_END); - gimp_destroy_params (return_vals, nreturn_vals); - - layer_drawable = gimp_drawable_get( layer_id ); - bpp = gimp_drawable_bpp ( layer_id ); - - gradient = g_new ( guchar, NUM_GRAD * bpp ); + bpp = gimp_drawable_bpp (drawable->id); + color = gimp_drawable_color (drawable->id); + has_alpha = gimp_drawable_has_alpha (drawable->id); + alpha = (has_alpha ? bpp - 1 : bpp); - gimp_pixel_rgn_init ( &srcrgn, layer_drawable, 0, 0, NUM_GRAD, 0, FALSE, FALSE ); - gimp_pixel_rgn_get_row ( &srcrgn, gradient, 0, 0, NUM_GRAD ); + b_samples = g_new (guchar, NSAMPLES * bpp); - /* THE CLEAN UP HERE IS TERRIBLE since the below line causes segv when uncommented */ - /* gimp_drawable_detach( layer_drawable ); */ + for (i = 0; i < NSAMPLES; i++) + { + b_samp = &b_samples[i * bpp]; + f_samp = &f_samples[i * 4]; + if (color) + for (j = 0; j < 3; j++) + b_samp[j] = f_samp[j] * 255; + else + b_samp[0] = LUMINOSITY (f_samp) * 255; - gimp_image_delete( image_id ); - return gradient; + if (has_alpha) + b_samp[alpha] = f_samp[3] * 255; + } + + g_free (f_samples); + return b_samples; } + diff -u --recursive --new-file gimp-0.99.10/plug-ins/hot.c gimp-0.99.pre11/plug-ins/hot.c --- gimp-0.99.10/plug-ins/hot.c Sat Apr 26 23:06:16 1997 +++ gimp-0.99.pre11/plug-ins/hot.c Wed Aug 13 20:31:36 1997 @@ -1,7 +1,7 @@ /* * file: hot/hot.c * - * $Id: hot.c 1.2 Sat, 26 Apr 1997 20:37:46 -0700 pmattis $ + * $Id: hot.c,v 1.4 1997/04/14 17:04:48 erich Exp $ */ /* @@ -40,7 +40,7 @@ * CHROMA_LIM is the limit (in IRE units) of the overall * chrominance amplitude; it should be 50 or perhaps * very slightly higher. - * + * * COMPOS_LIM is the maximum amplitude (in IRE units) allowed for * the composite signal. A value of 100 is the maximum * monochrome white, and is always safe. 120 is the absolute @@ -205,12 +205,16 @@ gimp_install_procedure("hot", "Look for hot NTSC or PAL pixels ", - "hot scans an image for pixels that will give unsafe values of chrominance or composite signale amplitude when encoded into an NTSC or PAL signal. Three actions can be performed on these ``hot'' pixels. (0) reduce luminance, (1) reduce saturation, or (2) Blacken.", + "hot scans an image for pixels that will give +unsave values of chrominance or composite +signale amplitude when encoded into an NTSC +or PAL signal. Three actions can be performed on these ``hot'' +pixels. (0) reduce luminance, (1) reduce saturation, or (2) Blacken.", "Eric L. Hernes, Alan Wm Paeth", "Eric L. Hernes", "1997", "/Filters/Image/Hot", - "RGB*", + "RGB", PROC_PLUG_IN, nargs, nrets, args, rets); @@ -243,12 +247,12 @@ args.action = act_lredux; args.new_layerp = 1; } - + if (pluginCoreIA(&args)==-1) { rvals[0].data.d_status = STATUS_EXECUTION_ERROR; } gimp_set_data("plug_in_hot", &args, sizeof(struct piArgs)); - + break; case RUN_NONINTERACTIVE: @@ -296,7 +300,7 @@ gdouble fy, fc, t, scale; gdouble pr, pg, pb; gdouble py; - + drw = gimp_drawable_get(argp->drawable); width = drw->width; @@ -313,10 +317,10 @@ "sat redux", "flag", }; - + sprintf(name, "hot mask (%s, %s)", mode_names[argp->mode], action_names[argp->action]); - + nl=gimp_layer_new(argp->image, name, width, height, RGBA_IMAGE, (gdouble)100, NORMAL_MODE); ndrw = gimp_drawable_get(nl); @@ -342,7 +346,7 @@ gimp_progress_init("Hot"); prog_interval=height/10; - + for(y=0;ynew_layerp) *d++=255; } else { - + Y = tab[0][0][r] + tab[0][1][g] + tab[0][2][b]; I = tab[1][0][r] + tab[1][1][g] + tab[1][2][b]; Q = tab[2][0][r] + tab[2][1][g] + tab[2][2][b]; - + prev_r = r; prev_g = g; prev_b = b; @@ -383,11 +387,11 @@ fy = (double)Y / (double)SCALE; fc = hypot((double)I / (double)SCALE, (double)Q / (double)SCALE); - + pr = (double)pix_decode(r); pg = (double)pix_decode(g); pb = (double)pix_decode(b); - + /* * Reducing overall pixel intensity by scaling R, * G, and B reduces Y, I, and Q by the same factor. @@ -418,12 +422,12 @@ if (t < scale) scale = t; scale = pow(scale, mode[argp->mode].gamma); - - + + r = (guint8)pix_encode(scale * pr); g = (guint8)pix_encode(scale * pg); b = (guint8)pix_encode(scale * pb); - + } else { /* act_sredux hopefully */ /* * Calculate a scale factor that will bring the @@ -440,11 +444,11 @@ t = (compos_lim - fy) / fc; if (t < scale) scale = t; - + pr = gc(pr,argp->mode); pg = gc(pg,argp->mode); pb = gc(pb,argp->mode); - py = pr * mode[argp->mode].code[0][0] + pg * + py = pr * mode[argp->mode].code[0][0] + pg * mode[argp->mode].code[0][1] + pb * mode[argp->mode].code[0][2]; r = pix_encode(inv_gc(py + scale * (pr - py), argp->mode)); @@ -470,10 +474,10 @@ } } gimp_pixel_rgn_set_rect(&dstPr, dst, 0, 0, width, height); - + free(src); free(dst); - + if(argp->new_layerp) { gimp_drawable_flush(ndrw); gimp_drawable_update(nl, 0, 0, width, height); @@ -482,9 +486,9 @@ gimp_drawable_merge_shadow (drw->id, TRUE); gimp_drawable_update(drw->id, 0, 0, width, height); } - + gimp_displays_flush(); - + return retval; } @@ -528,7 +532,7 @@ argp->mode = mw_radio_result(modes); argp->action = mw_radio_result(actions); - + if (runp) { return pluginCore(argp); } else { @@ -589,7 +593,7 @@ register long y2, c2; /* fprintf(stderr, "\tr: %d, g: %d, b: %d\n", r, g, b);*/ - + /* * Pixel decoding, gamma correction, and matrix multiplication * all done by lookup table. @@ -631,7 +635,7 @@ y2 *= y2; /* fprintf(stderr, "hotp: c2: %d; ichroma_lim2: %d; y2: %d; ", c2, ichroma_lim2, y2);*/ - + if (c2 <= ichroma_lim2 && c2 <= y2) { /* no problems */ /* fprintf(stderr, "nope\n");*/ return 0; diff -u --recursive --new-file gimp-0.99.10/plug-ins/hrz.c gimp-0.99.pre11/plug-ins/hrz.c --- gimp-0.99.10/plug-ins/hrz.c Fri Jun 6 02:09:22 1997 +++ gimp-0.99.pre11/plug-ins/hrz.c Wed Aug 13 20:31:36 1997 @@ -154,7 +154,7 @@ nsave_args, 0, save_args, NULL); - gimp_register_load_handler ("file_hrz_load", "hrz", ""); + gimp_register_magic_load_handler ("file_hrz_load", "hrz", "", "0,size,184320"); gimp_register_save_handler ("file_hrz_save", "hrz", ""); } diff -u --recursive --new-file gimp-0.99.10/plug-ins/jpeg.c gimp-0.99.pre11/plug-ins/jpeg.c --- gimp-0.99.10/plug-ins/jpeg.c Fri Jun 6 02:01:38 1997 +++ gimp-0.99.pre11/plug-ins/jpeg.c Wed Aug 13 20:31:36 1997 @@ -38,6 +38,7 @@ { gdouble quality; gdouble smoothing; + gint optimize; } JpegSaveVals; typedef struct @@ -66,6 +67,8 @@ gpointer data); static void save_scale_update (GtkAdjustment *adjustment, double *scale_val); +static void save_optimize_update (GtkWidget *widget, + gpointer data); GPlugInInfo PLUG_IN_INFO = @@ -79,7 +82,8 @@ static JpegSaveVals jsvals = { 0.75, /* quality */ - 0.0 /* smoothing */ + 0.0, /* smoothing */ + 1 /* optimize */ }; static JpegSaveInterface jsint = @@ -115,6 +119,7 @@ { PARAM_STRING, "raw_filename", "The name of the file to save the image in" }, { PARAM_FLOAT, "quality", "Quality of saved image (0 <= quality <= 1)" }, { PARAM_FLOAT, "smoothing", "Smoothing factor for saved image (0 <= smoothing <= 1)" }, + { PARAM_INT32, "optimize", "Optimization of entropy encoding parameters" }, }; static int nsave_args = sizeof (save_args) / sizeof (save_args[0]); @@ -196,12 +201,13 @@ case RUN_NONINTERACTIVE: /* Make sure all the arguments are there! */ - if (nparams != 6) + if (nparams != 7) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) { jsvals.quality = param[5].data.d_float; jsvals.smoothing = param[6].data.d_float; + jsvals.optimize = param[7].data.d_int32; } if (status == STATUS_SUCCESS && (jsvals.quality < 0.0 || jsvals.quality > 1.0)) @@ -556,6 +562,7 @@ */ jpeg_set_quality (&cinfo, (int) (jsvals.quality * 100), TRUE /* limit to baseline-JPEG values */); cinfo.smoothing_factor = (int) (jsvals.smoothing * 100); + cinfo.optimize_coding = jsvals.optimize; /* Step 4: Start compressor */ @@ -637,6 +644,7 @@ GtkWidget *scale; GtkWidget *frame; GtkWidget *table; + GtkWidget *toggle; GtkObject *scale_data; gchar **argv; gint argc; @@ -678,7 +686,7 @@ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); gtk_container_border_width (GTK_CONTAINER (frame), 10); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); - table = gtk_table_new (2, 2, FALSE); + table = gtk_table_new (3, 2, FALSE); gtk_container_border_width (GTK_CONTAINER (table), 10); gtk_container_add (GTK_CONTAINER (frame), table); @@ -714,6 +722,13 @@ gtk_widget_show (label); gtk_widget_show (scale); + toggle = gtk_check_button_new_with_label("Optimize"); + gtk_table_attach(GTK_TABLE(table), toggle, 0, 2, 2, 3, GTK_FILL, 0, 0, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc)save_optimize_update, NULL); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), jsvals.optimize); + gtk_widget_show(toggle); + gtk_widget_show (frame); gtk_widget_show (table); gtk_widget_show (dlg); @@ -747,4 +762,11 @@ double *scale_val) { *scale_val = adjustment->value; +} + +static void +save_optimize_update(GtkWidget *widget, + gpointer data) +{ + jsvals.optimize = GTK_TOGGLE_BUTTON(widget)->active; } diff -u --recursive --new-file gimp-0.99.10/plug-ins/magiceye.c gimp-0.99.pre11/plug-ins/magiceye.c --- gimp-0.99.10/plug-ins/magiceye.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/magiceye.c Wed Aug 13 21:21:17 1997 @@ -0,0 +1,338 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * --------------------------------------------------------------------------------------- + * + * Magic Eye version 0.2 + * + * This is a plugin for the gimp. + * Copyright (C) 1997 Alexander Schulz + * New versions: http://www.uni-karlsruhe.de/~Alexander.Schulz/english/gimp/gimp.html + * Mail: Alexander.Schulz@stud.uni-karlsruhe.de + * + * Some parts that deal with the interaction with the Gimp + * are modified from other plugins. + * Thanks to the other programmers. + */ + +#include +#include +#include "magiceye.h" + +/* Declare local functions. + */ + +/* static void text_callback (int, void *, void *); */ + + +gdouble strip_width; +gdouble depth; +gint from_left, up_down; +static char *prog_name; +GDrawable *map_drawable; +GStatusType status = STATUS_SUCCESS; + + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +MAIN (); + +void +query () +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image (unused)" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_INT32, "mapimage", "Map Image" }, + }; + static GParamDef return_vals[] = + { + { PARAM_IMAGE, "new_image", "Output image" }, + { PARAM_IMAGE, "new_layer", "Output layer" }, + }; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = sizeof (return_vals) / sizeof (return_vals[0]); + + gimp_install_procedure ("magiceye", + "Create a stereogram", + "Create a stereogram", + "Alexander Schulz", + "Alexander Schulz", + "1997", + "/Filters/Render/Magic Eye", + "GRAY", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[3]; + GRunModeType run_mode; + gint32 new_layer; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 3; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + values[1].type = PARAM_IMAGE; + values[1].type = PARAM_LAYER; + + /* Get the specified drawable */ + map_drawable = gimp_drawable_get (param[2].data.d_drawable); + + switch (run_mode) + { + case RUN_INTERACTIVE: + /* Possibly retrieve data */ + /* gimp_get_data ("plug_in_tile", &tvals); */ + + /* First acquire information with a dialog */ + if (! magic_dialog()) + return; + break; + + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are there! */ + /*if (nparams != 5) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) + { + tvals.new_width = param[3].data.d_int32; + tvals.new_height = param[4].data.d_int32; + } + if (tvals.new_width < 0 || tvals.new_height < 0) + status = STATUS_CALLING_ERROR;*/ + break; + + case RUN_WITH_LAST_VALS: + /* Possibly retrieve data */ + /* gimp_get_data ("plug_in_tile", &tvals); */ + break; + + default: + break; + } + + /* Make sure that the drawable is gray or RGB color */ + if (status == STATUS_SUCCESS) + { + values[1].data.d_image = magiceye (map_drawable, &new_layer); + values[2].data.d_layer = new_layer; + gimp_display_new (values[1].data.d_image); + return; + } +} + + + +gint +magiceye (GDrawable *mapimage,gint32 *layer) +{ + GDrawableType dest_type; + unsigned char *src1p; + unsigned char *src2p; + unsigned char *destp; + unsigned char *cmap; + unsigned char *savep; + unsigned char *temp_buf; + long src1_width, src1_height; + long src2_width, src2_height; + long src1_channels; + long src2_channels; + long dest_channels; + + GPixelRgn streifen_rgn; + GDrawable *streifen; + GPixelRgn dest_rgn; + GDrawable *destination; + GPixelRgn map_rgn; + + gint32 dest, image_ID; + int src1r, src1g, src1b; + int src2r, src2g, src2b; + int destr, destg, destb; + int i, j, hoehe, x, _up_down; + gint number; + + streifen = gimp_drawable_get(magiceye_ID); + image_ID=gimp_drawable_image_id(magiceye_ID); + gimp_pixel_rgn_init(&streifen_rgn, streifen, 0, 0, streifen->width, streifen->height, FALSE, FALSE); + gimp_pixel_rgn_init(&map_rgn, mapimage, 0, 0, mapimage->width, mapimage->height, FALSE, FALSE); + + dest_type = gimp_drawable_type(magiceye_ID); + + src2_channels = streifen->bpp; + + src1p = g_malloc(mapimage->width*mapimage->height); + src2p = g_malloc(streifen->width*streifen->height*src2_channels); + + gimp_pixel_rgn_get_rect(&map_rgn, src1p, 0, 0, mapimage->width, mapimage->height); + gimp_pixel_rgn_get_rect(&streifen_rgn, src2p, 0, 0, streifen->width, streifen->height); + + src2_width = streifen->width; + src2_height = streifen->height; + src1_width = mapimage->width; + src1_height = mapimage->height; + + dest_channels = src2_channels; + + + switch (dest_type){ + case RGB_IMAGE: + dest= gimp_image_new (src1_width, src1_height, RGB); + break; + case GRAY_IMAGE: + dest= gimp_image_new (src1_width, src1_height, GRAY); + break; + case INDEXED_IMAGE: + dest= gimp_image_new (src1_width, src1_height, INDEXED); + break; + default: + printf("Magic Eye: cannot operate on unknown image types or alpha images"); + /* gimp_quit (); */ + return -1; + break; + } + + *layer = gimp_layer_new (dest, "Background", src1_width, src1_height, dest_type, 100, NORMAL_MODE); + + + gimp_image_add_layer(dest,*layer,0); + destination = gimp_drawable_get(*layer); + + destp = g_malloc(mapimage->width*mapimage->height*dest_channels); + savep = destp; + + if (dest_type == INDEXED_IMAGE) + { + cmap = gimp_image_get_cmap (image_ID, &number); +#ifdef DEBUG + printf("ColorMap: %i %i \n",magiceye_ID, image_ID); + for (i=0;i strip_width; j--) + { + for (i = 0; i < src1_height; i++) + { + hoehe=src1p[i*src1_width*1+j*1] * depth / 255; + for (x=0; xwidth, destination->height, TRUE, FALSE); + gimp_pixel_rgn_set_rect(&dest_rgn, savep, 0, 0, destination->width, destination->height); + gimp_drawable_detach(destination); + g_free(src2p); + g_free(src1p); + g_free(savep); + return dest; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/magiceye.h gimp-0.99.pre11/plug-ins/magiceye.h --- gimp-0.99.10/plug-ins/magiceye.h Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/magiceye.h Wed Aug 13 21:21:17 1997 @@ -0,0 +1,32 @@ + +#include +#include + +#define STDWIDTH 80.0 +#define STDDEPTH 15.0 +#define STDUPDOWN 0 +#define STDFROMLEFT 0 + +extern gint magic_dialog(void); +extern gint magiceye_constrain(gint32 image, gint32 drawable_ID, gpointer data); +extern void toggle_update(GtkWidget *widget, gpointer data); +extern void drawable_callback(gint32 id, gpointer data); +extern void ok_callback(GtkWidget *widget, gpointer data); +extern void close_callback(GtkWidget *widget, gpointer data); +extern void magiceye_update(GtkWidget *widget, gpointer data); +extern void scale_update (GtkAdjustment *adjustment, double *scale_val); + +extern gdouble strip_width; +extern gdouble depth; +extern gint from_left; +extern gint up_down; +extern gint magiceye_ID; +extern GDrawable *map_drawable; +extern gint magiceye (GDrawable *mapimage, gint32 *layer); + +extern void query(void); +extern void run(char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); diff -u --recursive --new-file gimp-0.99.10/plug-ins/mail.c gimp-0.99.pre11/plug-ins/mail.c --- gimp-0.99.10/plug-ins/mail.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/mail.c Thu Aug 14 00:55:53 1997 @@ -0,0 +1,635 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * Copyright (C) 1997 Daniel Risacher + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * GUMP - Gimp Useless Mail Plugin (or Gump Useless Mail Plugin if you prefer) + * version about .645 I would say... give or take a few decimal points + * + * + * by Adrian Likins + * + * + * + * Based heavily on gz.c by Daniel Risacher + * + * Lets you choose to send a image to the mail from the file save as dialog. + * images are piped to uuencode and then to mail... + * + * + * This works fine for .99.10. I havent actually tried it in combination with + * the gz plugin, but it works with all other file types. I will eventually get + * around to making sure it works with gz. + * + * To use: 1) image->File->mail image + * 2) when the mail dialog popups up, fill it out. Only to: and filename are required + * note: the filename needs to a type that the image can be saved as. otherwise + * you will just send an empty message. + * 3) click ok and it should be on its way + * + + * + * NOTE: You probabaly need sendmail installed. If your sendmail is in an odd spot + * you can change the #define below. If you use qmail or other MTA's, and this + * works after changing the MAILER, let me know how well or what changes were + * needed. + * + * NOTE: Uuencode is needed. If it is in the path, it should work fine as is. Other- + * wise just change the UUENCODE. + * + * + * TODO: 1) the aforementioned abilty to specify the + * uuencode filename *done* + * 2) someway to do this without tmp files + * * wont happen anytime soon* + * 3) MIME? + * 4) a pointlessly snazzier dialog + * 5) make sure it works with gz + * * works for .xcfgz but not .xcf.gz * + * 6) add an option to choose if mail get + * uuencode or not (or MIME'ed for that matter) + * 7) realtime preview + * 8) better entry for comments + * 9) list of frequently used addreses + * 10) openGL compliance + * 11) better handling of filesave errors + * + * + * Version history + * .5 - 6/30/97 - inital relese + * .51 - 7/3/97 - fixed a few spelling errors and the like + * .65 - 7/4/97 - a fairly significant revision. changed it from a file + * plugin to an image plugin. + * - Changed some strcats into strcpy to be a bit more robust. + * - added the abilty to specify the filename you want it sent as + * - no more annoying hassles with the file saves as dialog + * - plugin now registers itself as /File/Mail image + * + * As always: The utility of this plugin is left as an exercise for the reader + * + */ +#ifndef MAILER +#define MAILER "/usr/lib/sendmail" +#endif + +#ifndef UUENCODE +#define UUENCODE "uuencode" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" + + +static void query (void); +static void run (char *name, + int nparams, + GParam * param, + int *nreturn_vals, + GParam ** return_vals); + + +static gint save_image (char *filename, + gint32 image_ID, + gint32 drawable_ID, + gint32 run_mode); + +static gint save_dialog (); +static void close_callback (GtkWidget * widget, gpointer data); +static void ok_callback (GtkWidget * widget, gpointer data); +static void receipt_callback (GtkWidget * widget, gpointer data); +static void subject_callback (GtkWidget * widget, gpointer data); +static void comment_callback (GtkWidget * widget, gpointer data); +static void filename_callback (GtkWidget * widget, gpointer data); +static int valid_file (char *filename); +static void create_headers (FILE * mailpipe); +static char *find_extension (char *filename); + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + + +typedef struct + { + char receipt[256]; + char subject[256]; + char comment[256]; + char filename[256]; + } +m_info; + +static m_info mail_info = { + /* I would a assume there is a better way to do this, but this works for now */ + "\0", + "\0", + "\0", + "\0", +}; + +static int run_flag = 0; + +MAIN (); + +static void +query () +{ + + static GParamDef args[] = + { + {PARAM_INT32, "run_mode", "Interactive, non-interactive"}, + {PARAM_IMAGE, "image", "Input image"}, + {PARAM_DRAWABLE, "drawable", "Drawable to save"}, + {PARAM_STRING, "filename", "The name of the file to save the image in"}, + {PARAM_STRING, "receipt", "The email address to send to"}, + {PARAM_STRING, "subject", "The subject"}, + {PARAM_STRING, "comment", "The Comment"} + }; + static int nargs = sizeof (args) / sizeof (args[0]); + static GParamDef *return_vals = NULL; + static int nreturn_vals = 0; + + gimp_install_procedure ("plug_in_mail_image", + "pipe files to uuencode then mail them", + "You need to have uuencode and mail installed", + "Adrian Likins", + "Adrian Likins, Daniel Risacher, Spencer Kimball and Peter Mattis", + "1995-1997", + "/File/Mail image", + "RGB*, GRAY*, INDEXED*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); + +} + + +static void +run (char *name, + int nparams, + GParam * param, + int *nreturn_vals, + GParam ** return_vals) +{ + static GParam values[2]; + GRunModeType run_mode; + gint32 drawable_ID; + GStatusType status = STATUS_SUCCESS; + gint32 image_ID; + + + run_mode = param[0].data.d_int32; + drawable_ID = param[2].data.d_drawable; + image_ID = param[1].data.d_image; + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_CALLING_ERROR; + + if (strcmp (name, "plug_in_mail_image") == 0) + { + switch (run_mode) + { + case RUN_INTERACTIVE: + gimp_get_data ("plug_in_mail_image", &mail_info); + if (!save_dialog ()) + return; + break; + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are there! */ + if (nparams != 7) + status = STATUS_CALLING_ERROR; + if(status == STATUS_SUCCESS) + { + /* this hasnt been tested yet */ + strncpy (mail_info.filename, param[3].data.d_string,256); + strncpy (mail_info.receipt, param[4].data.d_string,256); + strncpy (mail_info.subject, param[5].data.d_string,256); + strncpy (mail_info.comment, param[6].data.d_string,256); + } + break; + case RUN_WITH_LAST_VALS: + gimp_get_data ("plug_in_mail_image", &mail_info); + break; + + default: + break; + } + + *nreturn_vals = 1; + if (save_image (mail_info.filename, + image_ID, + drawable_ID, + run_mode)) + { + values[0].data.d_status = STATUS_SUCCESS; + } + else + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + else + g_assert (FALSE); +} + +static gint +save_image (char *filename, + gint32 image_ID, + gint32 drawable_ID, + gint32 run_mode) +{ + + GParam *params; + gint retvals; + char *ext; + char *tmpname; + char mailcmdline[512]; + int pid; + int status; + FILE *mailpipe; + + + if (NULL == (ext = find_extension (filename))) + return -1; + + /* get a temp name with the right extension and save into it. */ + params = gimp_run_procedure ("gimp_temp_name", + &retvals, + PARAM_STRING, ext + 1, + PARAM_END); + tmpname = params[1].data.d_string; + + /* construct the "sendmail user@location" line */ + strcpy (mailcmdline, MAILER); + strcat (mailcmdline, " "); + strcat (mailcmdline, mail_info.receipt); + + /* create a pipe to sendmail */ + mailpipe = popen (mailcmdline, "w"); + create_headers (mailpipe); + + /* This is necessary to make the comments and headers work correctly. Not real sure why */ + fflush (mailpipe); + + params = gimp_run_procedure ("gimp_file_save", + &retvals, + PARAM_INT32, run_mode, + PARAM_IMAGE, image_ID, + PARAM_DRAWABLE, drawable_ID, + PARAM_STRING, tmpname, + PARAM_STRING, tmpname, + PARAM_END); + + /* need to figure a way to make sure the user is trying to save in an approriate format */ + /* but this can wait.... */ + + if (params[0].data.d_status == FALSE || !valid_file (tmpname)) + { + unlink (tmpname); + return -1; + } + + +/* fork off a uuencode process */ + if ((pid = fork ()) < 0) + { + g_warning ("mail: fork failed: %s\n", g_strerror (errno)); + return -1; + } + else if (pid == 0) + { + if (-1 == dup2 (fileno (mailpipe), fileno (stdout))) + { + g_warning ("mail: dup2 failed: %s\n", g_strerror (errno)); + } + + /* and uuencode into it */ + execlp ("uuencode", UUENCODE, tmpname, filename, NULL); + + /* close the pipe now */ + pclose (mailpipe); + + /* show error if neccesary */ + g_warning ("mail: exec failed: uuencode: %s\n", g_strerror (errno)); + _exit (127); + } + else + { + waitpid (pid, &status, 0); + + if (!WIFEXITED (status) || + WEXITSTATUS (status) != 0) + { + g_warning ("mail: mail didnt work or something on file %s\n", tmpname); + return 0; + } + } + /* delete the tmpfile that was generated */ + unlink (tmpname); + return TRUE; +} + + +static gint +save_dialog () +{ + GtkWidget *dlg; + GtkWidget *button; + GtkWidget *entry; + GtkWidget *table; + GtkWidget *label; + gint argc; + gchar **argv; + gchar buffer[32]; + + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("mail"); + + gtk_init (&argc, &argv); + gtk_rc_parse (gimp_gtkrc ()); + + dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Send to mail"); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) close_callback, NULL); + /* action area */ + /* Okay buton */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) ok_callback, + dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + + /* cancel button */ + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_widget_show (button); + + /* table */ + table = gtk_table_new (4, 2, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), table, TRUE, TRUE, 0); + gtk_widget_show (table); + + gtk_table_set_row_spacings (GTK_TABLE (table), 10); + gtk_table_set_col_spacings (GTK_TABLE (table), 10); + + /* To: Label */ + label = gtk_label_new ("To:"); + gtk_table_attach (GTK_TABLE (table), label, + 0, 1, 0, 1, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, 0); + gtk_widget_show (label); + + /* to: dialog */ + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, + 1, 2, 0, 1, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, 0); + gtk_widget_set_usize (entry, 200, 0); + sprintf (buffer, "%s", mail_info.receipt); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) receipt_callback, &mail_info.receipt); + gtk_widget_show (entry); + + /* subject Label */ + label = gtk_label_new ("Subject:"); + gtk_table_attach (GTK_TABLE (table), label, + 0, 1, 1, 2, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, 0); + gtk_widget_show (label); + + /* Subject entry */ + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, + 1, 2, 1, 2, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, 0); + gtk_widget_set_usize (entry, 200, 0); + sprintf (buffer, "%s", mail_info.subject); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) subject_callback, &mail_info.subject); + gtk_widget_show (entry); + + + /* Comment label */ + label = gtk_label_new ("Comment:"); + gtk_table_attach (GTK_TABLE (table), label, + 0, 1, 2, 3, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, 0); + gtk_widget_show (label); + + /* Comment dialog */ + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, + 1, 2, 2, 3, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, 0); + gtk_widget_set_usize (entry, 200, 0); + sprintf (buffer, "%s", mail_info.comment); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) comment_callback, &mail_info.comment); + gtk_widget_show (entry); + + /* filename label */ + label = gtk_label_new ("Filename:"); + gtk_table_attach (GTK_TABLE (table), label, + 0, 1, 3, 4, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, 0); + gtk_widget_show (label); + + /* Filename dialog */ + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, + 1, 2, 3, 4, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, 0); + gtk_widget_set_usize (entry, 200, 0); + sprintf (buffer, "%s", mail_info.filename); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) filename_callback, &mail_info.filename); + gtk_widget_show (entry); + + + gtk_widget_show (dlg); + gtk_main (); + gdk_flush (); + return run_flag; + +} + +static int +valid_file (char *filename) +{ + int stat_res; + struct stat buf; + + stat_res = stat (filename, &buf); + + if ((0 == stat_res) && (buf.st_size > 0)) + return 1; + else + return 0; +} + +static char * +find_extension (char *filename) +{ + char *filename_copy; + char *ext; + + /* this whole routine needs to be redone so it works for xccfgz and .gz files */ + /* not real sure where to start...... */ + /* right now saving for .xcfgz works but not .xcf.gz */ + /* this is all pretty close to straight from gz. It needs to be changed to */ + /* work better for this plugin */ + /* ie, FIXME */ + + /* we never free this copy - aren't we evil! */ + filename_copy = malloc (strlen (filename) + 1); + strcpy (filename_copy, filename); + + + /* find the extension, boy! */ + ext = strrchr (filename_copy, '.'); + + while (1) + { + if (!ext || ext[1] == 0 || strchr (ext, '/')) + { + g_warning ("mail: some sort of error with the file extension or lack thereof \n"); + + return NULL; + } + if (0 != strcmp(ext,".gz")) + { + return ext; + } + else + { + /* we found somehting, loop back, and look again */ + *ext = 0; + ext = strrchr (filename_copy, '.'); + } + } + return ext; +} + + +static void +close_callback (GtkWidget * widget, gpointer data) +{ + gtk_main_quit (); +} + +static void +ok_callback (GtkWidget * widget, gpointer data) +{ + run_flag = 1; + gtk_widget_destroy (GTK_WIDGET (data)); +} + +static void +receipt_callback (GtkWidget * widget, gpointer data) +{ + strncpy (mail_info.receipt, gtk_entry_get_text (GTK_ENTRY (widget)), 256); +} + +static void +subject_callback (GtkWidget * widget, gpointer data) +{ + strncpy (mail_info.subject, gtk_entry_get_text (GTK_ENTRY (widget)), 256); +} + +static void +comment_callback (GtkWidget * widget, gpointer data) +{ + strncpy (mail_info.comment, gtk_entry_get_text (GTK_ENTRY (widget)), 256); +} + + +static void +filename_callback (GtkWidget * widget, gpointer data) +{ + strncpy (mail_info.filename, gtk_entry_get_text (GTK_ENTRY (widget)), 256); +} + +static void +create_headers (FILE * mailpipe) +{ + /* create all the mail header stuff. Feel free to add your own */ + /* It is advisable to leave the X-Mailer header though, as */ + /* there is a possibilty of a Gimp mail scanner/reader in the */ + /* future. It will probabaly need that header. */ + + fprintf (mailpipe, "To: %s \n", mail_info.receipt); + fprintf (mailpipe, "Subject: %s \n", mail_info.subject); + fprintf (mailpipe, "X-Mailer: GIMP Useless Mail Program v.65\n"); + fprintf (mailpipe, "X-GUMP-Author: Adrian Likins\n"); + fprintf (mailpipe, "\n\n"); + fprintf (mailpipe, mail_info.comment); + fprintf (mailpipe, "\n\n"); +} + + + + + + + + + + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/maze.c gimp-0.99.pre11/plug-ins/maze.c --- gimp-0.99.10/plug-ins/maze.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/maze.c Wed Aug 13 21:06:04 1997 @@ -0,0 +1,869 @@ +/* maze.c, version 0.3.0, 01 July 1997 + * This is a plug-in for the GIMP. + * It draws mazes... walls and passages are 1 pixel wide. + * + * Implemented as a GIMP 0.99 Plugin by + * Kevin Turner + * + * mazegen code from rec.games.programmer's maze-faq: + * * maz.c - generate a maze + * * + * * algorithm posted to rec.games.programmer by jallen@ic.sunysb.edu + * * program cleaned and reorganized by mzraly@ldbvax.dnet.lotus.com + * * + * * don't make people pay for this, or I'll jump up and down and + * * yell and scream and embarass you in front of your friends... + * + * Code generously borrowed from assorted GIMP plugins + * and used as a template to get me started on this one. :) + * + * Revision history: + * 0.3.0 - Maze is centered with dead space around outside + * - Width slider works... And does stuff! + * - Allows partial mazes to be generated with "broken" multiple + * and offset values. + * 0.1.99 - Has dialog box with seed, multiple, and offset. + * 0.1.0 - First release. It works! :) + * + * TO DO: + * Fix that stray line down there between maze wall and dead space border... + * + * Make get_colors() work with indexed and gray. + * + * Tileable mazes are fun :) + * + * If we add many more paramaters, we'll need a preview box. + * + * Also someday: + * Maybe make it work with irregularly shaped selections? + * Add different generation algorythms. + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include /* For random seeding */ +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" +#include "libgimp/gimpui.h" + +#define ENTRY_WIDTH 75 +/* entscale stuff begin */ +#define ENTSCALE_INT_SCALE_WIDTH 125 +#define ENTSCALE_INT_ENTRY_WIDTH 40 +/* entscale stuff end */ + +typedef struct { + gint seed; + gint multiple; + gint offset; + gint width; +} MazeValues; + +typedef struct { + gint run; +} MazeInterface; + +/* entscale stuff begin */ +typedef void (*EntscaleIntCallbackFunc) (gint value, gpointer data); + +typedef struct { + GtkObject *adjustment; + GtkWidget *entry; + gint constraint; + EntscaleIntCallbackFunc callback; + gpointer call_data; +} EntscaleIntData; +/* entscale stuff end */ + +static void query (void); +static void run (gchar *name, + gint nparams, + GParam *param, + gint *nreturn_vals, + GParam **return_vals); +static void maze (GDrawable * drawable); +static gint mazegen(gint pos, + gchar *maz, + gint x, + gint y, + gint rnd); +static void get_colors (GDrawable * drawable, + guint8 *fg, + guint8 *bg); + +static gint maze_dialog (void); +static void maze_close_callback (GtkWidget *widget, gpointer data); +static void maze_ok_callback (GtkWidget *widget, gpointer data); +static void maze_entry_callback (GtkWidget *widget, gpointer data); + +/* entscale stuff begin */ +void entscale_int_new ( GtkWidget *table, gint x, gint y, + gchar *caption, gint *intvar, + gint min, gint max, gint constraint, + EntscaleIntCallbackFunc callback, + gpointer data ); + +static void entscale_int_destroy_callback (GtkWidget *widget, + gpointer data); +static void entscale_int_scale_update (GtkAdjustment *adjustment, + gpointer data); +static void entscale_int_entry_update (GtkWidget *widget, + gpointer data); +/* entscale stuff end */ +/* message box stuff begin */ +GtkWidget * message_box (char *, GtkCallback, gpointer); +/* message box stuff end */ + + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +static MazeValues mvals = +{ + 0, /* seed */ + 57, /* multiple * These two had "Experiment with this?" comments */ + 1, /* offset * in the maz.c source, so, lets expiriment. :) */ + 1 /* Passage width */ +}; + +static MazeInterface mint = +{ + FALSE /* run */ +}; + +MAIN (); + +static void +query () +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image (unused)" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + /* If we did have parameters, these be them: */ + { PARAM_INT32, "maze_rseed", "Random Seed"}, + { PARAM_INT32, "maze_multiple", "Multiple (?)" }, + { PARAM_INT32, "maze_offset", "Offset (?)" }, + { PARAM_INT32, "mazep_size", "Size of the passages" } + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure ("plug_in_maze", + "Generates a maze.", + "Generates a maze using the depth-first search method.", + "Kevin Turner ", + "Kevin Turner", + "1997", + "/Filters/Render/Maze", + "RGB*, GRAY*, INDEXED*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run (gchar *name, + gint nparams, + GParam *param, + gint *nreturn_vals, + GParam **return_vals) +{ + static GParam values[1]; + GDrawable *drawable; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + drawable = gimp_drawable_get (param[2].data.d_drawable); + + switch (run_mode) { + case RUN_INTERACTIVE: + /* Possibly retrieve data */ + gimp_get_data ("plug_in_maze", &mvals); + + /* Acquire info with a dialog */ + if (! maze_dialog ()) { + gimp_drawable_detach (drawable); + return; + } + break; + + case RUN_NONINTERACTIVE: + /* Make sure all arguements are there! */ + if (nparams != 6) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) { + mvals.seed = (gint) param[3].data.d_int32; + mvals.multiple = (gint) param[4].data.d_int32; + mvals.offset = (gint) param[5].data.d_int32; + mvals.width = (gint) param[6].data.d_int32; + } + /* Warning: No error checking performed on inputs. */ + break; + + case RUN_WITH_LAST_VALS: + /* Possibly retrieve data */ + gimp_get_data ("plug_in_maze", &mvals); + mvals.seed=time(0L); /* ** USES NEW SEED when reruning with "last" */ + /* values. Maybe not the Right Thing, but I find it handy. */ + break; + + default: + break; + } + + /* color, gray, or indexed... hmm, miss anything? ;) */ + if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id) || gimp_drawable_indexed (drawable->id)) { + gimp_progress_init ("Drawing Maze..."); + + maze (drawable); + + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush (); + + if (run_mode == RUN_INTERACTIVE || run_mode == RUN_WITH_LAST_VALS) + gimp_set_data ("plug_in_maze", &mvals, sizeof (MazeValues)); + } else { + status = STATUS_EXECUTION_ERROR; + } + + values[0].data.d_status = status; + + gimp_drawable_detach (drawable); +} + +static void +maze( GDrawable * drawable) +{ + GPixelRgn dest_rgn; + guchar *dest_row; + guchar *dest; + gint mw, mh, mx, my; + gint deadx, deady; + gint progress, max_progress; + gint x1, y1, x2, y2, x, y; + guint8 fg[4],bg[4]; + gint bp; + gpointer pr; + + gchar *maz; + gint i, rnd, val; + + /* Gets the input area... */ + gimp_drawable_mask_bounds (drawable->id, &x1, &y1, &x2, &y2); + + /* Initialize pixel region (?) */ + gimp_pixel_rgn_init (&dest_rgn, drawable, x1, y1, (x2 - x1), (y2 - y1), TRUE, TRUE); + + progress = 0; + max_progress = (x2 - x1) * (y2 - y1); + + /* Get the foreground and background colors */ + get_colors(drawable,fg,bg); + + /* Maze Stuff Happens Here */ + mw = (x2-x1) / mvals.width; + mh = (y2-y1) / mvals.width; + + mw -= !(mw & 1); /* mazegen doesn't work with even-sized mazes. */ + mh -= !(mh & 1); /* Note I don't warn the user about this... */ + + deadx = ((x2-x1) - mw * mvals.width)/2; + deady = ((y2-y1) - mh * mvals.width)/2; + + maz = g_malloc(mw * mh); + + for (i = 0; i < (mw * mh); ++i) + maz[i] = 0; + + srand( mvals.seed ); + rnd=rand(); + + /* #define MAZE_DEBUG */ + +#ifdef MAZE_DEBUG + printf("x: %d\ty: %d\nmw: %d\tmh: %d\ndx: %d\tdy: %d\nwidth:%d\n", + (x2-x1),(y2-y1),mw,mh,deadx,deady,mvals.width); +#endif + + (void) mazegen((mw+1), maz, mw, mh, rnd); + /* (void) mazegen(((x2-x1)+1), maz, (x2-x1), (y2-y1), rnd); */ + /* It's done happening. Now go through and color dem pixels... */ + + for (pr = gimp_pixel_rgns_register (1, &dest_rgn); pr != NULL; pr = gimp_pixel_rgns_process (pr)) + { + /* y = dest_rgn.y; */ +#ifdef MAZE_DEBUG + printf("Meep! "); +#endif + dest_row = dest_rgn.data; + for ( y = dest_rgn.y; y < (dest_rgn.y + dest_rgn.h); y++) { +#ifdef MAZE_DEBUG + putchar('y'); +#endif + dest = dest_row; + /* x = dest_rgn.x; */ + + for (x = dest_rgn.x; x < (dest_rgn.x + dest_rgn.w); x++) { +#ifdef MAZE_DEBUG + putchar('x'); +#endif + /* BODDUP */ + /* Uncomment this next bit for mazes on console. :) */ + /* if (maz[((y-y1) * (x2-x1)) + (x-x1)]) { + putchar(' '); + } else { + putchar('#'); + } */ + + if ((x < (x1 + deadx)) || + (x > (x2 - deadx)) || + (y < (y1 + deady)) || + (y > (y2 - deady)) + ) + { +#ifdef MAZE_DEBUG + putchar('w'); +#endif + val = 0; + } else { +#ifdef MAZE_DEBUG + putchar('m'); +#endif + mx = (x-(x1+deadx))/mvals.width; + my = (y-(y1+deady))/mvals.width; + val = maz[(my * mw) + mx]; + } + +#ifdef MAZE_DEBUG + putchar('!'); +#endif + + /* val = maz[((y-y1) * (x2-x1)) + (x-x1)]; */ + + for (bp = 0; bp < dest_rgn.bpp; bp++) + dest[bp] = val ? fg[bp] : bg[bp]; + dest += dest_rgn.bpp; + /* x++; */ + } /* next x */ + dest_row += dest_rgn.rowstride; + /* y++; */ + } /* next y */ + + progress += dest_rgn.w * dest_rgn.h; + gimp_progress_update ((double) progress / (double) max_progress); + /* Progress indicator probably isn't accurate, as the real work + goes on in mazegen... On the other hand, it's *quick*, this + part actually takes longer on my 486/33. */ + } + gimp_drawable_flush (drawable); + gimp_drawable_merge_shadow (drawable->id, TRUE); + gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); +} + +/* The Incredible Recursive Maze Generation Routine */ +/* Ripped from rec.programmers.games maze-faq */ +/* Modified and commented by me */ +gint mazegen(pos, maz, x, y, rnd) +gint pos, x, y, rnd; +gchar *maz; +{ + gchar d, i; + gint c=0, j; + + /* Punch a hole here... */ + maz[pos] = 1; + + /* If there is a wall two rows above us, bit 1 is 1. */ + while(d= (pos <= (x * 2) ? 0 : (maz[pos - x - x ] ? 0 : 1)) + /* If there is a wall two rows below us, bit 2 is 1. */ + | (pos >= x * (y - 2) ? 0 : (maz[pos + x + x] ? 0 : 2)) + /* If there is a wall two columns to the right, bit 3 is 1. */ + | (pos % x == x - 2 ? 0 : (maz[pos + 2] ? 0 : 4)) + /* If there is a wall two colums to the left, bit 4 is 1. */ + | ((pos % x == 1 ) ? 0 : (maz[pos-2] ? 0 : 8))) { + + /* Note if all bits are 0, d is false, we don't do this + while loop, we don't call ourselves again, so this branch + is done. */ + + /* I see what this loop does (more or less), but I don't know + _why_ it does it this way... I also haven't figured out exactly + which values of multiple will work and which won't. */ + do { + rnd = (rnd * mvals.multiple + mvals.offset); + i = 3 & (rnd / d); + if (++c > 100) { /* Break and try to salvage something */ + i=99; /* if it looks like we're going to be */ + break; /* here forever... */ + } + } while ( !(d & ( 1 << i) ) ); + /* ...While there's *not* a wall in direction i. */ + /* (stop looping when there is) */ + + switch (i) { /* This is simple enough. */ + case 0: /* Go in the direction we just figured . . . */ + j= -x; + break; + case 1: + j = x; + break; + case 2: + j=1; + break; + case 3: + j= -1; + break; + case 99: + return 1; /* Hey neat, broken mazes! */ + break; /* (Umm... Wow... Yeah, neat.) */ + default: + break; + } + + /* And punch a hole there. */ + maz[pos + j] = 1; + + /* Now, start again just past where we punched the hole... */ + mazegen(pos + 2 * j, maz, x, y, rnd); + + } /* End while(d=...) Loop */ + + return 0; +} + +static void +get_colors (GDrawable *drawable, guint8 *fg, guint8 *bg) +{ + GParam *return_vals; + gint nreturn_vals; + + switch ( gimp_drawable_type (drawable->id) ) + { + case RGBA_IMAGE: + fg[3] = 255; + bg[3] = 255; + case RGB_IMAGE: + + return_vals = gimp_run_procedure ("gimp_palette_get_foreground", + &nreturn_vals, + PARAM_END); + + if (return_vals[0].data.d_status == STATUS_SUCCESS) + { + fg[0] = return_vals[1].data.d_color.red; + fg[1] = return_vals[1].data.d_color.green; + fg[2] = return_vals[1].data.d_color.blue; + } + else + { + fg[0] = 255; + fg[1] = 255; + fg[2] = 255; + } + return_vals = gimp_run_procedure ("gimp_palette_get_background", + &nreturn_vals, + PARAM_END); + + if (return_vals[0].data.d_status == STATUS_SUCCESS) + { + bg[0] = return_vals[1].data.d_color.red; + bg[1] = return_vals[1].data.d_color.green; + bg[2] = return_vals[1].data.d_color.blue; + } + else + { + bg[0] = 0; + bg[1] = 0; + bg[2] = 0; + } + break; + case GRAYA_IMAGE: + fg[1] = 255; + bg[1] = 255; + case GRAY_IMAGE: /* FIXME: Should get the current color from */ + fg[0] = 255; /* the palette. */ + bg[0] = 0; + break; + case INDEXEDA_IMAGE: + case INDEXED_IMAGE: /* FIXME: Ditto. */ + fg[0] = 0; + bg[0] = 15; + break; + default: + break; + } +} + +static gint maze_dialog() +{ + GtkWidget *dlg; + GtkWidget *frame; + GtkWidget *table; + GtkWidget *button; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *notebook; + gchar **argv; + gint argc; + guchar buffer[32]; + + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("maze"); + + gtk_init (&argc, &argv); + + dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Maze"); + gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) maze_close_callback, + NULL); + + /* Action area */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) maze_ok_callback, + dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + /* Create notebook */ + notebook = gtk_notebook_new (); + gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), notebook, TRUE, TRUE, 0); + gtk_widget_show (notebook); + + /* Set up Options page */ + frame = gtk_frame_new ("Maze Options"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + /* gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); */ + table = gtk_table_new (2, 2, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_container_add (GTK_CONTAINER (frame), table); + + /* Seed input box */ + label = gtk_label_new ("Seed"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, 0, 5, 0 ); + gtk_widget_show (label); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0 ); + gtk_widget_set_usize( entry, ENTRY_WIDTH, 0 ); + sprintf( buffer, "%d", mvals.seed ); + gtk_entry_set_text (GTK_ENTRY (entry), buffer ); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) maze_entry_callback, + &mvals.seed); + gtk_widget_show (entry); + + /* entscale == Entry and Scale pair function found in pixelize.c */ + entscale_int_new (table, 0, 1, "Width:", &mvals.width, + 1, 64, FALSE, + NULL, NULL); + + /* Add Options page to notebook */ + gtk_widget_show (frame); + gtk_widget_show (table); + + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, + gtk_label_new ("Options")); + + /* Set up other page */ + frame = gtk_frame_new ("Don't change these"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + /* gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); */ + table = gtk_table_new (2, 2, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_container_add (GTK_CONTAINER (frame), table); + + /* Multiple input box */ + label = gtk_label_new ("Multiple (57)"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, 0, 5, 0 ); + gtk_widget_show (label); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0 ); + gtk_widget_set_usize( entry, ENTRY_WIDTH, 0 ); + sprintf( buffer, "%d", mvals.multiple ); + gtk_entry_set_text (GTK_ENTRY (entry), buffer ); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) maze_entry_callback, + &mvals.multiple); + gtk_widget_show (entry); + + /* Offset input box */ + label = gtk_label_new ("Offset (1)"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, 0, 5, 0 ); + gtk_widget_show (label); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0 ); + gtk_widget_set_usize( entry, ENTRY_WIDTH, 0 ); + sprintf( buffer, "%d", mvals.offset ); + gtk_entry_set_text (GTK_ENTRY (entry), buffer ); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) maze_entry_callback, + &mvals.offset); + gtk_widget_show (entry); + + /* Add Advanced page to notebook */ + gtk_widget_show (frame); + gtk_widget_show (table); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, + gtk_label_new ("Advanced")); + + gtk_widget_show (dlg); + + gtk_main (); + gdk_flush (); + + return mint.run; +} + +/* Maze Interface Functions */ +static void +maze_close_callback (GtkWidget *widget, + gpointer data) +{ + gtk_main_quit (); +} + +static void +maze_ok_callback (GtkWidget *widget, + gpointer data) +{ + mint.run = TRUE; + gtk_widget_destroy (GTK_WIDGET (data)); +} + +static void +maze_entry_callback (GtkWidget *widget, + gpointer data) +{ + gint *text_val; + + text_val = (gint *) data; + + *text_val = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); +} + +/* ==================================================================== */ +/* As found in pixelize.c */ + +/* + Entry and Scale pair 1.03 + + TODO: + - Do the proper thing when the user changes value in entry, + so that callback should not be called when value is actually not changed. + - Update delay + */ + +/* + * entscale: create new entscale with label. (int) + * 1 row and 2 cols of table are needed. + * Input: + * x, y: starting row and col in table + * caption: label string + * intvar: pointer to variable + * min, max: the boundary of scale + * constraint: (bool) true iff the value of *intvar should be constraint + * by min and max + * callback: called when the value is actually changed + * call_data: data for callback func + */ +void +entscale_int_new ( GtkWidget *table, gint x, gint y, + gchar *caption, gint *intvar, + gint min, gint max, gint constraint, + EntscaleIntCallbackFunc callback, + gpointer call_data) +{ + EntscaleIntData *userdata; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *scale; + GtkObject *adjustment; + gchar buffer[256]; + gint constraint_val; + + userdata = g_new ( EntscaleIntData, 1 ); + + label = gtk_label_new (caption); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + + /* + If the first arg of gtk_adjustment_new() isn't between min and + max, it is automatically corrected by gtk later with + "value_changed" signal. I don't like this, since I want to leave + *intvar untouched when `constraint' is false. + The lines below might look oppositely, but this is OK. + */ + userdata->constraint = constraint; + if( constraint ) + constraint_val = *intvar; + else + constraint_val = ( *intvar < min ? min : *intvar > max ? max : *intvar ); + + userdata->adjustment = adjustment = + gtk_adjustment_new ( constraint_val, min, max, 1.0, 1.0, 0.0); + scale = gtk_hscale_new ( GTK_ADJUSTMENT(adjustment) ); + gtk_widget_set_usize (scale, ENTSCALE_INT_SCALE_WIDTH, 0); + gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE); + + userdata->entry = entry = gtk_entry_new (); + gtk_widget_set_usize (entry, ENTSCALE_INT_ENTRY_WIDTH, 0); + sprintf( buffer, "%d", *intvar ); + gtk_entry_set_text( GTK_ENTRY (entry), buffer ); + + userdata->callback = callback; + userdata->call_data = call_data; + + /* userdata is done */ + gtk_object_set_user_data (GTK_OBJECT(adjustment), userdata); + gtk_object_set_user_data (GTK_OBJECT(entry), userdata); + + /* now ready for signals */ + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entscale_int_entry_update, + intvar); + gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", + (GtkSignalFunc) entscale_int_scale_update, + intvar); + gtk_signal_connect (GTK_OBJECT (entry), "destroy", + (GtkSignalFunc) entscale_int_destroy_callback, + userdata ); + + /* start packing */ + hbox = gtk_hbox_new (FALSE, 5); + gtk_box_pack_start (GTK_BOX (hbox), scale, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, TRUE, 0); + + gtk_table_attach (GTK_TABLE (table), label, x, x+1, y, y+1, + GTK_FILL, GTK_FILL, 0, 0); + gtk_table_attach (GTK_TABLE (table), hbox, x+1, x+2, y, y+1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + + gtk_widget_show (label); + gtk_widget_show (entry); + gtk_widget_show (scale); + gtk_widget_show (hbox); +} + + +/* when destroyed, userdata is destroyed too */ +static void +entscale_int_destroy_callback (GtkWidget *widget, + gpointer data) +{ + EntscaleIntData *userdata; + + userdata = data; + g_free ( userdata ); +} + +static void +entscale_int_scale_update (GtkAdjustment *adjustment, + gpointer data) +{ + EntscaleIntData *userdata; + GtkEntry *entry; + gchar buffer[256]; + gint *intvar = data; + gint new_val; + + userdata = gtk_object_get_user_data (GTK_OBJECT (adjustment)); + + new_val = (gint) adjustment->value; + + *intvar = new_val; + + entry = GTK_ENTRY( userdata->entry ); + sprintf (buffer, "%d", (int) new_val ); + + /* avoid infinite loop (scale, entry, scale, entry ...) */ + gtk_signal_handler_block_by_data ( GTK_OBJECT(entry), data ); + gtk_entry_set_text ( entry, buffer); + gtk_signal_handler_unblock_by_data ( GTK_OBJECT(entry), data ); + + if (userdata->callback) + (*userdata->callback) (*intvar, userdata->call_data); +} + +static void +entscale_int_entry_update (GtkWidget *widget, + gpointer data) +{ + EntscaleIntData *userdata; + GtkAdjustment *adjustment; + int new_val, constraint_val; + int *intvar = data; + + userdata = gtk_object_get_user_data (GTK_OBJECT (widget)); + adjustment = GTK_ADJUSTMENT( userdata->adjustment ); + + new_val = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); + constraint_val = new_val; + if ( constraint_val < adjustment->lower ) + constraint_val = adjustment->lower; + if ( constraint_val > adjustment->upper ) + constraint_val = adjustment->upper; + + if ( userdata->constraint ) + *intvar = constraint_val; + else + *intvar = new_val; + + adjustment->value = constraint_val; + gtk_signal_handler_block_by_data ( GTK_OBJECT(adjustment), data ); + gtk_signal_emit_by_name ( GTK_OBJECT(adjustment), "value_changed"); + gtk_signal_handler_unblock_by_data ( GTK_OBJECT(adjustment), data ); + + if (userdata->callback) + (*userdata->callback) (*intvar, userdata->call_data); +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/nlfilt.c gimp-0.99.pre11/plug-ins/nlfilt.c --- gimp-0.99.10/plug-ins/nlfilt.c Fri Apr 18 00:36:49 1997 +++ gimp-0.99.pre11/plug-ins/nlfilt.c Wed Aug 13 20:31:36 1997 @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: nlfilt.c 1.1 Thu, 17 Apr 1997 16:37:24 -0700 pmattis $ + * $Id: nlfilt.c,v 1.3 1997/04/14 21:44:44 erich Exp $ */ /* add any necessary includes */ @@ -114,7 +114,7 @@ "Graeme W. Gill, Eric L. Hernes", "1997", "/Filters/Image/NL Filter", - "RGB*, GRAY*", + "RGB,GRAY", PROC_PLUG_IN, nargs, nrets, args, rets); @@ -241,7 +241,7 @@ gimp_drawable_merge_shadow (drw->id, TRUE); gimp_drawable_update(drw->id, 0, 0, width, height); gimp_displays_flush(); - + return 0; } @@ -296,7 +296,7 @@ gdk_flush(); argp->filter = mw_radio_result(filter); - + if(runp){ #if 0 fprintf(stderr, "running:\n"); @@ -318,7 +318,7 @@ struct mwRadioGroup *rgp; guchar *dst, *c; gint y, rowsize, filtno; - + if(theWidget==NULL){ theWidget=w; } @@ -336,7 +336,7 @@ nlfiltRow(c, dst, thePreview->width, thePreview->bpp, filtno); gtk_preview_draw_row(GTK_PREVIEW(theWidget), dst, 0, 0, thePreview->width); - + bcopy(thePreview->bits+((thePreview->height-2)*rowsize), c, rowsize*2); bcopy(thePreview->bits+((thePreview->height-1)*rowsize), c+(rowsize*2), rowsize); diff -u --recursive --new-file gimp-0.99.10/plug-ins/nova.c gimp-0.99.pre11/plug-ins/nova.c --- gimp-0.99.10/plug-ins/nova.c Fri Jun 6 02:09:21 1997 +++ gimp-0.99.pre11/plug-ins/nova.c Wed Aug 13 20:31:36 1997 @@ -1,9 +1,9 @@ -/* - * This is a plugin for the GIMP v1.0. - * - * nova.c -- Supernova effect +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis * - * Copyright (C) 1997 Eiichi Takamori + * SuperNova plug-in + * Copyright (C) 1997 Eiichi Takamori , + * Spencer Kimball, Federico Mena Quintero * * 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 @@ -12,46 +12,42 @@ * * 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 + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. - * */ /* - * $Id: nova.c 1.5 Tue, 03 Jun 1997 20:22:04 -0700 pmattis $ + * version 1.1115 + * This plug-in requires GIMP v0.99.10 or above. * - * This plug-in requires GIMP v0.99.7 (or above). + * This plug-in produces an effect like a supernova burst. * - * This plug-in produces an effect like a supernova, or emission of lights. + * Eiichi Takamori + * http://ha1.seikyou.ne.jp/home/taka/gimp/ * - * Difference from revision 1.7: - * - Changed PI to M_PI. (Thanks to Federico Mena) - * - Added cmap, gamma etc. settings to dialog. (Thanks to Federico Mena) - * - Changed `changed_text' to `changed' for 0.99.7. - * - Modified English of comments etc. * - * A little bug, the mouse isn't grabbed while dragging cross cursor, - * is remained because it is funny. It allows you to point the outside - * of preview, with dragging from inside of preview. (In fact, I - * haven't tried to fix this bug yet...) + * Changes from version 1.1114 to version 1.1115: + * - Added gtk_rc_parse + * - Fixed bug that drawing preview of small height image + * (maybe image height < PREVIEW_SIZE) caused core dump. + * - Changed default value. + * - Moved to /Filters/Effects. right? + * - etc... * - * A lot of the code is taken from GIMP main app, and other plug-ins ... - * Thanks for all developers. + * Changes from version 1.1112 to version 1.1114: + * - Modified proc args to PARAM_COLOR, also included nspoke. + * - nova_int_entryscale_new(): Fixed caption was guchar -> gchar, etc. + * - Now nova renders properly with alpha channel. + * (Very thanks to Spencer Kimball and Federico Mena !) * * TODO: - * - clean up the code - * - more realistic effect - * - * Feel free about to correct my WRONG English, or to modify Plug-in Path, - * and so on. ;-) - * - * Eiichi Takamori - * visit my GIMP page ! (some of Jananese, some of English) - * http://ha1.seikyou.ne.jp/home/taka/gimp/ + * - clean up the code more + * - fix preview + * - add notebook interface and so on */ #include @@ -61,6 +57,12 @@ #include "gtk/gtk.h" #include "libgimp/gimp.h" +#ifdef RCSID +static char rcsid[] = "$Id: nova.c,v 1.11.1.5 1997/06/08 14:01:19 takamori Exp $"; +#endif + + + /* Some useful macros */ #if 0 @@ -76,19 +78,19 @@ #define TILE_CACHE_SIZE 16 #define BOUNDS(a,x,y) ((a < x) ? x : ((a > y) ? y : a)) -#define PREVIEW 0x1 -#define CURSOR 0x2 -#define ALL 0xf +#define PREVIEW 0x1 +#define CURSOR 0x2 +#define ALL 0xf #define PREVIEW_MASK GDK_EXPOSURE_MASK | \ - GDK_BUTTON_PRESS_MASK | \ + GDK_BUTTON_PRESS_MASK | \ GDK_BUTTON1_MOTION_MASK typedef struct { gint xcenter, ycenter; - gint color[3]; - gint radius; - gint nspoke; + gint color[3]; + gint radius; + gint nspoke; } NovaValues; typedef struct { @@ -96,65 +98,64 @@ } NovaInterface; typedef struct { - GtkObject *adjustment; - GtkWidget *entry; - gint constraint; + GtkObject *adjustment; + GtkWidget *entry; + gint constraint; } NovaEntryScaleData; typedef struct { - GDrawable *drawable; - gint dwidth, dheight; - gint bpp; - gint has_alpha; - GtkWidget *xentry, *yentry; - GtkWidget *preview; - gint pwidth, pheight; - gint cursor; - gint curx, cury; /* x,y of cursor in preview */ - gint oldx, oldy; - gint in_call; + GDrawable *drawable; + gint dwidth, dheight; + gint bpp; + GtkWidget *xentry, *yentry; + GtkWidget *preview; + gint pwidth, pheight; + gint cursor; + gint curx, cury; /* x,y of cursor in preview */ + gint oldx, oldy; + gint in_call; } NovaCenter; /* Declare a local function. */ static void query (void); -static void run (gchar *name, - gint nparams, - GParam *param, - gint *nreturn_vals, - GParam **return_vals); +static void run (gchar *name, + gint nparams, + GParam *param, + gint *nreturn_vals, + GParam **return_vals); static gint nova_dialog ( GDrawable *drawable ); static GtkWidget * nova_center_create ( GDrawable *drawable ); -static void nova_center_destroy ( GtkWidget *widget, +static void nova_center_destroy ( GtkWidget *widget, gpointer data ); -static void nova_center_preview_init ( NovaCenter *center ); -static void nova_center_draw ( NovaCenter *center, gint update ); -static void nova_center_entry_update ( GtkWidget *widget, +static void nova_center_preview_init ( NovaCenter *center ); +static void nova_center_draw ( NovaCenter *center, gint update ); +static void nova_center_entry_update ( GtkWidget *widget, gpointer data ); -static void nova_center_cursor_update ( NovaCenter *center ); -static gint nova_center_preview_expose ( GtkWidget *widget, +static void nova_center_cursor_update ( NovaCenter *center ); +static gint nova_center_preview_expose ( GtkWidget *widget, GdkEvent *event ); -static gint nova_center_preview_events ( GtkWidget *widget, +static gint nova_center_preview_events ( GtkWidget *widget, GdkEvent *event ); -static void nova_int_entryscale_new ( GtkTable *table, gint x, gint y, - guchar *caption, gint *intvar, +static void nova_int_entryscale_new ( GtkTable *table, gint x, gint y, + gchar *caption, gint *intvar, gint min, gint max, gint constraint); -static void nova_close_callback (GtkWidget *widget, - gpointer data); -static void nova_ok_callback (GtkWidget *widget, - gpointer data); +static void nova_close_callback (GtkWidget *widget, + gpointer data); +static void nova_ok_callback (GtkWidget *widget, + gpointer data); -static void nova_paired_entry_destroy_callback (GtkWidget *widget, +static void nova_paired_entry_destroy_callback (GtkWidget *widget, gpointer data); -static void nova_paired_int_scale_update (GtkAdjustment *adjustment, - gpointer data); +static void nova_paired_int_scale_update (GtkAdjustment *adjustment, + gpointer data); static void nova_paired_int_entry_update (GtkWidget *widget, gpointer data ); @@ -163,23 +164,23 @@ GPlugInInfo PLUG_IN_INFO = { - NULL, /* init_proc */ - NULL, /* quit_proc */ + NULL, /* init_proc */ + NULL, /* quit_proc */ query, /* query_proc */ - run, /* run_proc */ + run, /* run_proc */ }; static NovaValues pvals = { 128, 128, /* xcenter, ycenter */ - { 255, 90, 90 }, /* color */ - 35, /* radius */ - 100 /* nspoke */ + { 90, 100, 256 }, /* color */ + 20, /* radius */ + 100 /* nspoke */ }; static NovaInterface pint = { - FALSE /* run */ + FALSE /* run */ }; @@ -195,22 +196,26 @@ { PARAM_DRAWABLE, "drawable", "Input drawable" }, { PARAM_INT32, "xcenter", "X coordinates of the center of supernova" }, { PARAM_INT32, "ycenter", "Y coordinates of the center of supernova" }, - { PARAM_INT32, "r", "R value of Color of supernova" }, - { PARAM_INT32, "g", "G value of Color of supernova" }, - { PARAM_INT32, "b", "B value of Color of supernova" }, - { PARAM_INT32, "radius", "Radius of supernova" } + { PARAM_COLOR, "color", "Color of supernova" }, + { PARAM_INT32, "radius", "Radius of supernova" }, + { PARAM_INT32, "nspoke", "Number of spokes" } }; static GParamDef *return_vals = NULL; static gint nargs = sizeof (args) / sizeof (args[0]); static gint nreturn_vals = 0; + gchar *help_string = + " This plug-in produces an effect like a supernova burst. The" + " amount of the light effect is approximately in proportion to 1/r," + " where r is the distance from the center of the star. It works with" + " RGB*, GRAY* image."; gimp_install_procedure ("plug_in_nova", "Produce Supernova effect to the specified drawable", - "This plug-in produces supernova effect which looks like a star light explosion. The amount of the light effect is approximately in proportion to 1/r, where r is the distance from the center of the star. In current version the light effect covers whole the image, which is a nuisance.", + help_string, "Eiichi Takamori", "Eiichi Takamori", "1997", - "/Filters/Image/SuperNova", /* or Render ? */ + "/Filters/Effects/SuperNova", "RGB*, GRAY*", PROC_PLUG_IN, nargs, nreturn_vals, @@ -256,23 +261,20 @@ case RUN_NONINTERACTIVE: /* Make sure all the arguments are there! */ - if (nparams != 9) + if (nparams != 8) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) { pvals.xcenter = param[3].data.d_int32; pvals.ycenter = param[4].data.d_int32; - pvals.color[0] = param[5].data.d_int32; - pvals.color[1] = param[6].data.d_int32; - pvals.color[2] = param[7].data.d_int32; - pvals.radius = param[8].data.d_int32; - + pvals.color[0] = param[5].data.d_color.red; + pvals.color[1] = param[5].data.d_color.green; + pvals.color[2] = param[5].data.d_color.blue; + pvals.radius = param[6].data.d_int32; + pvals.nspoke = param[7].data.d_int32; } if ((status == STATUS_SUCCESS) && - ( pvals.radius <= 0 || - pvals.color[0]<0 || pvals.color[0]>255 || - pvals.color[1]<0 || pvals.color[1]>255 || - pvals.color[2]<0 || pvals.color[2]>255 )) + pvals.radius <= 0 ) status = STATUS_CALLING_ERROR; break; @@ -316,9 +318,9 @@ /*******************/ -/* */ +/* */ /* Main Dialog */ -/* */ +/* */ /*******************/ static gint @@ -331,7 +333,7 @@ GtkWidget *center_frame; guchar *color_cube; gchar **argv; - gint argc; + gint argc; argc = 1; argv = g_new (gchar *, 1); @@ -345,11 +347,16 @@ gtk_preview_set_install_cmap (gimp_install_cmap ()); color_cube = gimp_color_cube (); gtk_preview_set_color_cube (color_cube[0], color_cube[1], - color_cube[2], color_cube[3]); + color_cube[2], color_cube[3]); gtk_widget_set_default_visual (gtk_preview_get_visual ()); gtk_widget_set_default_colormap (gtk_preview_get_cmap ()); +#if 0 + printf("Waiting... (pid %d)\n", getpid()); + kill(getpid(), 19); /* SIGSTOP */ +#endif + dlg = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dlg), "SuperNova"); gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); @@ -361,8 +368,8 @@ button = gtk_button_new_with_label ("OK"); GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", - (GtkSignalFunc) nova_ok_callback, - dlg); + (GtkSignalFunc) nova_ok_callback, + dlg); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); gtk_widget_grab_default (button); gtk_widget_show (button); @@ -401,11 +408,10 @@ 0, 255, TRUE ); nova_int_entryscale_new( GTK_TABLE (table), 0, 4, "Radius:", &pvals.radius, - 1, 255, FALSE ); + 1, 100, FALSE ); nova_int_entryscale_new( GTK_TABLE (table), 0, 5, "Spokes:", &pvals.nspoke, - 0, 1024, TRUE ); - + 1, 1024, TRUE ); gtk_widget_show (frame); gtk_widget_show (table); @@ -428,7 +434,7 @@ static void nova_ok_callback (GtkWidget *widget, - gpointer data) + gpointer data) { pint.run = TRUE; gtk_widget_destroy (GTK_WIDGET (data)); @@ -452,21 +458,22 @@ static GtkWidget * nova_center_create ( GDrawable *drawable ) { - NovaCenter *center; - GtkWidget *frame; - GtkWidget *table; - GtkWidget *label; - GtkWidget *entry; - GtkWidget *pframe; - GtkWidget *preview; - gchar buf[256]; + NovaCenter *center; + GtkWidget *frame; + GtkWidget *table; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *pframe; + GtkWidget *preview; + gchar buf[256]; center = g_new( NovaCenter, 1 ); - center->drawable = drawable; - center->dwidth = gimp_drawable_width (drawable->id); - center->dheight = gimp_drawable_height (drawable->id); - center->bpp = gimp_drawable_bpp (drawable->id); - center->has_alpha = gimp_drawable_has_alpha (drawable->id); + center->drawable = drawable; + center->dwidth = gimp_drawable_width(drawable->id ); + center->dheight = gimp_drawable_height(drawable->id ); + center->bpp = gimp_drawable_bpp(drawable->id); + if ( gimp_drawable_has_alpha(drawable->id) ) + center->bpp--; center->cursor = FALSE; center->curx = 0; center->cury = 0; @@ -521,9 +528,8 @@ gtk_table_attach( GTK_TABLE(table), pframe, 0, 4, 1, 2, 0, 0, 0, 0 ); /* PREVIEW */ - center->preview = preview = gtk_preview_new (gimp_drawable_color (drawable->id) ? - (GTK_PREVIEW_COLOR) : (GTK_PREVIEW_GRAYSCALE)); - gtk_object_set_user_data( GTK_OBJECT(preview), center); + center->preview = preview = gtk_preview_new( center->bpp==3 ? GTK_PREVIEW_COLOR : GTK_PREVIEW_GRAYSCALE ); + gtk_object_set_user_data( GTK_OBJECT(preview), center ); gtk_widget_set_events( GTK_WIDGET(preview), PREVIEW_MASK ); gtk_signal_connect_after( GTK_OBJECT(preview), "expose_event", (GtkSignalFunc) nova_center_preview_expose, @@ -575,6 +581,8 @@ g_free( center ); } +static void render_preview ( GtkWidget *preview, GPixelRgn *srcrgn ); + /* * Initialize preview * Draw the contents into the internal buffer of the preview widget @@ -582,13 +590,9 @@ static void nova_center_preview_init ( NovaCenter *center ) { - GtkWidget *preview; - GPixelRgn src_rgn; - guchar *src_row, *dest_row, *src, *dest; - gint row, col, b; - gint dwidth, dheight, pwidth, pheight; - gint bpp, alpha, has_alpha; - gint *src_col; + GtkWidget *preview; + GPixelRgn src_rgn; + gint dwidth, dheight, pwidth, pheight, bpp; preview = center->preview; dwidth = center->dwidth; @@ -596,30 +600,97 @@ pwidth = center->pwidth; pheight = center->pheight; bpp = center->bpp; - has_alpha = center->has_alpha; - alpha = (has_alpha) ? bpp - 1 : bpp; - - src_row = g_new ( guchar, center->dwidth * 4 ); - dest_row = g_new ( guchar, center->pwidth * 4 ); - src_col = g_new ( gint, center->pwidth ); gimp_pixel_rgn_init ( &src_rgn, center->drawable, 0, 0, center->dwidth, center->dheight, FALSE, FALSE ); + render_preview( center->preview, &src_rgn ); +} + + +/*====================================================================== + Preview Rendering Util routine +=======================================================================*/ + +#define CHECKWIDTH 4 +#define LIGHTCHECK 192 +#define DARKCHECK 128 +#ifndef OPAQUE +#define OPAQUE 255 +#endif + +static void +render_preview ( GtkWidget *preview, GPixelRgn *srcrgn ) +{ + guchar *src_row, *dest_row, *src, *dest; + gint row, col; + gint dwidth, dheight, pwidth, pheight; + gint *src_col; + gint bpp, alpha, has_alpha, b; + guchar check; + + dwidth = srcrgn->w; + dheight = srcrgn->h; + if( GTK_PREVIEW(preview)->buffer ) + { + pwidth = GTK_PREVIEW(preview)->buffer_width; + pheight = GTK_PREVIEW(preview)->buffer_height; + } + else + { + pwidth = preview->requisition.width; + pheight = preview->requisition.height; + } + + bpp = srcrgn->bpp; + alpha = bpp; + has_alpha = gimp_drawable_has_alpha( srcrgn->drawable->id ); + if( has_alpha ) alpha--; + /* printf("render_preview: %d %d %d", bpp, alpha, has_alpha); + printf(" (%d %d %d %d)\n", dwidth, dheight, pwidth, pheight); */ + + src_row = g_new ( guchar, dwidth * bpp ); + dest_row = g_new ( guchar, pwidth * bpp ); + src_col = g_new ( gint, pwidth ); for ( col = 0; col < pwidth; col++ ) - src_col[ col ] = ( col * dwidth / pwidth ) * src_rgn.bpp; + src_col[ col ] = ( col * dwidth / pwidth ) * bpp; for ( row = 0; row < pheight; row++ ) { - gimp_pixel_rgn_get_row ( &src_rgn, src_row, + gimp_pixel_rgn_get_row ( srcrgn, src_row, 0, row * dheight / pheight, dwidth ); dest = dest_row; for ( col = 0; col < pwidth; col++ ) { src = &src_row[ src_col[col] ]; - for ( b = 0; b < alpha; b++ ) - dest[b] = (has_alpha) ? (src[b] * src[alpha]) / 255 : src[b]; + if( !has_alpha || src[alpha] == OPAQUE ) + { + /* no alpha channel or opaque -- simple way */ + for ( b = 0; b < alpha; b++ ) + dest[b] = src[b]; + } + else + { + /* more or less transparent */ + if( ( col % (CHECKWIDTH*2) < CHECKWIDTH ) ^ + ( row % (CHECKWIDTH*2) < CHECKWIDTH ) ) + check = LIGHTCHECK; + else + check = DARKCHECK; + if ( src[alpha] == 0 ) + { + /* full transparent -- check */ + for ( b = 0; b < alpha; b++ ) + dest[b] = check; + } + else + { + /* middlemost transparent -- mix check and src */ + for ( b = 0; b < alpha; b++ ) + dest[b] = ( src[b]*src[alpha] + check*(OPAQUE-src[alpha]) ) / OPAQUE; + } + } dest += alpha; } gtk_preview_draw_row( GTK_PREVIEW( preview ), dest_row, @@ -631,6 +702,9 @@ g_free ( dest_row ); } +/*====================================================================== + Preview Rendering Util routine End +=======================================================================*/ /* * Drawing CenterFrame @@ -715,9 +789,9 @@ center->curx = pvals.xcenter * center->pwidth / center->dwidth; center->cury = pvals.ycenter * center->pheight / center->dheight; - if( center->curx < 0 ) center->curx = 0; + if( center->curx < 0 ) center->curx = 0; else if( center->curx >= center->pwidth ) center->curx = center->pwidth-1; - if( center->cury < 0 ) center->cury = 0; + if( center->cury < 0 ) center->cury = 0; else if( center->cury >= center->pheight) center->cury = center->pheight-1; } @@ -787,30 +861,30 @@ /*=================================================================== - Entry - Scale Pair + Entry - Scale Pair ====================================================================*/ /***********************************************************************/ -/* */ -/* Create new entry-scale pair with label. (int) */ -/* 1 row and 2 cols of table are needed. */ -/* */ -/* `x' and `y' means starting row and col in `table'. */ -/* */ -/* `caption' is label string. */ -/* */ -/* `min', `max' are boundary of scale. */ -/* */ +/* */ +/* Create new entry-scale pair with label. (int) */ +/* 1 row and 2 cols of table are needed. */ +/* */ +/* `x' and `y' means starting row and col in `table'. */ +/* */ +/* `caption' is label string. */ +/* */ +/* `min', `max' are boundary of scale. */ +/* */ /* `constraint' means whether value of *intvar should be constraint */ -/* by scale adjustment, e.g. between `min' and `max'. */ -/* */ +/* by scale adjustment, e.g. between `min' and `max'. */ +/* */ /***********************************************************************/ static void nova_int_entryscale_new ( GtkTable *table, gint x, gint y, - guchar *caption, gint *intvar, + gchar *caption, gint *intvar, gint min, gint max, gint constraint) { GtkWidget *hbox; @@ -819,7 +893,7 @@ GtkWidget *scale; GtkObject *adjustment; NovaEntryScaleData *userdata; - guchar buffer[256]; + gchar buffer[256]; label = gtk_label_new (caption); @@ -887,7 +961,7 @@ static void nova_paired_int_scale_update (GtkAdjustment *adjustment, - gpointer data) + gpointer data) { NovaEntryScaleData *userdata; GtkEntry *entry; @@ -915,7 +989,7 @@ static void nova_paired_int_entry_update (GtkWidget *widget, - gpointer data) + gpointer data) { NovaEntryScaleData *userdata; GtkAdjustment *adjustment; @@ -949,9 +1023,9 @@ /* ################################################################ -## ## -## Main Calculation ## -## ## +## ## +## Main Calculation ## +## ## ################################################################ */ @@ -988,8 +1062,8 @@ gdouble new_alpha; gdouble compl_ratio; gdouble ratio; - gint i; - gint color[4]; + gint i; + gint color[4]; srand(time(NULL)); spoke = g_new( gdouble, pvals.nspoke ); @@ -1093,3 +1167,4 @@ g_free( spoke ); } + diff -u --recursive --new-file gimp-0.99.10/plug-ins/pix.c gimp-0.99.pre11/plug-ins/pix.c --- gimp-0.99.10/plug-ins/pix.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/pix.c Thu Aug 14 00:44:45 1997 @@ -0,0 +1,594 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * Alias|Wavefront pix/matte image reading and writing code + * Copyright (C) 1997 Mike Taylor + * (email: mtaylor@aw.sgi.com, WWW: http://reality.sgi.com/mtaylor) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +/* This plug-in was written using the online documentation from + * Alias|Wavefront Inc's PowerAnimator product. + * + * Bug reports or suggestions should be e-mailed to mtaylor@aw.sgi.com + */ + +/* Event history: + * V 1.0, MT, 02-Jul-97: initial version of plug-in + */ + +/* Features + * - loads and saves + * - 24-bit (.pix) + * - 8-bit (.matte, .alpha, or .mask) images + * + * NOTE: pix and matte files do not support alpha channels or indexed + * colour, so neither does this plug-in + */ + +static char ident[] = "@(#) GIMP Alias|Wavefront pix image file-plugin v1.0 24-jun-97"; + +#include +#include +#include +#include +#include +#include + +/* #define PIX_DEBUG */ + +#ifdef PIX_DEBUG +# define PIX_DEBUG_PRINT(a,b) fprintf(stderr,a,b) +#else +# define PIX_DEBUG_PRINT(a,b) +#endif + +/************** + * Prototypes * + **************/ + +/* Standard Plug-in Functions */ + +static void query (); +static void run ( char *name, int nparams, GParam *param, + int *nreturn_vals, GParam **return_vals ); + +/* Local Helper Functions */ + +static gint32 load_image( char *filename ); +static gint save_image( char *filename, gint32 image_ID, gint32 drawable_ID ); + +static guint16 get_short( FILE * file ); +static void put_short( guint16 value, FILE * file ); +static guint32 get_long( FILE * file ); +static gchar get_char( FILE * file ); + +/****************** + * Implementation * + ******************/ + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +MAIN (); + +static void query () +/* + * Description: + * Register the services provided by this plug-in + */ +{ + static GParamDef load_args[] = { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_STRING, "filename", "The name of the file to load" }, + { PARAM_STRING, "raw_filename", "The name entered" }, + }; + static GParamDef load_return_vals[] = { + { PARAM_IMAGE, "image", "Output image" }, + }; + static int nload_args = sizeof (load_args) / sizeof (load_args[0]); + static int nload_return_vals = sizeof (load_return_vals) / + sizeof (load_return_vals[0]); + + static GParamDef save_args[] = { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Drawable to save" }, + { PARAM_STRING, "filename", "The name of the file to save the image in" }, + { PARAM_STRING, "raw_filename", + "The name of the file to save the image in" } + }; + static int nsave_args = sizeof (save_args) / sizeof (save_args[0]); + + gimp_install_procedure ("file_pix_load", + "loads files of the PIX file format", + "loads files of the PIX file format", + "Michael Taylor", + "Michael Taylor", + "1997", + "/PIX", + NULL, + PROC_PLUG_IN, + nload_args, nload_return_vals, + load_args, load_return_vals); + + gimp_install_procedure ("file_pix_save", + "save file in the Alias|Wavefront pix/matte file format", + "save file in the Alias|Wavefront pix/matte file format", + "Michael Taylor", + "Michael Taylor", + "1997", + "/PIX", + "RGB*, GRAY*", + PROC_PLUG_IN, + nsave_args, 0, + save_args, NULL); + + gimp_register_load_handler ("file_pix_load", "pix,matte,mask,alpha", ""); + gimp_register_save_handler ("file_pix_save", "pix,matte,mask,alpha", ""); +} + +static void run ( char *name, int nparams, GParam *param, int *nreturn_vals, + GParam **return_vals ) +/* + * Description: + * perform registered plug-in function + * + * Arguments: + * name - name of the function to perform + * nparams - number of parameters passed to the function + * param - parameters passed to the function + * nreturn_vals - number of parameters returned by the function + * return_vals - parameters returned by the function + */ +{ + static GParam values[2]; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + gint32 image_ID; + + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_CALLING_ERROR; + + if (strcmp (name, "file_pix_load") == 0) { + /* Perform the image load */ + image_ID = load_image (param[1].data.d_string); + if (image_ID != -1) { + /* The image load was successful */ + *nreturn_vals = 2; + values[0].data.d_status = STATUS_SUCCESS; + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image_ID; + } else { + /* The image load falied */ + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + } else if (strcmp (name, "file_pix_save") == 0) { + if (status == STATUS_SUCCESS) { + if ( !save_image ( param[3].data.d_string, param[1].data.d_int32, + param[2].data.d_int32)) + { + status = STATUS_EXECUTION_ERROR; + } + } + values[0].data.d_status = status; + + } else { + g_assert (FALSE); + } +} + + +static guint16 get_short( FILE * file ) +/* + * Description: + * Reads a 16-bit integer from a file in such a way that the machine's + * bit ordering should not matter + */ +{ + guchar buf[2]; + + fread( buf, 2, 1, file); + return ( buf[0] << 8 ) + ( buf[1] << 0 ); +} + +static void put_short( guint16 value, FILE * file ) +/* + * Description: + * Reads a 16-bit integer from a file in such a way that the machine's + * bit ordering should not matter + */ +{ + guchar buf[2]; + buf[0] = (guchar)( value >> 8 ); + buf[1] = (guchar)( value % 256 ); + + fwrite( buf, 2, 1, file); +} + +static guint32 get_long( FILE * file ) +/* + * Description: + * Reads a 16-bit integer from a file in such a way that the machine's + * bit ordering should not matter + */ +{ + guchar buf[4]; + + fread( buf, 4, 1, file ); + return ( buf[0] << 24 ) + ( buf[1] << 16 ) + + ( buf[2] << 8 ) + ( buf[3] << 0 ); +} + +static gchar get_char( FILE * file ) +/* + * Description: + * Reads a byte from a file. Provided for convenience; + */ +{ + gchar result; + + fread( &result, 1, 1, file ); + return result; +} + +static gint32 load_image (char *filename) +/* + * Description: + * load the given image into gimp + * + * Arguments: + * filename - name on the file to read + * + * Return Value: + * Image id for the loaded image + * + */ +{ + gint i, j, tile_height, row; + gint result = -1; + FILE * file = NULL; + gint32 * offsetTable = NULL; + gint32 * lengthTable = NULL; + gchar * progMessage; + guchar * dest; + guchar * dest_base; + GDrawable * drawable; + gint32 image_ID; + gint32 layer_ID; + GPixelRgn pixel_rgn; + gushort width, height, depth; + + GImageType imgtype; + GDrawableType gdtype; + + /* Set up progress display */ + progMessage = malloc (strlen (filename) + 12); + if (!progMessage) gimp_quit (); + sprintf (progMessage, "Loading %s:", filename); + gimp_progress_init (progMessage); + free (progMessage); + + PIX_DEBUG_PRINT("Opening file: %s\n",filename); + + /* Open the file */ + file = fopen( filename, "r" ); + if ( NULL == file ) { + return -1; + } + + /* Read header information */ + width = get_short( file ); + height = get_short( file ); + get_short( file ); /* Discard obsolete fields */ + get_short( file ); /* Discard obsolete fields */ + depth = get_short( file ); + + PIX_DEBUG_PRINT( "Width %hu\n", width ); + PIX_DEBUG_PRINT( "Height %hu\n", height ); + + if ( depth == 8 ) { + /* Loading a matte file */ + imgtype = GRAY; + gdtype = GRAY_IMAGE; + } else if ( depth == 24 ) { + /* Loading an RGB file */ + imgtype = RGB; + gdtype = RGB_IMAGE; + } else { + /* Header is invalid */ + fclose( file ); + return -1; + } + + image_ID = gimp_image_new ( width, height, imgtype ); + gimp_image_set_filename ( image_ID, filename ); + layer_ID = gimp_layer_new ( image_ID, "Background", + width, + height, + gdtype, 100, NORMAL_MODE ); + gimp_image_add_layer ( image_ID, layer_ID, 0); + drawable = gimp_drawable_get ( layer_ID ); + gimp_pixel_rgn_init ( &pixel_rgn, drawable, 0, 0, drawable->width, + drawable->height, TRUE, FALSE ); + + tile_height = gimp_tile_height(); + + if ( depth == 24 ) { + /* Read a 24-bit Pix image */ + guchar record[4]; + gint readlen; + tile_height = gimp_tile_height(); + + dest_base = dest = g_new (guchar, 3 * width * tile_height); + + for (i = 0; i < height;) { + for ( dest = dest_base, row = 0; + row < tile_height && i < height; + i += 1, row += 1) + { + guchar count; + + /* Read a row of the image */ + j = 0; + while ( j < width ) { + readlen = fread( record, 1, 4, file ); + if ( readlen < 4 ) break; + + for ( count = 0; count < record[0]; ++count ) { + dest[0] = record[3]; + dest[1] = record[2]; + dest[2] = record[1]; + dest += 3; + j++; + if ( j >= width ) break; + } + } + } + gimp_pixel_rgn_set_rect (&pixel_rgn, dest_base, 0, i-row, + width, row); + gimp_progress_update ((double) i / (double) height); + } + + free( dest_base ); + } else { + /* Read an 8-bit Matte image */ + guchar record[2]; + gint readlen; + + dest_base = dest = g_new (guchar, width * tile_height); + + for (i = 0; i < height;) { + for ( dest = dest_base, row = 0; + row < tile_height && i < height; + i += 1, row += 1) + { + guchar count; + + /* Read a row of the image */ + j = 0; + while ( j < width ) { + readlen = fread( record, 1, 2, file ); + if ( readlen < 2 ) break; + + for ( count = 0; count < record[0]; ++count ) { + dest[j] = record[1]; + j++; + if ( j >= width ) break; + } + } + dest += width; + } + gimp_pixel_rgn_set_rect (&pixel_rgn, dest_base, 0, i-row, + width, row); + gimp_progress_update ((double) i / (double) height); + } + free( dest_base ); + } + + gimp_drawable_flush (drawable); + gimp_drawable_detach (drawable); + + fclose( file ); + + return image_ID; +} + + +static gint save_image( char *filename, gint32 image_ID, gint32 drawable_ID ) +/* + * Description: + * save the given file out as an alias pix or matte file + * + * Arguments: + * filename - name of file to save to + * image_ID - ID of image to save + * drawable_ID - current drawable + */ +{ + gint depth, i, j, row, tile_height, writelen, rectHeight; + gboolean savingAlpha = FALSE; + gboolean savingColor = TRUE; + guchar * src; + guchar * src_base; + gchar * progMessage; + GDrawable * drawable; + GPixelRgn pixel_rgn; + FILE * file; + + /* Get info about image */ + drawable = gimp_drawable_get(drawable_ID); + + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, + drawable->height, FALSE, FALSE); + + switch (gimp_drawable_type(drawable_ID)) + { + case GRAY_IMAGE: + savingColor = FALSE; + depth = 1; + break; + case GRAYA_IMAGE: + savingColor = FALSE; + depth = 2; + break; + case RGB_IMAGE: + savingColor = TRUE; + depth = 3; + break; + case RGBA_IMAGE: + savingColor = TRUE; + depth = 4; + break; + default: + return FALSE; + }; + + + /* Open the output file. */ + file = fopen (filename, "wb"); + if ( !file ) { + return (FALSE); + } + + /* Set up progress display */ + progMessage = malloc (strlen (filename) + 12); + if (!progMessage) gimp_quit (); + sprintf (progMessage, "Saving %s:", filename); + gimp_progress_init (progMessage); + free (progMessage); + + /* Write the image header */ + PIX_DEBUG_PRINT( "Width %hu\n", drawable->width ); + PIX_DEBUG_PRINT( "Height %hu\n", drawable->height ); + put_short( drawable->width, file ); + put_short( drawable->height, file ); + put_short( 0, file ); + put_short( 0, file ); + if ( savingColor ) { + put_short( 24, file ); + } else { + put_short( 8, file ); + } + + tile_height = gimp_tile_height(); + src_base = g_new( guchar, tile_height * drawable->width * depth ); + + if ( savingColor ) { + /* Writing a 24-bit Pix image */ + guchar record[4]; + + for (i = 0; i < drawable->height;) { + rectHeight = ( tile_height < ( drawable->height - i - 1 ) ) ? + tile_height : ( drawable->height - i - 1 ); + gimp_pixel_rgn_get_rect (&pixel_rgn, src_base, 0, i, + drawable->width, rectHeight); + + for ( src = src_base, row = 0; + row < tile_height && i < drawable->height; + i += 1, row += 1) + { + /* Write a row of the image */ + guchar count; + gint cnt = 0; + + record[0] = 1; + record[3] = src[0]; + record[2] = src[1]; + record[1] = src[2]; + src += depth; + for ( j = 1; j < drawable->width; ++j ) { + if ( ( record[3] != src[0] ) || + ( record[2] != src[1] ) || + ( record[1] != src[2] ) || + ( record[0] == 255 ) ) + { + /* Write current RLE record and start a new one */ + + writelen = fwrite( record, 1, 4, file ); + record[0] = 1; + record[3] = src[0]; + record[2] = src[1]; + record[1] = src[2]; + } else { + /* increment run length in current record */ + record[0] ++; + } + src += depth; + } + /* Write last record in row */ + writelen = fwrite( record, 1, 4, file ); + } + gimp_progress_update ((double) i / (double) drawable->height); + } + } else { + /* Writing a 8-bit Matte (Mask) image */ + guchar record[2]; + + for (i = 0; i < drawable->height;) { + rectHeight = ( tile_height < ( drawable->height - i - 1 ) ) ? + tile_height : ( drawable->height - i - 1 ); + gimp_pixel_rgn_get_rect (&pixel_rgn, src_base, 0, i, + drawable->width, rectHeight); + + for ( src = src_base, row = 0; + row < tile_height && i < drawable->height; + i += 1, row += 1) + { + /* Write a row of the image */ + guchar count; + gint cnt = 0; + + record[0] = 1; + record[1] = src[0]; + src += depth; + for ( j = 1; j < drawable->width; ++j ) { + if ( ( record[1] != src[0] ) || + ( record[0] == 255 ) ) + { + /* Write current RLE record and start a new one */ + writelen = fwrite( record, 1, 2, file ); + record[0] = 1; + record[1] = src[0]; + } else { + /* increment run length in current record */ + record[0] ++; + } + src += depth; + } + /* Write last record in row */ + writelen = fwrite( record, 1, 2, file ); + } + gimp_progress_update ((double) i / (double) drawable->height); + } + } + + free( src_base ); + + fclose( file ); + return (1); +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/pixelize.c gimp-0.99.pre11/plug-ins/pixelize.c --- gimp-0.99.10/plug-ins/pixelize.c Fri Jun 6 02:09:21 1997 +++ gimp-0.99.pre11/plug-ins/pixelize.c Wed Aug 13 20:31:36 1997 @@ -1,6 +1,9 @@ /* The GIMP -- an image manipulation program * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * Copyright (C) 1997 Eiichi Takamori + * + * Pixelize plug-in (ported to GIMP v1.0) + * Copyright (C) 1997 Eiichi Takamori + * original pixelize.c for GIMP 0.54 by Tracy Scott * * 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 @@ -9,7 +12,7 @@ * * 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 + * 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 @@ -17,6 +20,35 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* + * version 1.04 + * This version requires GIMP v0.99.10 or above. + * + * This plug-in "pixelizes" the image. + * + * Eiichi Takamori + * http://ha1.seikyou.ne.jp/home/taka/gimp/ + * + * Changes from version 1.03 to version 1.04: + * - Added gtk_rc_parse + * - Added entry with scale + * - Fixed bug that large pixelwidth >=64 sometimes caused core dump + * + * Changes from gimp-0.99.9/plug-ins/pixelize.c to version 1.03: + * - Fixed comments and help strings + * - Fixed `RGB, GRAY' to `RGB*, GRAY*' + * - Fixed procedure db name `pixelize' to `plug_in_pixelize' + * + * Differences from Tracy Scott's original `pixelize' plug-in: + * + * - Algorithm is modified to work around with the tile management. + * The way of pixelizing is switched by the value of pixelwidth. If + * pixelwidth is greater than (or equal to) tile width, then this + * plug-in makes GPixelRgn with that width and proceeds. Otherwise, + * it makes the region named `PixelArea', whose size is smaller than + * tile width and is multiply of pixel width, and acts onto it. + */ + /* pixelize filter written for the GIMP * -Tracy Scott * @@ -24,55 +56,61 @@ * the provided region */ -/* Converted to GIMP v1.0 - * Eiichi Takamori - * $Id: pixelize.c 1.3 Tue, 03 Jun 1997 20:22:04 -0700 pmattis $ - * - * `Pixelize' implementation is heavily modified, because of tile management. - * For efficiency of speed. - * If pixelwidth is larger than some threshold ( eg. tile-width ), - * then use pixel_rgn_register() with that width. - * If pixelwidth is smaller, then some amount of `pixelized' pixels - * ( smaller than tile-width ) is got at a time (which is called `PixelArea') - * then pixelized. - * - * Feel free about to correct my WRONG English, or to modify Plug-in Path, - * and so on. ;-) - */ #include #include #include "gtk/gtk.h" #include "libgimp/gimp.h" +#include "libgimp/gimpui.h" + +#ifdef RCSID +static char rcsid[] = "$Id: pixelize.c,v 1.4 1997/06/08 14:07:09 takamori Exp $"; +#endif + /* Some useful macros */ -#define SCALE_WIDTH 125 #define TILE_CACHE_SIZE 16 +#define ENTSCALE_INT_SCALE_WIDTH 125 +#define ENTSCALE_INT_ENTRY_WIDTH 40 typedef struct { - gdouble pixelwidth; + gint pixelwidth; } PixelizeValues; typedef struct { gint run; } PixelizeInterface; -/* Declare a local function. +typedef struct { + gint x, y, w, h; + gint width; + guchar *data; +} PixelArea; + +typedef void (*EntscaleIntCallbackFunc) (gint value, gpointer data); + +typedef struct { + GtkObject *adjustment; + GtkWidget *entry; + gint constraint; + EntscaleIntCallbackFunc callback; + gpointer call_data; +} EntscaleIntData; + +/* Declare local functions. */ static void query (void); -static void run (gchar *name, - gint nparams, - GParam *param, - gint *nreturn_vals, - GParam **return_vals); +static void run (gchar *name, + gint nparams, + GParam *param, + gint *nreturn_vals, + GParam **return_vals); static gint pixelize_dialog (void); -static void pixelize_close_callback (GtkWidget *widget, - gpointer data); -static void pixelize_ok_callback (GtkWidget *widget, +static void pixelize_close_callback (GtkWidget *widget, gpointer data); -static void pixelize_scale_update (GtkAdjustment *adjustment, +static void pixelize_ok_callback (GtkWidget *widget, gpointer data); static void pixelize (GDrawable *drawable); @@ -80,12 +118,28 @@ static void pixelize_small (GDrawable *drawable, gint pixelwidth, gint tile_width); static void pixelize_sub ( gint pixelwidth, gint bpp, gint color_n ); +void entscale_int_new ( GtkWidget *table, gint x, gint y, + gchar *caption, gint *intvar, + gint min, gint max, gint constraint, + EntscaleIntCallbackFunc callback, + gpointer data ); +static void entscale_int_destroy_callback (GtkWidget *widget, + gpointer data); +static void entscale_int_scale_update (GtkAdjustment *adjustment, + gpointer data); +static void entscale_int_entry_update (GtkWidget *widget, + gpointer data); + + + +/***** Local vars *****/ + GPlugInInfo PLUG_IN_INFO = { - NULL, /* init_proc */ - NULL, /* quit_proc */ + NULL, /* init_proc */ + NULL, /* quit_proc */ query, /* query_proc */ - run, /* run_proc */ + run /* run_proc */ }; static PixelizeValues pvals = @@ -95,11 +149,14 @@ static PixelizeInterface pint = { - FALSE /* run */ + FALSE /* run */ }; +static PixelArea area; + +/***** Functions *****/ -MAIN (); /* added since 0.99.3 */ +MAIN (); static void query() @@ -109,20 +166,20 @@ { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, { PARAM_IMAGE, "image", "Input image (unused)" }, { PARAM_DRAWABLE, "drawable", "Input drawable" }, - { PARAM_INT32, "pixelwidth", "Pixel width (the decrease in resolution)" } + { PARAM_INT32, "pixelwidth", "Pixel width (the decrease in resolution)" } }; static GParamDef *return_vals = NULL; static gint nargs = sizeof (args) / sizeof (args[0]); static gint nreturn_vals = 0; - gimp_install_procedure ("pixelize", + gimp_install_procedure ("plug_in_pixelize", "Pixelize the contents of the specified drawable", - "More help", - "Spencer Kimball & Peter Mattis, Tracy Scott, Eiichi Takamori", - "Spencer Kimball & Peter Mattis, Tracy Scott, Eiichi Takamori", - "1995,1997", + "Pixelize the contents of the specified drawable with speficied pixelizing width.", + "Spencer Kimball & Peter Mattis, Tracy Scott, (ported to 1.0 by) Eiichi Takamori", + "Spencer Kimball & Peter Mattis, Tracy Scott", + "1995", "/Filters/Image/Pixelize", - "RGB, GRAY", + "RGB*, GRAY*", PROC_PLUG_IN, nargs, nreturn_vals, args, return_vals); @@ -174,7 +231,7 @@ pvals.pixelwidth = (gdouble) param[3].data.d_int32; } if ((status == STATUS_SUCCESS) && - pvals.pixelwidth < 0 ) + pvals.pixelwidth <= 0 ) status = STATUS_CALLING_ERROR; break; @@ -193,8 +250,11 @@ if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id)) { gimp_progress_init ("Pixelizing..."); + + /* set the tile cache size */ gimp_tile_cache_ntiles (TILE_CACHE_SIZE); + /* run the pixelize effect */ pixelize (drawable); if (run_mode != RUN_NONINTERACTIVE) @@ -224,11 +284,8 @@ GtkWidget *frame; GtkWidget *table; GtkWidget *button; - GtkWidget *label; - GtkWidget *scale; - GtkObject *scale_data; gchar **argv; - gint argc; + gint argc; argc = 1; argv = g_new (gchar *, 1); @@ -237,6 +294,7 @@ gtk_init (&argc, &argv); gtk_rc_parse (gimp_gtkrc ()); + dlg = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dlg), "Pixelize"); gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); @@ -248,8 +306,8 @@ button = gtk_button_new_with_label ("OK"); GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (button), "clicked", - (GtkSignalFunc) pixelize_ok_callback, - dlg); + (GtkSignalFunc) pixelize_ok_callback, + dlg); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); gtk_widget_grab_default (button); gtk_widget_show (button); @@ -263,31 +321,18 @@ gtk_widget_show (button); /* parameter settings */ - /* parameter settings */ frame = gtk_frame_new ("Parameter Settings"); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); gtk_container_border_width (GTK_CONTAINER (frame), 10); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); + table = gtk_table_new (3, 2, FALSE); gtk_container_border_width (GTK_CONTAINER (table), 10); gtk_container_add (GTK_CONTAINER (frame), table); - label = gtk_label_new ("Pixel width"); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, 0, 5, 0); - scale_data = gtk_adjustment_new (pvals.pixelwidth, 1.0, 64.0, 1.0, 1.0, 0.0); - scale = gtk_hscale_new (GTK_ADJUSTMENT (scale_data)); - gtk_widget_set_usize (scale, SCALE_WIDTH, 0); - gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); -/* gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), scale, TRUE, TRUE, 0); */ - gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_TOP); - gtk_scale_set_digits (GTK_SCALE (scale), 0); - gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED); - gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed", - (GtkSignalFunc) pixelize_scale_update, - &pvals.pixelwidth); - gtk_widget_show (label); - gtk_widget_show (scale); + entscale_int_new (table, 0, 0, "Pixel Width:", &pvals.pixelwidth, + 1, 64, FALSE, + NULL, NULL); gtk_widget_show (frame); gtk_widget_show (table); @@ -310,34 +355,40 @@ static void pixelize_ok_callback (GtkWidget *widget, - gpointer data) + gpointer data) { pint.run = TRUE; gtk_widget_destroy (GTK_WIDGET (data)); } -static void -pixelize_scale_update (GtkAdjustment *adjustment, - gpointer data) -{ - gdouble *pixelwidth_ptr = (gdouble*) data; - *pixelwidth_ptr = adjustment->value; -} +/* + Pixelize Effect + */ static void pixelize (GDrawable *drawable) { gint tile_width; gint pixelwidth; + tile_width = gimp_tile_width(); - pixelwidth = (gint) pvals.pixelwidth; + pixelwidth = pvals.pixelwidth; + + if (pixelwidth < 0) + pixelwidth = - pixelwidth; + if (pixelwidth < 1) + pixelwidth = 1; + if( pixelwidth >= tile_width ) pixelize_large( drawable, pixelwidth ); else pixelize_small( drawable, pixelwidth, tile_width ); } - +/* + This function operates on the image when pixelwidth >= tile_width. + It simply sets the size of GPixelRgn as pixelwidth and proceeds. + */ static void pixelize_large (GDrawable *drawable, gint pixelwidth ) { @@ -370,11 +421,11 @@ { x_step = pixelwidth - ( x % pixelwidth ); y_step = pixelwidth - ( y % pixelwidth ); - x_step = MIN( x_step, y2-y ); - y_step = MIN( y_step, x2-x ); + x_step = MIN( x_step, x2-x ); + y_step = MIN( y_step, y2-y ); gimp_pixel_rgn_init (&src_rgn, drawable, x, y, x_step, y_step, FALSE, FALSE); - for( b = 0; b < bpp; b++ ) + for( b = 0; b < bpp; b++ ) average[b] = 0; count = 0; @@ -420,7 +471,7 @@ } dest_row += dest_rgn.rowstride; } - /* Update progress */ + /* Update progress */ progress += dest_rgn.w * dest_rgn.h; gimp_progress_update ((double) progress / (double) max_progress); } @@ -429,21 +480,22 @@ g_free( average ); - /* update the blurred region */ + /* update the blurred region */ gimp_drawable_flush (drawable); gimp_drawable_merge_shadow (drawable->id, TRUE); gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); } -typedef struct { - gint x, y, w, h; - gint width; - guchar *data; -} PixelArea; - -PixelArea area; - +/* + This function operates on PixelArea, whose width and height are + multiply of pixel width, and less than the tile size (to enhance + its speed). + + If any coordinates of mask boundary is not multiply of pixel width + ( e.g. x1 % pixelwidth != 0 ), operates on the region whose width + or height is the remainder. + */ static void pixelize_small ( GDrawable *drawable, gint pixelwidth, gint tile_width ) { @@ -452,17 +504,6 @@ gint x1, y1, x2, y2; gint progress, max_progress; - /* - For speed efficiency, operates on PixelAreas, whose each width and - height are less than tile size. - - If both ends of area cannot be divided by pixelwidth ( as - x1%pixelwidth != 0 etc.), operates on the remainder pixels. - - Japanese: - $BB.EY=E;k$N$?$a!"(Bpixelwidth $B$$$/$D$+J,$NNN0h$KJ,3d$7$FA`:n$r9T$&(B - $BN>C<$K$"$^$j$,=P$k>l9g$I$&$9$k$+!)(B ( x1%pixelwidth !=0, x2%pixelwidth !=0 $B$N>l9g(B ) */ - gimp_drawable_mask_bounds (drawable->id, &x1, &y1, &x2, &y2); gimp_pixel_rgn_init (&src_rgn, drawable, x1, y1, x2-x1, y2-y1, FALSE, FALSE); gimp_pixel_rgn_init (&dest_rgn, drawable, x1, y1, x2-x1, y2-y1, TRUE, TRUE); @@ -505,27 +546,27 @@ g_free( area.data ); - /* update the blurred region */ + /* update the pixelized region */ gimp_drawable_flush (drawable); gimp_drawable_merge_shadow (drawable->id, TRUE); gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); } +/* + This function acts on one PixelArea. Since there were so many + nested FORs in pixelize_small(), I put a few of them here... + */ + static void pixelize_sub( gint pixelwidth, gint bpp, gint color_n ) { glong average[3]; /* color_n <= 3 */ - gint x, y, w, h; + gint x, y, w, h; guchar *buf_row, *buf; - gint row, col; - gint rowstride; - gint count; - gint i; - - /* - Since there's so many nested FOR's, - put a few of them here... - */ + gint row, col; + gint rowstride; + gint count; + gint i; rowstride = area.w * bpp; @@ -584,11 +625,178 @@ } } +/* ====================================================================== */ +/* + Entry and Scale pair 1.03 + + TODO: + - Do the proper thing when the user changes value in entry, + so that callback should not be called when value is actually not changed. + - Update delay + */ /* - * Local Variables: - * c-indent-level: 2 - * c-tab-always-indent: nil - * End: + * entscale: create new entscale with label. (int) + * 1 row and 2 cols of table are needed. + * Input: + * x, y: starting row and col in table + * caption: label string + * intvar: pointer to variable + * min, max: the boundary of scale + * constraint: (bool) true iff the value of *intvar should be constraint + * by min and max + * callback: called when the value is actually changed + * call_data: data for callback func */ +void +entscale_int_new ( GtkWidget *table, gint x, gint y, + gchar *caption, gint *intvar, + gint min, gint max, gint constraint, + EntscaleIntCallbackFunc callback, + gpointer call_data) +{ + EntscaleIntData *userdata; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *scale; + GtkObject *adjustment; + gchar buffer[256]; + gint constraint_val; + + userdata = g_new ( EntscaleIntData, 1 ); + + label = gtk_label_new (caption); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + + /* + If the first arg of gtk_adjustment_new() isn't between min and + max, it is automatically corrected by gtk later with + "value_changed" signal. I don't like this, since I want to leave + *intvar untouched when `constraint' is false. + The lines below might look oppositely, but this is OK. + */ + userdata->constraint = constraint; + if( constraint ) + constraint_val = *intvar; + else + constraint_val = ( *intvar < min ? min : *intvar > max ? max : *intvar ); + + userdata->adjustment = adjustment = + gtk_adjustment_new ( constraint_val, min, max, 1.0, 1.0, 0.0); + scale = gtk_hscale_new ( GTK_ADJUSTMENT(adjustment) ); + gtk_widget_set_usize (scale, ENTSCALE_INT_SCALE_WIDTH, 0); + gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE); + + userdata->entry = entry = gtk_entry_new (); + gtk_widget_set_usize (entry, ENTSCALE_INT_ENTRY_WIDTH, 0); + sprintf( buffer, "%d", *intvar ); + gtk_entry_set_text( GTK_ENTRY (entry), buffer ); + + userdata->callback = callback; + userdata->call_data = call_data; + + /* userdata is done */ + gtk_object_set_user_data (GTK_OBJECT(adjustment), userdata); + gtk_object_set_user_data (GTK_OBJECT(entry), userdata); + + /* now ready for signals */ + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entscale_int_entry_update, + intvar); + gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", + (GtkSignalFunc) entscale_int_scale_update, + intvar); + gtk_signal_connect (GTK_OBJECT (entry), "destroy", + (GtkSignalFunc) entscale_int_destroy_callback, + userdata ); + + /* start packing */ + hbox = gtk_hbox_new (FALSE, 5); + gtk_box_pack_start (GTK_BOX (hbox), scale, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, TRUE, 0); + + gtk_table_attach (GTK_TABLE (table), label, x, x+1, y, y+1, + GTK_FILL, GTK_FILL, 0, 0); + gtk_table_attach (GTK_TABLE (table), hbox, x+1, x+2, y, y+1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + + gtk_widget_show (label); + gtk_widget_show (entry); + gtk_widget_show (scale); + gtk_widget_show (hbox); +} + + +/* when destroyed, userdata is destroyed too */ +static void +entscale_int_destroy_callback (GtkWidget *widget, + gpointer data) +{ + EntscaleIntData *userdata; + + userdata = data; + g_free ( userdata ); +} + +static void +entscale_int_scale_update (GtkAdjustment *adjustment, + gpointer data) +{ + EntscaleIntData *userdata; + GtkEntry *entry; + gchar buffer[256]; + gint *intvar = data; + gint new_val; + + userdata = gtk_object_get_user_data (GTK_OBJECT (adjustment)); + + new_val = (gint) adjustment->value; + + *intvar = new_val; + + entry = GTK_ENTRY( userdata->entry ); + sprintf (buffer, "%d", (int) new_val ); + + /* avoid infinite loop (scale, entry, scale, entry ...) */ + gtk_signal_handler_block_by_data ( GTK_OBJECT(entry), data ); + gtk_entry_set_text ( entry, buffer); + gtk_signal_handler_unblock_by_data ( GTK_OBJECT(entry), data ); + + if (userdata->callback) + (*userdata->callback) (*intvar, userdata->call_data); +} + +static void +entscale_int_entry_update (GtkWidget *widget, + gpointer data) +{ + EntscaleIntData *userdata; + GtkAdjustment *adjustment; + int new_val, constraint_val; + int *intvar = data; + + userdata = gtk_object_get_user_data (GTK_OBJECT (widget)); + adjustment = GTK_ADJUSTMENT( userdata->adjustment ); + + new_val = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); + constraint_val = new_val; + if ( constraint_val < adjustment->lower ) + constraint_val = adjustment->lower; + if ( constraint_val > adjustment->upper ) + constraint_val = adjustment->upper; + + if ( userdata->constraint ) + *intvar = constraint_val; + else + *intvar = new_val; + + adjustment->value = constraint_val; + gtk_signal_handler_block_by_data ( GTK_OBJECT(adjustment), data ); + gtk_signal_emit_by_name ( GTK_OBJECT(adjustment), "value_changed"); + gtk_signal_handler_unblock_by_data ( GTK_OBJECT(adjustment), data ); + + if (userdata->callback) + (*userdata->callback) (*intvar, userdata->call_data); +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/png.c gimp-0.99.pre11/plug-ins/png.c --- gimp-0.99.10/plug-ins/png.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/png.c Wed Aug 13 20:41:35 1997 @@ -0,0 +1,873 @@ +/* + * "$Id: png.c,v 1.6 1997/06/11 17:49:07 mike Exp mike $" + * + * Portable Network Graphics (PNG) plug-in for The GIMP -- an image + * manipulation program + * + * Copyright 1997 Michael Sweet (mike@easysw.com) and + * Daniel Skarda (0rfelyus@atrey.karlin.mff.cuni.cz). + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contents: + * + * main() - Main entry - just call gimp_main()... + * query() - Respond to a plug-in query... + * run() - Run the plug-in... + * load_image() - Load a PNG image into a new image window. + * save_image() - Save the specified image to a PNG file. + * save_close_callback() - Close the save dialog window. + * save_ok_callback() - Destroy the save dialog and save the image. + * save_compression_callback() - Update the image compression level. + * save_interlace_update() - Update the interlacing option. + * save_dialog() - Pop up the save dialog. + * + * Revision History: + * + * $Log: png.c,v $ + * Revision 1.6 1997/06/11 17:49:07 mike + * Updated docos for release. + * + * Revision 1.5 1997/06/11 17:39:28 mike + * Fixed a few memory leaks - not critical, since this plug-in isn't running + * all the time... + * + * Merged with work done by Daniel Skarda - now support compression level + * and interlacing on saves. + * + * Fixed indexed image handling (whoops, image types and drawable types are + * not the same... d'oh!) + * + * Revision 1.4 1997/06/08 19:34:43 mike + * Fixed bug in load_image() and save_image() - would crash if filename + * didn't have a '/' in it... + * + * Revision 1.3 1997/06/08 16:34:33 mike + * Added actual code to save_image(). + * Updated docos. + * + * Revision 1.2 1997/06/08 16:02:52 mike + * Updated registration to get rid of load handler errors. + * + * Revision 1.1 1997/06/08 15:10:08 mike + * Initial revision + */ + +#include +#include + +#include /* PNG library definitions */ + +#include +#include + + +/* + * Constants... + */ + +#define PLUG_IN_VERSION "1.1" +#define SCALE_WIDTH 125 + + +/* + * Structures... + */ + +typedef struct +{ + gint interlaced; + gint compression_level; +} PngSaveVals; + + +/* + * Local functions... + */ + +static void query(void); +static void run(char *, int, GParam *, int *, GParam **); +static gint32 load_image(char *); +static gint save_image (char *, gint32, gint32); +static gint save_dialog(void); +static void save_close_callback(GtkWidget *, gpointer); +static void save_ok_callback(GtkWidget *, gpointer); +static void save_compression_update(GtkAdjustment *, gpointer); +static void save_interlace_update(GtkWidget *, gpointer); + + +/* + * Globals... + */ + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +PngSaveVals pngvals = +{ + FALSE, + 9 +}; + +int runme = FALSE; + + +/* + * 'main()' - Main entry - just call gimp_main()... + */ + +int +main(int argc, /* I - Number of command-line args */ + char *argv[]) /* I - Command-line args */ +{ + return (gimp_main(argc, argv)); +} + + +/* + * 'query()' - Respond to a plug-in query... + */ + +static void +query(void) +{ + static GParamDef load_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_STRING, "filename", "The name of the file to load" }, + { PARAM_STRING, "raw_filename", "The name of the file to load" }, + }; + static GParamDef load_return_vals[] = + { + { PARAM_IMAGE, "image", "Output image" }, + }; + static int nload_args = sizeof (load_args) / sizeof (load_args[0]); + static int nload_return_vals = sizeof (load_return_vals) / sizeof (load_return_vals[0]); + static GParamDef save_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Drawable to save" }, + { PARAM_STRING, "filename", "The name of the file to save the image in" }, + { PARAM_STRING, "raw_filename", "The name of the file to save the image in" }, + { PARAM_INT32, "interlace", "Save with interlacing option enabled" }, + { PARAM_INT32, "compression", "Compression level" } + }; + static int nsave_args = sizeof (save_args) / sizeof (save_args[0]); + + + gimp_install_procedure("file_png_load", + "Loads files in PNG file format", + "This plug-in loads Portable Network Graphics (PNG) files.", + "Michael Sweet & Daniel Skarda", "Michael Sweet & Daniel Skarda", PLUG_IN_VERSION, + "/PNG", NULL, PROC_PLUG_IN, nload_args, nload_return_vals, + load_args, load_return_vals); + + gimp_install_procedure("file_png_save", + "Saves files in PNG file format", + "This plug-in saves Portable Network Graphics (PNG) files.", + "Michael Sweet & Daniel Skarda", "Michael Sweet & Daniel Skarda", PLUG_IN_VERSION, + "/PNG", "RGB*,GRAY*,INDEXED*", PROC_PLUG_IN, nsave_args, 0, save_args, NULL); + + gimp_register_magic_load_handler("file_png_load", "png", "", "0,string,\211PNG*\\0"); + gimp_register_save_handler("file_png_save", "png", ""); +} + + +/* + * 'run()' - Run the plug-in... + */ + +static void +run(char *name, /* I - Name of filter program. */ + int nparams, /* I - Number of parameters passed in */ + GParam *param, /* I - Parameter values */ + int *nreturn_vals, /* O - Number of return values */ + GParam **return_vals) /* O - Return values */ +{ + gint32 image_ID; /* ID of loaded image */ + static GParam values[2]; /* Return values */ + + + /* + * Initialize parameter data... + */ + + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_SUCCESS; + + *nreturn_vals = 1; + *return_vals = values; + + /* + * Load or save an image... + */ + + if (strcmp(name, "file_png_load") == 0) + { + image_ID = load_image(param[1].data.d_string); + + if (image_ID != -1) + { + *nreturn_vals = 2; + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image_ID; + } + else + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + else if (strcmp (name, "file_png_save") == 0) + { + switch (param[0].data.d_int32) + { + case RUN_INTERACTIVE : + /* + * Possibly retrieve data... + */ + + gimp_get_data("file_png_save", &pngvals); + + /* + * Then acquire information with a dialog... + */ + + if (!save_dialog()) + return; + break; + + case RUN_NONINTERACTIVE : + /* + * Make sure all the arguments are there! + */ + + if (nparams != 6) + values[0].data.d_status = STATUS_CALLING_ERROR; + else + { + pngvals.interlaced = param[5].data.d_int32; + pngvals.compression_level = param[6].data.d_int32; + + if (pngvals.compression_level < 0 || + pngvals.compression_level > 9) + values[0].data.d_status = STATUS_CALLING_ERROR; + }; + break; + + case RUN_WITH_LAST_VALS : + /* + * Possibly retrieve data... + */ + + gimp_get_data("file_png_save", &pngvals); + break; + + default : + break; + }; + + if (values[0].data.d_status == STATUS_SUCCESS) + { + if (save_image(param[3].data.d_string, param[1].data.d_int32, + param[2].data.d_int32)) + gimp_set_data("file_png_save", &pngvals, sizeof(pngvals)); + else + values[0].data.d_status = STATUS_EXECUTION_ERROR; + }; + } + else + values[0].data.d_status = STATUS_EXECUTION_ERROR; +} + + +/* + * 'load_image()' - Load a PNG image into a new image window. + */ + +static gint32 +load_image(char *filename) /* I - File to load */ +{ + int i, /* Looping var */ + y, /* Current Y coordinate */ + bpp, /* Bytes per pixel */ + image_type, /* Type of image */ + layer_type, /* Type of drawable/layer */ + num_passes, /* Number of interlace passes in file */ + pass, /* Current pass in file */ + tile_height, /* Height of tile in GIMP */ + begin, /* Beginning tile row */ + end, /* Ending tile row */ + num; /* Number of rows to load */ + FILE *fp; /* File pointer */ + gint32 image, /* Image */ + layer; /* Layer */ + GDrawable *drawable; /* Drawable for layer */ + GPixelRgn pixel_rgn; /* Pixel region for layer */ + png_structp pp; /* PNG read pointer */ + png_infop info; /* PNG info pointers */ + guchar **pixels, /* Pixel rows */ + *pixel; /* Pixel data */ + char progress[255]; /* Title for progress display... */ + + + /* + * Setup the PNG data structures... + */ + +#if PNG_LIBPNG_VER > 88 + /* + * Use the "new" calling convention... + */ + + pp = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + info = png_create_info_struct(pp); +#else + /* + * SGI (and others) supply libpng-88 and not -89c... + */ + + pp = (png_structp)calloc(sizeof(png_struct), 1); + png_read_init(pp); + + info = (png_infop)calloc(sizeof(png_info), 1); +#endif /* PNG_LIBPNG_VER > 88 */ + + /* + * Open the file and initialize the PNG read "engine"... + */ + + fp = fopen(filename, "r"); + png_init_io(pp, fp); + + if (strrchr(filename, '/') != NULL) + sprintf(progress, "Loading %s:", strrchr(filename, '/') + 1); + else + sprintf(progress, "Loading %s:", filename); + + gimp_progress_init(progress); + + /* + * Get the image dimensions and create the image... + */ + + png_read_info(pp, info); + + if (info->bit_depth < 8) + { + png_set_packing(pp); + png_set_expand(pp); + + if (info->valid & PNG_INFO_sBIT) + png_set_shift(pp, &(info->sig_bit)); + } + else if (info->bit_depth == 16) + png_set_strip_16(pp); + + /* + * Turn on interlace handling... + */ + + if (info->interlace_type) + num_passes = png_set_interlace_handling(pp); + else + num_passes = 1; + + switch (info->color_type) + { + case PNG_COLOR_TYPE_RGB : /* RGB */ + bpp = 3; + image_type = RGB; + layer_type = RGB_IMAGE; + break; + + case PNG_COLOR_TYPE_RGB_ALPHA : /* RGBA */ + bpp = 4; + image_type = RGB; + layer_type = RGBA_IMAGE; + break; + + case PNG_COLOR_TYPE_GRAY : /* Grayscale */ + bpp = 1; + image_type = GRAY; + layer_type = GRAY_IMAGE; + break; + + case PNG_COLOR_TYPE_GRAY_ALPHA : /* Grayscale + alpha */ + bpp = 2; + image_type = GRAY; + layer_type = GRAYA_IMAGE; + break; + + case PNG_COLOR_TYPE_PALETTE : /* Indexed */ + bpp = 1; + image_type = INDEXED; + layer_type = INDEXED_IMAGE; + break; + + case PNG_COLOR_TYPE_PALETTE | PNG_COLOR_MASK_ALPHA: /* Indexed + alpha */ + bpp = 2; + image_type = INDEXED; + layer_type = INDEXEDA_IMAGE; + break; + }; + + image = gimp_image_new(info->width, info->height, image_type); + if (image == -1) + { + g_print("can't allocate new image\n"); + gimp_quit(); + }; + + gimp_image_set_filename(image, filename); + + /* + * Load the colormap as necessary... + */ + + if (info->color_type & PNG_COLOR_MASK_PALETTE) + gimp_image_set_cmap(image, (guchar *)info->palette, info->num_palette); + + /* + * Create the "background" layer to hold the image... + */ + + layer = gimp_layer_new(image, "Background", info->width, info->height, + layer_type, 100, NORMAL_MODE); + gimp_image_add_layer(image, layer, 0); + + /* + * Get the drawable and set the pixel region for our load... + */ + + drawable = gimp_drawable_get(layer); + + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, + drawable->height, TRUE, FALSE); + + /* + * Temporary buffer... + */ + + tile_height = gimp_tile_height (); + pixel = g_new(guchar, tile_height * info->width * bpp); + pixels = g_new(guchar *, tile_height); + + for (i = 0; i < tile_height; i ++) + pixels[i] = pixel + info->width * info->channels * i; + + for (pass = 0; pass < num_passes; pass ++) + { + /* + * This works if you are only reading one row at a time... + */ + + for (begin = 0, end = tile_height; + begin < info->height; + begin += tile_height, end += tile_height) + { + if (end > info->height) + end = info->height; + + num = end - begin; + + if (pass != 0) /* to handle interlaced PiNGs */ + gimp_pixel_rgn_get_rect(&pixel_rgn, pixel, 0, begin, drawable->width, num); + + png_read_rows(pp, pixels, NULL, num); + + gimp_pixel_rgn_set_rect(&pixel_rgn, pixel, 0, begin, drawable->width, num); + + gimp_progress_update(((double)pass + (double)end / (double)info->height) / + (double)num_passes); + }; + }; + + /* + * Done with the file... + */ + + png_read_end(pp, info); + png_read_destroy(pp, info, NULL); + + free(pixel); + free(pixels); + free(pp); + free(info); + + fclose(fp); + + /* + * Update the display... + */ + + gimp_drawable_flush(drawable); + gimp_drawable_detach(drawable); + + return (image); +} + + +/* + * 'save_image()' - Save the specified image to a PNG file. + */ + +static gint +save_image(char *filename, /* I - File to save to */ + gint32 image_ID, /* I - Image to save */ + gint32 drawable_ID) /* I - Current drawable */ +{ + int i, /* Looping var */ + y, /* Current Y coordinate */ + bpp, /* Bytes per pixel */ + type, /* Type of drawable/layer */ + num_passes, /* Number of interlace passes in file */ + pass, /* Current pass in file */ + tile_height, /* Height of tile in GIMP */ + begin, /* Beginning tile row */ + end, /* Ending tile row */ + num; /* Number of rows to load */ + FILE *fp; /* File pointer */ + GDrawable *drawable; /* Drawable for layer */ + GPixelRgn pixel_rgn; /* Pixel region for layer */ + png_structp pp; /* PNG read pointer */ + png_infop info; /* PNG info pointer */ + guchar **pixels, /* Pixel rows */ + *pixel; /* Pixel data */ + char progress[255]; /* Title for progress display... */ + + + /* + * Setup the PNG data structures... + */ + +#if PNG_LIBPNG_VER > 88 + /* + * Use the "new" calling convention... + */ + + pp = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + info = png_create_info_struct(pp); +#else + /* + * SGI (and others) supply libpng-88 and not -89c... + */ + + pp = (png_structp)calloc(sizeof(png_struct), 1); + png_write_init(pp); + + info = (png_infop)calloc(sizeof(png_info), 1); + png_info_init(info); +#endif /* PNG_LIBPNG_VER > 88 */ + + /* + * Open the file and initialize the PNG read "engine"... + */ + + fp = fopen(filename, "w"); + png_init_io(pp, fp); + + if (strrchr(filename, '/') != NULL) + sprintf(progress, "Saving %s:", strrchr(filename, '/') + 1); + else + sprintf(progress, "Saving %s:", filename); + + gimp_progress_init(progress); + + /* + * Get the drawable for the current image... + */ + + drawable = gimp_drawable_get(drawable_ID); + type = gimp_drawable_type(drawable_ID); + + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, + drawable->height, FALSE, FALSE); + + /* + * Set the image dimensions and save the image... + */ + + png_set_compression_level(pp, pngvals.compression_level); + + info->width = drawable->width; + info->height = drawable->height; + info->bit_depth = 8; + info->gamma = gimp_gamma(); + info->sig_bit.red = 8; + info->sig_bit.green = 8; + info->sig_bit.blue = 8; + info->sig_bit.gray = 8; + info->sig_bit.alpha = 8; + info->interlace_type = pngvals.interlaced; + info->valid |= PNG_INFO_gAMA; + + switch (type) + { + case RGB_IMAGE : + info->color_type = PNG_COLOR_TYPE_RGB; + bpp = 3; + break; + case RGBA_IMAGE : + info->color_type = PNG_COLOR_TYPE_RGB_ALPHA; + bpp = 4; + break; + case GRAY_IMAGE : + info->color_type = PNG_COLOR_TYPE_GRAY; + bpp = 1; + break; + case GRAYA_IMAGE : + info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; + bpp = 2; + break; + case INDEXED_IMAGE : + info->color_type = PNG_COLOR_TYPE_PALETTE; + info->palette = (png_colorp)gimp_image_get_cmap(image_ID, + &(info->num_palette)); + bpp = 1; + break; + case INDEXEDA_IMAGE : + info->color_type = PNG_COLOR_TYPE_PALETTE | PNG_COLOR_MASK_ALPHA; + info->palette = (png_colorp)gimp_image_get_cmap(image_ID, + &(info->num_palette)); + bpp = 2; + break; + }; + + png_write_info(pp, info); + + /* + * Turn on interlace handling... + */ + + if (pngvals.interlaced) + num_passes = png_set_interlace_handling(pp); + else + num_passes = 1; + + /* + * Allocate memory for "tile_height" rows and save the image... + */ + + tile_height = gimp_tile_height(); + pixel = g_new(guchar, tile_height * drawable->width * bpp); + pixels = g_new(guchar *, tile_height); + + for (i = 0; i < tile_height; i ++) + pixels[i]= pixel + drawable->width * bpp * i; + + for (pass = 0; pass < num_passes; pass ++) + { + /* + * This works if you are only writing one row at a time... + */ + + for (begin = 0, end = tile_height; + begin < drawable->height; + begin += tile_height, end += tile_height) + { + if (end > drawable->height) + end = drawable->height; + + num = end - begin; + + gimp_pixel_rgn_get_rect(&pixel_rgn, pixel, 0, begin, drawable->width, num); + + png_write_rows(pp, pixels, num); + + gimp_progress_update(((double)pass + (double)end / (double)info->height) / + (double)num_passes); + }; + }; + + png_write_end(pp, info); + png_write_destroy(pp); + + free(pixel); + free(pixels); + + /* + * Done with the file... + */ + + free(pp); + free(info); + + fclose(fp); + + return (1); +} + + +/* + * 'save_close_callback()' - Close the save dialog window. + */ + +static void +save_close_callback(GtkWidget *widget, /* I - Close button */ + gpointer data) /* I - Callback data */ +{ + gtk_main_quit(); +} + + +/* + * 'save_ok_callback()' - Destroy the save dialog and save the image. + */ + +static void +save_ok_callback(GtkWidget *widget, /* I - OK button */ + gpointer data) /* I - Callback data */ +{ + runme = TRUE; + + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +/* + * 'save_compression_callback()' - Update the image compression level. + */ + +static void +save_compression_update(GtkAdjustment *adjustment, /* I - Scale adjustment */ + gpointer data) /* I - Callback data */ +{ + pngvals.compression_level = (gint32)adjustment->value; +} + + +/* + * 'save_interlace_update()' - Update the interlacing option. + */ + +static void +save_interlace_update(GtkWidget *widget, /* I - Interlace toggle button */ + gpointer data) /* I - Callback data */ +{ + pngvals.interlaced = GTK_TOGGLE_BUTTON(widget)->active; +} + + +/* + * 'save_dialog()' - Pop up the save dialog. + */ + +static gint +save_dialog(void) +{ + GtkWidget *dlg, /* Dialog window */ + *button, /* OK/cancel buttons */ + *frame, /* Frame for dialog */ + *table, /* Table for dialog options */ + *toggle, /* Interlace toggle button */ + *label, /* Label for controls */ + *scale; /* Compression level scale */ + GtkObject *scale_data; /* Scale data */ + gchar **argv; /* Fake command-line args */ + gint argc; /* Number of fake command-line args */ + + + /* + * Fake the command-line args and open a window... + */ + + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup("png"); + + gtk_init(&argc, &argv); + + /* + * Open a dialog window... + */ + + dlg = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dlg), "PNG Options"); + gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(dlg), "destroy", + (GtkSignalFunc)save_close_callback, NULL); + + /* + * OK/cancel buttons... + */ + + button = gtk_button_new_with_label("OK"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT (button), "clicked", + (GtkSignalFunc)save_ok_callback, + dlg); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect_object(GTK_OBJECT(button), "clicked", + (GtkSignalFunc)gtk_widget_destroy, GTK_OBJECT(dlg)); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + /* + * Compression level, interlacing controls... + */ + + frame = gtk_frame_new("Parameter Settings"); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_box_pack_start(GTK_BOX (GTK_DIALOG(dlg)->vbox), frame, TRUE, TRUE, 0); + + table = gtk_table_new(2, 2, FALSE); + gtk_container_border_width(GTK_CONTAINER(table), 10); + gtk_container_add(GTK_CONTAINER(frame), table); + + toggle = gtk_check_button_new_with_label("Interlace"); + gtk_table_attach(GTK_TABLE(table), toggle, 0, 2, 0, 1, GTK_FILL, 0, 0, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc)save_interlace_update, NULL); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), pngvals.interlaced); + gtk_widget_show(toggle); + + label = gtk_label_new("Compression level"); + gtk_misc_set_alignment(GTK_MISC (label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, 0, 5, 0); + + scale_data = gtk_adjustment_new(pngvals.compression_level, 1.0, 9.0, 1.0, 1.0, 0.0); + scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); + gtk_widget_set_usize(scale, SCALE_WIDTH, 0); + gtk_table_attach(GTK_TABLE(table), scale, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); + gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_TOP); + gtk_scale_set_digits(GTK_SCALE (scale), 1); + gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_DELAYED); + gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", + (GtkSignalFunc)save_compression_update, NULL); + gtk_widget_show(label); + gtk_widget_show(scale); + gtk_widget_show(table); + gtk_widget_show(frame); + gtk_widget_show(dlg); + + gtk_main(); + gdk_flush(); + + return (runme); +} + +/* + * End of "$Id: png.c,v 1.6 1997/06/11 17:49:07 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/print-escp2.c gimp-0.99.pre11/plug-ins/print-escp2.c --- gimp-0.99.10/plug-ins/print-escp2.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/print-escp2.c Thu Aug 14 00:41:45 1997 @@ -0,0 +1,600 @@ +/* + * "$Id: print-escp2.c,v 1.6 1997/07/30 20:33:05 mike Exp mike $" + * + * Print plug-in EPSON ESC/P2 driver for the GIMP. + * + * Copyright 1997 Michael Sweet (mike@easysw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contents: + * + * escp2_print() - Print an image to an EPSON printer. + * escp2_write() - Send ESC/P2 graphics using TIFF packbits compression. + * + * Revision History: + * + * $Log: print-escp2.c,v $ + * Revision 1.6 1997/07/30 20:33:05 mike + * Final changes for 1.1 release. + * + * Revision 1.5 1997/07/30 18:47:39 mike + * Added scaling, orientation, and offset options. + * + * Revision 1.4 1997/07/15 20:57:11 mike + * Updated ESC 800/1520/3000 output code to use vertical spacing of 5 instead of 40. + * + * Revision 1.3 1997/07/03 13:21:15 mike + * Updated documentation for 1.0 release. + * + * Revision 1.2 1997/07/03 13:03:57 mike + * Added horizontal offset to try to center image. + * Got rid of initial vertical positioning since the top margin is + * now set properly. + * + * Revision 1.2 1997/07/03 13:03:57 mike + * Added horizontal offset to try to center image. + * Got rid of initial vertical positioning since the top margin is + * now set properly. + * + * Revision 1.1 1997/07/02 13:51:53 mike + * Initial revision + */ + +#include "print.h" + + +/* + * Local functions... + */ + +static void escp2_write(FILE *, unsigned char *, int, int, int, int, int, int); + + +/* + * 'escp2_print()' - Print an image to an EPSON printer. + */ + +void +escp2_print(FILE *prn, /* I - Print file or command */ + GDrawable *drawable, /* I - Image to print */ + int media_size, /* I - Output size */ + int xdpi, /* I - Horizontal resolution */ + int ydpi, /* I - Vertical resolution */ + int output_type, /* I - Color or grayscale? */ + int model, /* I - Model of printer */ + guchar *lut, /* I - Brightness lookup table */ + guchar *cmap, /* I - Colormap (for indexed images) */ + int orientation, /* I - Orientation of image */ + int scaling, /* I - Scaling of image */ + int left, /* I - Left offset of image (10ths) */ + int top) /* I - Top offset of image (10ths) */ +{ + int x, y; /* Looping vars */ + int n; /* Output number */ + GPixelRgn rgn; /* Image region */ + unsigned char *in, /* Input pixels */ + *out, /* Output pixels */ + *black, /* Black bitmap data */ + *cyan, /* Cyan bitmap data */ + *magenta, /* Magenta bitmap data */ + *yellow; /* Yellow bitmap data */ + int page_width, /* Width of page */ + page_height, /* Height of page */ + out_width, /* Width of image on page */ + out_height, /* Height of image on page */ + out_bpp, /* Output bytes per pixel */ + temp_width, /* Temporary width of image on page */ + temp_height, /* Temporary height of image on page */ + landscape, /* True if we rotate the output 90 degrees */ + length, /* Length of raster data */ + errdiv, /* Error dividend */ + errmod, /* Error modulus */ + errval, /* Current error value */ + errline, /* Current raster line */ + errlast; /* Last raster line loaded */ + convert_t colorfunc; /* Color conversion function... */ + + + /* + * Setup a read-only pixel region for the entire image... + */ + + gimp_pixel_rgn_init(&rgn, drawable, 0, 0, drawable->width, drawable->height, + FALSE, FALSE); + + /* + * Choose the correct color conversion function... + */ + + if (drawable->bpp < 3 && cmap == NULL) + output_type = OUTPUT_GRAY; /* Force grayscale output */ + + if (output_type == OUTPUT_COLOR) + { + out_bpp = 3; + + if (drawable->bpp >= 3) + colorfunc = rgb_to_rgb; + else + colorfunc = indexed_to_rgb; + } + else + { + out_bpp = 1; + + if (drawable->bpp >= 3) + colorfunc = rgb_to_gray; + else if (cmap == NULL) + colorfunc = gray_to_gray; + else + colorfunc = indexed_to_gray; + }; + + /* + * Compute the output size... + */ + + landscape = 0; + page_width = media_width(media_size, xdpi); + page_height = media_height(media_size, ydpi); + + /* + * Portrait width/height... + */ + + out_width = page_width * scaling / 100; + out_height = out_width * ydpi / xdpi * drawable->height / drawable->width; + if (out_height > page_height) + { + out_height = page_height; + out_width = out_height * xdpi / ydpi * drawable->width / drawable->height; + }; + + /* + * Landscape width/height... + */ + + temp_width = page_width * scaling / 100; + temp_height = temp_width * ydpi / xdpi * drawable->width / drawable->height; + if (temp_height > page_height) + { + temp_height = page_height; + temp_width = temp_height * xdpi / ydpi * drawable->height / drawable->width; + }; + + /* + * See which orientation has the greatest area... + */ + + if ((temp_width * temp_height) > (out_width * out_height) && + orientation != ORIENT_PORTRAIT) + { + out_width = temp_width; + out_height = temp_height; + landscape = 1; + + /* + * Swap left/top offsets... + */ + + x = top; + top = left; + left = x; + }; + + /* + * Let the user know what we're doing... + */ + + gimp_progress_init("Printing..."); + + /* + * Send ESC/P2 initialization commands... + */ + + fputs("\033@", prn); /* ESC/P2 reset */ + + fwrite("\033(G\001\000\001", 6, 1, prn); /* Enter graphics mode */ + switch (ydpi) /* Set line feed increment */ + { + case 180 : + fwrite("\033(U\001\000\024", 6, 1, prn); + break; + + case 360 : + fwrite("\033(U\001\000\012", 6, 1, prn); + break; + + case 720 : + fwrite("\033(U\001\000\005", 6, 1, prn); + break; + }; + + fwrite("\033(C\002\000", 5, 1, prn); /* Page length */ + n = page_height + ydpi; + putc(n & 255, prn); + putc(n >> 8, prn); + + if (left < 0 || top < 0) + { + left = (page_width - out_width) / 2; + top = (page_height - out_height + ydpi) / 2; + } + else + { + left *= xdpi / 10; + top = top * ydpi / 10 + ydpi / 2; + }; + + fwrite("\033(c\004\000", 5, 1, prn); /* Top/bottom margins */ + putc(top & 255, prn); + putc(top >> 8, prn); + n = page_height + ydpi / 2; + putc(n & 255, prn); + putc(n >> 8, prn); + + switch (model) /* Printer specific initialization */ + { + case 0 : /* ESC */ + break; + + case 1 : /* ESC Pro, Pro XL, 400, 500 */ + fwrite("\033(e\002\000\000\001", 7, 1, prn); /* Small dots */ + break; + + case 2 : /* ESC 1500 */ + fwrite("\033(e\002\000\000\001", 7, 1, prn); /* Small dots */ + break; + + case 3 : /* ESC 600 */ + if (output_type == OUTPUT_GRAY) + fwrite("\033(K\002\000\000\001", 7, 1, prn); /* Fast black printing */ + else + fwrite("\033(K\002\000\000\002", 7, 1, prn); /* Color printing */ + + fwrite("\033(e\002\000\000\003", 7, 1, prn); /* Small dots */ + break; + + case 4 : /* ESC 800, 1520, 3000 */ + if (output_type == OUTPUT_GRAY) + fwrite("\033(K\002\000\000\001", 7, 1, prn); /* Fast black printing */ + else + fwrite("\033(K\002\000\000\002", 7, 1, prn); /* Color printing */ + + fwrite("\033(e\002\000\000\002", 7, 1, prn); /* Small dots */ + break; + }; + + /* + * Allocate memory for the raster data... + */ + + length = (out_width + 7) / 8; + + if (output_type == OUTPUT_GRAY) + { + black = g_malloc(length); + cyan = NULL; + magenta = NULL; + yellow = NULL; + } + else + { + cyan = g_malloc(length); + magenta = g_malloc(length); + yellow = g_malloc(length); + + if (model != 2) + black = g_malloc(length); + else + black = NULL; + }; + + /* + * Output the page, rotating as necessary... + */ + + if (landscape) + { + in = g_malloc(drawable->height * drawable->bpp); + out = g_malloc(drawable->height * out_bpp); + + errdiv = drawable->width / out_height; + errmod = drawable->width % out_height; + errval = 0; + errlast = -1; + errline = drawable->width - 1; + + for (x = 0; x < out_height; x ++) + { +#ifdef DEBUG + printf("escp2_print: x = %d, line = %d, val = %d, mod = %d, height = %d\n", + x, errline, errval, errmod, out_height); +#endif /* DEBUG */ + + if ((x & 255) == 0) + gimp_progress_update((double)x / (double)out_height); + + if (errline != errlast) + { + errlast = errline; + gimp_pixel_rgn_get_col(&rgn, in, errline, 0, drawable->height); + }; + + (*colorfunc)(in, out, drawable->height, drawable->bpp, lut, cmap); + + if (output_type == OUTPUT_GRAY) + { + dither_black(out, x, drawable->height, out_width, black); + escp2_write(prn, black, length, 0, ydpi, model, out_width, left); + } + else + { + dither_cmyk(out, x, drawable->height, out_width, cyan, magenta, + yellow, black); + + escp2_write(prn, cyan, length, 2, ydpi, model, out_width, left); + escp2_write(prn, magenta, length, 1, ydpi, model, out_width, left); + escp2_write(prn, yellow, length, 4, ydpi, model, out_width, left); + if (black != NULL) + escp2_write(prn, black, length, 0, ydpi, model, out_width, left); + }; + + fwrite("\033(v\002\000\001\000", 7, 1, prn); /* Feed one line */ + + errval += errmod; + errline -= errdiv; + if (errval >= out_height) + { + errval -= out_height; + errline --; + }; + }; + } + else + { + in = g_malloc(drawable->width * drawable->bpp); + out = g_malloc(drawable->width * out_bpp); + + errdiv = drawable->height / out_height; + errmod = drawable->height % out_height; + errval = 0; + errlast = -1; + errline = 0; + + for (y = 0; y < out_height; y ++) + { +#ifdef DEBUG + printf("escp2_print: y = %d, line = %d, val = %d, mod = %d, height = %d\n", + y, errline, errval, errmod, out_height); +#endif /* DEBUG */ + + if ((y & 255) == 0) + gimp_progress_update((double)y / (double)out_height); + + if (errline != errlast) + { + errlast = errline; + gimp_pixel_rgn_get_row(&rgn, in, 0, errline, drawable->width); + }; + + (*colorfunc)(in, out, drawable->width, drawable->bpp, lut, cmap); + + if (output_type == OUTPUT_GRAY) + { + dither_black(out, y, drawable->width, out_width, black); + escp2_write(prn, black, length, 0, ydpi, model, out_width, left); + } + else + { + dither_cmyk(out, y, drawable->width, out_width, cyan, magenta, + yellow, black); + + escp2_write(prn, cyan, length, 2, ydpi, model, out_width, left); + escp2_write(prn, magenta, length, 1, ydpi, model, out_width, left); + escp2_write(prn, yellow, length, 4, ydpi, model, out_width, left); + if (black != NULL) + escp2_write(prn, black, length, 0, ydpi, model, out_width, left); + }; + + fwrite("\033(v\002\000\001\000", 7, 1, prn); /* Feed one line */ + + errval += errmod; + errline += errdiv; + if (errval >= out_height) + { + errval -= out_height; + errline ++; + }; + }; + }; + + /* + * Cleanup... + */ + + g_free(in); + g_free(out); + + if (black != NULL) + g_free(black); + if (cyan != NULL) + { + g_free(cyan); + g_free(magenta); + g_free(yellow); + }; + + putc('\014', prn); /* Eject page */ + fputs("\033@", prn); /* ESC/P2 reset */ +} + + +/* + * 'escp2_write()' - Send ESC/P2 graphics using TIFF packbits compression. + */ + +void +escp2_write(FILE *prn, /* I - Print file or command */ + unsigned char *line, /* I - Output bitmap data */ + int length, /* I - Length of bitmap data */ + int plane, /* I - True if this is the last plane */ + int ydpi, /* I - Vertical resolution */ + int model, /* I - Printer model */ + int width, /* I - Printed width */ + int offset) /* I - Offset from left side */ +{ + unsigned char comp_buf[1536], /* Compression buffer */ + *comp_ptr, /* Current slot in buffer */ + *start, /* Start of compressed data */ + repeat; /* Repeating char */ + int count, /* Count of compressed bytes */ + tcount; /* Temporary count < 128 */ + static int last_plane = 0; /* Last color plane printed */ + + + /* + * Don't send blank lines... + */ + + if (line[0] == 0 && memcmp(line, line + 1, length - 1) == 0) + return; + + /* + * Compress using TIFF "packbits" run-length encoding... + */ + + comp_ptr = comp_buf; + + while (length > 0) + { + /* + * Get a run of non-repeated chars... + */ + + start = line; + line += 2; + length -= 2; + + while (length > 0 && (line[-2] != line[-1] || line[-1] != line[0])) + { + line ++; + length --; + }; + + line -= 2; + length += 2; + + /* + * Output the non-repeated sequences (max 128 at a time). + */ + + count = line - start; + while (count > 0) + { + tcount = count > 128 ? 128 : count; + + comp_ptr[0] = tcount - 1; + memcpy(comp_ptr + 1, start, tcount); + + comp_ptr += tcount + 1; + start += tcount; + count -= tcount; + }; + + if (length <= 0) + break; + + /* + * Find the repeated sequences... + */ + + start = line; + repeat = line[0]; + + line ++; + length --; + + while (length > 0 && *line == repeat) + { + line ++; + length --; + }; + + /* + * Output the repeated sequences (max 128 at a time). + */ + + count = line - start; + while (count > 0) + { + tcount = count > 128 ? 128 : count; + + comp_ptr[0] = 1 - tcount; + comp_ptr[1] = repeat; + + comp_ptr += 2; + count -= tcount; + }; + }; + + /* + * Set the print head position. + */ + + putc('\r', prn); + fprintf(prn, "\033\\%c%c", offset & 255, offset >> 8); + + /* + * Set the color if necessary... + */ + + if (last_plane != plane) + { + last_plane = plane; + fprintf(prn, "\033r%c", plane); + }; + + /* + * Send a line of raster graphics... + */ + + switch (ydpi) /* Raster graphics header */ + { + case 180 : + fwrite("\033.\001\024\024\001", 6, 1, prn); + break; + case 360 : + fwrite("\033.\001\012\012\001", 6, 1, prn); + break; + case 720 : + if (model == 3) + fwrite("\033.\001\050\005\001", 6, 1, prn); + else + fwrite("\033.\001\005\005\001", 6, 1, prn); + break; + }; + + putc(width & 255, prn); /* Width of raster line in pixels */ + putc(width >> 8, prn); + + fwrite(comp_buf, comp_ptr - comp_buf, 1, prn); +} + + +/* + * End of "$Id: print-escp2.c,v 1.6 1997/07/30 20:33:05 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/print-pcl.c gimp-0.99.pre11/plug-ins/print-pcl.c --- gimp-0.99.10/plug-ins/print-pcl.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/print-pcl.c Thu Aug 14 00:41:45 1997 @@ -0,0 +1,610 @@ +/* + * "$Id: print-pcl.c,v 1.5 1997/07/30 20:33:05 mike Exp mike $" + * + * Print plug-in HP PCL driver for the GIMP. + * + * Copyright 1997 Michael Sweet (mike@easysw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contents: + * + * pcl_print() - Print an image to an HP printer. + * pcl_mode0() - Send PCL graphics using mode 0 (no) compression. + * pcl_mode2() - Send PCL graphics using mode 2 (TIFF) compression. + * + * Revision History: + * + * $Log: print-pcl.c,v $ + * Revision 1.5 1997/07/30 20:33:05 mike + * Final changes for 1.1 release. + * + * Revision 1.4 1997/07/30 18:47:39 mike + * Added scaling, orientation, and offset options. + * + * Revision 1.3 1997/07/03 13:24:12 mike + * Updated documentation for 1.0 release. + * + * Revision 1.2 1997/07/02 18:48:14 mike + * Added mode 2 compression code. + * Fixed bug in pcl_mode0 and pcl_mode2 - wasn't sending 'V' or 'W' at + * the right times. + * + * Revision 1.2 1997/07/02 18:48:14 mike + * Added mode 2 compression code. + * Fixed bug in pcl_mode0 and pcl_mode2 - wasn't sending 'V' or 'W' at + * the right times. + * + * Revision 1.1 1997/07/02 13:51:53 mike + * Initial revision + */ + +#include "print.h" + + +/* + * Local functions... + */ + +static void pcl_mode0(FILE *, unsigned char *, int, int); +static void pcl_mode2(FILE *, unsigned char *, int, int); + + +/* + * 'pcl_print()' - Print an image to an HP printer. + */ + +void +pcl_print(FILE *prn, /* I - Print file or command */ + GDrawable *drawable, /* I - Image to print */ + int media_size, /* I - Output size */ + int xdpi, /* I - Horizontal resolution */ + int ydpi, /* I - Vertical resolution */ + int output_type, /* I - Color or grayscale? */ + int model, /* I - Model of printer */ + guchar *lut, /* I - Brightness lookup table */ + guchar *cmap, /* I - Colormap (for indexed images) */ + int orientation, /* I - Orientation of image */ + int scaling, /* I - Scaling of image */ + int left, /* I - Left offset of image (10ths) */ + int top) /* I - Top offset of image (10ths) */ +{ + int x, y; /* Looping vars */ + GPixelRgn rgn; /* Image region */ + unsigned char *in, /* Input pixels */ + *out, /* Output pixels */ + *black, /* Black bitmap data */ + *cyan, /* Cyan bitmap data */ + *magenta, /* Magenta bitmap data */ + *yellow; /* Yellow bitmap data */ + int page_width, /* Width of page */ + page_height, /* Height of page */ + out_width, /* Width of image on page */ + out_height, /* Height of image on page */ + out_bpp, /* Output bytes per pixel */ + temp_width, /* Temporary width of image on page */ + temp_height, /* Temporary height of image on page */ + landscape, /* True if we rotate the output 90 degrees */ + length, /* Length of raster data */ + errdiv, /* Error dividend */ + errmod, /* Error modulus */ + errval, /* Current error value */ + errline, /* Current raster line */ + errlast; /* Last raster line loaded */ + convert_t colorfunc; /* Color conversion function... */ + void (*writefunc)(FILE *, unsigned char *, int, int); + /* PCL output function */ + + + /* + * Setup a read-only pixel region for the entire image... + */ + + gimp_pixel_rgn_init(&rgn, drawable, 0, 0, drawable->width, drawable->height, + FALSE, FALSE); + + /* + * Choose the correct color conversion function... + */ + + if ((drawable->bpp < 3 && cmap == NULL) || model <= 500) + output_type = OUTPUT_GRAY; /* Force grayscale output */ + + if (output_type == OUTPUT_COLOR) + { + out_bpp = 3; + + if (drawable->bpp >= 3) + colorfunc = rgb_to_rgb; + else + colorfunc = indexed_to_rgb; + + if (model == 800) + xdpi = ydpi = 300; + } + else + { + out_bpp = 1; + + if (drawable->bpp >= 3) + colorfunc = rgb_to_gray; + else if (cmap == NULL) + colorfunc = gray_to_gray; + else + colorfunc = indexed_to_gray; + }; + + /* + * Compute the output size... + */ + + landscape = 0; + page_width = media_width(media_size, xdpi); + page_height = media_height(media_size, ydpi); + + /* + * Portrait width/height... + */ + + out_width = page_width * scaling / 100; + out_height = out_width * ydpi / xdpi * drawable->height / drawable->width; + if (out_height > page_height) + { + out_height = page_height; + out_width = out_height * xdpi / ydpi * drawable->width / drawable->height; + }; + + /* + * Landscape width/height... + */ + + temp_width = page_width * scaling / 100; + temp_height = temp_width * ydpi / xdpi * drawable->width / drawable->height; + if (temp_height > page_height) + { + temp_height = page_height; + temp_width = temp_height * xdpi / ydpi * drawable->height / drawable->width; + }; + + /* + * See which orientation has the greatest area... + */ + + if ((temp_width * temp_height) > (out_width * out_height) && + orientation != ORIENT_PORTRAIT) + { + out_width = temp_width; + out_height = temp_height; + landscape = 1; + + /* + * Swap left/top offsets... + */ + + x = top; + top = left; + left = x; + }; + + /* + * Let the user know what we're doing... + */ + + gimp_progress_init("Printing..."); + + /* + * Send PCL initialization commands... + */ + + fputs("\033E", prn); /* PCL reset */ + + switch (media_size) /* Set media size... */ + { + case MEDIA_LETTER : + fputs("\033&l2A", prn); + break; + case MEDIA_LEGAL : + fputs("\033&l3A", prn); + break; + case MEDIA_TABLOID : + fputs("\033&l6A", prn); + break; + case MEDIA_A4 : + fputs("\033&l26A", prn); + break; + case MEDIA_A3 : + fputs("\033&l27A", prn); + break; + }; + + if (xdpi != ydpi) /* Set resolution */ + { + /* + * Send 26-byte configure image data command with horizontal and + * vertical resolutions as well as a color count... + */ + + fputs("\033*g26W", prn); + putc(2, prn); /* Format 2 */ + if (output_type == OUTPUT_COLOR) + putc(4, prn); /* # output planes */ + else + putc(1, prn); /* # output planes */ + + putc(xdpi >> 8, prn); /* Black resolution */ + putc(xdpi, prn); + putc(ydpi >> 8, prn); + putc(ydpi, prn); + putc(0, prn); + putc(2, prn); /* # of black levels */ + + putc(xdpi >> 8, prn); /* Cyan resolution */ + putc(xdpi, prn); + putc(ydpi >> 8, prn); + putc(ydpi, prn); + putc(0, prn); + putc(2, prn); /* # of cyan levels */ + + putc(xdpi >> 8, prn); /* Magenta resolution */ + putc(xdpi, prn); + putc(ydpi >> 8, prn); + putc(ydpi, prn); + putc(0, prn); + putc(2, prn); /* # of magenta levels */ + + putc(xdpi >> 8, prn); /* Yellow resolution */ + putc(xdpi, prn); + putc(ydpi >> 8, prn); + putc(ydpi, prn); + putc(0, prn); + putc(2, prn); /* # of yellow levels */ + } + else + { + fprintf(prn, "\033*t%dR", xdpi); /* Simple resolution */ + if (output_type == OUTPUT_COLOR) + { + if (model == 501) + fputs("\033*r-3U", prn); /* Simple CMY color */ + else + fputs("\033*r-4U", prn); /* Simple KCMY color */ + }; + }; + + if (model < 3 || model == 500) + fputs("\033*b0M", prn); /* Mode 0 (no compression) */ + else + fputs("\033*b2M", prn); /* Mode 2 (TIFF) */ + + if (left < 0 || top < 0) + { + left = (page_width - out_width) / 2; + top = (page_height - out_height) / 2; + } + else + { + left *= 30; + top *= 30; + }; + + fprintf(prn, "\033*p%dX", left); /* Set left raster position */ + fprintf(prn, "\033*p%dY", top); /* Set top raster position */ + fprintf(prn, "\033*r%dS", out_width); /* Set raster width */ + fprintf(prn, "\033*r%dT", out_height);/* Set raster height */ + + fputs("\033*r1A", prn); /* Start GFX */ + + /* + * Allocate memory for the raster data... + */ + + length = (out_width + 7) / 8; + + if (output_type == OUTPUT_GRAY) + { + black = g_malloc(length); + cyan = NULL; + magenta = NULL; + yellow = NULL; + } + else + { + cyan = g_malloc(length); + magenta = g_malloc(length); + yellow = g_malloc(length); + + if (model != 501) + black = g_malloc(length); + else + black = NULL; + }; + + /* + * Output the page, rotating as necessary... + */ + + if (model < 3 || model == 500) + writefunc = pcl_mode0; + else + writefunc = pcl_mode2; + + if (landscape) + { + in = g_malloc(drawable->height * drawable->bpp); + out = g_malloc(drawable->height * out_bpp); + + errdiv = drawable->width / out_height; + errmod = drawable->width % out_height; + errval = 0; + errlast = -1; + errline = drawable->width - 1; + + for (x = 0; x < out_height; x ++) + { +#ifdef DEBUG + printf("pcl_print: x = %d, line = %d, val = %d, mod = %d, height = %d\n", + x, errline, errval, errmod, out_height); +#endif /* DEBUG */ + + if ((x & 255) == 0) + gimp_progress_update((double)x / (double)out_height); + + if (errline != errlast) + { + errlast = errline; + gimp_pixel_rgn_get_col(&rgn, in, errline, 0, drawable->height); + }; + + (*colorfunc)(in, out, drawable->height, drawable->bpp, lut, cmap); + + if (output_type == OUTPUT_GRAY) + { + dither_black(out, x, drawable->height, out_width, black); + (*writefunc)(prn, black, length, 1); + } + else + { + dither_cmyk(out, x, drawable->height, out_width, cyan, magenta, + yellow, black); + + if (black != NULL) + (*writefunc)(prn, black, length, 0); + (*writefunc)(prn, cyan, length, 0); + (*writefunc)(prn, magenta, length, 0); + (*writefunc)(prn, yellow, length, 1); + }; + + errval += errmod; + errline -= errdiv; + if (errval >= out_height) + { + errval -= out_height; + errline --; + }; + }; + } + else + { + in = g_malloc(drawable->width * drawable->bpp); + out = g_malloc(drawable->width * out_bpp); + + errdiv = drawable->height / out_height; + errmod = drawable->height % out_height; + errval = 0; + errlast = -1; + errline = 0; + + for (y = 0; y < out_height; y ++) + { +#ifdef DEBUG + printf("pcl_print: y = %d, line = %d, val = %d, mod = %d, height = %d\n", + y, errline, errval, errmod, out_height); +#endif /* DEBUG */ + + if ((y & 255) == 0) + gimp_progress_update((double)y / (double)out_height); + + if (errline != errlast) + { + errlast = errline; + gimp_pixel_rgn_get_row(&rgn, in, 0, errline, drawable->width); + }; + + (*colorfunc)(in, out, drawable->width, drawable->bpp, lut, cmap); + + if (output_type == OUTPUT_GRAY) + { + dither_black(out, y, drawable->width, out_width, black); + (*writefunc)(prn, black, length, 1); + } + else + { + dither_cmyk(out, y, drawable->width, out_width, cyan, magenta, + yellow, black); + + if (black != NULL) + (*writefunc)(prn, black, length, 0); + (*writefunc)(prn, cyan, length, 0); + (*writefunc)(prn, magenta, length, 0); + (*writefunc)(prn, yellow, length, 1); + }; + + errval += errmod; + errline += errdiv; + if (errval >= out_height) + { + errval -= out_height; + errline ++; + }; + }; + }; + + /* + * Cleanup... + */ + + g_free(in); + g_free(out); + + if (black != NULL) + g_free(black); + if (cyan != NULL) + { + g_free(cyan); + g_free(magenta); + g_free(yellow); + }; + + switch (model) /* End raster graphics */ + { + case 1 : + case 2 : + case 3 : + case 500 : + fputs("\033*rB", prn); + break; + default : + fputs("\033*rbC", prn); + break; + }; + + fputs("\033&l0H", prn); /* Eject page */ + fputs("\033E", prn); /* PCL reset */ +} + + +/* + * 'pcl_mode0()' - Send PCL graphics using mode 0 (no) compression. + */ + +void +pcl_mode0(FILE *prn, /* I - Print file or command */ + unsigned char *line, /* I - Output bitmap data */ + int length, /* I - Length of bitmap data */ + int last_plane) /* I - True if this is the last plane */ +{ + fprintf(prn, "\033*b%d%c", length, last_plane ? 'W' : 'V'); + fwrite(line, length, 1, prn); +} + + +/* + * 'pcl_mode2()' - Send PCL graphics using mode 2 (TIFF) compression. + */ + +void +pcl_mode2(FILE *prn, /* I - Print file or command */ + unsigned char *line, /* I - Output bitmap data */ + int length, /* I - Length of bitmap data */ + int last_plane) /* I - True if this is the last plane */ +{ + unsigned char comp_buf[1536], /* Compression buffer */ + *comp_ptr, /* Current slot in buffer */ + *start, /* Start of compressed data */ + repeat; /* Repeating char */ + int count, /* Count of compressed bytes */ + tcount; /* Temporary count < 128 */ + + + /* + * Compress using TIFF "packbits" run-length encoding... + */ + + comp_ptr = comp_buf; + + while (length > 0) + { + /* + * Get a run of non-repeated chars... + */ + + start = line; + line += 2; + length -= 2; + + while (length > 0 && (line[-2] != line[-1] || line[-1] != line[0])) + { + line ++; + length --; + }; + + line -= 2; + length += 2; + + /* + * Output the non-repeated sequences (max 128 at a time). + */ + + count = line - start; + while (count > 0) + { + tcount = count > 128 ? 128 : count; + + comp_ptr[0] = tcount - 1; + memcpy(comp_ptr + 1, start, tcount); + + comp_ptr += tcount + 1; + start += tcount; + count -= tcount; + }; + + if (length <= 0) + break; + + /* + * Find the repeated sequences... + */ + + start = line; + repeat = line[0]; + + line ++; + length --; + + while (length > 0 && *line == repeat) + { + line ++; + length --; + }; + + /* + * Output the repeated sequences (max 128 at a time). + */ + + count = line - start; + while (count > 0) + { + tcount = count > 128 ? 128 : count; + + comp_ptr[0] = 1 - tcount; + comp_ptr[1] = repeat; + + comp_ptr += 2; + count -= tcount; + }; + }; + + /* + * Send a line of raster graphics... + */ + + fprintf(prn, "\033*b%d%c", comp_ptr - comp_buf, last_plane ? 'W' : 'V'); + fwrite(comp_buf, comp_ptr - comp_buf, 1, prn); +} + + +/* + * End of "$Id: print-pcl.c,v 1.5 1997/07/30 20:33:05 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/print-ps.c gimp-0.99.pre11/plug-ins/print-ps.c --- gimp-0.99.10/plug-ins/print-ps.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/print-ps.c Thu Aug 14 00:41:45 1997 @@ -0,0 +1,331 @@ +/* + * "$Id: print-ps.c,v 1.7 1997/07/30 20:33:05 mike Exp mike $" + * + * Print plug-in Adobe PostScript driver for the GIMP. + * + * Copyright 1997 Michael Sweet (mike@easysw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contents: + * + * ps_print() - Print an image to a PostScript printer. + * ps_hex() - Print binary data as a series of hexadecimal numbers. + * + * Revision History: + * + * $Log: print-ps.c,v $ + * Revision 1.7 1997/07/30 20:33:05 mike + * Final changes for 1.1 release. + * + * Revision 1.6 1997/07/30 18:47:39 mike + * Added scaling, orientation, and offset options. + * + * Revision 1.5 1997/07/26 18:38:55 mike + * Bug - was using asctime instead of ctime... D'oh! + * + * Revision 1.4 1997/07/26 18:19:54 mike + * Fixed positioning/scaling bug. + * + * Revision 1.3 1997/07/03 13:26:46 mike + * Updated documentation for 1.0 release. + * + * Revision 1.2 1997/07/02 18:49:36 mike + * Forgot to free memory buffers... + * + * Revision 1.2 1997/07/02 18:49:36 mike + * Forgot to free memory buffers... + * + * Revision 1.1 1997/07/02 13:51:53 mike + * Initial revision + */ + +#include "print.h" + + +/* + * Local functions... + */ + +static void ps_hex(FILE *, guchar *, int); + + +/* + * 'ps_print()' - Print an image to a PostScript printer. + */ + +void +ps_print(FILE *prn, /* I - File to print to */ + GDrawable *drawable, /* I - Image to print */ + int media_size, /* I - Size of output */ + int xdpi, /* I - Horizontal resolution (always 72) */ + int ydpi, /* I - Vertical resolution (always 72) */ + int output_type, /* I - Output type (color/grayscale) */ + int model, /* I - Model (ignored) */ + guchar *lut, /* I - Brightness lookup table */ + guchar *cmap, /* I - Colormap (for indexed images) */ + int orientation, /* I - Orientation of image */ + int scaling, /* I - Scaling of image */ + int left, /* I - Left offset of image (10ths) */ + int top) /* I - Top offset of image (10ths) */ +{ + int x, y; /* Looping vars */ + GPixelRgn rgn; /* Image region */ + guchar *in, /* Input pixels from image */ + *out, /* Output pixels for printer */ + *outptr; /* Current output pixel */ + int page_width, /* Width of page */ + page_height, /* Height of page */ + out_width, /* Width of image on page */ + out_height, /* Height of image on page */ + out_bpp, /* Output bytes per pixel */ + temp_width, /* Temporary width of image on page */ + temp_height, /* Temporary height of image on page */ + landscape; /* True if we rotate the output 90 degrees */ + time_t curtime; /* Current time of day */ + convert_t colorfunc; /* Color conversion function... */ + + + /* + * Setup a read-only pixel region for the entire image... + */ + + gimp_pixel_rgn_init(&rgn, drawable, 0, 0, drawable->width, drawable->height, + FALSE, FALSE); + + /* + * Choose the correct color conversion function... + */ + + if (drawable->bpp < 3 && cmap == NULL) + output_type = OUTPUT_GRAY; /* Force grayscale output */ + + if (output_type == OUTPUT_COLOR) + { + out_bpp = 3; + + if (drawable->bpp >= 3) + colorfunc = rgb_to_rgb; + else + colorfunc = indexed_to_rgb; + } + else + { + out_bpp = 1; + + if (drawable->bpp >= 3) + colorfunc = rgb_to_gray; + else if (cmap == NULL) + colorfunc = gray_to_gray; + else + colorfunc = indexed_to_gray; + }; + + /* + * Compute the output size... + */ + + landscape = 0; + page_width = media_width(media_size, xdpi); + page_height = media_height(media_size, ydpi); + + /* + * Portrait width/height... + */ + + out_width = page_width * scaling / 100; + out_height = out_width * ydpi / xdpi * drawable->height / drawable->width; + if (out_height > page_height) + { + out_height = page_height; + out_width = out_height * xdpi / ydpi * drawable->width / drawable->height; + }; + + /* + * Landscape width/height... + */ + + temp_width = page_width * scaling / 100; + temp_height = temp_width * ydpi / xdpi * drawable->width / drawable->height; + if (temp_height > page_height) + { + temp_height = page_height; + temp_width = temp_height * xdpi / ydpi * drawable->height / drawable->width; + }; + + /* + * See which orientation has the greatest area... + */ + + if ((temp_width * temp_height) > (out_width * out_height) && + orientation != ORIENT_PORTRAIT) + { + out_width = temp_width; + out_height = temp_height; + landscape = 1; + + /* + * Swap left/top offsets... + */ + + x = top; + top = left; + left = x; + }; + + /* + * Let the user know what we're doing... + */ + + gimp_progress_init("Printing..."); + + /* + * Output a standard PostScript header with DSC comments... + */ + + curtime = time(NULL); + + fputs("%!PS-Adobe-3.0\n", prn); + fputs("%%Creator: " PLUG_IN_NAME " plug-in V" PLUG_IN_VERSION " for GIMP.\n", prn); + fprintf(prn, "%%%%CreationDate: %s", ctime(&curtime)); + fputs("%%Copyright: 1997 by Michael Sweet (mike@easysw.com)\n", prn); + fprintf(prn, "%%%%BoundingBox: %d %d %d %d\n", + (page_width - out_width) / 2 + 18, (page_height - out_height) / 2 + 36, + (page_width + out_width) / 2 + 18, (page_height + out_height) / 2 + 36); + fputs("%%DocumentData: Clean7Bit\n", prn); + fprintf(prn, "%%%%LanguageLevel: %d\n", output_type + 1); + fputs("%%Pages: 1\n", prn); + fputs("%%Orientation: Portrait\n", prn); + fputs("%%EndComments\n", prn); + + /* + * Output the page, rotating as necessary... + */ + + fputs("%%Page: 1\n", prn); + fputs("gsave\n", prn); + + if (top < 0 || left < 0) + { + left = (page_width - out_width) / 2 + 18; + top = (page_height - out_height) / 2 + 36; + } + else + { + left = 72 * left / 10 + 18; + top = page_height - out_height - 72 * top / 10 + 36; + }; + + fprintf(prn, "%d %d translate\n", left, top); + fprintf(prn, "%d %d scale\n", out_width, out_height); + + if (landscape) + { + in = g_malloc(drawable->height * drawable->bpp); + out = g_malloc(drawable->height * out_bpp); + + fprintf(prn, "/picture %d string def\n", drawable->height * out_bpp); + + if (output_type == OUTPUT_GRAY) + fprintf(prn, "%d %d 8 [%d 0 0 %d 0 %d] {currentfile picture readhexstring pop} image\n", + drawable->height, drawable->width, + drawable->height, drawable->width, 0); + else + fprintf(prn, "%d %d 8 [%d 0 0 %d 0 %d] {currentfile picture readhexstring pop} false 3 colorimage\n", + drawable->height, drawable->width, + drawable->height, drawable->width, 0); + + for (x = 0; x < drawable->width; x ++) + { + if ((x & 15) == 0) + gimp_progress_update((double)x / (double)drawable->width); + + gimp_pixel_rgn_get_col(&rgn, in, x, 0, drawable->height); + (*colorfunc)(in, out, drawable->height, drawable->bpp, lut, cmap); + + ps_hex(prn, out, drawable->height * out_bpp); + }; + } + else + { + in = g_malloc(drawable->width * drawable->bpp); + out = g_malloc(drawable->width * out_bpp); + + fprintf(prn, "/picture %d string def\n", drawable->width * out_bpp); + + if (output_type == OUTPUT_GRAY) + fprintf(prn, "%d %d 8 [%d 0 0 %d 0 %d] {currentfile picture readhexstring pop} image\n", + drawable->width, drawable->height, + drawable->width, -drawable->height, drawable->height); + else + fprintf(prn, "%d %d 8 [%d 0 0 %d 0 %d] {currentfile picture readhexstring pop} false 3 colorimage\n", + drawable->width, drawable->height, + drawable->width, -drawable->height, drawable->height); + + for (y = 0; y < drawable->height; y ++) + { + if ((y & 15) == 0) + gimp_progress_update((double)y / (double)drawable->height); + + gimp_pixel_rgn_get_row(&rgn, in, 0, y, drawable->width); + (*colorfunc)(in, out, drawable->width, drawable->bpp, lut, cmap); + + ps_hex(prn, out, drawable->width * out_bpp); + }; + }; + + g_free(in); + g_free(out); + + fputs("grestore\n", prn); + fputs("showpage\n", prn); + fputs("%%EndPage\n", prn); + fputs("%%EOF\n", prn); +} + + +/* + * 'ps_hex()' - Print binary data as a series of hexadecimal numbers. + */ + +static void +ps_hex(FILE *prn, /* I - File to print to */ + guchar *data, /* I - Data to print */ + int length) /* I - Number of bytes to print */ +{ + static char *hex = "0123456789ABCDEF"; + + + while (length > 0) + { + /* + * Put the hex chars out to the file; note that we don't use fprintf() + * for speed reasons... + */ + + putc(hex[*data >> 4], prn); + putc(hex[*data & 15], prn); + + data ++; + length --; + }; + + putc('\n', prn); +} + + +/* + * End of "$Id: print-ps.c,v 1.7 1997/07/30 20:33:05 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/print-util.c gimp-0.99.pre11/plug-ins/print-util.c --- gimp-0.99.10/plug-ins/print-util.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/print-util.c Thu Aug 14 00:41:45 1997 @@ -0,0 +1,469 @@ +/* + * "$Id: print-util.c,v 1.6 1997/07/30 20:33:05 mike Exp mike $" + * + * Print plug-in driver utility functions for the GIMP. + * + * Copyright 1997 Michael Sweet (mike@easysw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contents: + * + * dither_black() - Dither grayscale pixels to black. + * dither_cmyk() - Dither RGB pixels to cyan, magenta, yellow, and black. + * gray_to_gray() - Convert grayscale image data to grayscale (brightness + * adjusted). + * indexed_to_gray() - Convert indexed image data to grayscale. + * indexed_to_rgb() - Convert indexed image data to RGB. + * media_width() - Get the addressable width of the page. + * media_height() - Get the addressable height of the page. + * rgb_to_gray() - Convert RGB image data to grayscale. + * rgb_to_rgb() - Convert RGB image data to RGB (brightness adjusted). + * + * Revision History: + * + * $Log: print-util.c,v $ + * Revision 1.6 1997/07/30 20:33:05 mike + * Final changes for 1.1 release. + * + * Revision 1.5 1997/07/26 18:43:04 mike + * Fixed dither_black and dither_cmyk - wasn't clearing extra bits + * (caused problems with A3/A4 size output). + * + * Revision 1.5 1997/07/26 18:43:04 mike + * Fixed dither_black and dither_cmyk - wasn't clearing extra bits + * (caused problems with A3/A4 size output). + * + * Revision 1.4 1997/07/02 18:46:26 mike + * Fixed stupid bug in dither_black() - wasn't comparing against gray + * pixels (comparing against the first black byte - d'oh!) + * Changed 255 in dither matrix to 254 to shade correctly. + * + * Revision 1.4 1997/07/02 18:46:26 mike + * Fixed stupid bug in dither_black() - wasn't comparing against gray + * pixels (comparing against the first black byte - d'oh!) + * Changed 255 in dither matrix to 254 to shade correctly. + * + * Revision 1.3 1997/07/02 13:51:53 mike + * Added rgb_to_rgb and gray_to_gray conversion functions. + * Standardized calling args to conversion functions. + * + * Revision 1.2 1997/07/01 19:28:44 mike + * Updated dither matrix. + * Fixed scaling bugs in dither_*() functions. + * + * Revision 1.1 1997/06/19 02:18:15 mike + * Initial revision + */ + +#include "print.h" + + +/* + * RGB to grayscale luminance constants... + */ + +#define LUM_RED 31 +#define LUM_GREEN 61 +#define LUM_BLUE 8 + + +/* + * Floyd ordered dither buffer - this 16x16 buffer will yield 256 shades. + * + * Yes, we could do a blue-noise (error-diffusion) dither in the dither_*() + * functions, however doing it without washing out the darkest and lightest + * colors isn't trivial. + */ + +static int dither_floyd[16][16] = +{ + { 0, 128, 32, 160, 8, 136, 40, 168, 2, 130, 34, 162, 10, 138, 42, 170 }, + { 192, 64, 224, 96, 200, 72, 232, 104, 194, 66, 226, 98, 202, 74, 234, 106 }, + { 48, 176, 16, 144, 56, 184, 24, 152, 50, 178, 18, 146, 58, 186, 26, 154 }, + { 240, 112, 208, 80, 248, 120, 216, 88, 242, 114, 210, 82, 250, 122, 218, 90 }, + { 12, 140, 44, 172, 4, 132, 36, 164, 14, 142, 46, 174, 6, 134, 38, 166 }, + { 204, 76, 236, 108, 196, 68, 228, 100, 206, 78, 238, 110, 198, 70, 230, 102 }, + { 60, 188, 28, 156, 52, 180, 20, 148, 62, 190, 30, 158, 54, 182, 22, 150 }, + { 252, 124, 220, 92, 244, 116, 212, 84, 254, 126, 222, 94, 246, 118, 214, 86 }, + { 3, 131, 35, 163, 11, 139, 43, 171, 1, 129, 33, 161, 9, 137, 41, 169 }, + { 195, 67, 227, 99, 203, 75, 235, 107, 193, 65, 225, 97, 201, 73, 233, 105 }, + { 51, 179, 19, 147, 59, 187, 27, 155, 49, 177, 17, 145, 57, 185, 25, 153 }, + { 243, 115, 211, 83, 251, 123, 219, 91, 241, 113, 209, 81, 249, 121, 217, 89 }, + { 15, 143, 47, 175, 7, 135, 39, 167, 13, 141, 45, 173, 5, 133, 37, 165 }, + { 207, 79, 239, 111, 199, 71, 231, 103, 205, 77, 237, 109, 197, 69, 229, 101 }, + { 63, 191, 31, 159, 55, 183, 23, 151, 61, 189, 29, 157, 53, 181, 21, 149 }, + { 254, 127, 223, 95, 247, 119, 215, 87, 253, 125, 221, 93, 245, 117, 213, 85 } +}; + + +/* + * 'dither_black()' - Dither grayscale pixels to black. + */ + +void +dither_black(guchar *gray, /* I - Grayscale pixels */ + int y, /* I - Current Y coordinate */ + int src_width, /* I - Width of input row */ + int dst_width, /* I - Width of output row */ + unsigned char *black) /* O - Black bitmap pixels */ +{ + int x, /* Current X coordinate */ + xerror, /* X error count */ + xstep, /* X step */ + xmod, /* X error modulus */ + length; /* Length of output bitmap in bytes */ + unsigned char bit, /* Current bit */ + *kptr; /* Current black pixel */ + int *dither; /* Pointer to dither row */ + + + xstep = src_width / dst_width; + xmod = src_width % dst_width; + dither = dither_floyd[y & 15]; + length = (dst_width + 7) / 8; + + memset(black, -1, length); + + for (x = 0, bit = 128, kptr = black, xerror = 0; + x < dst_width; + x ++) + { + if (*gray > dither[x & 15]) + *kptr ^= bit; + + if (bit == 1) + { + kptr ++; + bit = 128; + } + else + bit >>= 1; + + gray += xstep; + xerror += xmod; + if (xerror >= dst_width) + { + xerror -= dst_width; + gray ++; + }; + }; + + /* + * Clear remaining bits... + */ + + if (bit < 128) + { + while (bit > 0) + { + *kptr ^= bit; + bit >>= 1; + }; + }; +} + + +/* + * 'dither_cmyk()' - Dither RGB pixels to cyan, magenta, yellow, and black. + */ + +void +dither_cmyk(guchar *rgb, /* I - RGB pixels */ + int y, /* I - Current Y coordinate */ + int src_width, /* I - Width of input row */ + int dst_width, /* I - Width of output rows */ + unsigned char *cyan, /* O - Cyan bitmap pixels */ + unsigned char *magenta, /* O - Magenta bitmap pixels */ + unsigned char *yellow, /* O - Yellow bitmap pixels */ + unsigned char *black) /* O - Black bitmap pixels */ +{ + int x, /* Current X coordinate */ + xerror, /* X error count */ + xstep, /* X step */ + xmod, /* X error modulus */ + length; /* Length of output bitmap in bytes */ + unsigned char bit, /* Current bit */ + *cptr, /* Current cyan pixel */ + *mptr, /* Current magenta pixel */ + *yptr, /* Current yellow pixel */ + *kptr; /* Current black pixel */ + int *dither; /* Pointer to dither row */ + + + xstep = 3 * (src_width / dst_width); + xmod = src_width % dst_width; + dither = dither_floyd[y & 15]; + length = (dst_width + 7) / 8; + + memset(cyan, -1, length); + memset(magenta, -1, length); + memset(yellow, -1, length); + + for (x = 0, bit = 128, cptr = cyan, mptr = magenta, yptr = yellow, xerror = 0; + x < dst_width; + x ++) + { + if (rgb[0] > dither[x & 15]) + *cptr ^= bit; + if (rgb[1] > dither[x & 15]) + *mptr ^= bit; + if (rgb[2] > dither[x & 15]) + *yptr ^= bit; + + if (bit == 1) + { + cptr ++; + mptr ++; + yptr ++; + bit = 128; + } + else + bit >>= 1; + + rgb += xstep; + xerror += xmod; + if (xerror >= dst_width) + { + xerror -= dst_width; + rgb += 3; + }; + }; + + /* + * Clear remaining bits... + */ + + if (bit < 128) + { + while (bit > 0) + { + *cptr ^= bit; + *mptr ^= bit; + *yptr ^= bit; + bit >>= 1; + }; + }; + + /* + * Make black from CMY if needed... + */ + + if (black != NULL) + { + for (x = 0, cptr = cyan, mptr = magenta, yptr = yellow, kptr = black; + x < length; + x ++, cptr ++, mptr ++, yptr ++, kptr ++) + if (*kptr = *cptr & *mptr & *yptr) + { + *cptr &= ~*kptr; + *mptr &= ~*kptr; + *yptr &= ~*kptr; + }; + }; +} + + +/* + * 'gray_to_gray()' - Convert grayscale image data to grayscale (brightness + * adjusted). + */ + +void +gray_to_gray(guchar *grayin, /* I - RGB pixels */ + guchar *grayout, /* O - RGB pixels */ + int width, /* I - Width of row */ + int bpp, /* I - Bytes-per-pixel in grayin */ + guchar *lut, /* I - Brightness lookup table */ + guchar *cmap) /* I - Colormap (unused) */ +{ + while (width > 0) + { + *grayout = lut[*grayin]; + + grayout ++; + grayin += bpp; + width --; + }; +} + + +/* + * 'indexed_to_gray()' - Convert indexed image data to grayscale. + */ + +void +indexed_to_gray(guchar *indexed, /* I - Indexed pixels */ + guchar *gray, /* O - Grayscale pixels */ + int width, /* I - Width of row */ + int bpp, /* I - Bytes-per-pixel in indexed */ + guchar *lut, /* I - Brightness lookup table */ + guchar *cmap) /* I - Colormap */ +{ + int i; /* Looping var */ + unsigned char gray_cmap[256]; /* Grayscale colormap */ + + + for (i = 0; i < 256; i ++, cmap += 3) + gray_cmap[i] = lut[(cmap[0] * LUM_RED + cmap[1] * LUM_GREEN + cmap[2] * LUM_BLUE) / 100]; + + while (width > 0) + { + *gray = gray_cmap[*indexed]; + gray ++; + indexed += bpp; + width --; + }; +} + + +/* + * 'indexed_to_rgb()' - Convert indexed image data to RGB. + */ + +void +indexed_to_rgb(guchar *indexed, /* I - Indexed pixels */ + guchar *rgb, /* O - RGB pixels */ + int width, /* I - Width of row */ + int bpp, /* I - Bytes-per-pixel in indexed */ + guchar *lut, /* I - Brightness lookup table */ + guchar *cmap) /* I - Colormap */ +{ + while (width > 0) + { + rgb[0] = lut[cmap[*indexed * 3 + 0]]; + rgb[1] = lut[cmap[*indexed * 3 + 1]]; + rgb[2] = lut[cmap[*indexed * 3 + 2]]; + rgb += 3; + indexed += bpp; + width --; + }; +} + + +/* + * 'media_width()' - Get the addressable width of the page. + * + * This function assumes a standard left/right margin of 0.25". + */ + +int +media_width(int media_size, /* I - Media size code */ + int dpi) /* I - Resolution in dots-per-inch */ +{ + switch (media_size) + { + case MEDIA_LETTER : + case MEDIA_LEGAL : + return (8 * dpi); + + case MEDIA_TABLOID : + return ((int)(10.5 * dpi + 0.5)); + + case MEDIA_A4 : + return ((int)(7.77 * dpi + 0.5)); + + case MEDIA_A3 : + return ((int)(11.09 * dpi + 0.5)); + + default : + return (0); + }; +} + + +/* + * 'media_height()' - Get the addressable height of the page. + * + * This function assumes a standard top/bottom margin of 0.5". + */ + +int +media_height(int media_size, /* I - Media size code */ + int dpi) /* I - Resolution in dots-per-inch */ +{ + switch (media_size) + { + case MEDIA_LETTER : + return (10 * dpi); + + case MEDIA_LEGAL : + return (13 * dpi); + + case MEDIA_TABLOID : + return (16 * dpi); + + case MEDIA_A4 : + return ((int)(10.69 * dpi + 0.5)); + + case MEDIA_A3 : + return ((int)(15.54 * dpi + 0.5)); + + default : + return (0); + }; +} + + +/* + * 'rgb_to_gray()' - Convert RGB image data to grayscale. + */ + +void +rgb_to_gray(guchar *rgb, /* I - RGB pixels */ + guchar *gray, /* O - Grayscale pixels */ + int width, /* I - Width of row */ + int bpp, /* I - Bytes-per-pixel in RGB */ + guchar *lut, /* I - Brightness lookup table */ + guchar *cmap) /* I - Colormap (unused) */ +{ + while (width > 0) + { + *gray = lut[(rgb[0] * LUM_RED + rgb[1] * LUM_GREEN + rgb[2] * LUM_BLUE) / 100]; + gray ++; + rgb += bpp; + width --; + }; +} + + +/* + * 'rgb_to_rgb()' - Convert RGB image data to RGB (brightness adjusted). + */ + +void +rgb_to_rgb(guchar *rgbin, /* I - RGB pixels */ + guchar *rgbout, /* O - RGB pixels */ + int width, /* I - Width of row */ + int bpp, /* I - Bytes-per-pixel in RGB */ + guchar *lut, /* I - Brightness lookup table */ + guchar *cmap) /* I - Colormap (unused) */ +{ + while (width > 0) + { + rgbout[0] = lut[rgbin[0]]; + rgbout[1] = lut[rgbin[1]]; + rgbout[2] = lut[rgbin[2]]; + + rgbout += 3; + rgbin += bpp; + width --; + }; +} + + +/* + * End of "$Id: print-util.c,v 1.6 1997/07/30 20:33:05 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/print.c gimp-0.99.pre11/plug-ins/print.c --- gimp-0.99.10/plug-ins/print.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/print.c Thu Aug 14 00:41:45 1997 @@ -0,0 +1,1077 @@ +/* + * "$Id: print.c,v 1.7 1997/07/30 20:33:05 mike Exp mike $" + * + * Print plug-in for the GIMP. + * + * Copyright 1997 Michael Sweet (mike@easysw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contents: + * + * main() - Main entry - just call gimp_main()... + * query() - Respond to a plug-in query... + * run() - Run the plug-in... + * print_dialog() - Pop up the print dialog... + * dialog_create_ivalue() - Create an integer value control... + * dialog_iscale_update() - Update the value field using the scale. + * dialog_ientry_update() - Update the value field using the text entry. + * print_driver_callback() - Update the current printer driver... + * media_size_callback() - Update the current media size... + * print_command_callback() - Update the print command... + * output_type_callback() - Update the current output type... + * print_callback() - Start the print... + * cancel_callback() - Cancel the print... + * close_callback() - Exit the print dialog application. + * + * Revision History: + * + * $Log: print.c,v $ + * Revision 1.7 1997/07/30 20:33:05 mike + * Final changes for 1.1 release. + * + * Revision 1.6 1997/07/30 18:47:39 mike + * Added scaling, orientation, and offset options. + * Added first cut at preview window. + * + * Revision 1.5 1997/07/26 18:38:23 mike + * Whoops - wasn't grabbing the colormap for indexed images properly... + * + * Revision 1.4 1997/07/03 13:13:26 mike + * Updated documentation for 1.0 release. + * + * Revision 1.3 1997/07/03 13:07:05 mike + * Updated EPSON driver short names. + * Changed brightness lut formula for better control. + * + * Revision 1.2 1997/07/02 15:22:17 mike + * Added GUI with printer/media/output selection controls. + * + * Revision 1.1 1997/07/02 13:51:53 mike + * Initial revision + */ + +#include "print.h" +#include + + +/* + * Constants for GUI... + */ + +#define SCALE_WIDTH 64 +#define ENTRY_WIDTH 64 +#define PREVIEW_SIZE 180 /* Assuming max media size of 18" */ + + +/* + * Local functions... + */ + +static void query(void); +static void run(char *, int, GParam *, int *, GParam **); +static int print_dialog(void); +static void dialog_create_ivalue(char *, GtkTable *, int, gint *, int, int); +static void dialog_iscale_update(GtkAdjustment *, gint *); +static void dialog_ientry_update(GtkWidget *, gint *); +static void print_driver_callback(GtkWidget *, gint); +static void media_size_callback(GtkWidget *, gint); +static void print_command_callback(GtkWidget *, gpointer); +static void output_type_callback(GtkWidget *, gint); +static void orientation_callback(GtkWidget *, gint); +static void print_callback(GtkWidget *, gpointer); +static void cancel_callback(GtkWidget *, gpointer); +static void close_callback(GtkWidget *, gpointer); +static void preview_update(void); +static void preview_button_callback(GtkWidget *, GdkEventButton *); +static void preview_motion_callback(GtkWidget *, GdkEventMotion *); + + +/* + * Globals... + */ + +GPlugInInfo PLUG_IN_INFO = /* Plug-in information */ +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +struct /* Plug-in variables */ +{ + char output_to[255], /* Name of file or command to print to */ + short_name[33]; /* Name of printer "driver" */ + gint media_size, /* Size of output media */ + output_type, /* Color or grayscale output */ + brightness, /* Output brightness */ + scaling, /* Scaling, percent of printable area */ + orientation, /* Orientation - 0 = port., 1 = land., -1 = auto */ + left, /* Offset from lower-lefthand corner, 10ths */ + top; /* ... */ +} vars = +{ + "|lp", /* Name of file or command to print to */ + "ps", /* Name of printer "driver" */ + MEDIA_LETTER, /* Size of output media */ + OUTPUT_COLOR, /* Color or grayscale output */ + 100, /* Output brightness */ + 100, /* Scaling (100% means entire printable area */ + -1, /* Orientation (-1 = automatic) */ + -1, /* X offset (-1 = center) */ + -1 /* Y offset (-1 = center) */ +}; + +GtkDrawingArea *preview; /* Preview drawing area widget */ +int mouse_x, /* Last mouse X */ + mouse_y; /* Last mouse Y */ +int image_width, /* Width of image */ + image_height, /* Height of image */ + page_left, /* Left pixel column of page */ + page_top, /* Top pixel row of page */ + page_width, /* Width of page on screen */ + page_height, /* Height of page on screen */ + print_width, /* Printed width of image */ + print_height; /* Printed height of image */ + +int runme = FALSE, /* True if print should proceed */ + current_printer = 0; /* Current printer index */ + +printer_t printers[] = /* List of supported printer types */ +{ + { "PostScript Printer", "ps", 72, 72, 1, 1, 0, ps_print }, + { "HP DeskJet 500, 520", "pcl-500", 300, 300, 0, 0, 500, pcl_print }, + { "HP DeskJet 500C, 540C", "pcl-501", 300, 300, 0, 1, 501, pcl_print }, + { "HP DeskJet 550C, 560C", "pcl-550", 300, 300, 0, 1, 550, pcl_print }, + { "HP DeskJet 600 series", "pcl-600", 600, 300, 0, 1, 600, pcl_print }, + { "HP DeskJet 800 series", "pcl-800", 600, 600, 0, 1, 800, pcl_print }, + { "HP DeskJet 1200C, 1600C", "pcl-1200", 300, 300, 0, 1, 1200, pcl_print }, + { "HP LaserJet II series", "pcl-2", 300, 300, 0, 0, 2, pcl_print }, + { "HP LaserJet III series", "pcl-3", 300, 300, 0, 0, 3, pcl_print }, + { "HP LaserJet 4 series", "pcl-4", 600, 600, 1, 0, 4, pcl_print }, + { "HP LaserJet 5 series", "pcl-5", 600, 600, 1, 0, 4, pcl_print }, + { "HP LaserJet 6 series", "pcl-6", 600, 600, 1, 0, 4, pcl_print }, + { "ESPON Stylus Color", "escp2", 720, 720, 0, 1, 0, escp2_print }, + { "ESPON Stylus Color Pro", "escp2-pro", 720, 720, 0, 1, 1, escp2_print }, + { "ESPON Stylus Color Pro XL","escp2-proxl", 720, 720, 1, 1, 1, escp2_print }, + { "ESPON Stylus Color 400", "escp2-400", 720, 720, 0, 1, 1, escp2_print }, + { "ESPON Stylus Color 500", "escp2-500", 720, 720, 0, 1, 1, escp2_print }, + { "ESPON Stylus Color 600 (360 DPI)", "escp2-600-360", 360, 360, 0, 1, 3, escp2_print }, + { "ESPON Stylus Color 600 (720 DPI)", "escp2-600", 720, 720, 0, 1, 3, escp2_print }, + { "ESPON Stylus Color 800", "escp2-800", 720, 720, 0, 1, 4, escp2_print }, + { "ESPON Stylus Color 1500", "escp2-1500", 720, 720, 1, 1, 2, escp2_print }, + { "ESPON Stylus Color 1520", "escp2-1520", 720, 720, 1, 1, 4, escp2_print }, + { "ESPON Stylus Color 3000", "escp2-3000", 720, 720, 1, 1, 4, escp2_print } +}; + + +/* + * 'main()' - Main entry - just call gimp_main()... + */ + +int +main(int argc, /* I - Number of command-line args */ + char *argv[]) /* I - Command-line args */ +{ + return (gimp_main(argc, argv)); +} + + +/* + * 'query()' - Respond to a plug-in query... + */ + +static void +query(void) +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_STRING, "output_to", "Print command or filename (| to pipe to command)" }, + { PARAM_STRING, "driver", "Printer driver short name" }, + { PARAM_INT32, "media_size", "Media size (0 = A/letter, 1 = legal, 2 = B/tabloid, 3 = A4, 4 = A3)" }, + { PARAM_INT32, "output_type", "Output type (0 = gray, 1 = color)" }, + { PARAM_INT32, "brightness", "Brightness (0-200%)" }, + { PARAM_INT32, "scaling", "Output scaling (0-100%)" }, + { PARAM_INT32, "orientation", "Output orientation (-1 = auto, 0 = portrait, 1 = landscape)" }, + { PARAM_INT32, "left", "Left offset (10ths inches, -1 = centered)" }, + { PARAM_INT32, "top", "Top offset (10ths inches, -1 = centered)" } + }; + static int nargs = sizeof(args) / sizeof(args[0]); + + + gimp_install_procedure( + "file_print", + "This plug-in prints images from The GIMP.", + "Prints images to PostScript, PCL, or ESC/P2 printers.", + "Michael Sweet ", + "Copyright 1997 by Michael Sweet", + PLUG_IN_VERSION, + "/File/Print...", + "RGB*,GRAY*INDEXED*", + PROC_PLUG_IN, + nargs, + 0, + args, + NULL); +} + + +/* + * 'run()' - Run the plug-in... + */ + +static void +run(char *name, /* I - Name of print program. */ + int nparams, /* I - Number of parameters passed in */ + GParam *param, /* I - Parameter values */ + int *nreturn_vals, /* O - Number of return values */ + GParam **return_vals) /* O - Return values */ +{ + GDrawable *drawable; /* Drawable for image */ + GRunModeType run_mode; /* Current run mode */ + FILE *prn; /* Print file/command */ + printer_t *printer; /* Printer driver entry */ + int i, j; /* Looping vars */ + float gam, bri; /* Computed gamma & brightness */ + guchar lut[256]; /* Lookup table for brightness */ + guchar *cmap; /* Colormap (indexed images only) */ + int ncolors; /* Number of colors in colormap */ + static GParam values[1]; /* Return values */ + + + /* + * Initialize parameter data... + */ + + run_mode = param[0].data.d_int32; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_SUCCESS; + + *nreturn_vals = 1; + *return_vals = values; + + /* + * Get drawable... + */ + + drawable = gimp_drawable_get(param[2].data.d_drawable); + + image_width = drawable->width; + image_height = drawable->height; + + /* + * See how we will run + */ + + switch (run_mode) + { + case RUN_INTERACTIVE : + /* + * Possibly retrieve data... + */ + + gimp_get_data(PLUG_IN_NAME, &vars); + + for (i = 0; i < (sizeof(printers) / sizeof(printers[0])); i ++) + if (strcmp(printers[i].short_name, vars.short_name) == 0) + current_printer = i; + + /* + * Get information from the dialog... + */ + + if (!print_dialog()) + return; + break; + + case RUN_NONINTERACTIVE : + /* + * Make sure all the arguments are present... + */ + + if (nparams < 8) + values[0].data.d_status = STATUS_CALLING_ERROR; + else + { + strcpy(vars.output_to, param[3].data.d_string); + strcpy(vars.short_name, param[4].data.d_string); + vars.media_size = param[5].data.d_int32; + vars.output_type = param[6].data.d_int32; + vars.brightness = param[7].data.d_int32; + + if (nparams > 8) + vars.scaling = param[8].data.d_int32; + else + vars.scaling = 100; + + if (nparams > 9) + vars.orientation = param[9].data.d_int32; + else + vars.orientation = -1; + + if (nparams > 10) + vars.left = param[10].data.d_int32; + else + vars.left = -1; + + if (nparams > 11) + vars.top = param[11].data.d_int32; + else + vars.top = -1; + + for (i = 0; i < (sizeof(printers) / sizeof(printers[0])); i ++) + if (strcmp(printers[i].short_name, vars.short_name) == 0) + current_printer = i; + }; + break; + + case RUN_WITH_LAST_VALS : + /* + * Possibly retrieve data... + */ + + gimp_get_data(PLUG_IN_NAME, &vars); + + for (i = 0; i < (sizeof(printers) / sizeof(printers[0])); i ++) + if (strcmp(printers[i].short_name, vars.short_name) == 0) + current_printer = i; + break; + + default : + values[0].data.d_status = STATUS_CALLING_ERROR; + break;; + }; + + /* + * Print the image... + */ + + if (values[0].data.d_status == STATUS_SUCCESS) + { + /* + * Set the tile cache size... + */ + + gimp_tile_cache_ntiles((drawable->width + gimp_tile_width() - 1) / + gimp_tile_width()); + + /* + * Open the file/execute the print command... + */ + + if (vars.output_to[0] == '|') + prn = popen(vars.output_to + 1, "w"); + else + prn = fopen(vars.output_to, "w"); + + if (prn != NULL) + { + /* + * Got an output file/command, now compute a brightness lookup table... + */ + + gam = 9000.0 / (float)(vars.brightness * vars.brightness); + bri = sqrt((float)vars.brightness) * 25.5; + + for (i = 0; i < 256; i ++) + { + j = bri * pow((float)i / 255.0, gam) + 0.5; + if (j < 255) + lut[i] = j; + else + lut[i] = 255; + }; + + /* + * Is the image an Indexed type? If so we need the colormap... + */ + + if (gimp_image_base_type(param[1].data.d_image) == INDEXED) + cmap = gimp_image_get_cmap(param[1].data.d_image, &ncolors); + else + { + cmap = NULL; + ncolors = 0; + }; + + /* + * Finally, call the print driver to send the image to the printer and + * close the output file/command... + */ + + printer = printers + current_printer; + + (*printer->print)(prn, drawable, vars.media_size, printer->xdpi, printer->ydpi, + vars.output_type, printer->model, lut, cmap, + vars.orientation, vars.scaling, vars.left, vars.top); + + if (vars.output_to[0] == '|') + pclose(prn); + else + fclose(prn); + } + else + values[0].data.d_status == STATUS_EXECUTION_ERROR; + + /* + * Store data... + */ + + if (run_mode == RUN_INTERACTIVE) + gimp_set_data(PLUG_IN_NAME, &vars, sizeof(vars)); + }; + + /* + * Detach from the drawable... + */ + + gimp_drawable_detach(drawable); +} + + +/* + * 'print_dialog()' - Pop up the print dialog... + */ + +int +print_dialog(void) +{ + int i; /* Looping var */ + GtkWidget *dialog, /* Dialog window */ + *table, /* Table "container" for controls */ + *label, /* Label string */ + *button, /* OK/Cancel buttons */ + *entry, /* Print file/command text entry */ + *menu, /* Menu of drivers/sizes */ + *item, /* Menu item */ + *option; /* Option menu button */ + GSList *group; /* Grouping for output type */ + gint argc; /* Fake argc for GUI */ + gchar **argv; /* Fake argv for GUI */ + static char *sizes[] = /* Size strings */ + { + "A/Letter (8.5x11\")", + "Legal (8.5x14\")", + "B/Tabloid (11x17\")", + "A4 (210x297mm)", + "A3 (297x420mm)" + }; + static char *orients[] = /* Orientation strings */ + { + "Auto", + "Portrait", + "Landscape" + }; + + + /* + * Initialize the program's display... + */ + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup("print"); + + gtk_init(&argc, &argv); + gtk_rc_parse(gimp_gtkrc()); + gdk_set_use_xshm(gimp_use_xshm()); + + /* + * Dialog window... + */ + + dialog = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dialog), "Print"); + gtk_window_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); + gtk_container_border_width(GTK_CONTAINER(dialog), 0); + gtk_signal_connect(GTK_OBJECT(dialog), "destroy", + (GtkSignalFunc) close_callback, + NULL); + + /* + * Top-level table for dialog... + */ + + table = gtk_table_new(12, 3, FALSE); + gtk_container_border_width(GTK_CONTAINER(table), 6); + gtk_table_set_row_spacings(GTK_TABLE(table), 4); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, FALSE, FALSE, 0); + gtk_widget_show(table); + + /* + * Drawing area for page preview... + */ + + preview = (GtkDrawingArea *)gtk_drawing_area_new(); + gtk_drawing_area_size(preview, PREVIEW_SIZE, PREVIEW_SIZE); + gtk_table_attach(GTK_TABLE(table), (GtkWidget *)preview, 0, 3, 0, 4, 0, 0, 0, 0); + gtk_signal_connect(GTK_OBJECT((GtkWidget *)preview), "expose_event", + (GtkSignalFunc)preview_update, + NULL); + gtk_signal_connect(GTK_OBJECT((GtkWidget *)preview), "button_press_event", + (GtkSignalFunc)preview_button_callback, + NULL); + gtk_signal_connect(GTK_OBJECT((GtkWidget *)preview), "button_release_event", + (GtkSignalFunc)preview_button_callback, + NULL); + gtk_signal_connect(GTK_OBJECT((GtkWidget *)preview), "motion_notify_event", + (GtkSignalFunc)preview_motion_callback, + NULL); + gtk_widget_show((GtkWidget *)preview); + + gtk_widget_set_events((GtkWidget *)preview, + GDK_EXPOSURE_MASK | GDK_BUTTON_MOTION_MASK | + GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); + + /* + * Printer driver option menu... + */ + + label = gtk_label_new("Printer:"); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + menu = gtk_menu_new(); + for (i = 0; i < (sizeof(printers) / sizeof(printers[0])); i ++) + { + item = gtk_menu_item_new_with_label(printers[i].long_name); + gtk_menu_append(GTK_MENU(menu), item); + gtk_signal_connect(GTK_OBJECT(item), "activate", + (GtkSignalFunc)print_driver_callback, + (gpointer)i); + gtk_widget_show(item); + }; + + option = gtk_option_menu_new(); + gtk_table_attach(GTK_TABLE(table), option, 1, 3, 4, 5, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_option_menu_set_menu(GTK_OPTION_MENU(option), menu); + gtk_option_menu_set_history(GTK_OPTION_MENU(option), current_printer); + gtk_widget_show(option); + + /* + * Output type toggles... + */ + + label = gtk_label_new("Output Type:"); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + button = gtk_radio_button_new_with_label(NULL, "B&W"); + group = gtk_radio_button_group(GTK_RADIO_BUTTON(button)); + gtk_signal_connect(GTK_OBJECT(button), "toggled", + (GtkSignalFunc)output_type_callback, + (gpointer)OUTPUT_GRAY); + gtk_table_attach(GTK_TABLE(table), button, 1, 2, 5, 6, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(button); + if (vars.output_type == 0) + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), TRUE); + + button = gtk_radio_button_new_with_label(group, "Color"); + gtk_signal_connect(GTK_OBJECT(button), "toggled", + (GtkSignalFunc)output_type_callback, + (gpointer)OUTPUT_COLOR); + gtk_table_attach(GTK_TABLE(table), button, 2, 3, 5, 6, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(button); + if (vars.output_type == 1) + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), TRUE); + + /* + * Media size option menu... + */ + + label = gtk_label_new("Media Size:"); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 6, 7, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + menu = gtk_menu_new(); + for (i = 0; i < (sizeof(sizes) / sizeof(sizes[0])); i ++) + { + item = gtk_menu_item_new_with_label(sizes[i]); + gtk_menu_append(GTK_MENU(menu), item); + gtk_signal_connect(GTK_OBJECT(item), "activate", + (GtkSignalFunc)media_size_callback, + (gpointer)i); + gtk_widget_show(item); + }; + + option = gtk_option_menu_new(); + gtk_table_attach(GTK_TABLE(table), option, 1, 3, 6, 7, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_option_menu_set_menu(GTK_OPTION_MENU(option), menu); + gtk_option_menu_set_history(GTK_OPTION_MENU(option), vars.media_size); + gtk_widget_show(option); + + /* + * Orientation option menu... + */ + + label = gtk_label_new("Orientation:"); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 7, 8, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + menu = gtk_menu_new(); + for (i = 0; i < (sizeof(orients) / sizeof(orients[0])); i ++) + { + item = gtk_menu_item_new_with_label(orients[i]); + gtk_menu_append(GTK_MENU(menu), item); + gtk_signal_connect(GTK_OBJECT(item), "activate", + (GtkSignalFunc)orientation_callback, + (gpointer)(i - 1)); + gtk_widget_show(item); + }; + + option = gtk_option_menu_new(); + gtk_table_attach(GTK_TABLE(table), option, 1, 3, 7, 8, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_option_menu_set_menu(GTK_OPTION_MENU(option), menu); + gtk_option_menu_set_history(GTK_OPTION_MENU(option), vars.orientation + 1); + gtk_widget_show(option); + + /* + * Scaling slider... + */ + + dialog_create_ivalue("Scaling:", GTK_TABLE(table), 8, &(vars.scaling), 1, 101); + + /* + * Brightness slider... + */ + + dialog_create_ivalue("Brightness:", GTK_TABLE(table), 9, &(vars.brightness), 1, 201); + + /* + * Print file/command... + */ + + label = gtk_label_new("File/|Command:"); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 10, 11, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + entry = gtk_entry_new(); + gtk_entry_set_text(GTK_ENTRY(entry), vars.output_to); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc)print_command_callback, NULL); + gtk_table_attach(GTK_TABLE(table), entry, 1, 3, 10, 11, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(entry); + + /* + * Print, cancel buttons... + */ + + gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 6); + + button = gtk_button_new_with_label("Print"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc)print_callback, + dialog); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc)cancel_callback, + dialog); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + /* + * Show it and wait for the user to do something... + */ + + gtk_widget_show(dialog); + + gtk_main(); + gdk_flush(); + + /* + * Return ok/cancel... + */ + + return (runme); +} + + +/* + * 'dialog_create_ivalue()' - Create an integer value control... + */ + +static void +dialog_create_ivalue(char *title, /* I - Label for control */ + GtkTable *table, /* I - Table container to use */ + int row, /* I - Row # for container */ + gint *value, /* I - Value holder */ + int left, /* I - Minimum value for slider */ + int right) /* I - Maximum value for slider */ +{ + GtkWidget *label, /* Control label */ + *scale, /* Scale widget */ + *entry; /* Text widget */ + GtkObject *scale_data; /* Scale data */ + char buf[256]; /* String buffer */ + + + /* + * Label... + */ + + label = gtk_label_new(title); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 1.0); + gtk_table_attach(table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + /* + * Scale... + */ + + scale_data = gtk_adjustment_new(*value, left, right, 1.0, 1.0, 1.0); + + gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", + (GtkSignalFunc) dialog_iscale_update, + value); + + scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); + gtk_widget_set_usize(scale, SCALE_WIDTH, 0); + gtk_table_attach(table, scale, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); + gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_CONTINUOUS); + gtk_widget_show(scale); + + /* + * Text entry... + */ + + entry = gtk_entry_new(); + gtk_object_set_user_data(GTK_OBJECT(entry), scale_data); + gtk_object_set_user_data(scale_data, entry); + gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); + sprintf(buf, "%d", *value); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) dialog_ientry_update, + value); + gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(entry); +} + + +/* + * 'dialog_iscale_update()' - Update the value field using the scale. + */ + +static void +dialog_iscale_update(GtkAdjustment *adjustment, /* I - New value */ + gint *value) /* I - Current value */ +{ + GtkWidget *entry; /* Text entry widget */ + char buf[256]; /* Text buffer */ + + + if (*value != adjustment->value) + { + *value = adjustment->value; + + entry = gtk_object_get_user_data(GTK_OBJECT(adjustment)); + sprintf(buf, "%d", *value); + + gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value); + + if (value == &(vars.scaling)) + preview_update(); + }; +} + + +/* + * 'dialog_ientry_update()' - Update the value field using the text entry. + */ + +static void +dialog_ientry_update(GtkWidget *widget, /* I - Entry widget */ + gint *value) /* I - Current value */ +{ + GtkAdjustment *adjustment; + gint new_value; + + + new_value = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); + + if (*value != new_value) + { + adjustment = gtk_object_get_user_data(GTK_OBJECT(widget)); + + if ((new_value >= adjustment->lower) && + (new_value <= adjustment->upper)) + { + *value = new_value; + adjustment->value = new_value; + + gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed"); + }; + }; +} + + +/* + * 'print_driver_callback()' - Update the current printer driver... + */ + +static void +print_driver_callback(GtkWidget *widget, /* I - Driver option menu */ + gint data) /* I - Data */ +{ + current_printer = data; + + strcpy(vars.short_name, printers[current_printer].short_name); +} + + +/* + * 'media_size_callback()' - Update the current media size... + */ + +static void +media_size_callback(GtkWidget *widget, /* I - Media size option menu */ + gint data) /* I - Data */ +{ + vars.media_size = data; + vars.left = -1; + vars.top = -1; + + preview_update(); +} + + +/* + * 'orientation_callback()' - Update the current media size... + */ + +static void +orientation_callback(GtkWidget *widget, /* I - Orientation option menu */ + gint data) /* I - Data */ +{ + vars.orientation = data; + vars.left = -1; + vars.top = -1; + + preview_update(); +} + + +/* + * 'print_command_callback()' - Update the print command... + */ + +static void +print_command_callback(GtkWidget *widget, /* I - Command text field */ + gpointer data) /* I - Data */ +{ + strcpy(vars.output_to, gtk_entry_get_text(GTK_ENTRY(widget))); +} + + +/* + * 'output_type_callback()' - Update the current output type... + */ + +static void +output_type_callback(GtkWidget *widget, /* I - Output type button */ + gint data) /* I - Data */ +{ + if (GTK_TOGGLE_BUTTON(widget)->active) + vars.output_type = data; +} + + +/* + * 'print_callback()' - Start the print... + */ + +static void +print_callback(GtkWidget *widget, /* I - OK button widget */ + gpointer data) /* I - Dialog window */ +{ + runme = TRUE; + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +/* + * 'cancel_callback()' - Cancel the print... + */ + +static void +cancel_callback(GtkWidget *widget, /* I - Cancel button widget */ + gpointer data) /* I - Dialog window */ +{ + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +/* + * 'close_callback()' - Exit the print dialog application. + */ + +static void +close_callback(GtkWidget *widget, /* I - Dialog window */ + gpointer data) /* I - Dialog window */ +{ + gtk_main_quit(); +} + + +static void +preview_update(void) +{ + int orient, /* True orientation of page */ + tw0, tw1, /* Temporary page_widths */ + th0, th1, /* Temporary page_heights */ + ta0, ta1; /* Temporary areas */ + static GdkGC *gc = NULL; + + + gdk_window_clear(preview->widget.window); + + if (gc == NULL) + gc = gdk_gc_new(preview->widget.window); + + page_width = media_width(vars.media_size, 10); + page_height = media_height(vars.media_size, 10); + + if (vars.orientation == ORIENT_AUTO) + { + tw0 = page_width * vars.scaling / 100; + th0 = tw0 * image_height / image_width; + if (th0 > page_height) + { + th0 = page_height; + tw0 = th0 * image_width / image_height; + }; + ta0 = tw0 * th0; + + tw1 = page_height * vars.scaling / 100; + th1 = tw1 * image_height / image_width; + if (th1 > page_width) + { + th1 = page_width; + tw1 = th1 * image_width / image_height; + }; + ta1 = tw1 * th1; + + if (ta0 >= ta1) + orient = ORIENT_PORTRAIT; + else + orient = ORIENT_LANDSCAPE; + } + else + orient = vars.orientation; + + if (orient == ORIENT_LANDSCAPE) + { + page_width = media_height(vars.media_size, 10); + page_height = media_width(vars.media_size, 10); + }; + + page_left = (PREVIEW_SIZE - page_width) / 2; + page_top = (PREVIEW_SIZE - page_height) / 2; + + gdk_draw_rectangle(preview->widget.window, gc, 0, + (PREVIEW_SIZE - page_width - 5) / 2, + (PREVIEW_SIZE - page_height - 10) / 2, + page_width + 5, page_height + 10); + + print_width = page_width * vars.scaling / 100; + print_height = print_width * image_height / image_width; + if (print_height > page_height) + { + print_height = page_height; + print_width = print_height * image_width / image_height; + }; + + if (vars.left < 0 || vars.top < 0) + gdk_draw_rectangle(preview->widget.window, gc, 1, + (PREVIEW_SIZE - print_width) / 2, + (PREVIEW_SIZE - print_height) / 2, + print_width, print_height); + else + { + if (vars.left > (page_width - print_width)) + vars.left = page_width - print_width; + if (vars.top > (page_height - print_height)) + vars.top = page_height - print_height; + + gdk_draw_rectangle(preview->widget.window, gc, 1, + page_left + vars.left, + page_top + vars.top, + print_width, print_height); + }; + + gdk_flush(); +} + + +static void +preview_button_callback(GtkWidget *w, + GdkEventButton *event) +{ + mouse_x = event->x; + mouse_y = event->y; +} + + +static void +preview_motion_callback(GtkWidget *w, + GdkEventMotion *event) +{ + if (vars.left < 0 || vars.top < 0) + { + vars.left = (page_width - print_width) / 2; + vars.top = (page_height - print_height) / 2; + }; + + vars.left += event->x - mouse_x; + vars.top += event->y - mouse_y; + + if (vars.left < 0) + vars.left = 0; + + if (vars.top < 0) + vars.top = 0; + + preview_update(); + + mouse_x = event->x; + mouse_y = event->y; +} + + +/* + * End of "$Id: print.c,v 1.7 1997/07/30 20:33:05 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/print.h gimp-0.99.pre11/plug-ins/print.h --- gimp-0.99.10/plug-ins/print.h Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/print.h Thu Aug 14 00:41:50 1997 @@ -0,0 +1,129 @@ +/* + * "$Id: print.h,v 1.6 1997/07/30 20:33:05 mike Exp mike $" + * + * Print plug-in header file for the GIMP. + * + * Copyright 1997 Michael Sweet (mike@easysw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Revision History: + * + * $Log: print.h,v $ + * Revision 1.6 1997/07/30 20:33:05 mike + * Final changes for 1.1 release. + * + * Revision 1.5 1997/07/30 18:47:39 mike + * Added scaling, orientation, and offset options. + * + * Revision 1.4 1997/07/26 18:43:04 mike + * Updated version number to 1.1. + * + * Revision 1.3 1997/07/03 13:26:46 mike + * Updated documentation for 1.0 release. + * + * Revision 1.2 1997/07/02 13:51:53 mike + * Added rgb_to_rgb and gray_to_gray conversion functions. + * Standardized calling args to conversion functions. + * + * Revision 1.2 1997/07/02 13:51:53 mike + * Added rgb_to_rgb and gray_to_gray conversion functions. + * Standardized calling args to conversion functions. + * + * Revision 1.1 1997/06/19 02:18:15 mike + * Initial revision + */ + +/* + * Include necessary header files... + */ + +#include +#include +#include +#include +#include + +#include +#include + + +/* + * Constants... + */ + +#define PLUG_IN_VERSION "1.1 - 31 July 1997" +#define PLUG_IN_NAME "Print" + +#define MEDIA_LETTER 0 /* 8.5x11" a.k.a. "A" size */ +#define MEDIA_LEGAL 1 /* 8.5x14" */ +#define MEDIA_TABLOID 2 /* 11x17" a.k.a. "B" size */ +#define MEDIA_A4 3 /* 8.27x11.69" (210x297mm) */ +#define MEDIA_A3 4 /* 11.69x16.54" (297x420mm) */ + +#define OUTPUT_GRAY 0 /* Grayscale output */ +#define OUTPUT_COLOR 1 /* Color output */ + +#define ORIENT_AUTO -1 /* Best orientation */ +#define ORIENT_PORTRAIT 0 /* Portrait orientation */ +#define ORIENT_LANDSCAPE 1 /* Landscape orientation */ + + +/* + * Printer driver control structure. See "print.c" for the actual list... + */ + +typedef struct +{ + char *long_name, /* Long name for UI */ + *short_name; /* Short name for printrc file */ + int xdpi, /* X resolution */ + ydpi, /* Y resolution */ + large_sizes, /* TRUE if supports large sizes */ + color, /* TRUE if supports color */ + model; /* Model number */ + void (*print)(FILE *prn, GDrawable *drawable, int media_size, + int xdpi, int ydpi, int output_type, int model, + guchar *lut, guchar *cmap, int orientation, + int scaling, int left, int top); + /* Print function */ +} printer_t; + +typedef void (*convert_t)(guchar *in, guchar *out, int width, int bpp, guchar *lut, guchar *cmap); + + +/* + * Prototypes... + */ + +extern void dither_black(guchar *, int, int, int, unsigned char *); +extern void dither_cmyk(guchar *, int, int, int, unsigned char *, + unsigned char *, unsigned char *, unsigned char *); +extern void gray_to_gray(guchar *, guchar *, int, int, guchar *, guchar *); +extern void indexed_to_gray(guchar *, guchar *, int, int, guchar *, guchar *); +extern void indexed_to_rgb(guchar *, guchar *, int, int, guchar *, guchar *); +extern int media_width(int, int); +extern int media_height(int, int); +extern void rgb_to_gray(guchar *, guchar *, int, int, guchar *, guchar *); +extern void rgb_to_rgb(guchar *, guchar *, int, int, guchar *, guchar *); + +extern void escp2_print(FILE *, GDrawable *, int, int, int, int, int, guchar *, guchar *, int, int, int, int); +extern void pcl_print(FILE *, GDrawable *, int, int, int, int, int, guchar *, guchar *, int, int, int, int); +extern void ps_print(FILE *, GDrawable *, int, int, int, int, int, guchar *, guchar *, int, int, int, int); + + +/* + * End of "$Id: print.h,v 1.6 1997/07/30 20:33:05 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/randomize.c gimp-0.99.pre11/plug-ins/randomize.c --- gimp-0.99.10/plug-ins/randomize.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/randomize.c Wed Aug 13 21:24:01 1997 @@ -0,0 +1,806 @@ +/**************************************************************************** + * This is a plugin for the GIMP v 0.99.8 or later. + * + * Copyright (C) 1997 Miles O'Neal + * Blur code Copyright (C) 1995 Spencer Kimball and Peter Mattis + * GUI based on GTK code from: + * plasma (Copyright (C) 1996 Stephen Norris), + * oilify (Copyright (C) 1996 Torsten Martinsen), + * ripple (Copyright (C) 1997 Brian Degenhardt) and + * whirl (Copyright (C) 1997 Federico Mena Quintero). + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + ****************************************************************************/ + +/**************************************************************************** + * Randomize: + * + * randomize version 0.4c (17 May 1997, MEO) + * history + * 0.4c - 17 May 1997 MEO + * minor comment cleanup + * 0.4b - 17 May 1997 MEO + * minor comment cleanup + * 0.4a - 16 May 1997 MEO + * added, corrected & cleaned up comments + * removed unused variables, code + * cleaned up wrong names + * added version to popups + * 0.4 - 13 May 1997 MEO + * added SLUR function + * 0.3 - 12 May 1997 MEO + * added HURL function + * moved from Blurs menu to Distorts menu. + * 0.2 - 11 May 1997 MEO + * converted percentage control from text to scale + * standardized tab stops, style + * 0.1 - 10 May 1997 MEO + * initial release, with BLUR and PICK + * + * Please send any patches or suggestions to the author: meo@rru.com . + * + * This plug-in adds a user-defined amount of randomization to an + * image. Variations include: + * + * - blurring + * - hurling (spewing random colors) + * - picking a nearby pixel at random + * - slurring (a crude form of melting) + * + * In any case, for each pixel in the selection or image, + * whether to change the pixel is decided by picking a + * random number, weighted by the user's "randomization" percentage. + * If the random number is in range, the pixel is modified. For + * blurring, an average is determined from the current and adjacent + * pixels. *(Except for the random factor, the blur code came + * straight from the original S&P blur plug-in.)* Picking + * one selects the new pixel value at random from the current and + * adjacent pixels. Hurling assigns a random value to the pixel. + * Slurring sort of melts downwards; if a pixel is to be slurred, + * there is an 80% chance the pixel above be used; otherwise, one + * of the pixels adjacent to the one above is used (even odds as + * to which it will be). + * + * Picking, hurling and slurring work with any image type. Blurring + * works only with RGB and grayscale images. If randomize is + * run against an indexed image, "blur" is not presented as an + * option. + * + * This plug-in's effectiveness varies a lot with the type + * and clarity of the image being "randomized". + * + * Hurling more than 75% or so onto an existing image will + * make the image nearly unrecognizable. By 90% hurl, most + * images are indistinguishable from random noise. + * + * The repeat count is especially useful with slurring. + * + * TODO List + * + * - add seed GUI - radio buttons to use current time or + * seed entry box. Latter is currently in seedbox.Q . + * - Add a real melt function. + ****************************************************************************/ + +#include +#include +#include "libgimp/gimp.h" +#include "gtk/gtk.h" + +/********************************* + * + * LOCAL DATA + * + ********************************/ + +#define RNDM_BLUR 1 +#define RNDM_PICK 2 +#define RNDM_HURL 3 +#define RNDM_SLUR 4 +#define ENTRY_WIDTH 75 +#define SCALE_WIDTH 100 + +typedef struct { + gint rndm_type; /* type of randomization to apply */ + gdouble rndm_pct; /* likelihood of randomization (as %age) */ + gdouble rndm_rcount; /* repeat count */ +} RandomizeVals; + +static RandomizeVals pivals = { + RNDM_BLUR, + 50.0, + 1.0, +}; + +typedef struct { + gint run; +} RandomizeInterface; + +static RandomizeInterface rndm_int = { + FALSE /* have we run? */ +}; + +static gint is_indexed_drawable = FALSE; + +/********************************* + * + * LOCAL FUNCTIONS + * + ********************************/ + +static void query(void); +static void run( + char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals +); + +GPlugInInfo PLUG_IN_INFO = { + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +static void randomize(GDrawable *drawable); +static void randomize_prepare_row( + GPixelRgn *pixel_rgn, + guchar *data, + int x, + int y, + int w +); + +static gint randomize_dialog(); + +static void randomize_close_callback( + GtkWidget *widget, + gpointer data +); +static void randomize_ok_callback( + GtkWidget *widget, + gpointer data +); +static void randomize_cancel_callback( + GtkWidget *widget, + gpointer data +); +static void randomize_scale_update( + GtkAdjustment *adjustment, + double *scale_val +); + +static void randomize_toggle_update( + GtkWidget *widget, + gpointer data +); + + +MAIN(); + +/********************************* + * + * query() - query_proc + * + * called by the GIMP to learn about this plug-in + * + ********************************/ + +static void +query() +{ + static GParamDef args[] = { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image (unused)" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_INT32, "rndm_type", "Randomization type" }, + { PARAM_FLOAT, "rndm_pct", "Randomization percentage" }, + { PARAM_FLOAT, "rndm_rcount", "Repeat count" }, + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof(args) / sizeof (args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure("plug_in_randomize", + "Add a random factor to the image, by blurring, picking a nearby pixel (similar to melting), slurring, or just hurling on it.", + "This function randomly ``blurs'' the specified drawable, using either a 3x3 blur, picking a nearby pixel, slurring, or hurling (spewing colors). The type and percentage are user selectable. Blurring is not supported for indexed images.", + "Miles O'Neal", + "Miles O'Neal, Spencer Kimball, Peter Mattis, Torsten Martinsen, Brian Degenhardt, Federico Mena Quintero", + "1995-1997", + "/Filters/Distorts/Randomize", + "RGB*, GRAY*, INDEXED*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +/********************************* + * + * run() - main routine + * + * This handles the main interaction with the GIMP itself, + * and invokes the routine that actually does the work. + * + ********************************/ + +static void +run(char *name, int nparams, GParam *param, int *nreturn_vals, + GParam **return_vals) +{ + + static GParam values[1]; + GDrawable *drawable; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; /* assume the best! */ +/* + * Get the specified drawable, do standard initialization. + */ + run_mode = param[0].data.d_int32; + drawable = gimp_drawable_get(param[2].data.d_drawable); + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + *nreturn_vals = 1; + *return_vals = values; + + srand(time(NULL)); +/* + * Make sure the drawable type is appropriate. + */ + if (gimp_drawable_color(drawable->id) || + gimp_drawable_gray(drawable->id) || + gimp_drawable_indexed(drawable->id)) { +/* + * If it's indexed and the current action is BLUR, + * use something else. PICK seems the likeliest + * candidate, although in the spirit of randomity + * we could pick one at random! + */ + if (gimp_drawable_indexed(drawable->id)) { + is_indexed_drawable = TRUE; + if (pivals.rndm_type == RNDM_BLUR) { + pivals.rndm_type = RNDM_PICK; + } + } + + switch (run_mode) { +/* + * If we're running interactively, pop up the dialog box. + */ + case RUN_INTERACTIVE: + gimp_get_data("plug_in_randomize", &pivals); + if (!randomize_dialog()) /* return on Cancel */ + return; + break; +/* + * If we're not interactive (probably scripting), we + * get the parameters from the param[] array, since + * we don't use the dialog box. Make sure they all + * parameters have legitimate values. + */ + case RUN_NONINTERACTIVE: + if (nparams != 6) { + status = STATUS_CALLING_ERROR; + } + if (status == STATUS_SUCCESS) { + pivals.rndm_type = (gint) param[3].data.d_int32; + pivals.rndm_pct = (gdouble) param[4].data.d_float; + pivals.rndm_rcount = (gdouble) param[5].data.d_int32; + } + if (status == STATUS_SUCCESS && + ((pivals.rndm_type != RNDM_PICK && + pivals.rndm_type != RNDM_BLUR && + pivals.rndm_type != RNDM_SLUR && + pivals.rndm_type != RNDM_HURL) || + (pivals.rndm_pct < 1.0 || pivals.rndm_pct > 100.0) || + (pivals.rndm_rcount < 1.0 || pivals.rndm_rcount > 100.0))) { + status = STATUS_CALLING_ERROR; + } + break; +/* + * If we're running with the last set of values, get those values. + */ + case RUN_WITH_LAST_VALS: + gimp_get_data("plug_in_randomize", &pivals); + break; +/* + * Hopefully we never get here! + */ + default: + break; + } +/* + * JUST DO IT! + */ + gimp_progress_init("randomize 0.4a"); + gimp_tile_cache_ntiles(2 * (drawable->width / gimp_tile_width() + 1)); + randomize(drawable); +/* + * If we ran interactively (even repeating) update the display. + */ + if (run_mode != RUN_NONINTERACTIVE) { + gimp_displays_flush(); + } +/* + * If we use the dialog popup, set the data for future use. + */ + if (run_mode == RUN_INTERACTIVE) { + gimp_set_data("plug_in_randomize", &pivals, sizeof(RandomizeVals)); + } + } else { +/* + * If we got the wrong drawable type, we need to complain. + */ + status = STATUS_EXECUTION_ERROR; + } +/* + * DONE! + * Set the status where the GIMP can see it, and let go + * of the drawable. + */ + values[0].data.d_status = status; + gimp_drawable_detach(drawable); +} + +/********************************* + * + * randomize_prepare_row() + * + * Get a row of pixels. If the requested row + * is off the edge, clone the edge row. + * + ********************************/ + +static void +randomize_prepare_row(GPixelRgn *pixel_rgn, guchar *data, int x, int y, int w) +{ + int b; + + if (y == 0) { + gimp_pixel_rgn_get_row(pixel_rgn, data, x, (y + 1), w); + } else if (y == pixel_rgn->h) { + gimp_pixel_rgn_get_row(pixel_rgn, data, x, (y - 1), w); + } else { + gimp_pixel_rgn_get_row(pixel_rgn, data, x, y, w); + } +/* + * Fill in edge pixels + */ + for (b = 0; b < pixel_rgn->bpp; b++) { + data[-pixel_rgn->bpp + b] = data[b]; + data[w * pixel_rgn->bpp + b] = data[(w - 1) * pixel_rgn->bpp + b]; + } +} + +/********************************* + * + * randomize() + * + * Actually mess with the image. + * + ********************************/ + +static void +randomize(GDrawable *drawable) +{ + GPixelRgn srcPR, destPR; + gint width, height; + gint bytes; + guchar *dest, *d; + guchar *prev_row, *pr; + guchar *cur_row, *cr; + guchar *next_row, *nr; + guchar *tmp; + gint row, col; + gint x1, y1, x2, y2; + gint cnt; + +/* + * Get the input area. This is the bounding box of the selection in + * the image (or the entire image if there is no selection). Only + * operating on the input area is simply an optimization. It doesn't + * need to be done for correct operation. (It simply makes it go + * faster, since fewer pixels need to be operated on). + */ + gimp_drawable_mask_bounds(drawable->id, &x1, &y1, &x2, &y2); +/* + * Get the size of the input image. (This will/must be the same + * as the size of the output image. + */ + width = drawable->width; + height = drawable->height; + bytes = drawable->bpp; +/* + * allocate row buffers + */ + prev_row = (guchar *) malloc((x2 - x1 + 2) * bytes); + cur_row = (guchar *) malloc((x2 - x1 + 2) * bytes); + next_row = (guchar *) malloc((x2 - x1 + 2) * bytes); + dest = (guchar *) malloc((x2 - x1) * bytes); + + for (cnt = 1; cnt <= pivals.rndm_rcount; cnt++) { +/* + * initialize the pixel regions + */ + gimp_pixel_rgn_init(&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); + gimp_pixel_rgn_init(&destPR, drawable, 0, 0, width, height, TRUE, TRUE); + + pr = prev_row + bytes; + cr = cur_row + bytes; + nr = next_row + bytes; + + randomize_prepare_row(&srcPR, pr, x1, y1 - 1, (x2 - x1)); + randomize_prepare_row(&srcPR, cr, x1, y1, (x2 - x1)); +/* + * loop through the rows, applying the randomize convolution + */ + for (row = y1; row < y2; row++) { + /* prepare the next row */ + randomize_prepare_row(&srcPR, nr, x1, row + 1, (x2 - x1)); + + d = dest; + for (col = 0; col < (x2 - x1) * bytes; col++) { + if (((rand() % 100)) <= (gint) pivals.rndm_pct) { + switch (pivals.rndm_type) { +/* + * BLUR + * Use the average of the neighboring pixels. + */ + case RNDM_BLUR: + *d++ = ((gint) pr[col - bytes] + (gint) pr[col] + + (gint) pr[col + bytes] + + (gint) cr[col - bytes] + (gint) cr[col] + + (gint) cr[col + bytes] + + (gint) nr[col - bytes] + (gint) nr[col] + + (gint) nr[col + bytes]) / 9; + break; +/* + * HURL + * Just assign a random value. + */ + case RNDM_HURL: + *d++ = rand() % 256; + break; +/* + * PICK + * pick at random from a neighboring pixel. + */ + case RNDM_PICK: + switch (rand() % 9) { + case 0: + *d++ = (gint) pr[col - bytes]; + break; + case 1: + *d++ = (gint) pr[col]; + break; + case 2: + *d++ = (gint) pr[col + bytes]; + break; + case 3: + *d++ = (gint) cr[col - bytes]; + break; + case 4: + *d++ = (gint) cr[col]; + break; + case 5: + *d++ = (gint) cr[col + bytes]; + break; + case 6: + *d++ = (gint) nr[col - bytes]; + break; + case 7: + *d++ = (gint) nr[col]; + break; + case 8: + *d++ = (gint) nr[col + bytes]; + break; + } + break; +/* + * SLUR + * 80% chance it's from directly above, + * 10% from above left, + * 10% from above right. + */ + case RNDM_SLUR: + switch (rand() % 10) { + case 0: + *d++ = (gint) pr[col - bytes]; + break; + case 9: + *d++ = (gint) pr[col + bytes]; + break; + default: + *d++ = (gint) pr[col]; + break; + } + break; + } +/* + * Otherwise, this pixel was not selected for randomization, + * so use the current value. + */ + } else { + *d++ = (gint) cr[col]; + } + } +/* + * Save the modified row, shuffle the row pointers, and every + * so often, update the progress meter. + */ + gimp_pixel_rgn_set_row(&destPR, dest, x1, row, (x2 - x1)); + + tmp = pr; + pr = cr; + cr = nr; + nr = tmp; + + if ((row % 5) == 0) + gimp_progress_update((double) row / (double) (y2 - y1)); + } +/* + * update the randomized region + */ + gimp_drawable_flush(drawable); + gimp_drawable_merge_shadow(drawable->id, TRUE); + gimp_drawable_update(drawable->id, x1, y1, (x2 - x1), (y2 - y1)); + } +/* + * clean up after ourselves. + */ + free(prev_row); + free(cur_row); + free(next_row); + free(dest); +} + +/********************************* + * + * GUI ROUTINES + * + ********************************/ + + +/********************************* + * + * randomize_dialog() - set up the plug-in's dialog box + * + ********************************/ + +static gint +randomize_dialog() +{ + GtkWidget *button, *dlg, *frame, *label, + *scale, *table, *toggle_hbox, *toggle; + GtkObject *scale_data; + GSList *type_group = NULL; + gchar **argv; + gint argc; +/* + * various initializations + */ + gint do_blur = (pivals.rndm_type == RNDM_BLUR); + gint do_pick = (pivals.rndm_type == RNDM_PICK); + gint do_hurl = (pivals.rndm_type == RNDM_HURL); + gint do_slur = (pivals.rndm_type == RNDM_SLUR); + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup("randomize"); + + gtk_init(&argc, &argv); +/* + * Open a new dialog, label it and set up its + * destroy callback. + */ + dlg = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dlg), "Randomize 0.4a"); + gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(dlg), "destroy", + (GtkSignalFunc) randomize_close_callback, NULL); +/* + * Action area OK & Cancel buttons) + */ + button = gtk_button_new_with_label("OK"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) randomize_ok_callback, dlg); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), + button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) randomize_cancel_callback, dlg); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), + button, TRUE, TRUE, 0); + gtk_widget_show(button); +/* + * Parameter settings + * + * First set up the basic containers, label them, etc. + */ + frame = gtk_frame_new("Parameter Settings"); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), frame, TRUE, TRUE, 0); + table = gtk_table_new(3, 2, FALSE); + gtk_container_border_width(GTK_CONTAINER(table), 10); + gtk_container_add(GTK_CONTAINER(frame), table); +/* + * Randomization Type - label & radio buttons + */ + label = gtk_label_new("Randomization Type:"); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, + GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 0); + gtk_widget_show(label); + + toggle_hbox = gtk_hbox_new(FALSE, 5); + gtk_container_border_width(GTK_CONTAINER(toggle_hbox), 5); + gtk_table_attach(GTK_TABLE(table), toggle_hbox, 1, 2, 0, 1, + GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 0); +/* + * Blur won't work with indexed. If the drawable is indexed, + * don't allow blur as an option. + */ + if (! is_indexed_drawable) { + toggle = gtk_radio_button_new_with_label(type_group, "Blur"); + type_group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(toggle_hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) randomize_toggle_update, &do_blur); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), do_blur); + gtk_widget_show(toggle); + } + + toggle = gtk_radio_button_new_with_label(type_group, "Hurl"); + type_group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(toggle_hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) randomize_toggle_update, &do_hurl); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), do_hurl); + gtk_widget_show(toggle); + gtk_widget_show(toggle_hbox); + + toggle = gtk_radio_button_new_with_label(type_group, "Pick"); + type_group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(toggle_hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) randomize_toggle_update, &do_pick); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), do_pick); + gtk_widget_show(toggle); + gtk_widget_show(toggle_hbox); + + toggle = gtk_radio_button_new_with_label(type_group, "Slur"); + type_group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(toggle_hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) randomize_toggle_update, &do_slur); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), do_slur); + gtk_widget_show(toggle); + gtk_widget_show(toggle_hbox); +/* + * Randomization percentage scale (1 to 100) + */ + label = gtk_label_new("Randomization %:"); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, + GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 0); + + scale_data = gtk_adjustment_new(pivals.rndm_pct, + 1.0, 100.0, 1.0, 1.0, 0.0); + scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); + gtk_widget_set_usize(scale, SCALE_WIDTH, 0); + gtk_table_attach(GTK_TABLE(table), scale, 1, 2, 1, 2, + GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_scale_set_value_pos(GTK_SCALE(scale), GTK_POS_TOP); + gtk_scale_set_digits(GTK_SCALE(scale), 0); + gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_DELAYED); + gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", + (GtkSignalFunc) randomize_scale_update, &pivals.rndm_pct); + gtk_widget_show(label); + gtk_widget_show(scale); +/* + * Repeat count scale (1 to 100) + */ + label = gtk_label_new("Repeat"); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, + GTK_FILL, 0, 5, 0); + + scale_data = gtk_adjustment_new(pivals.rndm_rcount, + 1.0, 100.0, 1.0, 1.0, 0.0); + scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); + gtk_widget_set_usize(scale, SCALE_WIDTH, 0); + gtk_table_attach(GTK_TABLE(table), scale, 1, 2, 2, 3, + GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_scale_set_value_pos(GTK_SCALE(scale), GTK_POS_TOP); + gtk_scale_set_digits(GTK_SCALE(scale), 0); + gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_DELAYED); + gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", + (GtkSignalFunc) randomize_scale_update, &pivals.rndm_rcount); + gtk_widget_show(label); + gtk_widget_show(scale); +/* + * Display everything. + */ + gtk_widget_show(frame); + gtk_widget_show(table); + gtk_widget_show(dlg); + + gtk_main(); + gdk_flush(); +/* + * Figure out which type of randomization to apply. + */ + if (do_blur) { + pivals.rndm_type = RNDM_BLUR; + } else if (do_pick) { + pivals.rndm_type = RNDM_PICK; + } else if (do_slur) { + pivals.rndm_type = RNDM_SLUR; + } else { + pivals.rndm_type = RNDM_HURL; + } + + return rndm_int.run; +} + + +/********************************* + * + * GUI accessories (callbacks, etc) + * + ********************************/ + +static void +randomize_close_callback(GtkWidget *widget, gpointer data) { + gtk_main_quit(); +} + +static void +randomize_ok_callback(GtkWidget *widget, gpointer data) { + rndm_int.run = TRUE; + gtk_widget_destroy(GTK_WIDGET(data)); +} + +static void +randomize_cancel_callback(GtkWidget *widget, gpointer data) { + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +static void +randomize_scale_update(GtkAdjustment *adjustment, double *scale_val) { + *scale_val = adjustment->value; +} + +static void +randomize_toggle_update(GtkWidget *widget, gpointer data) { + int *toggle_val; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON(widget)->active) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/run_tbl.c gimp-0.99.pre11/plug-ins/run_tbl.c --- gimp-0.99.10/plug-ins/run_tbl.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/run_tbl.c Thu Aug 14 00:47:20 1997 @@ -0,0 +1,63 @@ +#ident "@(#)run_tbl.c 3.1 95/08/30 Copyright (c) 1994 Gert Doering" + +/* run_tbl.c + * + * this file is part of the mgetty+sendfax distribution + * + * compute a set of arrays that will speed up finding the run length + * of black or white bits in a byte enourmously + * (I do not include the array as it is larger than the source and + * computation is fast enough - 0.005 secs on my machine...) + */ + +static unsigned char tab[9] = { 0x00, + 0x01, 0x03, 0x07, 0x0f, + 0x1f, 0x3f, 0x7f, 0xff }; + +char w_rtab[8][256]; +char b_rtab[8][256]; + +void make_run_tables ( void ) +{ +int i, j, k, m; /* byte = kkkjjjmm, "j" starts at bit "i" */ +int mask; /* black mask (all ones), start bit i, j bits wide */ + + for ( i=0; i<8; i++ ) /* for (all starting bits) */ + { + for ( j=i+1; j>=0; j-- ) /* for (all possible run lengths) */ + { + mask = tab[j] << ((i-j)+1); + + if ( i == 7 ) /* no fill bits to the left */ + { + if ( j == i+1 ) /* no fill bits to the right */ + { + w_rtab[i][0 ] = j; + b_rtab[i][mask] = j; + } + else /* fill bits to the right */ + for ( m = ( 1 << (i-j) ) -1 ; m >= 0; m-- ) + { + w_rtab[i][0 + (1<<(i-j)) + m ] = j; + b_rtab[i][mask+ 0 + m ] = j; + } + } + else /* i != 7 -> fill higher bits */ + for ( k = (0x80>>i) -1; k>= 0; k-- ) + { + if ( j == i+1 ) /* no noise to the right */ + { + w_rtab[i][ (k << (i+1)) + 0 ] = j; + b_rtab[i][ (k << (i+1)) + mask ] = j; + } + else /* fill bits to left + right */ + for ( m = ( 1 << (i-j) ) -1; m >= 0; m-- ) + { + w_rtab[i][ (k << (i+1)) + 0 + (1<<(i-j)) + m ] = j; + b_rtab[i][ (k << (i+1)) + mask + 0 + m ] = j; + } + } /* end for (k) [noise left of top bit] */ + } /* end for (j) [span] */ + } /* end for (i) [top bit] */ +} + diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/Makefile gimp-0.99.pre11/plug-ins/script-fu/Makefile --- gimp-0.99.10/plug-ins/script-fu/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/Makefile Thu Aug 14 01:25:50 1997 @@ -0,0 +1,450 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# These 3 variables are declared here so that Automake doesn't +# give warnings. The "include" directive that follows them +# includes the gtk+ configuration file which contains the +# actual definitions of the 3 variables. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = ../.. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gimp +pkglibdir = $(libdir)/gimp +pkgincludedir = $(includedir)/gimp + +top_builddir = ../.. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBJPEG_INC = +LIBJPEG_LIB = +LIBPNG_INC = +LIBPNG_LIB = +LIBTIFF_INC = +LIBTIFF_LIB = +LIBTOOL = $(top_builddir)/libtool +LN_S = ln -s +MAKEINFO = makeinfo +PACKAGE = gimp +RANLIB = ranlib +VERSION = 0.99.10 +gimpdatadir = ${prefix}/share/gimp/0.99.10 +gimpdir = .gimp +gimpplugindir = ${exec_prefix}/lib/gimp/0.99.10 + +X_CFLAGS = +X_LDFLAGS = +X_LIBS = + +GTK_XCONFIG = $(top_builddir)/gtk+/gtk+.xconfig + +SUBDIRS = scripts + +scriptdata = + +pluginlibdir = $(gimpplugindir)/plug-ins + +pluginlib_PROGRAMS = script-fu + +script_fu_SOURCES = \ + interp_md5.c \ + interp_md5.h \ + interp_regex.c \ + interp_slib.c \ + interp_sliba.c \ + interp_trace.c \ + script-fu.c \ + script-fu.h \ + script-fu-console.c \ + script-fu-console.h \ + script-fu-scripts.c \ + script-fu-scripts.h \ + script-fu-server.c \ + script-fu-server.h \ + script-fu-enums.h \ + siod.h \ + siodp.h + +INCLUDES = \ + $(X_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/gtk+ \ + -I$(top_srcdir)/gtk+/glib + +LDADD = \ + $(top_builddir)/libgimp/libgimpui.la \ + $(top_builddir)/libgimp/libgimp.la \ + $(top_builddir)/gtk+/gtk/libgtk.la \ + $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/gtk+/glib/libglib.la \ + $(X_LDFLAGS) \ + $(X_LIBS) \ + -lc \ + -lm + +DEPS = \ + $(top_builddir)/libgimp/libgimpui.la \ + $(top_builddir)/libgimp/libgimp.la \ + $(top_builddir)/gtk+/gtk/libgtk.la \ + $(top_builddir)/gtk+/gdk/libgdk.la \ + $(top_builddir)/gtk+/glib/libglib.la + +script_fu_DEPENDENCIES = $(DEPS) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../../config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(pluginlib_PROGRAMS) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I../.. +CPPFLAGS = +LDFLAGS = +LIBS = +script_fu_OBJECTS = interp_md5.o interp_regex.o interp_slib.o \ +interp_sliba.o interp_trace.o script-fu.o script-fu-console.o \ +script-fu-scripts.o script-fu-server.o +script_fu_LDADD = $(LDADD) +script_fu_LDFLAGS = +CFLAGS = -g -O2 -Wall +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +DEP_FILES = .deps/interp_md5.P .deps/interp_regex.P .deps/interp_slib.P \ +.deps/interp_sliba.P .deps/interp_trace.P .deps/script-fu-console.P \ +.deps/script-fu-scripts.P .deps/script-fu-server.P .deps/script-fu.P +SOURCES = $(script_fu_SOURCES) +OBJECTS = $(script_fu_OBJECTS) + +default: all + +.SUFFIXES: +.SUFFIXES: .c .lo .o +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu plug-ins/script-fu/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-pluginlibPROGRAMS: + +clean-pluginlibPROGRAMS: + test -z "$(pluginlib_PROGRAMS)" || rm -f $(pluginlib_PROGRAMS) + +distclean-pluginlibPROGRAMS: + +maintainer-clean-pluginlibPROGRAMS: + +install-pluginlibPROGRAMS: $(pluginlib_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(pluginlibdir) + @list='$(pluginlib_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(pluginlibdir)/`echo $$p|sed '$(transform)'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(pluginlibdir)/`echo $$p|sed '$(transform)'`; \ + else :; fi; \ + done + +uninstall-pluginlibPROGRAMS: + $(NORMAL_UNINSTALL) + list='$(pluginlib_PROGRAMS)'; for p in $$list; do \ + rm -f $(pluginlibdir)/`echo $$p|sed '$(transform)'`; \ + done + +.c.o: + $(COMPILE) -c $< + +mostlyclean-compile: + rm -f *.o core + +clean-compile: + +distclean-compile: + rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + rm -f *.lo + +clean-libtool: + rm -rf .libs + +distclean-libtool: + +maintainer-clean-libtool: + +script-fu: $(script_fu_OBJECTS) $(script_fu_DEPENDENCIES) + @rm -f script-fu + $(LINK) $(script_fu_LDFLAGS) $(script_fu_OBJECTS) $(script_fu_LDADD) $(LIBS) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + + + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + for subdir in $(SUBDIRS); do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + rev=''; for subdir in $(SUBDIRS); do rev="$$rev $$subdir"; done; \ + for subdir in $$rev; do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir && $(MAKE) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) + here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + done; \ + test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = plug-ins/script-fu + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu plug-ins/script-fu/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + for subdir in $(SUBDIRS); do \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + done + +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp +info: info-recursive +dvi: dvi-recursive +check: all-am + $(MAKE) check-recursive +installcheck: installcheck-recursive +all-am: Makefile $(PROGRAMS) + +install-data-am: install-pluginlibPROGRAMS + +uninstall-am: uninstall-pluginlibPROGRAMS + +install-exec: install-exec-recursive + @$(NORMAL_INSTALL) + +install-data: install-data-recursive install-data-am + @$(NORMAL_INSTALL) + +install: install-recursive install-data-am + @: + +uninstall: uninstall-recursive uninstall-am + +all: all-recursive all-am + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: installdirs-recursive + $(mkinstalldirs) $(pluginlibdir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean-am: mostlyclean-pluginlibPROGRAMS mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +clean-am: clean-pluginlibPROGRAMS clean-compile clean-libtool \ + clean-tags clean-depend clean-generic mostlyclean-am + +distclean-am: distclean-pluginlibPROGRAMS distclean-compile \ + distclean-libtool distclean-tags distclean-depend \ + distclean-generic clean-am + +maintainer-clean-am: maintainer-clean-pluginlibPROGRAMS \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean-am + +mostlyclean: mostlyclean-recursive mostlyclean-am + +clean: clean-recursive clean-am + +distclean: distclean-recursive distclean-am + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-recursive maintainer-clean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default mostlyclean-pluginlibPROGRAMS \ +distclean-pluginlibPROGRAMS clean-pluginlibPROGRAMS \ +maintainer-clean-pluginlibPROGRAMS uninstall-pluginlibPROGRAMS \ +install-pluginlibPROGRAMS mostlyclean-compile distclean-compile \ +clean-compile maintainer-clean-compile mostlyclean-libtool \ +distclean-libtool clean-libtool maintainer-clean-libtool \ +install-data-recursive uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck all-am install-data-am \ +uninstall-am install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + +include $(GTK_XCONFIG) + +.PHONY: files + +files: + @files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \ + echo $$p; \ + done + @for subdir in $(SUBDIRS); do \ + files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \ + for file in $$files; do \ + echo $$subdir/$$file; \ + done; \ + done + +$(GTK_XCONFIG): + touch $(GTK_XCONFIG) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/Makefile.in gimp-0.99.pre11/plug-ins/script-fu/Makefile.in --- gimp-0.99.10/plug-ins/script-fu/Makefile.in Sat Jun 7 00:26:31 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/Makefile.in Thu Aug 14 01:05:19 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -47,15 +47,25 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBJPEG_INC = @LIBJPEG_INC@ LIBJPEG_LIB = @LIBJPEG_LIB@ +LIBPNG_INC = @LIBPNG_INC@ +LIBPNG_LIB = @LIBPNG_LIB@ LIBTIFF_INC = @LIBTIFF_INC@ LIBTIFF_LIB = @LIBTIFF_LIB@ LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -139,7 +149,7 @@ CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = Makefile.am Makefile.in @@ -147,13 +157,16 @@ TAR = tar GZIP = --best +DEP_FILES = .deps/interp_md5.P .deps/interp_regex.P .deps/interp_slib.P \ +.deps/interp_sliba.P .deps/interp_trace.P .deps/script-fu-console.P \ +.deps/script-fu-scripts.P .deps/script-fu-server.P .deps/script-fu.P SOURCES = $(script_fu_SOURCES) OBJECTS = $(script_fu_OBJECTS) default: all .SUFFIXES: -.SUFFIXES: .c .o .lo +.SUFFIXES: .c .lo .o $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu plug-ins/script-fu/Makefile @@ -172,9 +185,9 @@ maintainer-clean-pluginlibPROGRAMS: install-pluginlibPROGRAMS: $(pluginlib_PROGRAMS) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(pluginlibdir) - @list="$(pluginlib_PROGRAMS)"; for p in $$list; do \ + @list='$(pluginlib_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(pluginlibdir)/`echo $$p|sed '$(transform)'`"; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(pluginlibdir)/`echo $$p|sed '$(transform)'`; \ @@ -182,7 +195,8 @@ done uninstall-pluginlibPROGRAMS: - list="$(pluginlib_PROGRAMS)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(pluginlib_PROGRAMS)'; for p in $$list; do \ rm -f $(pluginlibdir)/`echo $$p|sed '$(transform)'`; \ done @@ -211,9 +225,9 @@ distclean-libtool: maintainer-clean-libtool: -$(script_fu_OBJECTS): ../../config.h script-fu: $(script_fu_OBJECTS) $(script_fu_DEPENDENCIES) + @rm -f script-fu $(LINK) $(script_fu_LDFLAGS) $(script_fu_OBJECTS) $(script_fu_LDADD) $(LIBS) # This directory's subdirectories are mostly independent; you can cd @@ -227,17 +241,27 @@ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + for subdir in $(SUBDIRS); do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" + mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @for subdir in $(SUBDIRS); do \ + @set fnord $(MAKEFLAGS); amf=$$2; \ + rev=''; for subdir in $(SUBDIRS); do rev="$$rev $$subdir"; done; \ + for subdir in $$rev; do \ target=`echo $@ | sed s/-recursive//`; \ echo "Making $$target in $$subdir"; \ (cd $$subdir && $(MAKE) $$target) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: - list="$(SUBDIRS)"; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ (cd $$subdir && $(MAKE) tags); \ done @@ -249,11 +273,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) tags=; \ here=`pwd`; \ - list="$(SUBDIRS)"; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ done; \ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \ - || cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS) mostlyclean-tags: @@ -267,7 +291,12 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = plug-ins/script-fu + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu plug-ins/script-fu/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ @@ -278,205 +307,52 @@ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ - chmod 755 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) distdir=../$(distdir)/$$subdir distdir) \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ done -interp_md5.o interp_md5.lo: interp_md5.c interp_md5.h -interp_regex.o interp_regex.lo: interp_regex.c siod.h -interp_slib.o interp_slib.lo: interp_slib.c siod.h siodp.h -interp_sliba.o interp_sliba.lo: interp_sliba.c siod.h siodp.h -interp_trace.o interp_trace.lo: interp_trace.c siod.h siodp.h -script-fu-console.o script-fu-console.lo: script-fu-console.c \ - ../../gtk+/gdk/gdkkeysyms.h ../../gtk+/gtk/gtk.h \ - ../../gtk+/gdk/gdk.h ../../gtk+/gdk/gdktypes.h \ - ../../gtk+/glib/glib.h ../../gtk+/glib/glibconfig.h \ - ../../gtk+/gdk/gdkcursors.h ../../gtk+/gtk/gtkaccelerator.h \ - ../../gtk+/gtk/gtkobject.h ../../gtk+/gtk/gtkenums.h \ - ../../gtk+/gtk/gtktypeutils.h ../../gtk+/gtk/gtkadjustment.h \ - ../../gtk+/gtk/gtkdata.h ../../gtk+/gtk/gtkalignment.h \ - ../../gtk+/gtk/gtkbin.h ../../gtk+/gtk/gtkcontainer.h \ - ../../gtk+/gtk/gtkwidget.h ../../gtk+/gtk/gtkstyle.h \ - ../../gtk+/gtk/gtkaspectframe.h ../../gtk+/gtk/gtkframe.h \ - ../../gtk+/gtk/gtkarrow.h ../../gtk+/gtk/gtkmisc.h \ - ../../gtk+/gtk/gtkbox.h ../../gtk+/gtk/gtkbutton.h \ - ../../gtk+/gtk/gtkcheckbutton.h \ - ../../gtk+/gtk/gtktogglebutton.h \ - ../../gtk+/gtk/gtkcheckmenuitem.h ../../gtk+/gtk/gtkmenuitem.h \ - ../../gtk+/gtk/gtkitem.h ../../gtk+/gtk/gtkcolorsel.h \ - ../../gtk+/gtk/gtkwindow.h ../../gtk+/gtk/gtkvbox.h \ - ../../gtk+/gtk/gtkpreview.h ../../gtk+/gtk/gtkentry.h \ - ../../gtk+/gtk/gtkhbox.h ../../gtk+/gtk/gtklabel.h \ - ../../gtk+/gtk/gtkmain.h ../../gtk+/gtk/gtksignal.h \ - ../../gtk+/gtk/gtkrange.h ../../gtk+/gtk/gtkscale.h \ - ../../gtk+/gtk/gtkhscale.h ../../gtk+/gtk/gtktable.h \ - ../../gtk+/gtk/gtkcurve.h ../../gtk+/gtk/gtkdialog.h \ - ../../gtk+/gtk/gtkdrawingarea.h ../../gtk+/gtk/gtkfilesel.h \ - ../../gtk+/gtk/gtkgc.h ../../gtk+/gtk/gtkhruler.h \ - ../../gtk+/gtk/gtkruler.h ../../gtk+/gtk/gtkhscrollbar.h \ - ../../gtk+/gtk/gtkscrollbar.h ../../gtk+/gtk/gtkhseparator.h \ - ../../gtk+/gtk/gtkseparator.h ../../gtk+/gtk/gtkimage.h \ - ../../gtk+/gtk/gtklist.h ../../gtk+/gtk/gtklistitem.h \ - ../../gtk+/gtk/gtkmenu.h ../../gtk+/gtk/gtkmenushell.h \ - ../../gtk+/gtk/gtkmenubar.h ../../gtk+/gtk/gtkmenufactory.h \ - ../../gtk+/gtk/gtknotebook.h ../../gtk+/gtk/gtkoptionmenu.h \ - ../../gtk+/gtk/gtkpixmap.h ../../gtk+/gtk/gtkprogressbar.h \ - ../../gtk+/gtk/gtkradiobutton.h \ - ../../gtk+/gtk/gtkradiomenuitem.h ../../gtk+/gtk/gtkrc.h \ - ../../gtk+/gtk/gtkscrolledwindow.h \ - ../../gtk+/gtk/gtkvscrollbar.h ../../gtk+/gtk/gtkviewport.h \ - ../../gtk+/gtk/gtktext.h ../../gtk+/gtk/gtktooltips.h \ - ../../gtk+/gtk/gtktree.h ../../gtk+/gtk/gtktreeitem.h \ - ../../gtk+/gtk/gtkvruler.h ../../gtk+/gtk/gtkvscale.h \ - ../../gtk+/gtk/gtkvseparator.h ../../libgimp/gimp.h \ - ../../libgimp/gimpenums.h ../../libgimp/gimpui.h \ - ../../libgimp/gimpmenu.h siod.h script-fu-console.h -script-fu-scripts.o script-fu-scripts.lo: script-fu-scripts.c \ - ../../gtk+/gtk/gtk.h ../../gtk+/gdk/gdk.h \ - ../../gtk+/gdk/gdktypes.h ../../gtk+/glib/glib.h \ - ../../gtk+/glib/glibconfig.h ../../gtk+/gdk/gdkcursors.h \ - ../../gtk+/gtk/gtkaccelerator.h ../../gtk+/gtk/gtkobject.h \ - ../../gtk+/gtk/gtkenums.h ../../gtk+/gtk/gtktypeutils.h \ - ../../gtk+/gtk/gtkadjustment.h ../../gtk+/gtk/gtkdata.h \ - ../../gtk+/gtk/gtkalignment.h ../../gtk+/gtk/gtkbin.h \ - ../../gtk+/gtk/gtkcontainer.h ../../gtk+/gtk/gtkwidget.h \ - ../../gtk+/gtk/gtkstyle.h ../../gtk+/gtk/gtkaspectframe.h \ - ../../gtk+/gtk/gtkframe.h ../../gtk+/gtk/gtkarrow.h \ - ../../gtk+/gtk/gtkmisc.h ../../gtk+/gtk/gtkbox.h \ - ../../gtk+/gtk/gtkbutton.h ../../gtk+/gtk/gtkcheckbutton.h \ - ../../gtk+/gtk/gtktogglebutton.h \ - ../../gtk+/gtk/gtkcheckmenuitem.h ../../gtk+/gtk/gtkmenuitem.h \ - ../../gtk+/gtk/gtkitem.h ../../gtk+/gtk/gtkcolorsel.h \ - ../../gtk+/gtk/gtkwindow.h ../../gtk+/gtk/gtkvbox.h \ - ../../gtk+/gtk/gtkpreview.h ../../gtk+/gtk/gtkentry.h \ - ../../gtk+/gtk/gtkhbox.h ../../gtk+/gtk/gtklabel.h \ - ../../gtk+/gtk/gtkmain.h ../../gtk+/gtk/gtksignal.h \ - ../../gtk+/gtk/gtkrange.h ../../gtk+/gtk/gtkscale.h \ - ../../gtk+/gtk/gtkhscale.h ../../gtk+/gtk/gtktable.h \ - ../../gtk+/gtk/gtkcurve.h ../../gtk+/gtk/gtkdialog.h \ - ../../gtk+/gtk/gtkdrawingarea.h ../../gtk+/gtk/gtkfilesel.h \ - ../../gtk+/gtk/gtkgc.h ../../gtk+/gtk/gtkhruler.h \ - ../../gtk+/gtk/gtkruler.h ../../gtk+/gtk/gtkhscrollbar.h \ - ../../gtk+/gtk/gtkscrollbar.h ../../gtk+/gtk/gtkhseparator.h \ - ../../gtk+/gtk/gtkseparator.h ../../gtk+/gtk/gtkimage.h \ - ../../gtk+/gtk/gtklist.h ../../gtk+/gtk/gtklistitem.h \ - ../../gtk+/gtk/gtkmenu.h ../../gtk+/gtk/gtkmenushell.h \ - ../../gtk+/gtk/gtkmenubar.h ../../gtk+/gtk/gtkmenufactory.h \ - ../../gtk+/gtk/gtknotebook.h ../../gtk+/gtk/gtkoptionmenu.h \ - ../../gtk+/gtk/gtkpixmap.h ../../gtk+/gtk/gtkprogressbar.h \ - ../../gtk+/gtk/gtkradiobutton.h \ - ../../gtk+/gtk/gtkradiomenuitem.h ../../gtk+/gtk/gtkrc.h \ - ../../gtk+/gtk/gtkscrolledwindow.h \ - ../../gtk+/gtk/gtkvscrollbar.h ../../gtk+/gtk/gtkviewport.h \ - ../../gtk+/gtk/gtktext.h ../../gtk+/gtk/gtktooltips.h \ - ../../gtk+/gtk/gtktree.h ../../gtk+/gtk/gtktreeitem.h \ - ../../gtk+/gtk/gtkvruler.h ../../gtk+/gtk/gtkvscale.h \ - ../../gtk+/gtk/gtkvseparator.h ../../libgimp/gimp.h \ - ../../libgimp/gimpenums.h ../../libgimp/gimpui.h \ - ../../libgimp/gimpmenu.h siod.h script-fu-scripts.h \ - script-fu-enums.h -script-fu-server.o script-fu-server.lo: script-fu-server.c \ - ../../libgimp/gimp.h ../../gtk+/glib/glib.h \ - ../../gtk+/glib/glibconfig.h ../../libgimp/gimpenums.h \ - ../../gtk+/gtk/gtk.h ../../gtk+/gdk/gdk.h \ - ../../gtk+/gdk/gdktypes.h ../../gtk+/gdk/gdkcursors.h \ - ../../gtk+/gtk/gtkaccelerator.h ../../gtk+/gtk/gtkobject.h \ - ../../gtk+/gtk/gtkenums.h ../../gtk+/gtk/gtktypeutils.h \ - ../../gtk+/gtk/gtkadjustment.h ../../gtk+/gtk/gtkdata.h \ - ../../gtk+/gtk/gtkalignment.h ../../gtk+/gtk/gtkbin.h \ - ../../gtk+/gtk/gtkcontainer.h ../../gtk+/gtk/gtkwidget.h \ - ../../gtk+/gtk/gtkstyle.h ../../gtk+/gtk/gtkaspectframe.h \ - ../../gtk+/gtk/gtkframe.h ../../gtk+/gtk/gtkarrow.h \ - ../../gtk+/gtk/gtkmisc.h ../../gtk+/gtk/gtkbox.h \ - ../../gtk+/gtk/gtkbutton.h ../../gtk+/gtk/gtkcheckbutton.h \ - ../../gtk+/gtk/gtktogglebutton.h \ - ../../gtk+/gtk/gtkcheckmenuitem.h ../../gtk+/gtk/gtkmenuitem.h \ - ../../gtk+/gtk/gtkitem.h ../../gtk+/gtk/gtkcolorsel.h \ - ../../gtk+/gtk/gtkwindow.h ../../gtk+/gtk/gtkvbox.h \ - ../../gtk+/gtk/gtkpreview.h ../../gtk+/gtk/gtkentry.h \ - ../../gtk+/gtk/gtkhbox.h ../../gtk+/gtk/gtklabel.h \ - ../../gtk+/gtk/gtkmain.h ../../gtk+/gtk/gtksignal.h \ - ../../gtk+/gtk/gtkrange.h ../../gtk+/gtk/gtkscale.h \ - ../../gtk+/gtk/gtkhscale.h ../../gtk+/gtk/gtktable.h \ - ../../gtk+/gtk/gtkcurve.h ../../gtk+/gtk/gtkdialog.h \ - ../../gtk+/gtk/gtkdrawingarea.h ../../gtk+/gtk/gtkfilesel.h \ - ../../gtk+/gtk/gtkgc.h ../../gtk+/gtk/gtkhruler.h \ - ../../gtk+/gtk/gtkruler.h ../../gtk+/gtk/gtkhscrollbar.h \ - ../../gtk+/gtk/gtkscrollbar.h ../../gtk+/gtk/gtkhseparator.h \ - ../../gtk+/gtk/gtkseparator.h ../../gtk+/gtk/gtkimage.h \ - ../../gtk+/gtk/gtklist.h ../../gtk+/gtk/gtklistitem.h \ - ../../gtk+/gtk/gtkmenu.h ../../gtk+/gtk/gtkmenushell.h \ - ../../gtk+/gtk/gtkmenubar.h ../../gtk+/gtk/gtkmenufactory.h \ - ../../gtk+/gtk/gtknotebook.h ../../gtk+/gtk/gtkoptionmenu.h \ - ../../gtk+/gtk/gtkpixmap.h ../../gtk+/gtk/gtkprogressbar.h \ - ../../gtk+/gtk/gtkradiobutton.h \ - ../../gtk+/gtk/gtkradiomenuitem.h ../../gtk+/gtk/gtkrc.h \ - ../../gtk+/gtk/gtkscrolledwindow.h \ - ../../gtk+/gtk/gtkvscrollbar.h ../../gtk+/gtk/gtkviewport.h \ - ../../gtk+/gtk/gtktext.h ../../gtk+/gtk/gtktooltips.h \ - ../../gtk+/gtk/gtktree.h ../../gtk+/gtk/gtktreeitem.h \ - ../../gtk+/gtk/gtkvruler.h ../../gtk+/gtk/gtkvscale.h \ - ../../gtk+/gtk/gtkvseparator.h siod.h script-fu-server.h -script-fu.o script-fu.lo: script-fu.c ../../libgimp/gimp.h \ - ../../gtk+/glib/glib.h ../../gtk+/glib/glibconfig.h \ - ../../libgimp/gimpenums.h ../../gtk+/gtk/gtk.h \ - ../../gtk+/gdk/gdk.h ../../gtk+/gdk/gdktypes.h \ - ../../gtk+/gdk/gdkcursors.h ../../gtk+/gtk/gtkaccelerator.h \ - ../../gtk+/gtk/gtkobject.h ../../gtk+/gtk/gtkenums.h \ - ../../gtk+/gtk/gtktypeutils.h ../../gtk+/gtk/gtkadjustment.h \ - ../../gtk+/gtk/gtkdata.h ../../gtk+/gtk/gtkalignment.h \ - ../../gtk+/gtk/gtkbin.h ../../gtk+/gtk/gtkcontainer.h \ - ../../gtk+/gtk/gtkwidget.h ../../gtk+/gtk/gtkstyle.h \ - ../../gtk+/gtk/gtkaspectframe.h ../../gtk+/gtk/gtkframe.h \ - ../../gtk+/gtk/gtkarrow.h ../../gtk+/gtk/gtkmisc.h \ - ../../gtk+/gtk/gtkbox.h ../../gtk+/gtk/gtkbutton.h \ - ../../gtk+/gtk/gtkcheckbutton.h \ - ../../gtk+/gtk/gtktogglebutton.h \ - ../../gtk+/gtk/gtkcheckmenuitem.h ../../gtk+/gtk/gtkmenuitem.h \ - ../../gtk+/gtk/gtkitem.h ../../gtk+/gtk/gtkcolorsel.h \ - ../../gtk+/gtk/gtkwindow.h ../../gtk+/gtk/gtkvbox.h \ - ../../gtk+/gtk/gtkpreview.h ../../gtk+/gtk/gtkentry.h \ - ../../gtk+/gtk/gtkhbox.h ../../gtk+/gtk/gtklabel.h \ - ../../gtk+/gtk/gtkmain.h ../../gtk+/gtk/gtksignal.h \ - ../../gtk+/gtk/gtkrange.h ../../gtk+/gtk/gtkscale.h \ - ../../gtk+/gtk/gtkhscale.h ../../gtk+/gtk/gtktable.h \ - ../../gtk+/gtk/gtkcurve.h ../../gtk+/gtk/gtkdialog.h \ - ../../gtk+/gtk/gtkdrawingarea.h ../../gtk+/gtk/gtkfilesel.h \ - ../../gtk+/gtk/gtkgc.h ../../gtk+/gtk/gtkhruler.h \ - ../../gtk+/gtk/gtkruler.h ../../gtk+/gtk/gtkhscrollbar.h \ - ../../gtk+/gtk/gtkscrollbar.h ../../gtk+/gtk/gtkhseparator.h \ - ../../gtk+/gtk/gtkseparator.h ../../gtk+/gtk/gtkimage.h \ - ../../gtk+/gtk/gtklist.h ../../gtk+/gtk/gtklistitem.h \ - ../../gtk+/gtk/gtkmenu.h ../../gtk+/gtk/gtkmenushell.h \ - ../../gtk+/gtk/gtkmenubar.h ../../gtk+/gtk/gtkmenufactory.h \ - ../../gtk+/gtk/gtknotebook.h ../../gtk+/gtk/gtkoptionmenu.h \ - ../../gtk+/gtk/gtkpixmap.h ../../gtk+/gtk/gtkprogressbar.h \ - ../../gtk+/gtk/gtkradiobutton.h \ - ../../gtk+/gtk/gtkradiomenuitem.h ../../gtk+/gtk/gtkrc.h \ - ../../gtk+/gtk/gtkscrolledwindow.h \ - ../../gtk+/gtk/gtkvscrollbar.h ../../gtk+/gtk/gtkviewport.h \ - ../../gtk+/gtk/gtktext.h ../../gtk+/gtk/gtktooltips.h \ - ../../gtk+/gtk/gtktree.h ../../gtk+/gtk/gtktreeitem.h \ - ../../gtk+/gtk/gtkvruler.h ../../gtk+/gtk/gtkvscale.h \ - ../../gtk+/gtk/gtkvseparator.h siod.h script-fu-console.h \ - script-fu-scripts.h script-fu-enums.h script-fu-server.h +MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +-include .deps/.P +.deps/.P: $(BUILT_SOURCES) + echo > $@ + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + +maintainer-clean-depend: + rm -rf .deps + +.deps/%.P: %.c + @echo "Computing dependencies for $<..." + @o='o'; \ + test -n "$o" && o='$$o'; \ + $(MKDEP) $< >$@.tmp \ + && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \ + && rm -f $@.tmp info: info-recursive dvi: dvi-recursive check: all-am $(MAKE) check-recursive installcheck: installcheck-recursive -all-am: $(PROGRAMS) Makefile +all-am: Makefile $(PROGRAMS) install-data-am: install-pluginlibPROGRAMS uninstall-am: uninstall-pluginlibPROGRAMS install-exec: install-exec-recursive - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-data-recursive install-data-am - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-recursive install-data-am @: @@ -486,7 +362,7 @@ all: all-recursive all-am install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: installdirs-recursive $(mkinstalldirs) $(pluginlibdir) @@ -499,27 +375,27 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) mostlyclean-am: mostlyclean-pluginlibPROGRAMS mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ mostlyclean-generic clean-am: clean-pluginlibPROGRAMS clean-compile clean-libtool \ - clean-tags clean-generic mostlyclean-am + clean-tags clean-depend clean-generic mostlyclean-am distclean-am: distclean-pluginlibPROGRAMS distclean-compile \ - distclean-libtool distclean-tags distclean-generic \ - clean-am + distclean-libtool distclean-tags distclean-depend \ + distclean-generic clean-am maintainer-clean-am: maintainer-clean-pluginlibPROGRAMS \ maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-tags maintainer-clean-generic \ - distclean-am + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean-am mostlyclean: mostlyclean-recursive mostlyclean-am @@ -544,11 +420,12 @@ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ -installcheck all-am install-data-am uninstall-am install-exec \ -install-data install uninstall all installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info dvi installcheck all-am install-data-am \ +uninstall-am install-exec install-data install uninstall all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean include $(GTK_XCONFIG) diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/script-fu-console.c gimp-0.99.pre11/plug-ins/script-fu/script-fu-console.c --- gimp-0.99.10/plug-ins/script-fu/script-fu-console.c Thu Jun 5 17:36:40 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/script-fu-console.c Thu Aug 14 01:05:18 1997 @@ -154,6 +154,7 @@ GtkWidget *table; gchar **argv; gint argc; + guchar *color_cube; argc = 1; argv = g_new (gchar *, 1); @@ -161,6 +162,16 @@ gtk_init (&argc, &argv); gtk_rc_parse (gimp_gtkrc ()); + + gdk_set_use_xshm(gimp_use_xshm()); + + gtk_preview_set_gamma(gimp_gamma()); + gtk_preview_set_install_cmap(gimp_install_cmap()); + color_cube = gimp_color_cube(); + gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], color_cube[3]); + + gtk_widget_set_default_visual(gtk_preview_get_visual()); + gtk_widget_set_default_colormap(gtk_preview_get_cmap()); dlg = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dlg), "Script-Fu Console"); diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/script-fu-scripts.c gimp-0.99.pre11/plug-ins/script-fu/script-fu-scripts.c --- gimp-0.99.10/plug-ins/script-fu/script-fu-scripts.c Fri Jun 6 03:17:56 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/script-fu-scripts.c Wed Aug 13 20:31:35 1997 @@ -37,6 +37,7 @@ GtkWidget *preview; GtkWidget *dialog; gdouble color[3]; + gdouble old_color[3]; } SFColor; typedef union @@ -95,6 +96,7 @@ static void script_fu_interface (SFScript *script); static void script_fu_color_preview (GtkWidget *preview, gdouble *color); +static void script_fu_cleanup_widgets (SFScript *script); static void script_fu_ok_callback (GtkWidget *widget, gpointer data); static void script_fu_close_callback (GtkWidget *widget, @@ -107,6 +109,8 @@ gpointer data); static void script_fu_preview_changed (GtkWidget *widget, gpointer data); +static void script_fu_preview_cancel (GtkWidget *widget, + gpointer data); /* * Local variables @@ -500,7 +504,7 @@ int *nreturn_vals, GParam **return_vals) { - GParam values[1]; + static GParam values[1]; GStatusType status = STATUS_SUCCESS; GRunModeType run_mode; SFScript *script; @@ -724,6 +728,7 @@ gint argc; int start_args; int i; + guchar *color_cube; argc = 1; argv = g_new (gchar *, 1); @@ -731,6 +736,16 @@ gtk_init (&argc, &argv); gtk_rc_parse (gimp_gtkrc ()); + + gdk_set_use_xshm(gimp_use_xshm()); + + gtk_preview_set_gamma(gimp_gamma()); + gtk_preview_set_install_cmap(gimp_install_cmap()); + color_cube = gimp_color_cube(); + gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], color_cube[3]); + + gtk_widget_set_default_visual(gtk_preview_get_visual()); + gtk_widget_set_default_colormap(gtk_preview_get_cmap()); sf_interface.script = script; @@ -905,6 +920,26 @@ } static void +script_fu_cleanup_widgets (SFScript *script) +{ + int i; + + for (i = 0; i < script->num_args; i++) + switch (script->arg_types[i]) + { + case SF_COLOR: + if (script->arg_values[i].sfa_color.dialog != NULL) + { + gtk_widget_destroy (script->arg_values[i].sfa_color.dialog); + script->arg_values[i].sfa_color.dialog = NULL; + } + break; + default: + break; + } +} + +static void script_fu_ok_callback (GtkWidget *widget, gpointer data) { @@ -992,6 +1027,9 @@ /* disable the current command field */ script_fu_disable_cc (err_msg); + /* Clean up flying widgets before terminating Gtk */ + script_fu_cleanup_widgets(script); + gtk_main_quit (); g_free (command); @@ -1001,6 +1039,9 @@ script_fu_close_callback (GtkWidget *widget, gpointer data) { + if (sf_interface.script != NULL) + script_fu_cleanup_widgets(sf_interface.script); + gtk_main_quit (); } @@ -1035,6 +1076,10 @@ color = (SFColor *) data; if (!color->dialog) { + color->old_color[0] = color->color[0]; + color->old_color[1] = color->color[1]; + color->old_color[2] = color->color[2]; + color->dialog = gtk_color_selection_dialog_new ("Script-Fu Color Picker"); csd = GTK_COLOR_SELECTION_DIALOG (color->dialog); @@ -1043,10 +1088,10 @@ gtk_signal_connect_object (GTK_OBJECT (csd->ok_button), "clicked", (GtkSignalFunc) gtk_widget_hide, GTK_OBJECT (color->dialog)); - gtk_signal_connect_object (GTK_OBJECT (csd->cancel_button), "clicked", - (GtkSignalFunc) gtk_widget_hide, - GTK_OBJECT (color->dialog)); - gtk_signal_connect (GTK_OBJECT(csd->colorsel), "color_changed", + gtk_signal_connect (GTK_OBJECT (csd->cancel_button), "clicked", + (GtkSignalFunc) script_fu_preview_cancel, + color); + gtk_signal_connect (GTK_OBJECT (csd->colorsel), "color_changed", (GtkSignalFunc) script_fu_preview_changed, color); @@ -1073,5 +1118,22 @@ color = (SFColor *) data; gtk_color_selection_get_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (color->dialog)->colorsel), color->color); + script_fu_color_preview (color->preview, color->color); +} + +static void +script_fu_preview_cancel (GtkWidget *widget, + gpointer data) +{ + SFColor *color; + + color = (SFColor *) data; + + gtk_widget_hide(color->dialog); + + color->color[0] = color->old_color[0]; + color->color[1] = color->old_color[1]; + color->color[2] = color->old_color[2]; + script_fu_color_preview (color->preview, color->color); } diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/script-fu.c gimp-0.99.pre11/plug-ins/script-fu/script-fu.c --- gimp-0.99.10/plug-ins/script-fu/script-fu.c Fri Jun 6 02:20:40 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/script-fu.c Wed Aug 13 20:31:35 1997 @@ -57,6 +57,9 @@ static void init_constants (void); static void convert_string (char * str); +static int sputs_fcn (char *st, void *dest); +static LISP lprin1s (LISP exp, char *dest); + static LISP marshall_proc_db_call (LISP a); static LISP script_fu_register_call (LISP a); static LISP script_fu_quit_call (LISP a); @@ -450,6 +453,25 @@ } } +static int +sputs_fcn (char *st, void *dest) +{ + strcpy (*((char**)dest), st); + *((char**)dest) += strlen(st); + return (1); +} + +static LISP +lprin1s (LISP exp, char *dest) +{ + struct gen_printio s; + s.putc_fcn = NULL; + s.puts_fcn = sputs_fcn; + s.cb_argument = &dest; + lprin1g (exp, &s); + return (NIL); +} + static LISP marshall_proc_db_call (LISP a) { @@ -475,6 +497,10 @@ LISP return_val; char *string; int string_len; + LISP a_saved; + + /* Save a in case it is needed for an error message. */ + a_saved = a; /* Make sure there are arguments */ if (a == NIL) @@ -718,14 +744,22 @@ /* Check the return status */ if (! values) - return err ("Procedural database execution did not return a status!", NIL); + { + strcpy (error_str, "Procedural database execution did not return a status:\n "); + lprin1s (a_saved, error_str + strlen(error_str)); + return err (error_str, NIL); + } switch (values[0].data.d_status) { case STATUS_EXECUTION_ERROR: - return err ("Procedural database execution failed", NIL); + strcpy (error_str, "Procedural database execution failed:\n "); + lprin1s (a_saved, error_str + strlen(error_str)); + return err (error_str, NIL); break; case STATUS_CALLING_ERROR: - return err ("Procedural database execution failed on invalid input arguments", NIL); + strcpy (error_str, "Procedural database execution failed on invalid input arguments:\n "); + lprin1s (a_saved, error_str + strlen(error_str)); + return err (error_str, NIL); break; case STATUS_SUCCESS: return_val = NIL; diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/Makefile gimp-0.99.pre11/plug-ins/script-fu/scripts/Makefile --- gimp-0.99.10/plug-ins/script-fu/scripts/Makefile Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/Makefile Thu Aug 14 01:25:50 1997 @@ -0,0 +1,202 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.2 from Makefile.am + +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = ../../.. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/gimp +pkglibdir = $(libdir)/gimp +pkgincludedir = $(includedir)/gimp + +top_builddir = ../../.. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true +host_alias = i586-pc-linux-gnu +host_triplet = i586-pc-linux-gnu +CC = gcc +LIBJPEG_INC = +LIBJPEG_LIB = +LIBPNG_INC = +LIBPNG_LIB = +LIBTIFF_INC = +LIBTIFF_LIB = +LIBTOOL = $(top_builddir)/libtool +LN_S = ln -s +MAKEINFO = makeinfo +PACKAGE = gimp +RANLIB = ranlib +VERSION = 0.99.10 +gimpdatadir = ${prefix}/share/gimp/0.99.10 +gimpdir = .gimp +gimpplugindir = ${exec_prefix}/lib/gimp/0.99.10 +scriptdata = alien-glow-logo.scm basic1-logo.scm basic2-logo.scm beavis.jpg beveled-button.scm blended-logo.scm carve-it.scm carved-logo.scm chrome-it.scm chrome-logo.scm circle-logo.scm clothify.scm coolmetal-logo.scm crystal-logo.scm drop-shadow.scm erase-rows.scm font-map.scm frosty-logo.scm glowing-logo.scm gradient-example.scm grid-system.scm hsv-graph.scm i26-gunya2.scm image-structure.scm kanji-circle.scm kanji-neon.scm neon-logo.scm perspective-shadow.scm pie-chart.scm ripply-anim.scm round-corners.scm slide.scm sota-chrome-logo.scm sphere.scm starburst-logo.scm starscape-logo.scm swirltile.scm swirly-pattern.scm t-o-p-logo.scm t-o-p.scm texture.jpg texture1.jpg texture2.jpg texture3.jpg textured-logo.scm title-header.scm trochoid.scm weave.scm + +scriptdatadir = $(gimpdatadir)/scripts + +scriptdata_DATA = alien-glow-logo.scm basic1-logo.scm basic2-logo.scm beavis.jpg beveled-button.scm blended-logo.scm carve-it.scm carved-logo.scm chrome-it.scm chrome-logo.scm circle-logo.scm clothify.scm coolmetal-logo.scm crystal-logo.scm drop-shadow.scm erase-rows.scm font-map.scm frosty-logo.scm glowing-logo.scm gradient-example.scm grid-system.scm hsv-graph.scm i26-gunya2.scm image-structure.scm kanji-circle.scm kanji-neon.scm neon-logo.scm perspective-shadow.scm pie-chart.scm ripply-anim.scm round-corners.scm slide.scm sota-chrome-logo.scm sphere.scm starburst-logo.scm starscape-logo.scm swirltile.scm swirly-pattern.scm t-o-p-logo.scm t-o-p.scm texture.jpg texture1.jpg texture2.jpg texture3.jpg textured-logo.scm title-header.scm trochoid.scm weave.scm + +EXTRA_DATA = +EXTRA_DIST = $(scriptdata_DATA) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../../../config.h +CONFIG_CLEAN_FILES = +DATA = $(scriptdata_DATA) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +default: all + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu plug-ins/script-fu/scripts/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +install-scriptdataDATA: $(scriptdata_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(scriptdatadir) + @list='$(scriptdata_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(scriptdatadir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(scriptdatadir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(scriptdatadir)/$$p"; \ + $(INSTALL_DATA) $$p $(scriptdatadir)/$$p; \ + fi; fi; \ + done + +uninstall-scriptdataDATA: + $(NORMAL_UNINSTALL) + list='$(scriptdata_DATA)'; for p in $$list; do \ + rm -f $(scriptdatadir)/$$p; \ + done +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = plug-ins/script-fu/scripts + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu plug-ins/script-fu/scripts/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done +info: +dvi: +check: all + $(MAKE) +installcheck: +install-exec: + @$(NORMAL_INSTALL) + +install-data: install-scriptdataDATA + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: uninstall-scriptdataDATA + +all: Makefile $(DATA) + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + $(mkinstalldirs) $(scriptdatadir) + + +mostlyclean-generic: + test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + rm -f Makefile $(DISTCLEANFILES) + rm -f config.cache config.log stamp-h stamp-h[0-9]* + test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-generic + +clean: clean-generic mostlyclean + +distclean: distclean-generic clean + rm -f config.status + rm -f libtool + +maintainer-clean: maintainer-clean-generic distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +.PHONY: default uninstall-scriptdataDATA install-scriptdataDATA tags \ +distdir info dvi installcheck install-exec install-data install \ +uninstall all installdirs mostlyclean-generic distclean-generic \ +clean-generic maintainer-clean-generic clean mostlyclean distclean \ +maintainer-clean + + +files: + @files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \ + echo $$p; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/Makefile.in gimp-0.99.pre11/plug-ins/script-fu/scripts/Makefile.in --- gimp-0.99.10/plug-ins/script-fu/scripts/Makefile.in Sat Jun 7 00:26:31 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/Makefile.in Wed Aug 13 23:23:20 1997 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.1m from Makefile.am +# Makefile.in generated automatically by automake 1.2 from Makefile.am -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -42,15 +42,25 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ + +NORMAL_INSTALL = true +PRE_INSTALL = true +POST_INSTALL = true +NORMAL_UNINSTALL = true +PRE_UNINSTALL = true +POST_UNINSTALL = true host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBJPEG_INC = @LIBJPEG_INC@ LIBJPEG_LIB = @LIBJPEG_LIB@ +LIBPNG_INC = @LIBPNG_INC@ +LIBPNG_LIB = @LIBPNG_LIB@ LIBTIFF_INC = @LIBTIFF_INC@ LIBTIFF_LIB = @LIBTIFF_LIB@ LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ VERSION = @VERSION@ @@ -89,9 +99,9 @@ install-scriptdataDATA: $(scriptdata_DATA) - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) $(mkinstalldirs) $(scriptdatadir) - @list="$(scriptdata_DATA)"; for p in $$list; do \ + @list='$(scriptdata_DATA)'; for p in $$list; do \ if test -f $(srcdir)/$$p; then \ echo " $(INSTALL_DATA) $(srcdir)/$$p $(scriptdatadir)/$$p"; \ $(INSTALL_DATA) $(srcdir)/$$p $(scriptdatadir)/$$p; \ @@ -102,7 +112,8 @@ done uninstall-scriptdataDATA: - list="$(scriptdata_DATA)"; for p in $$list; do \ + $(NORMAL_UNINSTALL) + list='$(scriptdata_DATA)'; for p in $$list; do \ rm -f $(scriptdatadir)/$$p; \ done tags: TAGS @@ -112,7 +123,12 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = plug-ins/script-fu/scripts + distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu plug-ins/script-fu/scripts/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ test -f $(distdir)/$$file \ @@ -125,20 +141,20 @@ $(MAKE) installcheck: install-exec: - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install-data: install-scriptdataDATA - $(NORMAL_INSTALL) + @$(NORMAL_INSTALL) install: install-exec install-data all @: uninstall: uninstall-scriptdataDATA -all: $(DATA) Makefile +all: Makefile $(DATA) install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install installdirs: $(mkinstalldirs) $(scriptdatadir) @@ -151,7 +167,7 @@ distclean-generic: rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h + rm -f config.cache config.log stamp-h stamp-h[0-9]* test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/beveled-button.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/beveled-button.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/beveled-button.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/beveled-button.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,185 @@ +; The GIMP -- an image manipulation program +; Copyright (C) 1995 Spencer Kimball and Peter Mattis +; +; Button00 --- create a simple beveled Web button +; Copyright (C) 1997 Federico Mena Quintero +; federico@nuclecu.unam.mx +; +; 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., 675 Mass Ave, Cambridge, MA 02139, USA. + + +(define (text-width extents) + (car extents)) + +(define (text-height extents) + (cadr extents)) + +(define (text-ascent extents) + (caddr extents)) + +(define (text-descent extents) + (cadr (cddr extents))) + +(define (blend-bumpmap img drawable x1 y1 x2 y2) + (gimp-blend img + drawable + FG-BG-RGB + DARKEN-ONLY + LINEAR + 100 + 0 + REPEAT-NONE + FALSE + 0 + 0 + x1 + y1 + x2 + y2)) + +(define (script-fu-button00 text + size + foundry + family + weight + slant + set-width + spacing + ul-color + lr-color + text-color + padding + bevel-width + pressed) + (let* ((old-fg-color (car (gimp-palette-get-foreground))) + (old-bg-color (car (gimp-palette-get-background))) + + (text-extents (gimp-text-get-extents text + size + PIXELS + foundry + family + weight + slant + set-width + spacing)) + (ascent (text-ascent text-extents)) + (descent (text-descent text-extents)) + + (img-width (+ (* 2 (+ padding bevel-width)) + (- (text-width text-extents) + (text-width (gimp-text-get-extents " " + size + PIXELS + foundry + family + weight + slant + set-width + spacing))))) + (img-height (+ (* 2 (+ padding bevel-width)) + (+ ascent descent))) + + (img (car (gimp-image-new img-width img-height RGB))) + + (bumpmap (car (gimp-layer-new img img-width img-height RGBA_IMAGE "Bumpmap" 100 NORMAL))) + (gradient (car (gimp-layer-new img img-width img-height RGBA_IMAGE "Gradient" 100 NORMAL)))) + + (gimp-image-disable-undo img) + + ; Create bumpmap layer + + (gimp-image-add-layer img bumpmap -1) + (gimp-palette-set-foreground '(0 0 0)) + (gimp-palette-set-background '(255 255 255)) + (gimp-edit-fill img bumpmap) + + (gimp-rect-select img 0 0 bevel-width img-height REPLACE FALSE 0) + (blend-bumpmap img bumpmap 0 0 (- bevel-width 1) 0) + + (gimp-rect-select img 0 0 img-width bevel-width REPLACE FALSE 0) + (blend-bumpmap img bumpmap 0 0 0 (- bevel-width 1)) + + (gimp-rect-select img (- img-width bevel-width) 0 bevel-width img-height REPLACE FALSE 0) + (blend-bumpmap img bumpmap (- img-width 1) 0 (- img-width bevel-width) 0) + + (gimp-rect-select img 0 (- img-height bevel-width) img-width bevel-width REPLACE FALSE 0) + (blend-bumpmap img bumpmap 0 (- img-height 1) 0 (- img-height bevel-width)) + + (gimp-selection-none img) + + ; Create gradient layer + + (gimp-image-add-layer img gradient -1) + (gimp-palette-set-foreground ul-color) + (gimp-palette-set-background lr-color) + (gimp-blend img + gradient + FG-BG-RGB + NORMAL + LINEAR + 100 + 0 + REPEAT-NONE + FALSE + 0 + 0 + 0 + 0 + (- img-width 1) + (- img-height 1)) + + (plug-in-bump-map 1 img gradient bumpmap 135 45 bevel-width 0 0 TRUE pressed 0) + + ; Create text layer + + (gimp-palette-set-foreground text-color) + (let ((textl (car (gimp-text + img -1 0 0 text 0 TRUE size PIXELS foundry family weight slant set-width spacing)))) + (gimp-layer-set-offsets textl + (+ bevel-width padding) + (+ bevel-width padding descent))) + + ; Done + + (gimp-selection-none img) + (gimp-palette-set-foreground old-fg-color) + (gimp-palette-set-background old-bg-color) + (gimp-image-enable-undo img) + (gimp-display-new img))) + +; Register! + +(script-fu-register "script-fu-button00" + "/Xtns/Script-Fu/Buttons/Simple beveled button" + "Simple beveled button" + "Federico Mena Quintero" + "Federico Mena Quintero" + "June 1997" + "" + SF-VALUE "Text" "\"Hello world!\"" + SF-VALUE "Size" "16" + SF-VALUE "Foundry" "\"ibm\"" + SF-VALUE "Family" "\"helvetica\"" + SF-VALUE "Weight" "\"bold\"" + SF-VALUE "Slant" "\"r\"" + SF-VALUE "Set width" "\"normal\"" + SF-VALUE "Spacing" "\"p\"" + SF-COLOR "Upper-left color" '(0 255 127) + SF-COLOR "Lower-right color" '(0 127 255) + SF-COLOR "Text color" '(0 0 0) + SF-VALUE "Padding" "2" + SF-VALUE "Bevel width" "4" + SF-VALUE "Pressed?" "FALSE") diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/circle-logo.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/circle-logo.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/circle-logo.scm Tue Jun 3 16:11:36 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/circle-logo.scm Wed Aug 13 20:31:34 1997 @@ -1,29 +1,63 @@ -;; text-circle a script for The GIMP -;; Shuji Narazaki (narazaki@InetQ.or.jp) -;; Time-stamp: <97/03/01 09:49:10 narazaki@InetQ.or.jp> +;; circle-logo -- a script for The GIMP 1.0 +;; Author: Shuji Narazaki (narazaki@InetQ.or.jp) +;; Time-stamp: <1997/06/09 22:16:20 narazaki@InetQ.or.jp> +;; Version 1.3 -(define (script-fu-circle-logo text radius font font-size slant antialias) - (let* ((width (* radius 2.5)) - (height (* radius 2.5)) - (img (car (gimp-image-new width height RGB))) - (drawable (car (gimp-layer-new img width height RGBA_IMAGE - "text-circle" 100 NORMAL))) +(define modulo fmod) ; in R4RS way + +(define (script-fu-circle-logo text radius start-angle fill-angle + font font-size slant antialias) + (let* ((drawable-size (* 2.0 (+ radius (* 2 font-size)))) + (img (car (gimp-image-new drawable-size drawable-size RGB))) + (BG-layer (car (gimp-layer-new img drawable-size drawable-size + RGBA_IMAGE "background" 100 NORMAL))) + (merged-layer #f) (char-num (string-length text)) - (radians (/ (* 2 *pi*) char-num)) + (radian-step 0) (rad-90 (/ *pi* 2)) - (center-x (/ width 2)) - (center-y (/ height 2)) - (fixed-pole "]") + (center-x (/ drawable-size 2)) + (center-y center-x) + (fixed-pole " ]Ag") ; some fonts have no "]" "g" has desc. (font-infos (gimp-text-get-extents fixed-pole font-size PIXELS "*" font "*" slant "*" "*")) - (extra (max 0 (- (nth 0 font-infos) 5))) ; why 4? See text_tool.c. + (extra (max 0 (- (nth 0 font-infos) 5))) ; why 5? See text_tool.c. (desc (nth 3 font-infos)) + (angle-list #f) (letter "") (new-layer #f) (index 0)) (gimp-image-disable-undo img) - (gimp-image-add-layer img drawable 0) - (gimp-edit-fill img drawable) + (gimp-image-add-layer img BG-layer 0) + (gimp-edit-fill img BG-layer) + ;; change units + (set! start-angle (* (/ (modulo start-angle 360) 360) 2 *pi*)) + (set! fill-angle (* (/ fill-angle 360) 2 *pi*)) + (set! radian-step (/ fill-angle char-num)) + ;; make width-list + (let ((temp-list '()) + (temp-str #f) + (scale 0) + (temp #f)) + (set! index 0) + (while (< index char-num) + (set! temp-str (substring text index (+ index 1))) + (if (equal? " " temp-str) + (set! temp-str "]")) + (set! temp (gimp-text-get-extents temp-str font-size PIXELS + "*" font "*" slant "*" "*")) + (set! temp-list (cons (nth 0 temp) temp-list)) + (set! index (+ index 1))) + (set! angle-list (nreverse temp-list)) + (set! temp 0) + (set! angle-list + (mapcar (lambda (angle) + (let ((tmp temp)) + (set! temp (+ angle temp)) + (+ tmp (/ angle 2)))) + angle-list)) + (set! scale (/ fill-angle temp)) + (set! angle-list (mapcar (lambda (angle) (* scale angle)) angle-list))) + (set! index 0) (while (< index char-num) (set! letter (substring text index (+ index 1))) (if (not (equal? " " letter)) @@ -36,24 +70,35 @@ (width (car (gimp-drawable-width new-layer))) (height (car (gimp-drawable-height new-layer))) (rotate-radius (- (/ height 2) desc)) - (rad1 (- (* index radians) rad-90)) - (rad2 (* index radians))) + (angle (+ start-angle (- (nth index angle-list) rad-90)))) + ;; delete fixed-pole (gimp-layer-resize new-layer (- width extra 1) height 0 0) - '(gimp-layer-translate new-layer (* index 34) 10) + (set! width (car (gimp-drawable-width new-layer))) (gimp-layer-translate new-layer (+ center-x - (* radius (cos rad1)) - (- (* rotate-radius (sin rad2))) + (* radius (cos angle)) + (* rotate-radius + (cos (if (< 0 fill-angle) + angle + (+ angle *pi*)))) (- (/ width 2))) (+ center-y - (* radius (sin rad1)) - (- (* rotate-radius (cos rad2))) + (* radius (sin angle)) + (* rotate-radius + (sin (if (< 0 fill-angle) + angle + (+ angle *pi*)))) (- (/ height 2)))) - (gimp-rotate img new-layer 1 rad2))) + (gimp-rotate img new-layer 1 + ((if (< 0 fill-angle) + -) angle rad-90)))) (set! index (+ index 1))) - (gimp-image-merge-visible-layers img CLIP-TO-IMAGE) + (gimp-layer-set-visible BG-layer 0) + (set! merged-layer (car (gimp-image-merge-visible-layers img CLIP-TO-IMAGE))) + (gimp-layer-set-name merged-layer "text circle") + (gimp-layer-set-visible BG-layer 1) (gimp-image-enable-undo img) - (gimp-display-new img))) + (gimp-display-new img) + (gimp-displays-flush))) (script-fu-register "script-fu-circle-logo" "/Xtns/Script-Fu/Logos/Text Circle" @@ -62,13 +107,14 @@ "Shuji Narazaki" "1997" "" - SF-VALUE "Text" "\"Ring Ring Ring, Tiger! Tiger! Tiger! \"" + SF-VALUE "Text" "\"Ring World again! Tiger! Tiger! Tiger! \"" SF-VALUE "Radius" "80" + SF-VALUE "Start-angle" "0" + SF-VALUE "Fill-angle" "360" SF-VALUE "Family" "\"helvetica\"" - SF-VALUE "Font Size" "18" + SF-VALUE "Font Size (pixel)" "18" SF-VALUE "Slant" "\"r\"" - SF-VALUE "Antialias(0,1)" "1" + SF-TOGGLE "Antialias" TRUE ) -;(text-circle "This is a sample string. " "Bodoni" 24 80) -;; end of text-circle.scm +;; circle-logo.scm ends here diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/drop-shadow.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/drop-shadow.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/drop-shadow.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/drop-shadow.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,189 @@ +; The GIMP -- an image manipulation program +; Copyright (C) 1995 Spencer Kimball and Peter Mattis +; +; 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., 675 Mass Ave, Cambridge, MA 02139, USA. +; +; +; drop-shadow.scm version 1.00 07/28/97 +; +; Copyright (C) 1997 Sven Neumann (neumanns@uni-duesseldorf.de) +; +; +; Adds a drop-shadow of the current selection or alpha-channel. +; +; This script is derived from my script add-shadow, which has become +; obsolete now. Thanks to Andrew Donkin (ard@cs.waikato.ac.nz) for his +; idea to add alpha-support to add-shadow. + + +(define (script-fu-drop-shadow image + drawable + shadow-transl-x + shadow-transl-y + shadow-blur + shadow-color + shadow-opacity + allow-resize) + (let* ((shadow-blur (max shadow-blur 0)) + (shadow-opacity (min shadow-opacity 100)) + (shadow-opacity (max shadow-opacity 0)) + (type (car (gimp-drawable-type-with-alpha drawable))) + (image-width (car (gimp-image-width image))) + (image-height (car (gimp-image-height image))) + (old-bg (car (gimp-palette-get-background)))) + + (gimp-image-disable-undo image) + + (gimp-layer-add-alpha drawable) + (if (= (car (gimp-selection-is-empty image)) TRUE) + (begin + (gimp-selection-layer-alpha image drawable) + (set! from-selection FALSE)) + (begin + (set! from-selection TRUE) + (set! active-selection (car (gimp-selection-save image))))) + + (set! selection-bounds (gimp-selection-bounds image)) + (set! select-offset-x (cadr selection-bounds)) + (set! select-offset-y (caddr selection-bounds)) + (set! select-width (- (cadr (cddr selection-bounds)) select-offset-x)) + (set! select-height (- (caddr (cddr selection-bounds)) select-offset-y)) + + (set! shadow-width (+ select-width (* 2 shadow-blur))) + (set! shadow-height (+ select-height (* 2 shadow-blur))) + + (set! shadow-offset-x (- select-offset-x shadow-blur)) + (set! shadow-offset-y (- select-offset-y shadow-blur)) + + (if (= allow-resize TRUE) + (begin + (set! new-image-width image-width) + (set! new-image-height image-height) + (set! image-offset-x 0) + (set! image-offset-y 0) + + (if (< (+ shadow-offset-x shadow-transl-x) 0) + (begin + (set! image-offset-x (- 0 (+ shadow-offset-x shadow-transl-x))) + (set! shadow-offset-x (- 0 shadow-transl-x)) + (set! new-image-width (- new-image-width image-offset-x)))) + + (if (< (+ shadow-offset-y shadow-transl-y) 0) + (begin + (set! image-offset-y (- 0 (+ shadow-offset-y shadow-transl-y))) + (set! shadow-offset-y (- 0 shadow-transl-y)) + (set! new-image-height (- new-image-height image-offset-y)))) + + (if (> (+ (+ shadow-width shadow-offset-x) shadow-transl-x) + new-image-width) + (set! new-image-width + (+ (+ shadow-width shadow-offset-x) shadow-transl-x))) + + (if (> (+ (+ shadow-height shadow-offset-y) shadow-transl-y) + new-image-height) + (set! new-image-height + (+ (+ shadow-height shadow-offset-y) shadow-transl-y))) + + (gimp-image-resize image + new-image-width + new-image-height + image-offset-x + image-offset-y))) + + + (set! shadow-layer (car (gimp-layer-new image + shadow-width + shadow-height + type + "Drop-Shadow" + shadow-opacity + NORMAL))) + (gimp-layer-set-offsets shadow-layer + shadow-offset-x + shadow-offset-y) + + (gimp-drawable-fill shadow-layer TRANS-IMAGE-FILL) + (gimp-palette-set-background shadow-color) + (gimp-edit-fill image shadow-layer) + (gimp-selection-none image) + (gimp-layer-set-preserve-trans shadow-layer FALSE) + (if (> shadow-blur 0) (plug-in-gauss-rle 1 + image + shadow-layer + shadow-blur + TRUE + TRUE)) + (gimp-image-add-layer image shadow-layer -1) + (gimp-layer-translate shadow-layer shadow-transl-x shadow-transl-y) + + (if (= from-selection TRUE) + (begin + (gimp-selection-load image active-selection) + (gimp-edit-clear image shadow-layer) +; (gimp-channel-delete active-selection) +; Don't know why, but deleting the channel seems to crash The GIMP! +; Until this is fixed, a copy of the selection will remain. + )) + + (if (and + (= (car (gimp-layer-is-floating-sel drawable)) 0) + (= from-selection FALSE)) + (gimp-image-raise-layer image drawable)) + + (gimp-image-set-active-layer image drawable) + (gimp-palette-set-background old-bg) + (gimp-image-enable-undo image) + (gimp-displays-flush))) + +(script-fu-register "script-fu-drop-shadow" + "/Filters/Script-Fu/Shadow/Drop-Shadow" + "Add a drop-shadow of the current selection or + alpha-channel" + "Sven Neumann (neumanns@uni-duesseldorf.de)" + "Sven Neumann" + "07/28/1997" + "RGB RGBA GRAY GRAYA" + SF-IMAGE "Image" 0 + SF-DRAWABLE "Drawable" 0 + SF-VALUE "X offset" "8" + SF-VALUE "Y offset" "8" + SF-VALUE "Blur Radius" "15" + SF-COLOR "Color" '(0 0 0) + SF-VALUE "Opacity" "80" + SF-TOGGLE "Allow Resizing" TRUE) + + + + + + + + + + + + + + + + + + + + + + + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/erase-rows.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/erase-rows.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/erase-rows.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/erase-rows.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,33 @@ +(define (script-fu-erase-rows img drawable orientation which) + (let* ((width (car (gimp-drawable-width drawable))) + (height (car (gimp-drawable-height drawable)))) + (gimp-image-disable-undo img) + (letrec ((loop (lambda (i max) + (if (< i max) + (begin + (if (eq? orientation 'rows) + (gimp-rect-select img 0 i width 1 REPLACE FALSE 0) + (gimp-rect-select img i 0 1 height REPLACE FALSE 0)) + (gimp-edit-fill img drawable) + (loop (+ i 2) max)))))) + (loop (if (eq? which 'even) + 0 + 1) + (if (eq? orientation 'rows) + height + width))) + (gimp-selection-none img) + (gimp-image-enable-undo img) + (gimp-displays-flush))) + +(script-fu-register "script-fu-erase-rows" + "/Filters/Script-Fu/Alchemy/Erase every other row" + "Erase every other row/column with the background color" + "Federico Mena Quintero" + "Federico Mena Quintero" + "June 1997" + "RGB*, GRAY*, INDEXED*" + SF-IMAGE "Image" 0 + SF-DRAWABLE "Drawable" 0 + SF-VALUE "Rows/cols" "'rows" + SF-VALUE "Even/odd" "'even") diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/gradient-example.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/gradient-example.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/gradient-example.scm Tue Jun 3 16:17:32 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/gradient-example.scm Wed Aug 13 20:31:34 1997 @@ -58,7 +58,7 @@ "Create an example image of a custom gradient" "Federico Mena Quintero" "Federico Mena Quintero" - "1997" + "June 1997" "" SF-VALUE "Width" "400" SF-VALUE "Height" "32") diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/grid-system.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/grid-system.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/grid-system.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/grid-system.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,58 @@ +;;; grid-system.scm -*-scheme-*- +;;; Time-stamp: <1997/07/03 23:30:19 narazaki@InetQ.or.jp> +;;; This file is a part of: +;;; The GIMP (Copyright (C) 1995 Spencer Kimball and Peter Mattis) +;;; Author: Shuji Narazaki (narazaki@InetQ.or.jp) +;;; Version 0.2 + +;;; Code: +(define (script-fu-grid-system img drw x-divides y-divides) + (define (update-segment! s x0 y0 x1 y1) + (aset s 0 x0) + (aset s 1 y0) + (aset s 2 x1) + (aset s 3 y1)) + (let* ((drw-width (car (gimp-drawable-width drw))) + (drw-height (car (gimp-drawable-height drw))) + (drw-offset-x (nth 0 (gimp-drawable-offsets drw))) + (drw-offset-y (nth 1 (gimp-drawable-offsets drw))) + (segment (cons-array 4 'double)) + (stepped-x 0) + (stepped-y 0) + (temp 0) + (total-step-x (apply + x-divides)) + (total-step-y (apply + y-divides))) + (gimp-image-disable-undo img) + (while (not (null? (cdr x-divides))) + (set! stepped-x (+ stepped-x (car x-divides))) + (set! temp (* drw-width (/ stepped-x total-step-x))) + (set! x-divides (cdr x-divides)) + (update-segment! segment + (+ drw-offset-x temp) drw-offset-y + (+ drw-offset-x temp) (+ drw-offset-y drw-height)) + (gimp-pencil img drw 4 segment)) + (while (not (null? (cdr y-divides))) + (set! stepped-y (+ stepped-y (car y-divides))) + (set! temp (* drw-height (/ stepped-y total-step-y))) + (set! y-divides (cdr y-divides)) + (update-segment! segment + drw-offset-x (+ drw-offset-y temp) + (+ drw-offset-x drw-width) (+ drw-offset-y temp)) + (gimp-pencil img drw 4 segment)) + (gimp-image-enable-undo img) + (gimp-displays-flush))) + +(script-fu-register "script-fu-grid-system" + "/Filters/Script-Fu/Render/Make Grid System" + "Draw grid as specified by X-DIVIDES (list of propotions relative to the drawable) and Y-DIVIDES. The color and width of grid is detemined by the current settings of brush." + "Shuji Narazaki " + "Shuji Narazaki" + "1997" + "RGB*, INDEXED*, GRAY*" + SF-IMAGE "Image to use" 0 + SF-DRAWABLE "Drawable to draw grid" 0 + SF-VALUE "Grids: X" "'(1 5 1 5 1)" + SF-VALUE "Grids: Y" "'(1 5 1 5 1)" +) + +;;; grid-system.scm ends here \ No newline at end of file diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/hsv-graph.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/hsv-graph.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/hsv-graph.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/hsv-graph.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,311 @@ +;;; hsv-graph.scm -*-scheme-*- +;;; Author: Shuji Narazaki +;;; Time-stamp: <1997/07/31 21:10:53 narazaki@InetQ.or.jp> +;;; Version: 0.7 +;;; Code: + +(define (script-fu-hsv-graph img drawable scale opacity bounds? + left2right? beg-x beg-y end-x end-y) + (define (floor x) (- x (fmod x 1))) + (define *pos* #f) + (define (set-point fvec index x y) + (aset! fvec (* 2 index) x) + (aset! fvec (+ (* 2 index) 1) y) + fvec) + + (define (plot-dot img drawable x y) + (gimp-pencil img drawable 1 (set-point! *pos* 0 x y))) + + (define (rgb-to-hsv rgb hsv) + (let* ((red (floor (nth 0 rgb))) + (green (floor (nth 1 rgb))) + (blue (floor (nth 2 rgb))) + (h 0.0) + (s 0.0) + (minv (min red (min green blue))) + (maxv (max red (max green blue))) + (v maxv) + (delta 0)) + (if (not (= 0 maxv)) + (set! s (/ (* (- maxv minv) 255.0) maxv)) + (set! s 0.0)) + (if (= 0.0 s) + (set! h 0.0) + (begin + (set! delta (- maxv minv)) + (cond ((= maxv red) + (set! h (/ (- green blue) delta))) + ((= maxv green) + (set! h (+ 2.0 (/ (- blue red) delta)))) + ((= maxv blue) + (set! h (+ 4.0 (/ (- red green) delta))))) + (set! h (* 42.5 h)) + (if (< h 0.0) + (set! h (+ h 255.0))) + (if (< 255 h) + (set! h (- h 255.0))))) + (set-car! hsv (floor h)) + (set-car! (cdr hsv) (floor s)) + (set-car! (cddr hsv) (floor v)))) + + ;; segment is + ;; filled-index (integer) + ;; size as number of points (integer) + ;; vector (which size is 2 * size) + (define (make-segment length x y) + (if (< 64 length) + (set! length 64)) + (if (< length 5) + (set! length 5)) + (let ((vec (cons-array (* 2 length) 'double))) + (aset vec 0 x) + (aset vec 1 y) + (list 1 length vec))) + + ;; accessors + (define (segment-filled-size segment) (car segment)) + (define (segment-max-size segment) (cadr segment)) + (define (segment-strokes segment) (caddr segment)) + + (define (fill-segment! segment new-x new-y) + (define (shift-segment! segment) + (let ((base 0) + (size (cadr segment)) + (vec (caddr segment)) + (offset 2)) + (while (< base offset) + (aset vec (* 2 base) + (aref vec (* 2 (- size (- offset base))))) + (aset vec (+ (* 2 base) 1) + (aref vec (+ (* 2 (- size (- offset base))) 1))) + (set! base (+ base 1))) + (set-car! segment base))) + (let ((base (car segment)) + (size (cadr segment)) + (vec (caddr segment))) + (if (= base 0) + (begin + (shift-segment! segment) + (set! base (segment-filled-size segment)))) + (if (and (= new-x (aref vec (* 2 (- base 1)))) + (= new-y (aref vec (+ (* 2 (- base 1)) 1)))) + #f + (begin + (aset vec (* 2 base) new-x) + (aset vec (+ (* 2 base) 1) new-y) + (set! base (+ base 1)) + (if (= base size) + (begin + (set-car! segment 0) + #t) + (begin + (set-car! segment base) + #f)))))) + + (define (draw-segment img drawable segment limit rgb) + (gimp-palette-set-foreground rgb) + (gimp-airbrush img drawable 100 (* 2 limit) (segment-strokes segment))) + + (define red-color '(255 10 10)) + (define green-color '(10 255 10)) + (define blue-color '(10 10 255)) + (define hue-segment #f) + (define saturation-segment #f) + (define value-segment #f) + (define red-segment #f) + (define green-segment #f) + (define blue-segment #f) + (define border-size 10) + + (define (fill-dot img drawable x y segment color) + (if (fill-segment! segment x y) + (begin + (gimp-palette-set-foreground color) + (draw-segment img drawable segment (segment-max-size segment) color) + #t) + #f)) + + (define (fill-color-band img drawable x scale x-base y-base color) + (gimp-palette-set-foreground color) + (gimp-rect-select img (+ x-base (* scale x)) 0 scale y-base REPLACE FALSE 0) + (gimp-bucket-fill img drawable FG-BUCKET-FILL NORMAL 100 0 FALSE 0 0) + (gimp-selection-none img)) + + (define (plot-hsv img drawable x scale x-base y-base hsv) + (let ((real-x (* scale x)) + (h (car hsv)) + (s (cadr hsv)) + (v (caddr hsv))) + (fill-dot img drawable (+ x-base real-x) (- y-base h) + hue-segment red-color) + (fill-dot img drawable (+ x-base real-x) (- y-base s) + saturation-segment green-color) + (if (fill-dot img drawable (+ x-base real-x) (- y-base v) + value-segment blue-color) + (gimp-displays-flush)))) + + (define (plot-rgb img drawable x scale x-base y-base hsv) + (let ((real-x (* scale x)) + (h (car hsv)) + (s (cadr hsv)) + (v (caddr hsv))) + (fill-dot img drawable (+ x-base real-x) (- y-base h) + red-segment red-color) + (fill-dot img drawable (+ x-base real-x) (- y-base s) + green-segment green-color) + (if (fill-dot img drawable (+ x-base real-x) (- y-base v) + blue-segment blue-color) + (gimp-displays-flush)))) + + (define (clamp-value x minv maxv) + (if (< x minv) + (set! x minv)) + (if (< maxv x) + (set! x maxv)) + x) + + ;; start of script-fu-hsv-graph + (if (= TRUE bounds?) + (if (= TRUE (car (gimp-selection-bounds img))) + (let ((results (gimp-selection-bounds img))) + (set! beg-x (nth (if (= TRUE left2right?) 1 3) results)) + (set! beg-y (nth 2 results)) + (set! end-x (nth (if (= TRUE left2right?) 3 1) results)) + (set! end-y (nth 4 results))) + (begin + (set! beg-x (if (= TRUE left2right?) + 0 + (- (car (gimp-drawable-width drawable)) 1))) + (set! beg-y 0) + (set! end-x (if (= TRUE left2right?) + (- (car (gimp-drawable-width drawable)) 1) + 0)) + (set! end-y (- (car (gimp-drawable-height drawable)) 1)))) + (begin + (set! beg-x (clamp-value beg-x 0 (gimp-drawable-width drawable))) + (set! end-x (clamp-value end-x 0 (gimp-drawable-width drawable))) + (set! beg-y (clamp-value beg-y 0 (gimp-drawable-height drawable))) + (set! end-y (clamp-value beg-y 0 (gimp-drawable-heigth drawable))))) + (set! opacity (clamp-value opacity 0 100)) + (let* ((x-len (- end-x beg-x)) + (y-len (- end-y beg-y)) + (limit (pow (+ (pow x-len 2) (pow y-len 2)) 0.5)) + (gimg-width (* limit scale)) + (gimg-height 256) + (gimg (car (gimp-image-new (+ (* 2 border-size) gimg-width) + (+ (* 2 border-size) gimg-height) RGB))) + (bglayer (car (gimp-layer-new gimg + (+ (* 2 border-size) gimg-width) + (+ (* 2 border-size) gimg-height) + RGB_IMAGE "Background" 100 NORMAL))) + (hsv-layer (car (gimp-layer-new gimg + (+ (* 2 border-size) gimg-width) + (+ (* 2 border-size) gimg-height) + RGBA_IMAGE "HSV Graph" 100 NORMAL))) + (rgb-layer (car (gimp-layer-new gimg + (+ (* 2 border-size) gimg-width) + (+ (* 2 border-size) gimg-height) + RGBA_IMAGE "RGB Graph" 100 NORMAL))) + (clayer (car (gimp-layer-new gimg gimg-width 40 RGBA_IMAGE + "Color Sampled" opacity NORMAL))) + (rgb '(255 255 255)) + (hsv '(254 255 255)) + (x-base border-size) + (y-base (+ gimg-height border-size)) + (index 0) + (old-foreground (car (gimp-palette-get-foreground))) + (old-background (car (gimp-palette-get-background))) + (old-paint-mode (car (gimp-brushes-get-paint-mode))) + (old-brush (car (gimp-brushes-get-brush))) + (old-opacity (car (gimp-brushes-get-opacity)))) + (gimp-image-disable-undo gimg) + (gimp-image-add-layer gimg bglayer -1) + (gimp-selection-all gimg) + (gimp-palette-set-background '(255 255 255)) + (gimp-edit-fill gimg bglayer) + (gimp-image-add-layer gimg hsv-layer -1) + (gimp-edit-clear gimg hsv-layer) + (gimp-image-add-layer gimg rgb-layer -1) + (gimp-layer-set-visible rgb-layer FALSE) + (gimp-edit-clear gimg rgb-layer) + (gimp-image-add-layer gimg clayer -1) + (gimp-edit-clear gimg clayer) + (gimp-layer-translate clayer border-size 0) + (gimp-selection-none gimg) + (set! red-segment (make-segment 64 x-base y-base)) + (set! green-segment (make-segment 64 x-base y-base)) + (set! blue-segment (make-segment 64 x-base y-base)) + (set! hue-segment (make-segment 64 x-base y-base)) + (set! saturation-segment (make-segment 64 x-base y-base)) + (set! value-segment (make-segment 64 x-base y-base)) + (gimp-brushes-set-brush "Circle (01)") + (gimp-brushes-set-paint-mode NORMAL) + (gimp-brushes-set-opacity 70) + (gimp-display-new gimg) + (while (< index limit) + (set! rgb (car (gimp-color-picker img drawable + (+ beg-x (* x-len (/ index limit))) + (+ beg-y (* y-len (/ index limit))) + TRUE FALSE))) + (fill-color-band gimg clayer index scale x-base 40 rgb) + (rgb-to-hsv rgb hsv) + (plot-hsv gimg hsv-layer index scale x-base y-base hsv) + (plot-rgb gimg rgb-layer index scale x-base y-base rgb) + (set! index (+ index 1))) + (mapcar + (lambda (segment color) + (if (< 1 (segment-filled-size segment)) + (begin + (gimp-palette-set-foreground color) + (draw-segment gimg hsv-layer segment (segment-filled-size segment) + color)))) + (list hue-segment saturation-segment value-segment) + (list red-color green-color blue-color)) + (mapcar + (lambda (segment color) + (if (< 1 (segment-filled-size segment)) + (begin + (gimp-palette-set-foreground color) + (draw-segment gimg rgb-layer segment (segment-filled-size segment) + color)))) + (list red-segment green-segment blue-segment) + (list red-color green-color blue-color)) + (gimp-palette-set-foreground '(255 255 255)) + (let ((text-layer (car (gimp-text gimg -1 0 0 + "Red: Hue, Green: Sat, Blue: Val" + 1 1 12 PIXELS "*" + "helvetica" "*" "*" "*" "*"))) + (offset-y (- y-base (car (gimp-drawable-height clayer))))) + (gimp-layer-set-mode text-layer DIFFERENCE) + (gimp-layer-translate clayer 0 offset-y) + (gimp-layer-translate text-layer border-size (+ offset-y 15))) + (gimp-image-set-active-layer gimg bglayer) + ;; return back the state + (gimp-palette-set-foreground old-foreground) + (gimp-palette-set-foreground old-background) + (gimp-brushes-set-brush old-brush) + (gimp-brushes-set-paint-mode old-paint-mode) + (gimp-brushes-set-opacity old-opacity) + (gimp-image-enable-undo gimg) + (gimp-displays-flush))) + +(script-fu-register "script-fu-hsv-graph" + "/Filters/Script-Fu/Utils/Draw HSV Graph" + "Draph the graph of H/S/V values on the drawable" + "Shuji Narazaki (narazaki@InetQ.or.jp)" + "Shuji Narazaki" + "1997" + "RGB*" + SF-IMAGE "Image to analyze" 0 + SF-DRAWABLE "Drawable to analyze" 0 + SF-VALUE "Graph Scale" "1" + SF-VALUE "BG Opacity" "50" + SF-TOGGLE "Use Selection Bounds instead of belows" TRUE + SF-TOGGLE "from Top-Left to Bottom-Right" TRUE + SF-VALUE "Start X" "0" + SF-VALUE "Start Y" "0" + SF-VALUE "End X" "100" + SF-VALUE "End Y" "100" +) + +;;; hsv-graph.scm ends here diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/i26-gunya2.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/i26-gunya2.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/i26-gunya2.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/i26-gunya2.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,91 @@ +;;; i26-gunya2.scm -*-scheme-*- +;;; Time-stamp: <1997/05/11 18:46:26 narazaki@InetQ.or.jp> +;;; Author: Shuji Narazaki (narazaki@InetQ.or.jp) + +;;; Comment: +;;; This is the first font decoration of Imigre-26 (i26) +;;; Code: + +(define (i26-gunya2 text text-color frame-color font font-size frame-size) + (let* ((img (car (gimp-image-new 256 256 RGB))) + (border (/ font-size 10)) + (text-layer (car (gimp-text img -1 0 0 text (* border 2) TRUE font-size + PIXELS "*" font "*" "*" "*" "*"))) + (width (car (gimp-drawable-width text-layer))) + (height (car (gimp-drawable-height text-layer))) + (dist-text-layer (car (gimp-layer-new img width height RGBA_IMAGE + "Distorted text" 100 NORMAL))) + (dist-frame-layer (car (gimp-layer-new img width height RGBA_IMAGE + "Distorted text" 100 NORMAL))) + (distortion-img (car (gimp-image-new width height GRAY))) + (distortion-layer (car (gimp-layer-new distortion-img width height + GRAY_IMAGE "temp" 100 NORMAL))) + (radius (/ font-size 10)) + (prob 0.5) + (old-fg (car (gimp-palette-get-foreground))) + (old-bg (car (gimp-palette-get-background))) + (old-brush (car (gimp-brushes-get-brush))) + (old-paint-mode (car (gimp-brushes-get-paint-mode)))) + (gimp-image-disable-undo img) + (gimp-image-disable-undo distortion-img) + (gimp-image-resize img width height 0 0) + (gimp-image-add-layer img dist-text-layer -1) + (gimp-image-add-layer img dist-frame-layer -1) + (gimp-image-add-layer distortion-img distortion-layer -1) + (gimp-selection-none img) + (gimp-edit-clear img dist-text-layer) + (gimp-edit-clear img dist-frame-layer) + ;; get the text shape + (gimp-selection-layer-alpha img text-layer) + ;; fill it with the specified color + (gimp-palette-set-background text-color) + (gimp-edit-fill img dist-text-layer) + ;; get the border shape + (gimp-selection-border img frame-size) + (gimp-palette-set-background frame-color) + (gimp-edit-fill img dist-frame-layer) + (gimp-selection-none img) + ;; now make the distortion data + (gimp-palette-set-background '(255 255 255)) + (gimp-edit-fill distortion-img distortion-layer) + (plug-in-noisify 1 distortion-img distortion-layer FALSE prob prob prob 0.0) + (plug-in-gauss-rle 1 distortion-img distortion-layer radius 1 1) + (plug-in-c-astretch 1 distortion-img distortion-layer) + (plug-in-gauss-rle 1 distortion-img distortion-layer radius 1 1) + ;; OK, apply it to dist-text-layer + (plug-in-displace 1 img dist-text-layer radius radius 1 1 + distortion-layer distortion-layer 0) + ;; make the distortion data once again fro the frame + (gimp-edit-fill distortion-img distortion-layer) + (plug-in-noisify 1 distortion-img distortion-layer FALSE prob prob prob 0.0) + (plug-in-gauss-rle 1 distortion-img distortion-layer radius 1 1) + (plug-in-c-astretch 1 distortion-img distortion-layer) + (plug-in-gauss-rle 1 distortion-img distortion-layer radius 1 1) + ;; then, apply it to dist-frame-layer + (plug-in-displace 1 img dist-frame-layer radius radius 1 1 + distortion-layer distortion-layer 0) + ;; Finally, clear the bottom layer (text-layer) + (gimp-selection-all img) + (gimp-palette-set-background '(255 255 255)) + (gimp-edit-fill img text-layer) + ;; post processing + (gimp-palette-set-foreground old-fg) + (gimp-palette-set-background old-bg) + (gimp-brushes-set-brush old-brush) + (gimp-brushes-set-paint-mode old-paint-mode) + (gimp-image-set-active-layer img dist-text-layer) + (gimp-image-enable-undo img) + (gimp-image-delete distortion-img) + (gimp-display-new img))) + + +(script-fu-register "i26-gunya2" + "Two-colored text by hand" + SF-VALUE "Text" "\"The GIMP\"" + SF-COLOR "Text Color" '(255 0 0) + SF-COLOR "Frame Color" '(0 34 255) + SF-VALUE "Font" "\"Becker\"" + SF-VALUE "Font Size" "100" + SF-VALUE "Frame Size" "2") + +;;; i26-gunya2.scm ends here \ No newline at end of file diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/image-structure.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/image-structure.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/image-structure.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/image-structure.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,103 @@ +;;; image-structure.scm -*-scheme-*- +;;; Time-stamp: <1997/06/30 00:21:41 narazaki@InetQ.or.jp> +;;; Author: Shuji Narazaki +;;; Version 0.3 +;;; Code: + +(define (script-fu-show-image-structure img drawable space shear-length border + apply-layer-mask? with-layer-name? + with-pad? padding-color padding-opacity + with-background? background-color) + (let* ((layers (gimp-image-get-layers img)) + (num-of-layers (car layers)) + (old-width (car (gimp-image-width img))) + (old-height (car (gimp-image-height img))) + (new-width (+ (* 2 border) (+ old-width (* 2 shear-length)))) + (new-height (+ (* 2 border) (+ old-height (* space (- num-of-layers 1))))) + (new-bg #f) + (old-foreground (car (gimp-palette-get-foreground))) + (old-background (car (gimp-palette-get-background))) + (layer-names '()) + (layer #f) + (index 0)) + (gimp-image-resize img new-width new-height 0 0) + (set! layers (cadr layers)) + (gimp-selection-none img) + (while (< index num-of-layers) + (set! layer (aref layers index)) + (if (equal? "Background" (car (gimp-layer-get-name layer))) + (begin + (gimp-layer-add-alpha layer) + (gimp-layer-set-name layer "Original Background"))) + (set! layer-names (cons (car (gimp-layer-get-name layer)) layer-names)) + (if (not (= -1 (car (gimp-layer-mask layer)))) + (gimp-image-remove-layer-mask img layer + (if (= TRUE apply-layer-mask?) + APPLY + DISCARD))) + (if (= TRUE with-pad?) + (begin + (gimp-selection-layer-alpha img layer) + (gimp-selection-invert img) + (gimp-layer-set-preserve-trans layer FALSE) + (gimp-palette-set-foreground padding-color) + (gimp-bucket-fill img layer FG-BUCKET-FILL NORMAL + padding-opacity 0 0 0 0) + (gimp-selection-none img))) + + (gimp-layer-translate layer + (+ border shear-length) (+ border (* space index))) + (gimp-shear img layer TRUE 0 (* (/ (car (gimp-drawable-height layer)) + old-height) + (* -2 shear-length))) + (set! index (+ index 1))) + (set! new-bg (- num-of-layers 1)) + (if (= TRUE with-background?) + (begin + (set! new-bg (car (gimp-layer-new img new-width new-height RGBA_IMAGE + "New Background" 100 NORMAL))) + (gimp-image-add-layer img new-bg num-of-layers) + (gimp-palette-set-background background-color) + (gimp-edit-fill img new-bg))) + (gimp-image-set-active-layer img (aref layers 0)) + (if (= TRUE with-layer-name?) + (let ((text-layer #f)) + (gimp-palette-set-foreground '(255 255 255)) + (set! index 0) + (set! layer-names (nreverse layer-names)) + (while (< index num-of-layers) + (set! text-layer (car (gimp-text img -1 (/ border 2) + (+ (* space index) old-width) + (car layer-names) + 0 TRUE 14 PIXELS "*" "helvetica" + "*" "*" "*" "*"))) + (gimp-layer-set-mode text-layer NORMAL) + (set! index (+ index 1)) + (set! layer-names (cdr layer-names))))) + (gimp-image-set-active-layer img new-bg) + (gimp-palette-set-background old-background) + (gimp-palette-set-foreground old-foreground) + (gimp-displays-flush))) + +(script-fu-register "script-fu-show-image-structure" + "/Filters/Script-Fu/Utils/Show Image Structure Destructively" + "Show the layer structure of the image DESTRACTIVELY(the original image was modified)" + "Shuji Narazaki (narazaki@InetQ.or.jp)" + "Shuji Narazaki" + "1997" + "RGB*, GRAY*" + SF-IMAGE "image" 0 + SF-DRAWABLE "Drawable (unused)" 0 + SF-VALUE "Space between layers" "50" + SF-VALUE "Shear length (> 0)" "50" + SF-VALUE "Outer Border (>= 0)" "10" + SF-TOGGLE "Apply layer mask (otherwise discard)" TRUE + SF-TOGGLE "Insert layer names" TRUE + SF-TOGGLE "Padding for transparent regions" TRUE + SF-COLOR "Pad Color" '(255 255 255) + SF-VALUE "Pad Opacity [0:100]" "25" + SF-TOGGLE "Make New Background" TRUE + SF-COLOR "Background Color" '(0 0 0) +) + +;;; image-structure.scm ends here diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/kanji-circle.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/kanji-circle.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/kanji-circle.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/kanji-circle.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,107 @@ +;; kanji-circle a script for The GIMP (´Á»ú¤¤¤ê) -*-scheme-*- +;; Shuji Narazaki (narazaki@InetQ.or.jp) +;; Time-stamp: <1997/06/09 22:18:23 narazaki@InetQ.or.jp> +;; Version 0.8 + +(define (script-fu-kanji-circle text radius start-angle fill-angle + font font-size antialias) + (let* ((drawable-size (* 2.0 (+ radius (* 2 font-size)))) ; with padding + (img (car (gimp-image-new drawable-size drawable-size RGB))) + (BG-layer (car (gimp-layer-new img drawable-size drawable-size + RGBA_IMAGE "background" 100 NORMAL))) + (merged-layer #f) + (char-num (string-length text)) + (radians (/ (* 2 *pi*) (/ char-num 2))) + (rad-90 (/ *pi* 2)) + (center-x (/ drawable-size 2)) + (center-y (/ drawable-size 2)) + (desc 0) + (angle-list #f) + (letter "") + (new-layer #f) + (index 0)) + (gimp-image-disable-undo img) + (gimp-image-add-layer img BG-layer 0) + (gimp-edit-fill img BG-layer) + ;; change unit + (set! start-angle (* (/ (modulo start-angle 360) 360) 2 *pi*)) + (set! fill-angle (* (/ fill-angle 360) 2 *pi*)) + (set! radian-step (/ fill-angle char-num)) + ;; make width-list + (let ((temp-list '()) + (temp-str #f) + (scale 0) + (temp #f)) + (set! index 0) + (while (< index (/ char-num 2)) + (set! angle-list (cons font-size angle-list)) + (set! index (+ index 1))) + (set! temp 0) + (set! angle-list + (mapcar (lambda (angle) + (let ((tmp temp)) + (set! temp (+ angle temp)) + (+ tmp (/ angle 2)))) + angle-list)) + (set! scale (/ fill-angle temp)) + (set! angle-list (mapcar (lambda (angle) (* scale angle)) angle-list))) + (set! index 0) + (while (< index (/ char-num 2)) + (set! letter (substring text (* 2 index) (+ (* 2 index) 2))) + (if (not (equal? " " letter)) + ;; Running gimp-text with " " causes an error! + (let* ((new-layer (car (plug-in-vftext 1 img -1 0 0 + letter + 1 antialias + font-size PIXELS + "*" font "*" "*" "*" 0))) + (width (car (gimp-drawable-width new-layer))) + (height (car (gimp-drawable-height new-layer))) + (rotate-radius (- (/ height 2) desc)) + (angle (+ start-angle (- (nth index angle-list) rad-90)))) + (gimp-layer-translate new-layer + (+ center-x + (* radius (cos angle)) + (* rotate-radius + (cos (if (< 0 fill-angle) + angle + (+ angle *pi*)))) + (- (/ width 2))) + (+ center-y + (* radius (sin angle)) + (* rotate-radius + (sin (if (< 0 fill-angle) + angle + (+ angle *pi*)))) + (- (/ height 2)))) + (gimp-rotate img new-layer 1 + ((if (< 0 fill-angle) + -) angle rad-90)))) + (set! index (+ index 1))) + (gimp-layer-set-visible BG-layer 0) + (set! merged-layer (car (gimp-image-merge-visible-layers img CLIP-TO-IMAGE))) + (gimp-layer-set-name merged-layer "kanji circle") + (gimp-layer-set-visible BG-layer 1) + (gimp-image-enable-undo img) + (gimp-display-new img) + (gimp-displays-flush))) + +(script-fu-register "script-fu-kanji-circle" + "/Xtns/Script-Fu/Logos/Kanji Circle" + "Kanji Circle (version 0.3)" + "Shuji Narazaki " + "Shuji Narazaki" + "1997" + "" + SF-VALUE "Kanji Text" "\"¤Í¤¦¤·¤È¤é¤¦¤¿¤Ä¤ß¤¦¤Þ¤Ò¤Ä¤¸¤µ¤ë¤È¤ê¤¤¤Ì¤¤\"" + SF-VALUE "Radius" "100" + SF-VALUE "Start-angle" "0" + SF-VALUE "Fill-angle" "360" + SF-VALUE "Font name" "\"min\"" + SF-VALUE "Font Size" "24" + SF-TOGGLE "Antialias" TRUE +) + +;; Local Variables: +;; buffer-file-coding-system: euc-japan +;; End: +;; end of kanji-circle.scm \ No newline at end of file diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/kanji-neon.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/kanji-neon.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/kanji-neon.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/kanji-neon.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,131 @@ +;; KANJI-NEON (´Á»ú¤¤¤ê) -*-scheme-*- +;; Create a text effect that simulates neon lighting +;; Shuji Narazaki (narazaki@InetQ.or.jp) +;; Time-stamp: <1997/06/13 23:16:39 narazaki@InetQ.or.jp> +;; Version 0.7 + +(define (script-fu-kanji-neon glow-color tube-hue text size font) + (define (set-pt a index x y) + (prog1 + (aset a (* index 2) x) + (aset a (+ (* index 2) 1) y))) + + (define (neon-spline1) + (let* ((a (cons-array 6 'byte))) + (set-pt a 0 0 0) + (set-pt a 1 127 145) + (set-pt a 2 255 255) + a)) + + (define (neon-spline2) + (let* ((a (cons-array 6 'byte))) + (set-pt a 0 0 0) + (set-pt a 1 110 150) + (set-pt a 2 255 255) + a)) + + (define (neon-spline3) + (let* ((a (cons-array 6 'byte))) + (set-pt a 0 0 0) + (set-pt a 1 100 185) + (set-pt a 2 255 255) + a)) + + (let* ((img (car (gimp-image-new 256 256 RGB))) + (border (/ size 4)) + (shrink (/ size 14)) + (grow (/ size 40)) + (feather (/ size 5)) + (feather1 (/ size 25)) + (feather2 (/ size 12)) + (inc-shrink (/ size 100)) + (glow-layer (car (plug-in-vftext 1 img -1 0 0 text border 1 size 1 "" + font "" "" "" 0))) + (width (car (gimp-drawable-width glow-layer))) + (height (car (gimp-drawable-height glow-layer))) + (bg-layer (car (gimp-layer-new img width height RGB_IMAGE "Neon Glow" 100 NORMAL))) + (selection 0) + (old-fg (car (gimp-palette-get-foreground))) + (old-bg (car (gimp-palette-get-background)))) + (gimp-image-disable-undo img) + ;(gimp-display-new img) ; for debug + (gimp-image-resize img width height 0 0) + (gimp-image-add-layer img bg-layer 1) + + (gimp-palette-set-background '(0 0 0)) + (gimp-selection-layer-alpha img glow-layer) + ;; make lines thick to avoid an unknown error of the following process + (gimp-selection-grow img 1) + (gimp-edit-fill img glow-layer) + (set! selection (car (gimp-selection-save img))) + (gimp-selection-none img) + + (gimp-edit-fill img bg-layer) + (gimp-edit-fill img glow-layer) + + (gimp-selection-load img selection) + (gimp-palette-set-background '(255 255 255)) + (gimp-edit-fill img glow-layer) + (gimp-selection-shrink img shrink) + (gimp-palette-set-background '(0 0 0)) + (gimp-edit-fill img selection) + (gimp-edit-fill img glow-layer) + + (gimp-selection-none img) + (plug-in-gauss-rle 1 img glow-layer feather1 TRUE TRUE) + (gimp-selection-load img selection) + (plug-in-gauss-rle 1 img glow-layer feather2 TRUE TRUE) + + (gimp-brightness-contrast img glow-layer -10 15) + (gimp-selection-none img) + (gimp-hue-saturation img glow-layer 0 tube-hue -15 70) + + (gimp-selection-load img selection) + (gimp-selection-feather img inc-shrink) + (gimp-selection-shrink img inc-shrink) + (gimp-curves-spline img glow-layer 0 6 (neon-spline1)) + + (gimp-selection-load img selection) + (gimp-selection-feather img inc-shrink) + (gimp-selection-shrink img (* inc-shrink 2)) + (gimp-curves-spline img glow-layer 0 6 (neon-spline2)) + + (gimp-selection-load img selection) + (gimp-selection-feather img inc-shrink) + (gimp-selection-shrink img (* inc-shrink 3)) + (gimp-curves-spline img glow-layer 0 6 (neon-spline3)) + + (gimp-selection-load img selection) + (gimp-selection-grow img grow) + (gimp-selection-invert img) + (gimp-edit-clear img glow-layer) + (gimp-selection-invert img) + + (gimp-selection-feather img feather) + (gimp-palette-set-background glow-color) + (gimp-edit-fill img bg-layer) + (gimp-selection-none img) + + (gimp-layer-set-name glow-layer "Neon Tubes") + (gimp-palette-set-background old-bg) + (gimp-palette-set-foreground old-fg) + (gimp-image-enable-undo img) + (gimp-display-new img) + (gimp-displays-flush))) + +(script-fu-register "script-fu-kanji-neon" + "/Xtns/Script-Fu/Logos/Kanji Neon" + "Kanji Neon Text Cyan (0.3)" + "Shuji Narazaki " + "Shuji Narazaki" + "1997" + "" + SF-COLOR "Glow Color" '(38 211 255) + SF-VALUE "Tube Hue" "-170" + SF-VALUE "Text (ill-displayed)" "\"´Á»ú\"" + SF-VALUE "Font Size (in pixels)" "100" + SF-VALUE "Font (string)" "\"min\"") + +;; Local Variables: +;; buffer-file-coding-system: euc-japan +;; End: diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/perspective-shadow.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/perspective-shadow.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/perspective-shadow.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/perspective-shadow.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,214 @@ +; The GIMP -- an image manipulation program +; Copyright (C) 1995 Spencer Kimball and Peter Mattis +; +; 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., 675 Mass Ave, Cambridge, MA 02139, USA. +; +; +; perspective-shadow.scm version 1.00 07/29/97 +; +; Copyright (C) 1997 Sven Neumann (neumanns@uni-duesseldorf.de) +; +; +; Adds a perspective shadow of the current selection or alpha-channel +; as a layer below the active layer +; + +(define (script-fu-perspective-shadow image + drawable + alpha + rel-distance + rel-length + shadow-blur + shadow-color + shadow-opacity + interpolate + allow-resize) + (let* ((shadow-blur (max shadow-blur 0)) + (shadow-opacity (min shadow-opacity 100)) + (shadow-opacity (max shadow-opacity 0)) + (rel-length (abs rel-length)) + (alpha (* (/ alpha 180) *pi*)) + (type (car (gimp-drawable-type-with-alpha drawable))) + (image-width (car (gimp-image-width image))) + (image-height (car (gimp-image-height image))) + (old-bg (car (gimp-palette-get-background)))) + + (if (= rel-distance 0) (set! rel-distance 999999)) + (gimp-image-disable-undo image) + + (gimp-layer-add-alpha drawable) + (if (= (car (gimp-selection-is-empty image)) TRUE) + (begin + (gimp-selection-layer-alpha image drawable) + (set! from-selection FALSE)) + (begin + (set! from-selection TRUE) + (set! active-selection (car (gimp-selection-save image))))) + + (set! selection-bounds (gimp-selection-bounds image)) + (set! select-offset-x (cadr selection-bounds)) + (set! select-offset-y (caddr selection-bounds)) + (set! select-width (- (cadr (cddr selection-bounds)) select-offset-x)) + (set! select-height (- (caddr (cddr selection-bounds)) select-offset-y)) + + (set! abs-length (* rel-length select-height)) + (set! abs-distance (* rel-distance select-height)) + (set! half-bottom-width (/ select-width 2)) + (set! half-top-width (* half-bottom-width + (/ (- rel-distance rel-length) rel-distance))) + + (set! x0 (+ select-offset-x (+ (- half-bottom-width half-top-width) + (* (cos alpha) abs-length)))) + (set! y0 (+ select-offset-y (- select-height + (* (sin alpha) abs-length)))) + (set! x1 (+ x0 (* 2 half-top-width))) + (set! y1 y0) + (set! x2 select-offset-x) + (set! y2 (+ select-offset-y select-height)) + (set! x3 (+ x2 select-width)) + (set! y3 y2) + + (set! shadow-layer (car (gimp-layer-new image + select-width + select-height + type + "Perspective Shadow" + shadow-opacity + NORMAL))) + (gimp-layer-set-offsets shadow-layer select-offset-x select-offset-y) + (gimp-drawable-fill shadow-layer TRANS-IMAGE-FILL) + (gimp-palette-set-background shadow-color) + (gimp-edit-fill image shadow-layer) + (gimp-selection-none image) + + (set! shadow-width (+ (- (max x1 x3) (min x0 x2)) (* 2 shadow-blur))) + (set! shadow-height (+ (- (max y1 y3) (min y0 y2)) (* 2 shadow-blur))) + (set! shadow-offset-x (- (min x0 x2) shadow-blur)) + (set! shadow-offset-y (- (min y0 y2) shadow-blur)) + + (if (= allow-resize TRUE) + (begin + (set! new-image-width image-width) + (set! new-image-height image-height) + (set! image-offset-x 0) + (set! image-offset-y 0) + + (if (< shadow-offset-x 0) + (begin + (set! image-offset-x (- 0 shadow-offset-x)) + (set! new-image-width (- new-image-width image-offset-x)))) + + (if (< shadow-offset-y 0) + (begin + (set! image-offset-y (- 0 shadow-offset-y)) + (set! new-image-height (- new-image-height image-offset-y)))) + + (if (> (+ shadow-width shadow-offset-x) new-image-width) + (set! new-image-width (+ shadow-width shadow-offset-x))) + + (if (> (+ shadow-height shadow-offset-y) new-image-height) + (set! new-image-height (+ shadow-height shadow-offset-y))) + (gimp-image-resize image + new-image-width + new-image-height + image-offset-x + image-offset-y))) + + (gimp-image-add-layer image shadow-layer -1) + + (gimp-perspective image + shadow-layer + interpolate + x0 y0 + x1 y1 + x2 y2 + x3 y3) + + (if (> shadow-blur 0) + (begin + (gimp-layer-set-preserve-trans shadow-layer FALSE) + (gimp-layer-resize shadow-layer + shadow-width + shadow-height + shadow-blur + shadow-blur) + (plug-in-gauss-rle 1 + image + shadow-layer + shadow-blur + TRUE + TRUE))) + + (if (= from-selection TRUE) + (begin + (gimp-selection-load image active-selection) + (gimp-edit-clear image shadow-layer) +; (gimp-channel-delete active-selection) +; Don't know why, but deleting the channel seems to crash The GIMP! +; Until this is fixed, a copy of the selection will remain. + )) + + (if (and + (= (car (gimp-layer-is-floating-sel drawable)) 0) + (= from-selection FALSE)) + (gimp-image-raise-layer image drawable)) + + (gimp-image-set-active-layer image drawable) + (gimp-palette-set-background old-bg) + (gimp-image-enable-undo image) + (gimp-displays-flush))) + +(script-fu-register "script-fu-perspective-shadow" + "/Filters/Script-Fu/Shadow/Perspective" + "Add a perspective shadow" + "Sven Neumann (neumanns@uni-duesseldorf.de)" + "Sven Neumann" + "07/29/1997" + "RGB RGBA GRAY GRAYA" + SF-IMAGE "Image" 0 + SF-DRAWABLE "Drawable" 0 + SF-VALUE "Angle" "45" + SF-VALUE "Relative horizon distance" "5.0" + SF-VALUE "Relative shadow length" "1.0" + SF-VALUE "Blur Radius" "3" + SF-COLOR "Color" '(0 0 0) + SF-VALUE "Opacity" "80" + SF-TOGGLE "Interpolate" TRUE + SF-TOGGLE "Allow Resizing" FALSE) + + + + + + + + + + + + + + + + + + + + + + + + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/pie-chart.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/pie-chart.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/pie-chart.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/pie-chart.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,222 @@ +; The GIMP -- an image manipulation program +; Copyright (C) 1995 Spencer Kimball and Peter Mattis +; +; Pie chart script --- create simple pie charts from a list of value/color pairs +; Copyright (C) 1997 Federico Mena Quintero +; federico@nuclecu.unam.mx +; +; 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., 675 Mass Ave, Cambridge, MA 02139, USA. + + +; Constants + +(define pi 3.141592653589793238462643383279502884) +(define epsilon 1.0e-8) + +; Points + +(define (make-point x y) + (cons x y)) + +(define (point-x point) + (car point)) + +(define (point-y point) + (cdr point)) + +; Convert a list of points to an array of doubles + +(define (point-list->double-array point-list) + (let* ((how-many (length point-list)) + (count 0) + (a (cons-array (* 2 how-many) 'double))) + (while point-list + (aset a (* 2 count) (point-x (car point-list))) + (aset a (+ 1 (* 2 count)) (point-y (car point-list))) + (set! point-list (cdr point-list)) + (set! count (+ count 1))) + a)) + +; Returns the point on the image border which is intersected by the +; vector which starts at the center of the image and that has the +; specified angle + +(define (intersect-with-border center width angle) + (let* ((vec-x (cos angle)) + (vec-y (- (sin angle))) + (factor-x (if (> (abs vec-x) epsilon) + (max (/ (- center) vec-x) + (/ (- width center) vec-x)) + -1)) + (factor-y (if (> (abs vec-y) epsilon) + (max (/ (- center vec-y)) + (/ (- width center) vec-y)) + -1)) + (factor (cond ((and (> factor-x 0) (> factor-y 0)) + (min factor-x factor-y)) + ((> factor-x 0) factor-x) + (else factor-y)))) + (make-point (+ center (* vec-x factor)) + (+ center (* vec-y factor))))) + +; On which side of the image does the point lie? + +(define (which-side point width) + (let ((x (point-x point)) + (y (point-y point))) + (cond ((< x epsilon) 'left) + ((< y epsilon) 'top) + ((< (abs (- x width)) epsilon) 'right) + ((< (abs (- y width)) epsilon) 'bottom)))) + +; Tests whether a point comes after another point, even when their sides are equal + +(define (point-after? point1 point2 side) + (cond ((eq? side 'top) (< (point-x point1) (point-x point2))) + ((eq? side 'left) (> (point-y point1) (point-y point2))) + ((eq? side 'bottom) (> (point-x point1) (point-x point2))) + ((eq? side 'right) (< (point-y point1) (point-y point2))))) + +; Rotates sides counter-clockwise + +(define (next-side side) + (cond ((eq? side 'top) 'left) + ((eq? side 'left) 'bottom) + ((eq? side 'bottom) 'right) + ((eq? side 'right) 'top))) + +; Moves a point to the specified side + +(define (move-point-to-side width point dest-side) + (cond ((eq? dest-side 'left) (make-point 0 (point-y point))) + ((eq? dest-side 'right) (make-point width (point-y point))) + ((eq? dest-side 'top) (make-point (point-x point) 0)) + ((eq? dest-side 'bottom) (make-point (point-x point) width)))) + +; Slides the initial point along the image border to the final point +; and returns a list of the visited points + +(define (make-slide-point-list width point side final-point final-side) + (if (and (eq? side final-side) + (point-after? point final-point side)) + (list point final-point) + (cons point + (make-slide-point-list width + (move-point-to-side width point (next-side side)) + (next-side side) + final-point + final-side)))) + +; Creates an array of points ready for gimp-free-select + +(define (create-slice-intersect-array center width angle1 angle2) + (let* ((inter-1 (intersect-with-border center width angle1)) + (inter-2 (intersect-with-border center width angle2)) + (point-list (cons (make-point center center) + (make-slide-point-list width + inter-1 + (which-side inter-1 width) + inter-2 + (which-side inter-2 width))))) + (cons (length point-list) + (point-list->double-array point-list)))) + +; Value/color pairs + +(define (get-value value-color-pair) + (car value-color-pair)) + +(define (get-color value-color-pair) + (cadr value-color-pair)) + +(define (calc-total value-color-list) + (define (total-iter values total) + (if (null? values) + total + (total-iter (cdr values) + (+ total (get-value (car values)))))) + (total-iter value-color-list 0)) + +; Misc + +(define (degrees->radians angle) + (/ (* angle pi) 180.0)) + +; The main pie-chart function + +(define (script-fu-pie-chart width value-color-list start-angle) + (define (paint-slices image drawable total angle1 values) + (if (not (null? values)) + (let* ((item (car values)) + (value (/ (get-value item) total)) + (color (get-color item)) + (angle2 (+ angle1 + (* 2.0 pi value))) + (i-array (create-slice-intersect-array (/ (- width 1) 2) + width + angle1 + angle2)) + (num-points (car i-array)) + (points (cdr i-array))) + + (gimp-selection-none image) + (gimp-ellipse-select image 0 0 width width REPLACE TRUE FALSE 0) + (gimp-free-select image + (* 2 num-points) + points + INTERSECT + TRUE + FALSE + 0) + (gimp-palette-set-background color) + (gimp-edit-fill image drawable) + + (paint-slices image drawable total angle2 (cdr values))))) + + (let* ((img (car (gimp-image-new width width RGB))) + (layer (car (gimp-layer-new img width width RGB_IMAGE "Pie chart" 100 NORMAL))) + (old-fg-color (car (gimp-palette-get-foreground))) + (old-bg-color (car (gimp-palette-get-background))) + (total (calc-total value-color-list))) + + (gimp-image-disable-undo img) + (gimp-image-add-layer img layer 0) + + (gimp-edit-fill img layer) + + (paint-slices img + layer + total + (degrees->radians start-angle) + value-color-list) + + (gimp-selection-none img) + (gimp-palette-set-foreground old-fg-color) + (gimp-palette-set-background old-bg-color) + (gimp-image-enable-undo img) + (gimp-display-new img))) + +; Register! + +(script-fu-register "script-fu-pie-chart" + "/Xtns/Script-Fu/Misc/Pie chart" + "Pie chart" + "Federico Mena Quintero" + "Federico Mena Quintero" + "June 1997" + "" + SF-VALUE "Width" "401" + SF-VALUE "Value/color list" "'((10 (255 0 0)) (20 (0 0 255)) (30 (0 255 0)) (40 (255 255 0)))" + SF-VALUE "Start angle" "0.0") diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/round-corners.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/round-corners.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/round-corners.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/round-corners.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,154 @@ +; The GIMP -- an image manipulation program +; Copyright (C) 1995 Spencer Kimball and Peter Mattis +; +; 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., 675 Mass Ave, Cambridge, MA 02139, USA. +; +; +; round-corners.scm version 1.00 07/28/97 +; +; Copyright (C) 1997 Sven Neumann (neumanns@uni-duesseldorf.de) +; +; +; Rounds the corners of an image, optionally adding a drop-shadow and +; a background layer +; +; The script works on RGB and grayscale images that contain only +; one layer. It creates a copy of the image or can optionally work +; on the original. The script uses the current background color to +; create a background layer. It makes a call to the script drop-shadow. +; +; This script is derived from my script add-shadow, which has become +; obsolete now. + + + +(define (script-fu-round-corners img + drawable + radius + shadow-toggle + shadow-x + shadow-y + shadow-blur + background-toggle + work-on-copy) + (let* ((shadow-blur (abs shadow-blur)) + (radius (abs radius)) + (diam (* 2 radius)) + (width (car (gimp-image-width img))) + (height (car (gimp-image-height img))) + (type (car (gimp-drawable-type-with-alpha drawable))) + (image (cond ((= work-on-copy TRUE) + (car (gimp-channel-ops-duplicate img))) + ((= work-on-copy FALSE) + img)))) + + (gimp-image-disable-undo image) + + ; add an alpha channel to the image + (set! pic-layer (car (gimp-image-active-drawable image))) + (gimp-layer-add-alpha pic-layer) + + ; round the edges + (gimp-selection-none image) + (gimp-rect-select image 0 0 radius radius ADD 0 0) + (gimp-ellipse-select image 0 0 diam diam SUB TRUE 0 0) + (gimp-rect-select image (- width radius) 0 radius radius ADD 0 0) + (gimp-ellipse-select image (- width diam) 0 diam diam SUB TRUE 0 0) + (gimp-rect-select image 0 (- height radius) radius radius ADD 0 0) + (gimp-ellipse-select image 0 (- height diam) diam diam SUB TRUE 0 0) + (gimp-rect-select image (- width radius) (- height radius) + radius radius ADD 0 0) + (gimp-ellipse-select image (- width diam) (- height diam) + diam diam SUB TRUE 0 0) + (gimp-edit-clear image pic-layer) + (gimp-selection-none image) + + ; optionally add a shadow + (if (= shadow-toggle TRUE) + (begin + (script-fu-drop-shadow image + pic-layer + shadow-x + shadow-y + shadow-blur + '(0 0 0) + 80 + TRUE) + (set! width (car (gimp-image-width image))) + (set! height (car (gimp-image-height image))))) + + ; optionally add a background + (if (= background-toggle TRUE) + (begin + (set! bg-layer (car (gimp-layer-new image + width + height + type + "Background" + 100 + NORMAL))) + (gimp-drawable-fill bg-layer BG-IMAGE-FILL) + (gimp-image-add-layer image bg-layer -1) + (gimp-image-raise-layer image pic-layer) + (if (= shadow-toggle TRUE) + (gimp-image-lower-layer image bg-layer)))) + +; clean up after the script + (gimp-image-enable-undo image) + (if (= work-on-copy TRUE) + (gimp-display-new image)) + (gimp-displays-flush))) + +(script-fu-register "script-fu-round-corners" + "/Filters/Script-Fu/Decor/Round Corners" + "Round the corners of an image and optionally adds a drop-shadow and a background" + "Sven Neumann (neumanns@uni-duesseldorf.de)" + "Sven Neumann" + "07/28/1997" + "RGB GRAY" + SF-IMAGE "Image" 0 + SF-DRAWABLE "Drawable" 0 + SF-VALUE "Radius of Edges" "12" + SF-TOGGLE "Add drop-shadow" TRUE + SF-VALUE "Shadow x" "8" + SF-VALUE "Shadow y" "8" + SF-VALUE "Blur Radius" "15" + SF-TOGGLE "Add background" TRUE + SF-TOGGLE "Work on copy" TRUE) + + + + + + + + + + + + + + + + + + + + + + + + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/slide.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/slide.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/slide.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/slide.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,250 @@ +; The GIMP -- an image manipulation program +; Copyright (C) 1995 Spencer Kimball and Peter Mattis +; +; 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., 675 Mass Ave, Cambridge, MA 02139, USA. +; +; +; slide.scm version 0.20 07/28/97 +; +; !still in development! +; TODO: - change the script so that the film is rotated, not the image +; - antialiasing +; - make 'add background' an option +; - ? +; +; Copyright (C) 1997 Sven Neumann (neumanns@uni-duesseldorf.de) +; +; makes your picture look like a slide +; +; The script works on RGB and grayscale images that contain only +; one layer. The image is cropped to fit into an aspect ratio of 1:1,5. +; It creates a copy of the image or can optionally work on the original. +; The script uses the current background color to create a background +; layer. + + +(define (crop width height ratio) + (cond ((>= width (* ratio height)) (* ratio height)) + ((< width (* ratio height)) width))) + + +(define (script-fu-slide img + drawable + text + number + font-family + font-color + work-on-copy) + (let* ((type (car (gimp-drawable-type-with-alpha drawable))) + (image (cond ((= work-on-copy TRUE) + (car (gimp-channel-ops-duplicate img))) + ((= work-on-copy FALSE) + img))) + (owidth (car (gimp-image-width image))) + (oheight (car (gimp-image-height image))) + (ratio (if (>= owidth oheight) (/ 3 2) + (/ 2 3))) + (crop-width (crop owidth oheight ratio)) + (crop-height (/ crop-width ratio)) + (width (* (max crop-width crop-height) 1.05)) + (height (* (min crop-width crop-height) 1.5)) + (hole-width (/ width 20)) + (hole-space (/ width 8)) + (hole-height (/ width 12)) + (hole-radius (/ hole-width 4)) + (hole-start (- (/ (rand 1000) 1000) 0.5)) + (old-bg (car (gimp-palette-get-background))) + (old-fg (car (gimp-palette-get-foreground))) + (film-layer (car (gimp-layer-new image + width + height + type + "Film" + 100 + NORMAL))) + (bg-layer (car (gimp-layer-new image + width + height + type + "Background" + 100 + NORMAL)))) + + (gimp-image-disable-undo image) + +; add an alpha channel to the image + (set! pic-layer (car (gimp-image-active-drawable image))) + (gimp-layer-add-alpha pic-layer) + +; crop, resize and eventually rotate the image + (gimp-crop image + crop-width + crop-height + (/ (- owidth crop-width) 2) + (/ (- oheight crop-height) 2)) + (gimp-image-resize image + width + height + (/ (- width crop-width) 2) + (/ (- height crop-height) 2)) + (if (< ratio 1) (set! pic-layer (car (gimp-rotate image + pic-layer + FALSE + (/ *pi* 2))))) + +; add the background layer + (gimp-drawable-fill bg-layer BG-IMAGE-FILL) + (gimp-image-add-layer image bg-layer -1) + +; add the film layer + (gimp-palette-set-background '(0 0 0)) + (gimp-drawable-fill film-layer BG-IMAGE-FILL) + +; add the text + (gimp-palette-set-foreground font-color) + (gimp-floating-sel-anchor (car (gimp-text image + film-layer + (+ hole-start (* -0.25 width)) + (* 0.01 height) + text + 0 + TRUE + (* 0.040 height) PIXELS + "*" font-family "*" "*" "*" "*" ))) + (gimp-floating-sel-anchor (car (gimp-text image + film-layer + (+ hole-start (* 0.75 width)) + (* 0.01 height) + text + 0 + TRUE + (* 0.040 height) PIXELS + "*" font-family "*" "*" "*" "*" ))) + (gimp-floating-sel-anchor (car (gimp-text image + film-layer + (+ hole-start (* 0.35 width)) + (* 0.01 height) + number + 0 + TRUE + (* 0.050 height) PIXELS + "*" font-family "*" "*" "*" "*" ))) + (gimp-floating-sel-anchor (car (gimp-text image + film-layer + (+ hole-start (* 0.35 width)) + (* 0.95 height) + number + 0 + TRUE + (* 0.050 height) PIXELS + "*" font-family "*" "*" "*" "*" ))) + (set! numbera (string-append number "A")) + (gimp-floating-sel-anchor (car (gimp-text image + film-layer + (+ hole-start (* 0.85 width)) + (* 0.95 height) + numbera + 0 + TRUE + (* 0.045 height) PIXELS + "*" font-family "*" "*" "*" "*" ))) + +; create a mask for the holes + (set! film-mask (car (gimp-layer-create-mask film-layer WHITE-MASK))) + +; cut out the holes... + (gimp-selection-none image) + (set! hole hole-start) + (set! top-y (* height 0.06)) + (set! bottom-y(* height 0.855)) + (while (< hole 8) + (gimp-rect-select image + (* hole-space hole) + top-y + hole-width + hole-height + ADD + FALSE + 0) + (gimp-rect-select image + (* hole-space hole) + bottom-y + hole-width + hole-height + ADD + FALSE + 0) + (set! hole (+ hole 1))) + + (gimp-palette-set-foreground '(0 0 0)) + (gimp-edit-fill image film-mask) + (gimp-selection-none image) + (plug-in-gauss-rle 1 image film-mask hole-radius TRUE TRUE) + (gimp-threshold image film-mask 127 255) + + (gimp-image-add-layer image film-layer -1) + (gimp-image-add-layer-mask image film-layer film-mask) + +; reorder the layers + (gimp-image-raise-layer image pic-layer) + (gimp-image-raise-layer image pic-layer) + +; clean up after the script + (gimp-selection-none image) + (gimp-palette-set-background old-bg) + (gimp-palette-set-foreground old-fg) + (gimp-image-enable-undo image) + (if (= work-on-copy TRUE) (gimp-display-new image)) + (gimp-displays-flush))) + +(script-fu-register "script-fu-slide" + "/Filters/Script-Fu/Decor/Slide" + "Gives the image the look of a slide" + "Sven Neumann (neumanns@uni-duesseldorf.de)" + "Sven Neumann" + "07/28/1997" + "RGB GRAY" + SF-IMAGE "Image" 0 + SF-DRAWABLE "Drawable" 0 + SF-VALUE "Text" "\"The GIMP\"" + SF-VALUE "Number" "\"32\"" + SF-VALUE "Font" "\"Utopia\"" + SF-COLOR "Font Color" '(255 180 0) + SF-TOGGLE "Work on copy" TRUE) + + + + + + + + + + + + + + + + + + + + + + + + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/starburst-logo.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/starburst-logo.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/starburst-logo.scm Tue Jun 3 16:22:58 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/starburst-logo.scm Wed Aug 13 20:31:34 1997 @@ -44,8 +44,8 @@ (gimp-palette-set-background '(255 255 255)) (gimp-edit-fill img layer-mask) (gimp-selection-none img) - (plug-in-nova 1 img burst-layer (car burst-coords) (cdr burst-coords) (car burst-color) - (cadr burst-color) (caddr burst-color) burstradius) + (plug-in-nova 1 img burst-layer (car burst-coords) (cdr burst-coords) + burst-color burstradius 100) (gimp-selection-layer-alpha img text-layer) (gimp-palette-set-background '(0 0 0)) diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/starscape-logo.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/starscape-logo.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/starscape-logo.scm Fri Jun 6 20:47:13 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/starscape-logo.scm Wed Aug 13 20:31:34 1997 @@ -88,8 +88,7 @@ (gimp-palette-set-foreground '(255 255 255)) (gimp-blend img text-layer FG-BG-RGB NORMAL BILINEAR 100 0 REPEAT-NONE FALSE 0 0 cx cy bx by) - (plug-in-nova 1 img glow-layer novax novay (car glow-color) - (cadr glow-color) (caddr glow-color) novaradius) + (plug-in-nova 1 img glow-layer novax novay glow-color novaradius 100) (gimp-selection-all img) (gimp-patterns-set-pattern "Stone") diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/swirly-pattern.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/swirly-pattern.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/swirly-pattern.scm Tue Jun 3 16:25:10 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/swirly-pattern.scm Wed Aug 13 20:31:34 1997 @@ -82,7 +82,7 @@ "Create a swirly pattern" "Federico Mena Quintero" "Federico Mena Quintero" - "1997" + "June 1997" "" SF-VALUE "Quarter size" "20" SF-VALUE "Whirl angle" "90" diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/t-o-p.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/t-o-p.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/t-o-p.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/t-o-p.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,91 @@ +;; Trace of Particles Effect +;; Shuji Narazaki (narazaki@InetQ.or.jp) +;; Time-stamp: <1997/04/29 22:05:25 narazaki@InetQ.or.jp> +;; Version 0.2 + +(define (trace-of-particles base-color bg-color text size font hit-rate edge-size edge-only) + (let* ((img (car (gimp-image-new 256 256 RGB))) + (border (/ size 5)) + (text-layer (car (gimp-text img -1 0 0 text (* border 2) TRUE size PIXELS "*" font "*" "*" "*" "*"))) + (width (car (gimp-drawable-width text-layer))) + (height (car (gimp-drawable-height text-layer))) + (text-layer-mask (car (gimp-layer-create-mask text-layer BLACK-MASK))) + (sparkle-layer (car (gimp-layer-new img width height RGBA_IMAGE "Sparkle" 100 NORMAL))) + (shadow-layer (car (gimp-layer-new img width height RGBA_IMAGE "Shadow" 90 ADDITION))) + (bg-layer (car (gimp-layer-new img width height RGB_IMAGE "Background" 100 NORMAL))) + (selection 0) + (white '(255 255 255)) + (old-fg (car (gimp-palette-get-foreground))) + (old-bg (car (gimp-palette-get-background))) + (old-brush (car (gimp-brushes-get-brush))) + (old-paint-mode (car (gimp-brushes-get-paint-mode)))) + (gimp-image-disable-undo img) + (gimp-image-resize img width height 0 0) + (gimp-image-add-layer img sparkle-layer 2) + (gimp-image-add-layer img shadow-layer 3) + (gimp-image-add-layer img bg-layer 4) + (gimp-selection-none img) + (gimp-edit-clear img shadow-layer) + (gimp-edit-clear img sparkle-layer) + (gimp-palette-set-background base-color) + (gimp-edit-fill img sparkle-layer) + (gimp-palette-set-background base-color) + (gimp-selection-layer-alpha img text-layer) + (set! selection (car (gimp-selection-save img))) + (gimp-selection-grow img edge-size) + '(plug-in-noisify 1 img sparkle-layer FALSE + (* 0.1 hit-rate) (* 0.1 hit-rate) (* 0.1 hit-rate) 0.0) + (gimp-selection-border img edge-size) + (plug-in-noisify 1 img sparkle-layer FALSE hit-rate hit-rate hit-rate 0.0) + (gimp-selection-none img) + (plug-in-sparkle 1 img sparkle-layer 0.03 0.45 width 6 15) + (gimp-selection-load img selection) + (gimp-selection-shrink img edge-size) + (gimp-levels img sparkle-layer 0 0 255 1.2 0 255) + (gimp-selection-load img selection) + (gimp-selection-border img edge-size) + (gimp-levels img sparkle-layer 0 0 255 0.5 0 255) + (gimp-selection-load img selection) + (gimp-selection-grow img (/ edge-size 2.0)) + (gimp-selection-invert img) + (gimp-edit-clear img sparkle-layer) + (if (= 1 edge-only) + (begin + (gimp-selection-load img selection) + (gimp-selection-shrink img (/ edge-size 2.0)) + (gimp-edit-clear img sparkle-layer) + (gimp-selection-load img selection) + (gimp-selection-grow img (/ edge-size 2.0)) + (gimp-selection-invert img))) + (gimp-palette-set-foreground '(0 0 0)) + (gimp-palette-set-background '(255 255 255)) + (gimp-brushes-set-brush "Circle Fuzzy (11)") + (gimp-selection-feather img border) + (gimp-edit-fill img shadow-layer) + (gimp-selection-none img) + (gimp-palette-set-background base-color) + (gimp-edit-fill img bg-layer) + (gimp-selection-load img selection) + (gimp-brushes-set-brush "Circle Fuzzy (07)") + (gimp-palette-set-foreground '(255 255 255)) + (gimp-selection-none img) + (gimp-palette-set-foreground old-fg) + (gimp-palette-set-background old-bg) + (gimp-brushes-set-brush old-brush) + (gimp-brushes-set-paint-mode old-paint-mode) + (gimp-layer-set-visible text-layer 0) + (gimp-image-set-active-layer img sparkle-layer) + (gimp-image-enable-undo img) + (gimp-display-new img))) + +(script-fu-register "trace-of-particles" "Trace of Particles" + SF-VALUE "Text String" "\"The GIMP\"" + SF-VALUE "Font Size (in pixels)" "100" + SF-VALUE "Font" "\"Becker\"" + SF-VALUE "Hit Rate [0.0,1.0]" "0.2" + SF-VALUE "Edge Width" "2" + SF-VALUE "Edge Only [0/1]" "0" + SF-COLOR "Base Color" '(0 40 0) + SF-COLOR "Background Color" '(255 255 255)) + +; end of t-o-p.scm \ No newline at end of file diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/title-header.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/title-header.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/title-header.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/title-header.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,179 @@ +; The GIMP -- an image manipulation program +; Copyright (C) 1995 Spencer Kimball and Peter Mattis +; +; Bump-mapped title script --- create a bump-mapped title image for web pages +; Copyright (C) 1997 Federico Mena Quintero +; federico@nuclecu.unam.mx +; +; 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., 675 Mass Ave, Cambridge, MA 02139, USA. + + +(define (script-fu-title-header text + size + foundry + family + weight + slant + set-width + spacing) + (let* (; Parameters + + (padding 8) + (fade-width 64) + + ; Save foreground and background colors + + (old-fg-color (car (gimp-palette-get-foreground))) + (old-bg-color (car (gimp-palette-get-background))) + + ; Image + + (img (car (gimp-image-new 256 256 RGB))) + + ; Text layer + + (text-layer (car (gimp-text + img + -1 + 0 + 0 + text + padding + TRUE + size + PIXELS + foundry + family + weight + slant + set-width + spacing))) + (text-width (car (gimp-drawable-width text-layer))) + (text-height (car (gimp-drawable-height text-layer))) + + ; Sizes + + (text-layers-offset (/ text-height 2)) + + (img-width (+ text-layers-offset text-width fade-width)) + (img-height text-height) + + ; Additional layers + + (bg-layer (car (gimp-layer-new img img-width img-height RGBA_IMAGE "bg-layer" 100 NORMAL))) + (bumpmap-layer (car (gimp-layer-new img + text-width + text-height + RGBA_IMAGE + "bumpmap-layer" + 100 + NORMAL))) + (fore-layer (car (gimp-layer-new img text-width text-height RGBA_IMAGE "fore-layer" 100 NORMAL)))) + + ; Create image + + (gimp-image-disable-undo img) + (gimp-image-resize img img-width img-height 0 0) + + (gimp-image-add-layer img bg-layer -1) + (gimp-image-add-layer img bumpmap-layer -1) + (gimp-image-add-layer img fore-layer -1) + (gimp-image-add-layer img text-layer -1) + + (gimp-layer-set-offsets bg-layer 0 0) + (gimp-layer-set-offsets text-layer text-layers-offset 0) + (gimp-layer-set-offsets bumpmap-layer text-layers-offset 0) + (gimp-layer-set-offsets fore-layer text-layers-offset 0) + + ; Create bumpmap layer + + (gimp-palette-set-background '(0 0 0)) + (gimp-edit-fill img bumpmap-layer) + (gimp-selection-layer-alpha img text-layer) + (gimp-palette-set-background '(255 255 255)) + (gimp-edit-fill img bumpmap-layer) + (gimp-selection-none img) + (plug-in-gauss-rle 1 img bumpmap-layer 4.0 TRUE TRUE) + + ; Fore layer, bumpmap + + (gimp-palette-set-background '(255 255 255)) + (gimp-edit-fill img fore-layer) + (plug-in-bump-map 1 img fore-layer bumpmap-layer 135.0 45.0 4 0 0 FALSE FALSE 0) + + ; Text layer + + (gimp-layer-set-visible text-layer TRUE) + (gimp-layer-set-preserve-trans text-layer TRUE) + (gimp-blend img text-layer CUSTOM NORMAL LINEAR 100 0 REPEAT-NONE FALSE 0.2 3 + padding + padding + (- text-width padding 1) + (- text-height padding 1)) + + ; Semicircle at the left + + (gimp-palette-set-background '(0 0 0)) + (gimp-edit-fill img bg-layer) + + (gimp-ellipse-select img 0 0 text-height text-height REPLACE TRUE FALSE 0) + (gimp-palette-set-background (car (gimp-color-picker img -1 text-layers-offset 0 TRUE FALSE))) + (gimp-edit-fill img bg-layer) + + ; Fade-out gradient at the right + + (gimp-rect-select img (- img-width fade-width) 0 fade-width text-height REPLACE FALSE 0) + (gimp-palette-set-foreground (car (gimp-palette-get-background))) + (gimp-palette-set-background '(0 0 0)) + (gimp-blend img + bg-layer + FG-BG-RGB + NORMAL + LINEAR + 100 + 0 + REPEAT-NONE + FALSE + 0.2 + 3 + (- img-width fade-width) + 0 + (- img-width 1) + 0) + (gimp-selection-none img) + + ; Done + +; (gimp-image-flatten img) + (gimp-palette-set-foreground old-fg-color) + (gimp-palette-set-background old-bg-color) + (gimp-image-enable-undo img) + (gimp-display-new img))) + +(script-fu-register "script-fu-title-header" + "/Xtns/Script-Fu/Logos/Web title header" + "Web title header" + "Federico Mena Quintero" + "Federico Mena Quintero" + "June 1997" + "" + SF-VALUE "Text" "\"Hello world!\"" + SF-VALUE "Text size" "32" + SF-VALUE "Foundry" "\"ibm\"" + SF-VALUE "Family" "\"helvetica\"" + SF-VALUE "Weight" "\"bold\"" + SF-VALUE "Slant" "\"r\"" + SF-VALUE "Set width" "\"normal\"" + SF-VALUE "Spacing" "\"p\"") diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/trochoid.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/trochoid.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/trochoid.scm Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/trochoid.scm Wed Aug 13 20:31:34 1997 @@ -0,0 +1,397 @@ +;;; trochoid.scm -*-scheme-*- +;;; Time-stamp: <1997/06/13 23:15:23 narazaki@InetQ.or.jp> +;;; This file is a part of: +;;; The GIMP (Copyright (C) 1995 Spencer Kimball and Peter Mattis) +;;; Author: Shuji Narazaki (narazaki@InetQ.or.jp) +;;; Version 1.0 + +;;; Code: + +(define (script-fu-trochoid base-radius-f wheel-radius-f pen-pos hue-rate + erase-before-draw) + (if 'not-guile (define modulo fmod)) + (define (floor x) (- x (fmod x 1))) + (define *prime-table* + '(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)) + + (define (LCM x y) ; Least Common Multiple + (define (divide? x y) (= 0 (modulo x y))) + (define (factorize x) + (define (f-aux x p-list result) + (cond ((= x 1) + (nreverse result)) + ((null? p-list) + (nreverse (cons (list x 1) result))) + ((divide? x (car p-list)) + (let ((times 1) + (p (car p-list))) + (set! x (/ x p)) + (while (divide? x p) + (set! times (+ times 1)) + (set! x (/ x p))) + (f-aux x (cdr p-list) (cons (list p times) result)))) + ('else (f-aux x (cdr p-list) result)))) + (f-aux x *prime-table* '())) + (define (extend-prime-table limit) + (let ((index (+ (car *prime-table*) 1))) + (while (< index limit) + (let ((prime? #t) + (table *prime-table*)) + (while (and (not (null? table)) prime?) + (if (divide? index (car table)) + (set! prime? #f) + (set! table (cdr table)))) + (if prime? + (set! *prime-table* + (nreverse (cons index (nreverse *prime-table*)))))) + (set! index (+ index 1))))) + (define (aux l1 l2 result) + (cond ((and (null? l1) (null? l2)) result) + ((null? l1) (append l2 result)) + ((null? l2) (append l1 result)) + ((= (car (car l1)) (car (car l2))) + (aux (cdr l1) (cdr l2) (cons (list (car (car l1)) + (max (cadr (car l1)) + (cadr (car l2)))) + result))) + ((< (car (car l1)) (car (car l2))) + (aux (cdr l1) l2 (cons (car l1) result))) + ('else + (aux l1 (cdr l2) (cons (car l2) result))))) + (if (< (pow (car (reverse *prime-table*)) 2) (max x y)) + (extend-prime-table (sqrt (max x y)))) + (let ((f-list (aux (factorize x) (factorize y) '())) + (result 1)) + (while (not (null? f-list)) + (set! result (* (pow (car (car f-list)) (cadr (car f-list))) result)) + (set! f-list (cdr f-list))) + result)) + + (define (rgb-to-hsv rgb hsv) + (let* ((red (floor (nth 0 rgb))) + (green (floor (nth 1 rgb))) + (blue (floor (nth 2 rgb))) + (h 0.0) + (s 0.0) + (minv (min red (min green blue))) + (maxv (max red (max green blue))) + (v maxv) + (delta 0)) + (if (not (= 0 maxv)) + (set! s (/ (* (- maxv minv) 255.0) maxv)) + (set! s 0.0)) + (if (= 0.0 s) + (set! h 0.0) + (begin + (set! delta (- maxv minv)) + (cond ((= maxv red) + (set! h (/ (- green blue) delta))) + ((= maxv green) + (set! h (+ 2.0 (/ (- blue red) delta)))) + ((= maxv blue) + (set! h (+ 4.0 (/ (- red green) delta))))) + (set! h (* 42.5 h)) + (if (< h 0.0) + (set! h (+ h 255.0))) + (if (< 255 h) + (set! h (- h 255.0))))) + (set-car! hsv (floor h)) + (set-car! (cdr hsv) (floor s)) + (set-car! (cddr hsv) (floor v)))) + +;;; hsv-to-rgb that does not consume new cons cell + (define (hsv-to-rgb hsv rgb) + (let ((h (nth 0 hsv)) + (s (nth 1 hsv)) + (v (nth 2 hsv)) + (hue 0) + (saturation 0) + (value 0)) + (if (= s 0) + (begin + (set! h v) + (set! s v)) + (let ((f 0) + (p 0) + (q 0) + (t 0)) + (set! hue (/ (* 6 h) 255)) + (if (= hue 6.0) + (set! hue 0.0)) + (set! saturation (/ s 255.0)) + (set! value (/ v 255.0)) + (set! f (- hue (floor hue))) + (set! p (* value (- 1.0 saturation))) + (set! q (* value (- 1.0 (* saturation f)))) + (set! t (* value (- 1.0 (* saturation (- 1.0 f))))) + (let ((tmp (floor hue))) + (cond ((= 0 tmp) + (set! h (* value 255)) + (set! s (* t 255)) + (set! v (* p 255))) + ((= 1 tmp) + (set! h (* q 255)) + (set! s (* value 255)) + (set! v (* p 255))) + ((= 2 tmp) + (set! h (* p 255)) + (set! s (* value 255)) + (set! v (* t 255))) + ((= 3 tmp) + (set! h (* p 255)) + (set! s (* q 255)) + (set! v (* value 255))) + ((= 4 tmp) + (set! h (* t 255)) + (set! s (* p 255)) + (set! v (* value 255))) + ((= 5 tmp) + (set! h (* value 255)) + (set! s (* p 255)) + (set! v (* q 255))))))) + (set-car! rgb h) + (set-car! (cdr rgb) s) + (set-car! (cddr rgb) v))) + + ;; segment is + ;; filled-index (integer) + ;; size as number of points (integer) + ;; vector (which size is 2 * size) + (define (make-segment length x y) + (if (< 64 length) + (set! length 64)) + (if (< length 5) + (set! length 5)) + (let ((vec (cons-array (* 2 length) 'double))) + (aset vec 0 x) + (aset vec 1 y) + (list 1 length vec))) + + ;; accessors + (define (segment-filled-size segment) (car segment)) + (define (segment-max-size segment) (cadr segment)) + (define (segment-strokes segment) (caddr segment)) + + (define (update-segment! center-x center-y angle1 rad1 angle2 rad2 segment) + (define (fill-segment! new-x new-y segment) + (define (shift-segment! segment) + (let ((base 0) + (size (cadr segment)) + (vec (caddr segment)) + (offset 2)) + (while (< base offset) + (aset vec (* 2 base) + (aref vec (* 2 (- size (- offset base))))) + (aset vec (+ (* 2 base) 1) + (aref vec (+ (* 2 (- size (- offset base))) 1))) + (set! base (+ base 1))) + (set-car! segment base))) + (let ((base (car segment)) + (size (cadr segment)) + (vec (caddr segment))) + (if (= base 0) + (begin + (shift-segment! segment) + (set! base (segment-filled-size segment)))) + (if (and (= new-x (aref vec (* 2 (- base 1)))) + (= new-y (aref vec (+ (* 2 (- base 1)) 1)))) + #f + (begin + (aset vec (* 2 base) new-x) + (aset vec (+ (* 2 base) 1) new-y) + (set! base (+ base 1)) + (if (= base size) + (begin + (set-car! segment 0) + #t) + (begin + (set-car! segment base) + #f)))))) + (set! angel1 (fmod angle1 (* 2 *pi*))) + (set! angel2 (fmod angle2 (* 2 *pi*))) + (fill-segment! (+ center-x + (* rad1 (sin angle1)) + (* rad2 (- (sin angle2)))) + (+ center-y + (* rad1 (cos angle1)) + (* rad2 (cos angle2))) + segment)) + + ; (set-brush-color! index total-step hue-rate rgb hsv) + ; (set! drawable-to-erase drawable) + (define (draw-segment img drawable drawable-to-erase single-drawable? + segment limit rgb background-color + stroke-overwrite keep-opacity paint-mode) + (if (not stroke-overwrite) + (begin ; erase crossover region + (if (< keep-opacity 100) (gimp-brushes-set-opacity 100)) + (if single-drawable? + (begin + (gimp-brushes-set-paint-mode NORMAL) + (gimp-palette-set-foreground background-color) + (gimp-airbrush img drawable-to-erase 100 + (* 2 limit) (segment-strokes segment)) + (gimp-brushes-set-paint-mode paint-mode)) + (gimp-eraser img drawable-to-erase (* 2 limit) + (segment-strokes segment))) + (if (< keep-opacity 100) (gimp-brushes-set-opacity keep-opacity)))) + (gimp-palette-set-foreground rgb) + (gimp-airbrush img drawable 100 (* 2 limit) (segment-strokes segment))) + + (define (set-brush-color! index max-index hue-rate rgb hsv) + (if (= 0 hue-rate) + rgb + (let* ((max-hue 254) + (hue (* max-hue (fmod (/ (* index (abs hue-rate)) max-index) 1)))) + (if (< hue-rate 0) + (set! hue (- max-hue hue))) + (set-car! hsv hue) + (hsv-to-rgb hsv rgb) + rgb))) + + (define (trochoid-rotate-gear total-distance img use-this-drawable center-x + center-y base-radius wheel-radius pen-pos hue-rate + layer-paint-mode stroke-overwrite) + (let* ((rad-of-wheel 0) + (steps-for-circle 100.0) + (wheel-spin (/ total-distance (abs wheel-radius))) + (total-step (* wheel-spin steps-for-circle)) + (loop-num (max (* 2 (/ total-distance base-radius)) + (/ total-distance (abs wheel-radius)))) + (steps-for-a-loop (/ total-step loop-num)) + (w2r (/ (abs wheel-radius) base-radius)) + (rad-of-step (/ (* 2.0 *pi*) steps-for-circle)) + (brush-opacity (car (gimp-brushes-get-opacity))) + (rgb (car (gimp-palette-get-foreground))) + (drawable use-this-drawable) + (drawable-to-erase use-this-drawable) + (paint-mode (car (gimp-brushes-get-paint-mode))) + (background-color (car (gimp-palette-get-background))) + (hsv '(0 255 255)) + (index 0) + (iindex 0) + (center2wheel (+ base-radius wheel-radius)) + (wheel2pen (* (abs wheel-radius) pen-pos)) + (segment (make-segment + (if (= 0 hue-rate) + 32 + (max 4 (floor (/ (/ total-step (abs hue-rate)) 255.0)))) + center-x (+ center-y center2wheel wheel2pen)))) + (while (< 0 loop-num) + (set! iindex 0) + (if (null? use-this-drawable) + (begin + (if drawable (set! drawable-to-erase drawable)) + (set! drawable (car (gimp-layer-copy + (or drawable + (car (gimp-image-get-active-layer img))) + 1))) + (if (not drawable-to-erase) (set! drawable-to-erase drawable)) + (gimp-image-add-layer img drawable 0) + (gimp-layer-set-mode drawable layer-paint-mode) + (gimp-layer-set-name drawable + (string-append "cricle " + (number->string loop-num))) + (gimp-edit-clear img drawable))) + (while (< iindex steps-for-a-loop) ; draw a circle + (set! rad-of-wheel (* rad-of-step index)) + (if (update-segment! center-x center-y + (* w2r rad-of-wheel) center2wheel + rad-of-wheel wheel2pen + segment) + (begin + (draw-segment img drawable drawable-to-erase use-this-drawable + segment (segment-max-size segment) + (set-brush-color! index total-step hue-rate rgb hsv) + background-color + stroke-overwrite brush-opacity paint-mode) + (set! drawable-to-erase drawable))) + (set! index (+ index 1)) + (set! iindex (+ iindex 1))) + (if use-this-drawable (gimp-displays-flush)) + (set! loop-num (- loop-num 1))) + (while (<= index total-step) + (set! rad-of-wheel (* rad-of-step index)) + (if (update-segment! center-x center-y + (* w2r rad-of-wheel) center2wheel + rad-of-wheel wheel2pen + segment) + (begin + (draw-segment img drawable drawable-to-erase use-this-drawable + segment (segment-max-size segment) + (set-brush-color! index total-step hue-rate rgb hsv) + background-color + stroke-overwrite brush-opacity paint-mode) + (set! drawable-to-erase drawable))) + (set! index (+ index 1))) + (if (< 1 (segment-filled-size segment)) + (draw-segment img drawable drawable-to-erase use-this-drawable + segment (segment-filled-size segment) + (set-brush-color! index total-step hue-rate rgb hsv) + background-color + stroke-overwrite brush-opacity paint-mode)))) + ;; start of script-fu-trochoid + (let* ((base-radius (floor (abs base-radius-f))) ; to int + (wheel-radius (floor wheel-radius-f)) ; to int + (total-step-num (if (or (= 0 base-radius) (= 0 wheel-radius)) + 1 + (LCM base-radius (abs wheel-radius)))) + (brush-size (gimp-brushes-get-brush)) + (drawable-size (if (or (= 0 base-radius) (= 0 wheel-radius)) + 256 + (* 2.0 (+ base-radius + (max (* 2 wheel-radius) 0) + (max (nth 1 brush-size) + (nth 2 brush-size)))))) + (img (car (gimp-image-new drawable-size drawable-size RGB))) + (BG-layer (car (gimp-layer-new img drawable-size drawable-size + RGBA_IMAGE "background" 100 NORMAL))) + (layer-paint-mode 0) + (the-layer #f) + (old-paint-mode (car (gimp-brushes-get-paint-mode))) + (old-rgb (car (gimp-palette-get-foreground)))) + (gimp-image-disable-undo img) + (gimp-image-add-layer img BG-layer 0) + (gimp-edit-fill img BG-layer) + (if (<= 0 erase-before-draw) ; HDDN FTR (2SLW) + (begin + (set! the-layer (car (gimp-layer-new img drawable-size drawable-size + RGBA_IMAGE "the curve" + 100 NORMAL))) + (gimp-image-add-layer img the-layer 0) + (if (= NORMAL old-paint-mode) + (gimp-edit-clear img the-layer) + (gimp-edit-fill img the-layer))) + (begin + (set! layer-paint-mode (- 1 erase-before-draw)) + (gimp-image-set-active-layer img BG-layer))) + (gimp-display-new img) + (gimp-displays-flush) + (if (or (= base-radius 0) (= wheel-radius 0)) + (gimp-text img -1 0 0 + "`Base-radius'\n and\n`Rad.;hyp<0/Xtns/Script-Fu/Patterns/Trochoid" + "Draw Trochoid Curve" + "Shuji Narazaki " + "Shuji Narazaki" + "1997" + "" + SF-VALUE "Base radius (pixel)" "40" + SF-VALUE "Wheel Radius (hypo < 0 < epi)" "60" + SF-VALUE "Pen rad./wheel rad. [0.0:1.0]" "0.8" + SF-VALUE "Hue rate " "1.0" + SF-VALUE "Erase before draw? [0/1]" "0" +) + +;;; trochoid.scm ends here diff -u --recursive --new-file gimp-0.99.10/plug-ins/script-fu/scripts/weave.scm gimp-0.99.pre11/plug-ins/script-fu/scripts/weave.scm --- gimp-0.99.10/plug-ins/script-fu/scripts/weave.scm Tue Jun 3 16:27:18 1997 +++ gimp-0.99.pre11/plug-ins/script-fu/scripts/weave.scm Wed Aug 13 20:31:34 1997 @@ -356,7 +356,7 @@ "Weave effect a la Alien Skin" "Federico Mena Quintero" "Federico Mena Quintero" - "1997" + "June 1997" "RGB*, GRAY*" SF-IMAGE "Image to weave" 0 SF-DRAWABLE "Drawable to weave" 0 diff -u --recursive --new-file gimp-0.99.10/plug-ins/sharpen.c gimp-0.99.pre11/plug-ins/sharpen.c --- gimp-0.99.10/plug-ins/sharpen.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/sharpen.c Wed Aug 13 21:07:43 1997 @@ -0,0 +1,975 @@ +/* + * "$Id: sharpen.c,v 1.2 1997/06/08 22:27:35 mike Exp mike $" + * + * Sharpen filters for The GIMP -- an image manipulation program + * + * Copyright 1997 Michael Sweet. + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contents: + * + * main() - Main entry - just call gimp_main()... + * query() - Respond to a plug-in query... + * run() - Run the filter... + * sharpen() - Sharpen an image using a median filter. + * sharpen_dialog() - Popup a dialog window for the filter box size... + * preview_init() - Initialize the preview window... + * preview_scroll_callback() - Update the preview when a scrollbar is moved. + * preview_update() - Update the preview window. + * preview_exit() - Free all memory used by the preview window... + * dialog_create_ivalue() - Create an integer value control... + * dialog_iscale_update() - Update the value field using the scale. + * dialog_ientry_update() - Update the value field using the text entry. + * dialog_ok_callback() - Start the filter... + * dialog_cancel_callback() - Cancel the filter... + * dialog_close_callback() - Exit the filter dialog application. + * + * Revision History: + * + * $Log: sharpen.c,v $ + * Revision 1.2 1997/06/08 22:27:35 mike + * Updated sharpen code for hard-coded 3x3 convolution matrix. + * + * Revision 1.1 1997/06/08 16:46:07 mike + * Initial revision + */ + +#include +#include +#include +#include +#include +#include + + +/* + * Macros... + */ + +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) + + +/* + * Constants... + */ + +#define PLUG_IN_NAME "plug_in_sharpen" +#define PLUG_IN_VERSION "1.01" +#define PREVIEW_SIZE 128 +#define SCALE_WIDTH 64 +#define ENTRY_WIDTH 64 + + +/* + * Local functions... + */ + +static void query(void); +static void run(char *, int, GParam *, int *, GParam **); +static void sharpen(void); +static gint sharpen_dialog(void); +static void dialog_create_ivalue(char *, GtkTable *, int, gint *, int, int); +static void dialog_iscale_update(GtkAdjustment *, gint *); +static void dialog_ientry_update(GtkWidget *, gint *); +static void dialog_ok_callback(GtkWidget *, gpointer); +static void dialog_cancel_callback(GtkWidget *, gpointer); +static void dialog_close_callback(GtkWidget *, gpointer); + +static void preview_init(void); +static void preview_exit(void); +static void preview_update(void); +static void preview_scroll_callback(void); + + +/* + * Globals... + */ + +GPlugInInfo PLUG_IN_INFO = + { + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run /* run_proc */ + }; + +GtkWidget *preview; /* Preview widget */ +int preview_width, /* Width of preview widget */ + preview_height, /* Height of preview widget */ + preview_x1, /* Upper-left X of preview */ + preview_y1, /* Upper-left Y of preview */ + preview_x2, /* Lower-right X of preview */ + preview_y2; /* Lower-right Y of preview */ +guchar *preview_src, /* Source pixel image */ + *preview_dst, /* Destination pixel image */ + *preview_image; /* Preview RGB image */ +GtkObject *hscroll_data, /* Horizontal scrollbar data */ + *vscroll_data; /* Vertical scrollbar data */ + +GDrawable *drawable = NULL; /* Current image */ +int sel_x1, /* Selection bounds */ + sel_y1, + sel_x2, + sel_y2; +int sel_width, /* Selection width */ + sel_height; /* Selection height */ +int img_bpp; /* Bytes-per-pixel in image */ +int sharpen_percent = 10; /* Percent of sharpening */ +gint run_filter = FALSE; /* True if we should run the filter */ + + +/* + * 'main()' - Main entry - just call gimp_main()... + */ + +int +main(int argc, /* I - Number of command-line args */ + char *argv[]) /* I - Command-line args */ +{ + return (gimp_main(argc, argv)); +} + + +/* + * 'query()' - Respond to a plug-in query... + */ + +static void +query(void) +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_INT32, "percent", "Percent sharpening (default = 10)" } + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof(args) / sizeof(args[0]), + nreturn_vals = 0; + + + gimp_install_procedure(PLUG_IN_NAME, + "Sharpen filter, typically used to \'sharpen\' a photographic image.", + "This plug-in selectively performs a convolution filter on an image.", + "Michael Sweet", "Michael Sweet", + PLUG_IN_VERSION, "/Filters/Image/Sharpen...", "RGB*, GRAY*", + PROC_PLUG_IN, nargs, nreturn_vals, args, return_vals); +} + + +/* + * 'run()' - Run the filter... + */ + +static void +run(char *name, /* I - Name of filter program. */ + int nparams, /* I - Number of parameters passed in */ + GParam *param, /* I - Parameter values */ + int *nreturn_vals, /* O - Number of return values */ + GParam **return_vals) /* O - Return values */ +{ + GRunModeType run_mode; /* Current run mode */ + GStatusType status; /* Return status */ + static GParam values[1]; /* Return values */ + + + /* + * Initialize parameter data... + */ + + status = STATUS_SUCCESS; + run_mode = param[0].data.d_int32; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + *nreturn_vals = 1; + *return_vals = values; + + /* + * Get drawable information... + */ + + drawable = gimp_drawable_get(param[2].data.d_drawable); + + gimp_drawable_mask_bounds(drawable->id, &sel_x1, &sel_y1, &sel_x2, &sel_y2); + + sel_width = sel_x2 - sel_x1; + sel_height = sel_y2 - sel_y1; + img_bpp = gimp_drawable_bpp(drawable->id); + + /* + * See how we will run + */ + + switch (run_mode) + { + case RUN_INTERACTIVE : + /* + * Possibly retrieve data... + */ + + gimp_get_data(PLUG_IN_NAME, &sharpen_percent); + + /* + * Get information from the dialog... + */ + + if (!sharpen_dialog()) + return; + break; + + case RUN_NONINTERACTIVE : + /* + * Make sure all the arguments are present... + */ + + if (nparams != 4) + status = STATUS_CALLING_ERROR; + else + sharpen_percent = param[3].data.d_int32; + break; + + case RUN_WITH_LAST_VALS : + /* + * Possibly retrieve data... + */ + + gimp_get_data(PLUG_IN_NAME, &sharpen_percent); + break; + + default : + status = STATUS_CALLING_ERROR; + break;; + }; + + /* + * Sharpen the image... + */ + + if (status == STATUS_SUCCESS) + { + if ((gimp_drawable_color(drawable->id) || + gimp_drawable_gray(drawable->id))) + { + /* + * Set the tile cache size... + */ + + gimp_tile_cache_ntiles((drawable->width + gimp_tile_width() - 1) / + gimp_tile_width()); + + /* + * Run! + */ + + sharpen(); + + /* + * If run mode is interactive, flush displays... + */ + + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush(); + + /* + * Store data... + */ + + if (run_mode == RUN_INTERACTIVE) + gimp_set_data(PLUG_IN_NAME, &sharpen_percent, sizeof(sharpen_percent)); + } + else + status = STATUS_EXECUTION_ERROR; + }; + + /* + * Reset the current run status... + */ + + values[0].data.d_status = status; + + /* + * Detach from the drawable... + */ + + gimp_drawable_detach(drawable); +} + + +/* + * 'sharpen()' - Sharpen an image using a convolution filter. + */ + +static void +sharpen(void) +{ + GPixelRgn src_rgn, /* Source image region */ + dst_rgn; /* Destination image region */ + guchar *src_rows[4], /* Source pixel rows */ + *dst_row, /* Destination pixel row */ + *dst_ptr, /* Current destination pixel */ + *src_filters[3];/* Source pixels, ordered for filter */ + int i, j, t, d, /* Looping vars */ + x, y, /* Current location in image */ + xmax, /* Maximum filtered X coordinate */ + row, /* Current row in src_rows */ + trow, /* Looping var */ + count, /* Current number of filled src_rows */ + width; /* Byte width of the image */ + int fact; /* Scaling for convolution matrix */ + + /* + * Let the user know what we're doing... + */ + + gimp_progress_init("Sharpening..."); + + /* + * Setup for filter... + */ + + gimp_pixel_rgn_init(&src_rgn, drawable, sel_x1, sel_y1, sel_width, sel_height, FALSE, FALSE); + gimp_pixel_rgn_init(&dst_rgn, drawable, sel_x1, sel_y1, sel_width, sel_height, TRUE, TRUE); + + fact = 100 - sharpen_percent; + if (fact < 1) + fact = 1; + + width = sel_width * img_bpp; + xmax = width - img_bpp; + + for (row = 0; row < 4; row ++) + src_rows[row] = g_malloc(width * sizeof(guchar)); + + dst_row = g_malloc(width * sizeof(guchar)); + + /* + * Pre-load the first row for the filter... + */ + + gimp_pixel_rgn_get_row(&src_rgn, src_rows[0], sel_x1, sel_y1, sel_width); + row = 1; + count = 1; + + /* + * Sharpen... + */ + + for (y = sel_y1; y < sel_y2; y ++) + { + /* + * Load the next pixel row... + */ + + if ((y + 1) < sel_y2) + { + /* + * Check to see if our src_rows[] array is overflowing yet... + */ + + if (count >= 3) + count --; + + /* + * Grab the next row... + */ + + gimp_pixel_rgn_get_row(&src_rgn, src_rows[row], sel_x1, y + 1, sel_width); + + count ++; + row = (row + 1) & 3; + } + else + { + /* + * No more pixels at the bottom... Drop the oldest samples... + */ + + count --; + }; + + /* + * Now sharpen pixels and save the results... + */ + + if (count == 3) + { + for (i = 0, trow = (row + 1) & 3; + i < 3; + i ++, trow = (trow + 1) & 3) + src_filters[i] = src_rows[trow]; + + for (x = img_bpp, dst_ptr = dst_row + img_bpp; + x < xmax; + x ++, dst_ptr ++) + { + i = (100 * src_filters[1][x] - + (src_filters[0][x - img_bpp] + src_filters[0][x] + + src_filters[0][x + img_bpp] + src_filters[1][x - img_bpp] + + src_filters[1][x + img_bpp] + src_filters[2][x - img_bpp] + + src_filters[2][x] + src_filters[2][x + img_bpp]) * + sharpen_percent / 9) / fact; + + if (i < 0) + *dst_ptr = 0; + else if (i > 255) + *dst_ptr = 255; + else + *dst_ptr = i; + }; + + gimp_pixel_rgn_set_row(&dst_rgn, dst_row + img_bpp, sel_x1 + 1, y, sel_width - 2); + }; + + if ((y & 15) == 0) + gimp_progress_update((double)(y - sel_y1) / (double)sel_height); + }; + + /* + * OK, we're done. Free all memory used... + */ + + for (row = 0; row < 4; row ++) + g_free(src_rows[row]); + + g_free(dst_row); + + /* + * Update the screen... + */ + + gimp_drawable_flush(drawable); + gimp_drawable_merge_shadow(drawable->id, TRUE); + gimp_drawable_update(drawable->id, sel_x1, sel_y1, sel_width, sel_height); +} + + +/* + * 'sharpen_dialog()' - Popup a dialog window for the filter box size... + */ + +static gint +sharpen_dialog(void) +{ + GtkWidget *dialog, /* Dialog window */ + *table, /* Table "container" for controls */ + *ptable, /* Preview table */ + *frame, /* Frame for preview */ + *scrollbar, /* Horizontal + vertical scroller */ + *button; /* OK/Cancel buttons */ + gint argc; /* Fake argc for GUI */ + gchar **argv; /* Fake argv for GUI */ + guchar *color_cube; /* Preview color cube... */ + + + /* + * Initialize the program's display... + */ + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup("sharpen"); + + gtk_init(&argc, &argv); + gtk_rc_parse(gimp_gtkrc()); + gdk_set_use_xshm(gimp_use_xshm()); + + gtk_preview_set_gamma(gimp_gamma()); + gtk_preview_set_install_cmap(gimp_install_cmap()); + color_cube = gimp_color_cube(); + gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], color_cube[3]); + + gtk_widget_set_default_visual(gtk_preview_get_visual()); + gtk_widget_set_default_colormap(gtk_preview_get_cmap()); + + /* + * Dialog window... + */ + + dialog = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dialog), "Sharpen"); + gtk_window_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); + gtk_container_border_width(GTK_CONTAINER(dialog), 0); + gtk_signal_connect(GTK_OBJECT(dialog), "destroy", + (GtkSignalFunc) dialog_close_callback, + NULL); + + /* + * Top-level table for dialog... + */ + + table = gtk_table_new(3, 3, FALSE); + gtk_container_border_width(GTK_CONTAINER(table), 6); + gtk_table_set_row_spacings(GTK_TABLE(table), 4); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, FALSE, FALSE, 0); + gtk_widget_show(table); + + /* + * Preview window... + */ + + ptable = gtk_table_new(2, 2, FALSE); + gtk_container_border_width(GTK_CONTAINER(ptable), 0); + gtk_table_attach(GTK_TABLE(table), ptable, 0, 3, 0, 1, 0, 0, 0, 0); + gtk_widget_show(ptable); + + frame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); + gtk_table_attach(GTK_TABLE(ptable), frame, 0, 1, 0, 1, 0, 0, 0, 0); + gtk_widget_show(frame); + + preview_width = MIN(sel_width, PREVIEW_SIZE); + preview_height = MIN(sel_height, PREVIEW_SIZE); + + preview = gtk_preview_new(GTK_PREVIEW_COLOR); + gtk_preview_size(GTK_PREVIEW(preview), preview_width, preview_height); + gtk_container_add(GTK_CONTAINER(frame), preview); + gtk_widget_show(preview); + + hscroll_data = gtk_adjustment_new(0, 0, sel_width - 1, 1.0, + MIN(preview_width, sel_width), + MIN(preview_width, sel_width)); + + gtk_signal_connect(hscroll_data, "value_changed", + (GtkSignalFunc)preview_scroll_callback, NULL); + + scrollbar = gtk_hscrollbar_new(GTK_ADJUSTMENT(hscroll_data)); + gtk_range_set_update_policy(GTK_RANGE(scrollbar), GTK_UPDATE_CONTINUOUS); + gtk_table_attach(GTK_TABLE(ptable), scrollbar, 0, 1, 1, 2, GTK_FILL, 0, 0, 0); + gtk_widget_show(scrollbar); + + vscroll_data = gtk_adjustment_new(0, 0, sel_height - 1, 1.0, + MIN(preview_height, sel_height), + MIN(preview_height, sel_height)); + + gtk_signal_connect(vscroll_data, "value_changed", + (GtkSignalFunc)preview_scroll_callback, NULL); + + scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(vscroll_data)); + gtk_range_set_update_policy(GTK_RANGE(scrollbar), GTK_UPDATE_CONTINUOUS); + gtk_table_attach(GTK_TABLE(ptable), scrollbar, 1, 2, 0, 1, 0, GTK_FILL, 0, 0); + gtk_widget_show(scrollbar); + + preview_init(); + + /* + * Sharpness control... + */ + + dialog_create_ivalue("Sharpness", GTK_TABLE(table), 2, &sharpen_percent, 1, 99); + + /* + * OK, cancel buttons... + */ + + gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 6); + + button = gtk_button_new_with_label("OK"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) dialog_ok_callback, + dialog); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) dialog_cancel_callback, + dialog); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + /* + * Show it and wait for the user to do something... + */ + + gtk_widget_show(dialog); + + preview_update(); + + gtk_main(); + gdk_flush(); + + /* + * Free the preview data... + */ + + preview_exit(); + + /* + * Return ok/cancel... + */ + + return (run_filter); +} + + +/* + * 'preview_init()' - Initialize the preview window... + */ + +static void +preview_init(void) +{ + int row, /* Current row in preview_srcs */ + width; /* Byte width of the image */ + + + /* + * Setup for preview filter... + */ + + width = preview_width * img_bpp; + + preview_src = g_malloc(width * preview_height * sizeof(guchar)); + preview_dst = g_malloc(width * preview_height * sizeof(guchar)); + preview_image = g_malloc(preview_width * preview_height * 3 * sizeof(guchar)); + + preview_x1 = sel_x1; + preview_y1 = sel_y1; + preview_x2 = preview_x1 + preview_width; + preview_y2 = preview_y1 + preview_height; +} + + +/* + * 'preview_scroll_callback()' - Update the preview when a scrollbar is moved. + */ + +static void +preview_scroll_callback(void) +{ + preview_x1 = sel_x1 + GTK_ADJUSTMENT(hscroll_data)->value; + preview_y1 = sel_y1 + GTK_ADJUSTMENT(vscroll_data)->value; + preview_x2 = preview_x1 + MIN(preview_width, sel_width); + preview_y2 = preview_y1 + MIN(preview_height, sel_height); + + preview_update(); +} + + +/* + * 'preview_update()' - Update the preview window. + */ + +static void +preview_update(void) +{ + GPixelRgn src_rgn; /* Source image region */ + guchar *src_ptr, /* Current source pixel */ + *dst_ptr, /* Current destination pixel */ + *image_ptr; /* Current image pixel */ + int i, j, t, d, /* Looping vars */ + x, y, /* Current location in image */ + xmax, /* Maximum X coordinate */ + width, /* Byte width of the image */ + fact; /* Scaling for convolution matrix */ + + + /* + * Setup for filter... + */ + + gimp_pixel_rgn_init(&src_rgn, drawable, preview_x1, preview_y1, preview_width, preview_height, FALSE, FALSE); + + fact = 100 - sharpen_percent; + if (fact < 1) + fact = 1; + + width = preview_width * img_bpp; + xmax = width - img_bpp; + + /* + * Pre-load the first row for the filter... + */ + + gimp_pixel_rgn_get_rect(&src_rgn, preview_src, preview_x1, preview_y1, + preview_width, preview_height); + + /* + * Sharpen... + */ + + memcpy(preview_dst, preview_src, width); + memcpy(preview_dst + width * (preview_height - 1), + preview_src + width * (preview_height - 1), + width); + + for (y = 1, src_ptr = preview_src + width, dst_ptr = preview_dst + width; + y < (preview_height - 1); + y ++, src_ptr += width, dst_ptr += width) + { + /* + * Now sharpen pixels and save the results... + */ + + memcpy(dst_ptr, src_ptr, img_bpp); + memcpy(dst_ptr + width - img_bpp, src_ptr + width - img_bpp, img_bpp); + + for (x = img_bpp; x < xmax; x ++) + { + i = (100 * src_ptr[x] - + (src_ptr[x - width - img_bpp] + src_ptr[x - width] + + src_ptr[x - width + img_bpp] + src_ptr[x - img_bpp] + + src_ptr[x + img_bpp] + src_ptr[x + width - img_bpp] + + src_ptr[x + width] + src_ptr[x + width + img_bpp]) * + sharpen_percent / 9) / fact; + + if (i < 0) + dst_ptr[x] = 0; + else if (i > 255) + dst_ptr[x] = 255; + else + dst_ptr[x] = i; + }; + }; + + /* + * Draw the preview image... + */ + + switch (img_bpp) + { + case 1 : + case 2 : + for (x = preview_width * preview_height, dst_ptr = preview_dst, + image_ptr = preview_image; + x > 0; + x --, dst_ptr += img_bpp, image_ptr += 3) + image_ptr[0] = image_ptr[1] = image_ptr[2] = *dst_ptr; + + for (y = 0, image_ptr = preview_image; + y < preview_height; + y ++, image_ptr += preview_width * 3) + gtk_preview_draw_row(GTK_PREVIEW(preview), image_ptr, 0, y, + preview_width); + break; + + case 3 : + for (y = 0, image_ptr = preview_dst; + y < preview_height; + y ++, image_ptr += preview_width * 3) + gtk_preview_draw_row(GTK_PREVIEW(preview), image_ptr, 0, y, + preview_width); + break; + + case 4 : + for (x = 0, dst_ptr = preview_dst, image_ptr = preview_image; + x < preview_width; + x ++, dst_ptr += 4, image_ptr += 3) + { + image_ptr[0] = dst_ptr[0]; + image_ptr[1] = dst_ptr[1]; + image_ptr[2] = dst_ptr[2]; + }; + + for (y = 0, image_ptr = preview_image; + y < preview_height; + y ++, image_ptr += preview_width * 3) + gtk_preview_draw_row(GTK_PREVIEW(preview), image_ptr, 0, y, + preview_width); + break; + }; + + gtk_widget_draw(preview, NULL); + gdk_flush(); +} + + +/* + * 'preview_exit()' - Free all memory used by the preview window... + */ + +static void +preview_exit(void) +{ + int row; /* Looping var */ + + + g_free(preview_src); + g_free(preview_dst); + g_free(preview_image); +} + + +/* + * 'dialog_create_ivalue()' - Create an integer value control... + */ + +static void +dialog_create_ivalue(char *title, /* I - Label for control */ + GtkTable *table, /* I - Table container to use */ + int row, /* I - Row # for container */ + gint *value, /* I - Value holder */ + int left, /* I - Minimum value for slider */ + int right) /* I - Maximum value for slider */ +{ + GtkWidget *label, /* Control label */ + *scale, /* Scale widget */ + *entry; /* Text widget */ + GtkObject *scale_data; /* Scale data */ + char buf[256]; /* String buffer */ + + + /* + * Label... + */ + + label = gtk_label_new(title); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 1.0); + gtk_table_attach(table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(label); + + /* + * Scale... + */ + + scale_data = gtk_adjustment_new(*value, left, right, 1.0, 1.0, 1.0); + + gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", + (GtkSignalFunc) dialog_iscale_update, + value); + + scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); + gtk_widget_set_usize(scale, SCALE_WIDTH, 0); + gtk_table_attach(table, scale, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); + gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_CONTINUOUS); + gtk_widget_show(scale); + + /* + * Text entry... + */ + + entry = gtk_entry_new(); + gtk_object_set_user_data(GTK_OBJECT(entry), scale_data); + gtk_object_set_user_data(scale_data, entry); + gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); + sprintf(buf, "%d", *value); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) dialog_ientry_update, + value); + gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); + gtk_widget_show(entry); +} + + +/* + * 'dialog_iscale_update()' - Update the value field using the scale. + */ + +static void +dialog_iscale_update(GtkAdjustment *adjustment, /* I - New value */ + gint *value) /* I - Current value */ +{ + GtkWidget *entry; /* Text entry widget */ + char buf[256]; /* Text buffer */ + + + if (*value != adjustment->value) + { + *value = adjustment->value; + + entry = gtk_object_get_user_data(GTK_OBJECT(adjustment)); + sprintf(buf, "%d", *value); + + gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value); + + preview_update(); + }; +} + + +/* + * 'dialog_ientry_update()' - Update the value field using the text entry. + */ + +static void +dialog_ientry_update(GtkWidget *widget, /* I - Entry widget */ + gint *value) /* I - Current value */ +{ + GtkAdjustment *adjustment; + gint new_value; + + + new_value = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); + + if (*value != new_value) + { + adjustment = gtk_object_get_user_data(GTK_OBJECT(widget)); + + if ((new_value >= adjustment->lower) && + (new_value <= adjustment->upper)) + { + *value = new_value; + adjustment->value = new_value; + + gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed"); + + preview_update(); + }; + }; +} + + +/* + * 'dialog_ok_callback()' - Start the filter... + */ + +static void +dialog_ok_callback(GtkWidget *widget, /* I - OK button widget */ + gpointer data) /* I - Dialog window */ +{ + run_filter = TRUE; + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +/* + * 'dialog_cancel_callback()' - Cancel the filter... + */ + +static void +dialog_cancel_callback(GtkWidget *widget, /* I - Cancel button widget */ + gpointer data) /* I - Dialog window */ +{ + gtk_widget_destroy(GTK_WIDGET(data)); +} + + +/* + * 'dialog_close_callback()' - Exit the filter dialog application. + */ + +static void +dialog_close_callback(GtkWidget *widget, /* I - Dialog window */ + gpointer data) /* I - Dialog window */ +{ + gtk_main_quit(); +} + + +/* + * End of "$Id: sharpen.c,v 1.2 1997/06/08 22:27:35 mike Exp mike $". + */ diff -u --recursive --new-file gimp-0.99.10/plug-ins/snoise.c gimp-0.99.pre11/plug-ins/snoise.c --- gimp-0.99.10/plug-ins/snoise.c Tue Jun 3 22:04:56 1997 +++ gimp-0.99.pre11/plug-ins/snoise.c Wed Aug 13 20:31:37 1997 @@ -19,11 +19,11 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* Solid Noise plug-in version 1.0, May 1997 +/* Solid Noise plug-in version 1.01, May 1997 * * This plug-in generates solid noise textures based on the * `Noise' and `Turbulence' functions described in the paper - * + * * Perlin, K, and Hoffert, E. M., "Hypertexture", * Computer Graphics 23, 3 (August 1989) * @@ -37,6 +37,17 @@ * which is Copyright (C) 1997 Federico Mena Quintero */ +/* Version 1.01: + * + * Quick fix for wrong pdb declaration. Also changed default seed to 1. + * Thanks to Adrian Likins and Federico Mena for the patch! + * + * Version 1.0: + * + * Initial release. + */ + + #include #include @@ -106,7 +117,7 @@ static SolidNoiseValues snvals = { 0, /* tilable */ 0, /* turbulent */ - 0, /* seed */ + 1, /* seed */ 1, /* detail */ 4.0, /* xscale */ 4.0 /* yscale */ @@ -139,20 +150,20 @@ { PARAM_INT32, "tilable", "Create a tilable output (n/y)" }, { PARAM_INT32, "turbulent", "Make a turbulent noise (n/y)" }, { PARAM_INT32, "seed", "Random seed" }, - { PARAM_FLOAT, "detail", "Detail level" }, + { PARAM_INT32, "detail", "Detail level" }, { PARAM_FLOAT, "xscale", "Horizontal scaling factor" }, { PARAM_FLOAT, "yscale", "Vertical scaling factor" } }; static GParamDef *return_vals = NULL; static gint nargs = sizeof (args) / sizeof (args[0]); static gint nreturn_vals = 0; - + gimp_install_procedure ("plug_in_solid_noise", "Create a solid noise texture", "Generates textures using the classic Perlin's noise function.", "Marcelo de Gomensoro Malheiros", "Marcelo de Gomensoro Malheiros", - "May 1997, 1.0", + "May 1997, 1.01", "/Filters/Render/Solid Noise", "RGB*, GRAY*", PROC_PLUG_IN, @@ -168,11 +179,11 @@ GParam **return_vals) { static GParam values[1]; - + GDrawable *drawable; GRunModeType run_mode; GStatusType status; - + status = STATUS_SUCCESS; run_mode = param[0].data.d_int32; @@ -181,7 +192,7 @@ *nreturn_vals = 1; *return_vals = values; - + /* Get the specified drawable */ drawable = gimp_drawable_get (param[2].data.d_drawable); @@ -215,11 +226,11 @@ /* Possibly retrieve data */ gimp_get_data("plug_in_solid_noise", &snvals); break; - + default: break; } - + /* Create texture */ if ((status == STATUS_SUCCESS) && (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id))) @@ -243,10 +254,10 @@ { /* gimp_message ("solid noise: cannot operate on indexed color images"); */ status = STATUS_EXECUTION_ERROR; - } - + } + values[0].data.d_status = status; - + gimp_drawable_detach(drawable); } @@ -288,7 +299,7 @@ for (row = dest_rgn.y; row < (dest_rgn.y + dest_rgn.h); row++) { dest = dest_row; - + for (col = dest_rgn.x; col < (dest_rgn.x + dest_rgn.w); col++) { val = (guchar) floor (255.0 * noise ((double) (col - sel_x1) / sel_width, (double) (row - sel_y1) / sel_height)); @@ -325,7 +336,7 @@ snvals.detail = 15; if (snvals.seed < 0) snvals.seed = 0; - + /* Define the pseudo-random number generator seed */ srand (snvals.seed); @@ -350,7 +361,7 @@ offset=0.94; factor=0.526; } - + /* Initialize the permutation table */ for (i = 0; i < TABLE_SIZE; i++) perm_tab[i] = i; @@ -361,7 +372,7 @@ perm_tab[j] = perm_tab[k]; perm_tab[k] = t; } - + /* Initialize the gradient table */ for (i = 0; i < TABLE_SIZE; i++) { do { @@ -391,7 +402,7 @@ for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) { - if (snvals.tilable) + if (snvals.tilable) n = perm_tab[(((a + i) % (xclip * s)) + perm_tab[((b + j) % (yclip * s)) % TABLE_SIZE]) % TABLE_SIZE]; else n = perm_tab[(a + i + perm_tab[(b + j) % TABLE_SIZE]) % TABLE_SIZE]; @@ -399,7 +410,7 @@ v.y = y - b - j; sum += WEIGHT(v.x) * WEIGHT(v.y) * (grad_tab[n].x * v.x + grad_tab[n].y * v.y); } - + return sum / s; } @@ -415,7 +426,7 @@ sum = 0.0; x *= xscale; y *= yscale; - + for (i = 0; i <= snvals.detail; i++) { if (snvals.turbulent) sum += fabs (plain_noise (x, y, s)); @@ -423,7 +434,7 @@ sum += plain_noise (x, y, s); s <<= 1; } - + return (sum+offset)*factor; } @@ -449,7 +460,6 @@ argv = g_new (gchar *, 1); argv[0] = g_strdup ("snoise"); gtk_init (&argc, &argv); - gtk_rc_parse (gimp_gtkrc ()); /* Dialog initialization */ dlg = gtk_dialog_new (); @@ -475,7 +485,7 @@ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, 0, 5, 0); gtk_widget_show (label); - + entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0 ); @@ -491,7 +501,7 @@ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, 0, 5, 0); gtk_widget_show (label); - + entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0 ); @@ -509,7 +519,7 @@ gtk_signal_connect (GTK_OBJECT (toggle), "toggled", (GtkSignalFunc) dialog_toggle_update, &snvals.turbulent); gtk_widget_show (toggle); - + /* Check button #2 */ toggle = gtk_check_button_new_with_label ("Tilable"); gtk_table_attach (GTK_TABLE (table), toggle, 2, 3, 1, 2, GTK_FILL, 0, 5, 0); @@ -517,7 +527,7 @@ gtk_signal_connect (GTK_OBJECT (toggle), "toggled", (GtkSignalFunc) dialog_toggle_update, &snvals.tilable); gtk_widget_show (toggle); - + /* Scale #1 */ label = gtk_label_new ("X Scale"); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); diff -u --recursive --new-file gimp-0.99.10/plug-ins/snp.c gimp-0.99.pre11/plug-ins/snp.c --- gimp-0.99.10/plug-ins/snp.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/snp.c Wed Aug 13 21:07:07 1997 @@ -0,0 +1,269 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Plugin to load MicroEyes SNP format animations + * v1.1 - Adam D. Moss, adam@foxbox.org + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * Changelog: + * + * 97/07/08 + * v1.1: SNP Animations only use 192 colour entries, so the resulting + * GIMP INDEXED image should reflect this. + * Added progress bar. + * + * 97/07/06 + * v1.0: Initial release. + */ + +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" + + + +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); +static gint32 load_image (char *filename); + + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + + +MAIN (); + +static void +query () +{ + static GParamDef load_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_STRING, "filename", "The name of the file to load" }, + { PARAM_STRING, "raw_filename", "The name entered" }, + }; + static GParamDef load_return_vals[] = + { + { PARAM_IMAGE, "image", "Output image" }, + }; + static int nload_args = sizeof (load_args) / sizeof (load_args[0]); + static int nload_return_vals = sizeof (load_return_vals) / sizeof (load_return_vals[0]); + gimp_install_procedure ("file_snp_load", + "Loads animations of the MicroEyes SNP file format", + "FIXME: write help for snp_load", + "Adam D. Moss", + "Adam D. Moss", + "1997", + "/Snp", + NULL, + PROC_PLUG_IN, + nload_args, nload_return_vals, + load_args, load_return_vals); + gimp_register_load_handler ("file_snp_load", "snp", ""); +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[2]; + GRunModeType run_mode; + gint32 image_ID; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_CALLING_ERROR; + + if (strcmp (name, "file_snp_load") == 0) + { + image_ID = load_image (param[1].data.d_string); + if (image_ID != -1) + { + *nreturn_vals = 2; + values[0].data.d_status = STATUS_SUCCESS; + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image_ID; + } + else + { + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + } + else + g_assert (FALSE); +} + + +short unsigned int getword(FILE *fp) +{ + int c1,c2; + + c1 = fgetc(fp); + c2 = fgetc(fp); + + return(c1|(c2<<8)); +} + + +unsigned int getlongword(FILE *fp) +{ + int c1,c2,c3,c4; + + c1 = fgetc(fp); + c2 = fgetc(fp); + c3 = fgetc(fp); + c4 = fgetc(fp); + + return(c1|(c2<<8)|(c3<<16)|(c4<<24)); +} + + +static gint32 +load_image (char *filename) +{ + GPixelRgn pixel_rgn; + GDrawable *drawable; + gint32 image_ID; + gint32 layer_ID; + gchar *temp; + + guchar pal[768]; + gint i,j,k, frames, delay, wwidth, wheight; + FILE *fp; + guchar *data; + + gchar layername[200]; /* FIXME? */ + + + temp = g_malloc (strlen (filename) + 12); + if (!temp) gimp_quit (); + g_free (temp); + + + + gimp_progress_init ("Loading SNP file..."); + + + + fp = fopen(filename,"rb"); + + + k=getword(fp); + printf("ComputerEyes SNIP version %d\n",k); + + frames=getword(fp); + printf("%d frames, ",frames); + + wwidth=getword(fp); + wheight=getword(fp); + + data = g_malloc(wwidth * wheight * 2); + + + printf("%dx%d\n",wwidth,wheight); + + getword(fp); /* reserved */ + delay = getword(fp); + getword(fp); /* reserved */ + getword(fp); /* reserved */ + + + + + image_ID = gimp_image_new (wwidth, wheight, INDEXED); + gimp_image_set_filename (image_ID, filename); + + + + for (i=0;i<768;i++) + { + pal[i] = (fgetc(fp)*255L) / 63L; + } + + gimp_image_set_cmap (image_ID, + &pal[64*3], + 256-64); + + + for (i=0;i0) && (j63) + { + data[j*2] = k-64; + data[j*2+1] = 255; + j++; + } + else + { + j+=k; + } + k=fgetc(fp); + } + + gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, TRUE, FALSE); + gimp_pixel_rgn_set_rect (&pixel_rgn, data, 0,0, wwidth,wheight); + + gimp_drawable_flush (drawable); + gimp_drawable_detach (drawable); + } + + gimp_progress_update (1.0); + + g_free (data); + + return image_ID; + +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/stereogram.c gimp-0.99.pre11/plug-ins/stereogram.c --- gimp-0.99.10/plug-ins/stereogram.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/stereogram.c Wed Aug 13 21:09:00 1997 @@ -0,0 +1,586 @@ +/* Stereogram 0.5 --- image filter plug-in for The Gimp + * Copyright (C) 1997 Francisco Bustamante + * pointnclick@geocities.com + * http://www.geocities.com/SiliconValley/Lakes/4813/index.html + * + * The Gimp -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + */ + +/* 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* This plug-in based on information from the Stereogram FAQ */ + +#include +#include +#include +#include +#include +#include + +#define SIRDS 1 +#define SIS 2 + +#define TILE_CACHE_SIZE 16 + +typedef struct { + gint run; +} StereogramInterface; + +static StereogramInterface sint = { + FALSE +}; + +static void query (void); + +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); + +static gint create_stereogram(GDrawable *heightdrawable, + guchar *pixels, + GDrawable *patterndrawable, + int type); + +static gint stereogram_dialog(void); + +static void stereogram_close_callback(GtkWidget *widget, + gpointer data); +static void stereogram_ok_callback(GtkWidget *widget, + gpointer data); +static void stereogram_drawable_callback (gint32 id, + gpointer data); +static void stereogram_toggle_update(GtkWidget *widget, + gpointer data); + +static gint stereogram_constrain (gint32 image_id, + gint32 drawable_id, + gpointer data); + +typedef struct { + int t; /* Stereogram type */ + gint32 patID; /* Pattern Drawable ID*/ +} StereogramVals; + +static StereogramVals svals = +{ + SIRDS, /* type */ + -1 /* patID */ +}; + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /*init_proc*/ + NULL, /*quit_proc*/ + query, /*query_proc*/ + run, /*run_proc*/ +}; + +MAIN(); + +static void +query(void) +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input Image" }, + { PARAM_DRAWABLE, "heightmap", "Height Map" }, + { PARAM_INT32, "type", "Type of stereogram" }, + { PARAM_DRAWABLE, "pat", "Pattern to use for stereogram" }, + }; + + static GParamDef *return_vals = NULL; + + static int nargs = sizeof(args) / sizeof(args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure("plug_in_stereogram", + "Creates SIS (Single Image Stereograms) and SIRDS (Single Image Random Dot Stereogram)", + "Based on the Stereogram FAQ", + "Francisco Bustamante", + "Francisco Bustamante", + "1997", + "/Filters/Render/Stereogram", + "GRAY", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} /*query*/ + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + GRunModeType run_mode; + static GParam values[1]; + GDrawable *heightdrawable; + GDrawable *patterndrawable; + GDrawable *destdrawable; + GStatusType status = STATUS_SUCCESS; + GPixelRgn destrgn; + guchar *dest_pixels; + static gint32 DestImageID; + gint32 layerID; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + switch(run_mode) { + case RUN_INTERACTIVE : + /*Retrieve data */ + gimp_get_data("plug_in_stereogram", &svals); + if(!stereogram_dialog()) + return; + break; + + case RUN_NONINTERACTIVE : + if((nparams < 4) || ((nparams != 5) && (param[3].data.d_int32 == SIS))) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) { + svals.t = param[3].data.d_int32; + if(nparams == 5) + svals.patID = param[4].data.d_drawable; + } + + case RUN_WITH_LAST_VALS : + /* Retrieve data */ + gimp_get_data("plug_in_stereogram", &svals); + break; + + default: + break; + } + + heightdrawable = gimp_drawable_get(param[2].data.d_drawable); + + DestImageID = gimp_image_new(heightdrawable->width, heightdrawable->height, RGB); + + layerID = gimp_layer_new(DestImageID, "Background", heightdrawable->width, + heightdrawable->height, + RGB, 100, NORMAL_MODE); + + gimp_image_add_layer(DestImageID, layerID, 0); + + destdrawable = gimp_drawable_get(layerID); + + dest_pixels = (guchar *) g_malloc((destdrawable->width) * (destdrawable->height) * 3); + + if(status == STATUS_SUCCESS) { + if(gimp_drawable_gray(param[2].data.d_drawable)) { + gimp_progress_init("Stereogramming..."); + + gimp_tile_cache_ntiles(TILE_CACHE_SIZE); + + patterndrawable = NULL; + if(svals.patID != -1) + patterndrawable = gimp_drawable_get(svals.patID); + + create_stereogram(heightdrawable, dest_pixels, + patterndrawable, svals.t); + if(patterndrawable) + gimp_drawable_detach(patterndrawable); + if(run_mode == RUN_INTERACTIVE) + gimp_set_data("plug_in_stereogram", &svals, sizeof(StereogramVals)); + } + } + gimp_pixel_rgn_init(&destrgn, destdrawable, 0, 0, + destdrawable->width, + destdrawable->height, + FALSE, FALSE); + + gimp_pixel_rgn_set_rect(&destrgn, dest_pixels, 0, 0, + destdrawable->width, + destdrawable->height); + + gimp_drawable_detach(destdrawable); + gimp_drawable_detach(heightdrawable); + + gimp_display_new(DestImageID); + values[0].data.d_status = status; +} + +guchar red[6] = {0, 170, 20, 60, 135, 255}; +guchar green[6] = {0, 32, 56, 153, 23, 255}; +guchar blue[6] = {0, 200, 140, 40, 100, 255}; + +static void +set_to_zeros(gint *buf, gint len) +{ + gint i; + + for( i = 0; i < len; i ++) { + buf[i] = -1; + } +} + +static void +pixel_set(gint * buf, gint position, gint value) +{ + buf[position] = value; +} + +static gint +is_pixel_set(gint *buf, gint position) +{ + if(buf[position] != -1) + return TRUE; + else + return FALSE; +} + +static void +put_pixel_in_blank(guchar *pattern, gint pat_width, + gint pat_height, guchar *dest, + gint offset, gint dest_line, gint *set) +{ + guchar *temp; + guchar *temp_pat; + gint pat_x, pat_y; + gint tempx; + + tempx = offset; + + while((set[tempx] == -1) && (tempx > 0)) + tempx--; + if(tempx == 0) { + set[tempx] = 0; + pat_x = set[tempx]; + pat_y = dest_line % pat_height; + + temp = dest + tempx * 3; + temp_pat = pattern + (pat_y * pat_width * 3) + (pat_x * 3); + + *temp++ = *temp_pat++; + *temp++ = *temp_pat++; + *temp = *temp_pat; + tempx++; + } + tempx ++; + + while(tempx <= offset) { + set[tempx] = ((set[tempx - 1] + 1) % pat_width); + pat_x = set[tempx]; + pat_y = dest_line % pat_height; + + temp = dest + tempx * 3; + temp_pat = pattern + (pat_y * pat_width * 3) + (pat_x * 3); + + *temp++ = *temp_pat++; + *temp++ = *temp_pat++; + *temp = *temp_pat; + tempx++; + } +} + +void +line_fill(guchar *pattern, gint pat_width, + gint pat_height, guchar *dest, + gint dest_line, gint *set, + gint line_width) +{ + gint cur_x; + + for(cur_x = 0; cur_x < line_width; cur_x ++) { + if(set[cur_x] == -1) { + put_pixel_in_blank(pattern, pat_width, + pat_height, dest, + cur_x, dest_line, set); + } + } + +} + +static gint +create_stereogram(GDrawable *heightdrawable, + guchar *pixels, + GDrawable *patterndrawable, + int type) +{ + int E; + int dist_to_screen; + GPixelRgn patrgn; + GPixelRgn hgtrgn; + gint src_height, src_width; + gint pat_height, pat_width; + gint dest_height, dest_width; + guchar *pattern = NULL; + guchar *final_line; + guchar *temp; + guchar *source_line; + guchar *temp_source; + gint cur_progress = 0, max_progress = heightdrawable->height; + gint cur_x = 0, cur_y = 0, curpat_y = 0; + gint separation; + int i, left, right; + gint *set; + + dest_width = src_width = heightdrawable->width; + dest_height = src_height = heightdrawable->height; + + source_line = (guchar *) g_malloc(heightdrawable->width); + + gimp_pixel_rgn_init(&hgtrgn, heightdrawable, 0, 0, + src_width, + src_height, + FALSE, FALSE); + + set = (gint *) g_malloc(dest_width * sizeof(gint)); + + if(svals.t == SIS) { + pat_width = patterndrawable->width; + pat_height = patterndrawable->height; + gimp_pixel_rgn_init(&patrgn, patterndrawable, 0, 0, + pat_width, + pat_height, + FALSE, FALSE); + pattern = (guchar *) g_malloc(pat_height * pat_width * 3); + gimp_pixel_rgn_get_rect(&patrgn, pattern, 0, 0, pat_width, pat_height); + } + else { + pat_width = 80; + pat_height = 80; + pattern = (guchar *) g_malloc(pat_height * pat_width * 3); + for(cur_y = 0; cur_y < pat_height; cur_y++) { + for(cur_x = 0; cur_x < pat_width; cur_x++) { + temp = pattern + ((cur_y * pat_width) + cur_x) * 3; + i = rand() % 6; + *temp++ = red[i]; + *temp++ = green[i]; + *temp = blue[i]; + } + } + } + + E = 192; + dist_to_screen = 900; + curpat_y = 0; + + for(cur_y = 0; cur_y < src_height; cur_y++) { + set_to_zeros(set, dest_width); + gimp_pixel_rgn_get_row(&hgtrgn, source_line, 0, cur_y, src_width); + final_line = pixels + (cur_y * dest_width * 3); + for(cur_x = 0; cur_x < src_width; cur_x++) { + temp_source = source_line + cur_x; + separation = ((800 - *temp_source) * E) / ( dist_to_screen + (800 - *temp_source)); + left = cur_x - (separation / 2); + right = left + separation; + if((right < dest_width) && (left >= 0)) { + if(is_pixel_set(set, left) == FALSE) { + put_pixel_in_blank(pattern, pat_width, + pat_height, final_line, + left, cur_y, set); + } + temp = final_line + left * 3; + *(final_line + (right * 3)) = *temp; + *(final_line + (right * 3 + 1)) = *++temp; + *(final_line + (right * 3 + 2)) = *++temp; + pixel_set(set, right, set[left]); + } + } + line_fill(pattern, pat_width, + pat_height, final_line, + cur_y, set, + src_width); + cur_progress++; + if((cur_progress % 10) == 0) { + gimp_progress_update((gdouble) cur_progress / (gdouble) max_progress); + } + } + if(pattern) + g_free(pattern); + + return 1; +} /*create_stereogram*/ + +static gint +stereogram_dialog(void) +{ + GtkWidget *dlg; + GtkWidget *label; + GtkWidget *optionmenu; + GtkWidget *menu; + GtkWidget *button; + GtkWidget *table; + GtkWidget *frame; + GtkWidget *toggle; + GtkWidget *toggle_hbox; + GSList *group = NULL; + gchar **argv; + gint argc; + gint sis = (svals.t == SIS); + gint sirds = (svals.t == SIRDS); + + argc = 1; + argv = g_new(gchar *, 1); + argv[0] = g_strdup("stereogram"); + + gtk_init(&argc, &argv); + + dlg = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(dlg), "Stereogram"); + gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(dlg), "destroy", + (GtkSignalFunc) stereogram_close_callback, + NULL); + + button = gtk_button_new_with_label("OK"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) stereogram_ok_callback, + dlg); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label("Cancel"); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_signal_connect_object(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) stereogram_close_callback, + GTK_OBJECT(dlg)); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + frame = gtk_frame_new("Stereogram Options"); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), frame, TRUE, TRUE, 0); + + table = gtk_table_new(3, 8, FALSE); + gtk_container_border_width(GTK_CONTAINER(table), 5); + gtk_container_add(GTK_CONTAINER(frame), table); + + gtk_table_set_row_spacing (GTK_TABLE (table), 0, 10); + gtk_table_set_row_spacing (GTK_TABLE (table), 1, 10); + gtk_table_set_col_spacing (GTK_TABLE (table), 0, 10); + gtk_table_set_col_spacing (GTK_TABLE (table), 1, 10); + + label = gtk_label_new("Stereogram Pattern: "); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_widget_show(label); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + + optionmenu = gtk_option_menu_new(); + + menu = gimp_drawable_menu_new(stereogram_constrain, + stereogram_drawable_callback, + NULL, svals.patID); + + gtk_option_menu_set_menu(GTK_OPTION_MENU(optionmenu), menu); + gtk_table_attach(GTK_TABLE(table), optionmenu, 1, 3, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(optionmenu); + + toggle_hbox = gtk_hbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(toggle_hbox), 5); + gtk_table_attach(GTK_TABLE(table), toggle_hbox, 0, 3, 2, 3, GTK_FILL, GTK_FILL, 0, 0); + + label = gtk_label_new("Stereogram type: "); + gtk_box_pack_start(GTK_BOX(toggle_hbox), label, FALSE, FALSE, 0); + gtk_widget_show(label); + + toggle = gtk_radio_button_new_with_label(group, "SIS"); + group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(toggle_hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) stereogram_toggle_update, + &sis); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), sis); + gtk_widget_show(toggle); + + toggle = gtk_radio_button_new_with_label(group, "SIRDS"); + group = gtk_radio_button_group(GTK_RADIO_BUTTON(toggle)); + gtk_box_pack_start(GTK_BOX(toggle_hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(toggle), "toggled", + (GtkSignalFunc) stereogram_toggle_update, + &sirds); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), sirds); + gtk_widget_show(toggle); + + gtk_widget_show(toggle_hbox); + gtk_widget_show(table); + gtk_widget_show(frame); + gtk_widget_show(dlg); + + gtk_main(); + gdk_flush(); + + if(sis) + svals.t = SIS; + else + svals.t = SIRDS; + + return sint.run; +} + +static void +stereogram_close_callback(GtkWidget *widget, + gpointer data) +{ + gtk_main_quit(); +} + +static void +stereogram_ok_callback(GtkWidget *widget, + gpointer data) +{ + sint.run = TRUE; + gtk_widget_destroy(GTK_WIDGET(data)); +} + +static void +stereogram_toggle_update(GtkWidget *widget, + gpointer data) +{ + int * toggle_val; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} + +static gint +stereogram_constrain (gint32 image_id, + gint32 drawable_id, + gpointer data) +{ + if (drawable_id == -1) + return TRUE; + + return (gimp_drawable_color (drawable_id)); +} + + +static void +stereogram_drawable_callback (gint32 id, + gpointer data) +{ + svals.patID = id; +} + diff -u --recursive --new-file gimp-0.99.10/plug-ins/tga.c gimp-0.99.pre11/plug-ins/tga.c --- gimp-0.99.10/plug-ins/tga.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/tga.c Wed Aug 13 21:09:43 1997 @@ -0,0 +1,836 @@ +/* TGA.C release 0.9 06/18/97 + * + * TrueVision Targa loading and saving file filter for the Gimp + * + * -Raphael FRANCOIS + * + * This code is based on TrueVision TGA file format specification Version 2.0. + * All the features written in the specificarion are not available but you can : + * + * - Read 24 and 32 bit Targa images compressed or not. + * - Write 24 and 32 bit Targa images in non compressed format for the moment. + * + * NB: these images are compatible with Photoshop 32 targa images with Alphachanel. + * + * your can send me any comment on fraph@ibm.net + */ + + +#include +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" + +#define FALSE 0 +#define TRUE 1 + +#define COMPRESSION_NONE 0 +#define COMPRESSION_RLE 1 + +#define IMAGE_24_BIT 0 +#define IMAGE_32_BIT_ALPHA 1 + +typedef struct _TgaSaveVals +{ + gint compression; + gint type; +} TgaSaveVals; + +typedef struct _TgaSaveInterface +{ + unsigned char run; +} TgaSaveInterface; + +static TgaSaveVals tsvals = +{ + COMPRESSION_RLE, /* compression */ + IMAGE_32_BIT_ALPHA, /* type */ +}; + +static TgaSaveInterface tsint = +{ + FALSE /* run */ +}; + +enum TGA_VERTICAL { BOTTOM2TOP, TOP2BOTTOM }; +enum TGA_HORIZONTAL { LEFT2RIGHT, RIGHT2LEFT }; + +static struct +{ + + unsigned char idLenght; + unsigned char colorMaptype; + unsigned char field; + + short int colorMapIndex; + +/* + Well, with the original specification, I've got on offset in the date. So from I've comment them and +created a dummy to respect the alignement. Must be ficed in few days... + + short int colorMapLenght; + unsigned char colorMapSize; +*/ + + short int dummy; + + short int xOrigin; + short int yOrigin; + + short int width; + short int height; + + unsigned char bpp; + + unsigned char descriptor; + +} tga_header; + + +/* Declare some local functions. + */ +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); +static gint32 load_image (char *filename); +static gint save_image (char *filename, + gint32 image_ID, + gint32 drawable_ID); + +static gint save_dialog (); + +static void save_close_callback (GtkWidget *widget, + gpointer data); +static void save_ok_callback (GtkWidget *widget, + gpointer data); +static void save_toggle_update (GtkWidget *widget, + gpointer data); + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + + +MAIN (); + + +static void +query () +{ + static GParamDef load_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_STRING, "filename", "The name of the file to load" }, + { PARAM_STRING, "raw_filename", "The name entered" }, + }; + static GParamDef load_return_vals[] = + { + { PARAM_IMAGE, "image", "Output image" }, + }; + static int nload_args = sizeof (load_args) / sizeof (load_args[0]); + static int nload_return_vals = sizeof (load_return_vals) / sizeof (load_return_vals[0]); + + + static GParamDef save_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Drawable to save" }, + { PARAM_STRING, "filename", "The name of the file to save the image in" }, + { PARAM_STRING, "raw_filename", "The name of the file to save the image in" }, + { PARAM_INT32, "compression", "Compression type: { NONE (0), RLE (1)" }, + { PARAM_INT32, "Alpha ", "Alpha Type: { 32 bit Alpha (0), 24 bit (1)" } + } ; + static int nsave_args = sizeof (save_args) / sizeof (save_args[0]); + + gimp_install_procedure ("file_tga_load", + "Loads files of Targa file format", + "FIXME: write help for tga_load", + "Raphael FRANCOIS", + "Raphael FRANCOIS", + "1997", + "/TGA", + NULL, + PROC_PLUG_IN, + nload_args, nload_return_vals, + load_args, load_return_vals); + + + + + + gimp_install_procedure ("file_tga_save", + "saves files in the Targa file format", + "FIXME: write help for tga_save", + "Raphael FRANCOIS", + "Raphael FRANCOIS", + "1997", + "/TGA", + "RGB*, GRAY*", + PROC_PLUG_IN, + nsave_args, 0, + save_args, NULL); + + gimp_register_magic_load_handler ("file_tga_load", "tga", "", + "0&,byte,10,2&,byte,1,3&,byte,>0,3,byte,<9"); + gimp_register_save_handler ("file_tga_save", "tga", ""); + +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[2]; + GStatusType status = STATUS_SUCCESS; + GRunModeType run_mode; + gint32 image_ID; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 1; + *return_vals = values; + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_CALLING_ERROR; + + if (strcmp (name, "file_tga_load") == 0) + { + image_ID = load_image (param[1].data.d_string); + + if (image_ID != -1) + { + *nreturn_vals = 2; + values[0].data.d_status = STATUS_SUCCESS; + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image_ID; + } + else + { + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + } + else if (strcmp (name, "file_tga_save") == 0) + { + switch (run_mode) + { + case RUN_INTERACTIVE: + /* Possibly retrieve data */ + gimp_get_data ("file_tga_save", &tsvals); + + /* First acquire information with a dialog */ + if (! save_dialog ()) + return; + + break; + + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are there! */ + if (nparams != 7) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) + { + switch (param[5].data.d_int32) + { + case 0: tsvals.compression = COMPRESSION_NONE; break; + case 1: tsvals.compression = COMPRESSION_RLE; break; + default: status = STATUS_CALLING_ERROR; break; + } + switch (param[6].data.d_int32) + { + case 0: tsvals.type = IMAGE_24_BIT; + case 1: tsvals.type = IMAGE_32_BIT_ALPHA; break; + default: status = STATUS_CALLING_ERROR; break; + } + } + + case RUN_WITH_LAST_VALS: + /* Possibly retrieve data */ + + gimp_get_data ("file_tiff_save", &tsvals); + break; + + default: + break; + } + + *nreturn_vals = 1; + if (save_image (param[3].data.d_string, param[1].data.d_int32, param[2].data.d_int32)) + { + /* Store psvals data */ + gimp_set_data ("file_tga_save", &tsvals, sizeof (TgaSaveVals)); + + values[0].data.d_status = STATUS_SUCCESS; + } + else + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } +} + +int verbose = TRUE; + +static gint32 ReadImage (FILE *, char *, int, int, int); + +static gint32 +load_image (char *filename) +{ + FILE *fd; + char * name_buf; + gint32 image_ID = -1; + + name_buf = g_malloc (strlen (filename) + 11); + + sprintf (name_buf, "Loading %s:", filename); + gimp_progress_init (name_buf); + g_free (name_buf); + + fd = fopen (filename, "rb"); + if (!fd) { + printf ("TGA: can't open %s\n", filename); + return -1; + } + + + fseek( fd, 0, SEEK_SET ); + + if (fread(&tga_header, 18, 1, fd)==0) { + printf("TGA: Error in reading \"%s\"\n", filename); + return -1; + } + + printf("idLenght %d \n", tga_header.idLenght); + printf("ColorMapType %d \n", tga_header.colorMaptype); + printf("field %d \n", tga_header.field); + printf("xOrigin %d \n", tga_header.xOrigin); + printf("yOrigin %d \n", tga_header.yOrigin); + printf("width %d \n", tga_header.width); + printf("height %d \n", tga_header.height); + printf("bpp %d \n", tga_header.bpp); + printf("descriptor %d \n", tga_header.descriptor); + + + if (tga_header.bpp != 24 && tga_header.bpp != 32) + { + printf("Can only read 24 and 32 bit TGA images...\n"); + return -1; + } + + image_ID = ReadImage (fd, + filename, + tga_header.width, + tga_header.height, + tga_header.bpp); + + return image_ID; + +} + +static gint32 +ReadImage (FILE *fd, + char *filename, + int width, + int height, + int bpp) + +{ + static gint32 image_ID; + gint32 layer_ID; + /* gint32 mask_ID; */ + GPixelRgn pixel_rgn; + GDrawable *drawable; + guchar *dest; + guchar *buffer; + + + gint cur_progress, max_progress; + gint i; + unsigned char withAlpha = tga_header.bpp==32?1:0; + + gchar horizontal = (tga_header.descriptor & 0x10)?RIGHT2LEFT:LEFT2RIGHT; + gchar vertical = (tga_header.descriptor & 0x20)?TOP2BOTTOM:BOTTOM2TOP; + + image_ID = gimp_image_new (width, height, RGB_IMAGE); + + gimp_image_set_filename (image_ID, filename); + + layer_ID = gimp_layer_new (image_ID, + "Background", + width, height, + withAlpha?RGBA_IMAGE: RGB_IMAGE, + 100, + NORMAL_MODE); + + gimp_image_add_layer (image_ID, layer_ID, 0); + + drawable = gimp_drawable_get (layer_ID); + + cur_progress = 0; + max_progress = height; + + + + dest = (guchar *) g_malloc ( width * height * (bpp/8)); + + fseek(fd, 18, SEEK_SET); + + if(!(tga_header.field & 0x08)) + { + long cpt=0L; + int k; + long npixel2read; + + npixel2read = tga_header.width * tga_header.height; + + + if (verbose) + if (!withAlpha) + printf ("%d bit TGA non compressed Image\n", bpp); + else + printf ("%d bit TGA non compressed Image with Alpha Channel\n", bpp); + + + + + for(k=0;k < npixel2read; k++) + { + static guchar readpixel[4]; + + + readpixel[0] = fgetc( fd ); /* B */ + readpixel[1] = fgetc( fd ); /* G */ + readpixel[2] = fgetc( fd ); /* R */ + + dest[cpt++] = readpixel[2]; /* R */ + dest[cpt++] = readpixel[1]; /* G */ + dest[cpt++] = readpixel[0]; /* B */ + + if (withAlpha) + dest[cpt++] = fgetc( fd ); /* Alpha */ + + + if ((k%tga_header.width)==0) + gimp_progress_update( (double) k / (double) npixel2read); + } + } + else + { + /* format compression RLE */ + + int stat; + unsigned int count; + unsigned char readpixel[4]; + int k; + unsigned long cpt = 0L; + long npixel2read = tga_header.width * tga_header.height * bpp/3; + + if (verbose) + if (!withAlpha) + printf ("%d bit TGA RLE compressed Image\n", bpp); + else + printf ("%d bit TGA RLE compressed Image with Alpha Channel\n", bpp); + + + do + { + stat = fgetc( fd ); + + if ((cpt%tga_header.width)==0) + gimp_progress_update( (double) cpt / (double) npixel2read); + + if(stat==EOF) + { + return -1; + } + + if(! (stat & 0x80)) /* nombre de point consecutifs a lire*/ + { + count = ++stat; + + for( k=0;kwidth, + drawable->height, + TRUE, + FALSE); + + if ( vertical == BOTTOM2TOP ) + { + + /* Execute horizontal mirror */ + + long lineLength = (bpp/8)*width; + + + buffer = (guchar *) g_malloc ( width * height * (bpp/8)); + + if (buffer == NULL){ + printf("g_malloc error on buffer for mirroring...\n"); + return -1; + } + + for( i=0; iwidth, + drawable->height); + g_free( buffer ); + } + else + { + + gimp_pixel_rgn_set_rect ( + &pixel_rgn, + dest, + 0, 0, + drawable->width, + drawable->height); + } + + g_free (dest); + + gimp_drawable_flush (drawable); + gimp_drawable_detach (drawable); + + return image_ID; +} /*read_image*/ + + + + + +guchar *pixels; + +gint +save_image (char *filename, + gint32 image_ID, + gint32 drawable_ID) +{ + GPixelRgn pixel_rgn; + GDrawable *drawable; + GDrawableType drawable_type; + int width, height; + int bpp; + FILE *outfile; + guchar *name_buf; + int i; + + drawable = gimp_drawable_get(drawable_ID); + drawable_type = gimp_drawable_type(drawable_ID); + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE); + + name_buf = (guchar *) g_malloc(strlen(filename) + 11); + sprintf(name_buf, "Saving %s:", filename); + gimp_progress_init(name_buf); + g_free(name_buf); + + if (tsvals.compression == COMPRESSION_RLE) + { + printf("Save with RLE compression not available for the moment..."); + return FALSE; + } + + switch(drawable_type) { + + case RGBA_IMAGE: + bpp = 32; + break; + case RGB_IMAGE : + bpp = 24; + break; + + default : + fprintf(stderr, "TGA: you should not receive this error for any reason\n"); + break; + } + + if((outfile = fopen(filename, "wb")) == NULL) { + fprintf(stderr, "TGA: Can't open \"%s\"\n", filename); + return FALSE; + } + + pixels = (guchar *) g_malloc(drawable->width * drawable->height * bpp/8); + + gimp_pixel_rgn_get_rect(&pixel_rgn, pixels, 0, 0, drawable->width, drawable->height); + + width = drawable->width; + height = drawable->height; + + tga_header.idLenght=0; + tga_header.colorMaptype=0; + tga_header.field=2; /* True Color image non compressed */ + tga_header.colorMapIndex=0; + tga_header.dummy=0; + tga_header.xOrigin=0; + tga_header.yOrigin=0; + tga_header.width=width; + tga_header.height=height; + tga_header.bpp=tsvals.type==IMAGE_24_BIT?24:32; + tga_header.descriptor=0x20; /* from top to bottom */ + + + fwrite(&tga_header, sizeof(tga_header), 1, outfile); + + for (i=0; iaction_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + /* compression */ + frame = gtk_frame_new ("Compression"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, FALSE, TRUE, 0); + toggle_vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 5); + gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); + + group = NULL; + toggle = gtk_radio_button_new_with_label (group, "None"); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &use_none); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), use_none); + gtk_widget_show (toggle); + + toggle = gtk_radio_button_new_with_label (group, "RLE"); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &use_rle); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), use_rle); + gtk_widget_show (toggle); + + gtk_widget_show (toggle_vbox); + gtk_widget_show (frame); + + /* fillorder */ + frame = gtk_frame_new ("Image Type"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, FALSE, TRUE, 0); + toggle_vbox = gtk_vbox_new (FALSE, 5); + gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 5); + gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); + + group = NULL; + toggle = gtk_radio_button_new_with_label (group, "24 bit"); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &use_no_alpha); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), use_no_alpha); + gtk_widget_show (toggle); + + toggle = gtk_radio_button_new_with_label (group, "32 bit with Alpha"); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) save_toggle_update, + &use_alpha); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), use_alpha); + gtk_widget_show (toggle); + + gtk_widget_show (toggle_vbox); + gtk_widget_show (frame); + + gtk_widget_show (dlg); + + gtk_main (); + gdk_flush (); + + if (use_none) + tsvals.compression = COMPRESSION_NONE; + else if (use_rle) + tsvals.compression = COMPRESSION_RLE; + + + if (use_no_alpha) + tsvals.type = IMAGE_24_BIT; + else if (use_alpha) + tsvals.type = IMAGE_32_BIT_ALPHA; + + return tsint.run; +} + +/* Save interface functions */ + +static void +save_close_callback (GtkWidget *widget, + gpointer data) +{ + gtk_main_quit (); +} + +static void +save_ok_callback (GtkWidget *widget, + gpointer data) +{ + tsint.run = TRUE; + gtk_widget_destroy (GTK_WIDGET (data)); +} + +static void +save_toggle_update (GtkWidget *widget, + gpointer data) +{ + int *toggle_val; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} + +/* The End */ + + + + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/tileit.c gimp-0.99.pre11/plug-ins/tileit.c --- gimp-0.99.10/plug-ins/tileit.c Fri Jun 6 02:04:54 1997 +++ gimp-0.99.pre11/plug-ins/tileit.c Wed Aug 13 20:31:37 1997 @@ -4,7 +4,7 @@ * This is a plug-in for the GIMP. * * Tileit - Thi plugin will take an image an make repeated - * copies of it the stepping is 1/(2**n); 1<=n<=4 + * copies of it the stepping is 1/(2**n); 1<=n<=6 * * Copyright (C) 1997 Andy Thomas alt@picnic.demon.co.uk * @@ -31,6 +31,8 @@ */ /* Change log:- + * 0.2 Added new functions to allow "editing" of the tile patten. + * * 0.1 First version released. */ @@ -44,8 +46,8 @@ /***** Magic numbers *****/ #define PREVIEW_SIZE 128 -#define SCALE_WIDTH 100 -#define ENTRY_WIDTH 15 +#define SCALE_WIDTH 80 +#define ENTRY_WIDTH 25 /* Even more stuff from Quartics plugins */ #define CHECK_SIZE 8 @@ -57,6 +59,10 @@ #define TRUE 1 #define FALSE 0 +#define PREVIEW_MASK GDK_EXPOSURE_MASK | \ + GDK_BUTTON_PRESS_MASK | \ + GDK_BUTTON_MOTION_MASK + /* Variables set in dialog box */ typedef struct data { gint numtiles; @@ -80,6 +86,9 @@ }; GDrawable *tileitdrawable; +static gint tile_width, tile_height; +static GTile *the_tile = NULL; +static gint img_width, img_height,img_bpp; static void query (void); static void run (gchar *name, @@ -92,11 +101,24 @@ static gint tileit_dialog (void); static void tileit_close_callback (GtkWidget *widget, gpointer data); static void tileit_ok_callback (GtkWidget *widget, gpointer data); -static void tileit_scale_update (GtkAdjustment *adjustment, gint *size_val); +static void tileit_scale_update (GtkAdjustment *adjustment, gint *size_val); static void tileit_entry_update(GtkWidget *widget, gint *value); +static void tileit_exp_update(GtkWidget *widget, gpointer value); +static void tileit_exp_update_f(GtkWidget *widget, gpointer value); +static void tileit_reset(GtkWidget *widget, gpointer value); +static void tileit_toggle_update(GtkWidget *widget, gpointer data); +static void tileit_hvtoggle_update(GtkWidget *widget, gpointer data); + static void do_tiles(void); +static gint tiles_xy(gint width, gint height,gint x,gint y,gint *nx,gint *ny); +static void all_update(void); +static void alt_update(void); +static void explict_update(gint); + static void dialog_update_preview(void); static void cache_preview(void); +static gint tileit_preview_expose ( GtkWidget *widget,GdkEvent *event ); +static gint tileit_preview_events ( GtkWidget *widget,GdkEvent *event ); GPlugInInfo PLUG_IN_INFO = { @@ -112,13 +134,66 @@ 2 }; +/* Structures for call backs... */ +/* The "explict tile" & family */ +typedef enum { + ALL, + ALT, + EXPLICT, +} AppliedTo; + +typedef struct { + AppliedTo type; + gint x; /* X - pos of tile */ + gint y; /* Y - pos of tile */ + GtkWidget *r_label; /* row label */ + GtkWidget *r_entry; /* row entry */ + GtkWidget *c_label; /* column label */ + GtkWidget *c_entry; /* column entry */ + GtkWidget *applybut; /* The apply button */ +} Exp_Call; + +Exp_Call exp_call = { + ALL, + -1, + -1, + NULL, + NULL, + NULL, + NULL, + NULL, +}; + +/* The reset button needs to know some toggle widgets.. */ + +typedef struct { + GtkWidget *htoggle; + GtkWidget *vtoggle; +} Reset_Call; + +Reset_Call res_call = { + NULL, + NULL, +}; + +/* 2D - Array that holds the actions for each tile */ +/* Action type on cell */ +#define HORIZONTAL 0x1 +#define VERTICAL 0x2 + +gint tileactions[MAX_SEGS][MAX_SEGS]; + +/* What actions buttons toggled */ +gint do_horz = FALSE; +gint do_vert = FALSE; +gint opacity = 100; + /* Stuff for the preview bit */ static gint sel_x1, sel_y1, sel_x2, sel_y2; static gint sel_width, sel_height; static gint preview_width, preview_height; static gint has_alpha; - MAIN (); static void @@ -175,6 +250,9 @@ drawable = gimp_drawable_get (param[2].data.d_drawable); + tile_width = gimp_tile_width(); + tile_height = gimp_tile_height(); + gimp_drawable_mask_bounds(drawable->id, &sel_x1, &sel_y1, &sel_x2, &sel_y2); sel_width = sel_x2 - sel_x1; @@ -223,6 +301,10 @@ if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id)) { + /* Set the tile cache size */ + + gimp_tile_cache_ntiles((drawable->width + gimp_tile_width() - 1) / gimp_tile_width()); + gimp_progress_init ("Tiling ..."); do_tiles(); @@ -252,10 +334,14 @@ GtkWidget *frame; GtkWidget *xframe; GtkWidget *table; + GtkWidget *table2; + GtkWidget *table3; + GtkWidget *table4; GtkWidget *label; GtkWidget *entry; GtkWidget *slider; GtkObject *size_data; + GtkObject *op_data; GtkWidget *toggle_vbox; GtkWidget *toggle; GSList *orientation_group = NULL; @@ -270,6 +356,7 @@ argv[0] = g_strdup ("tileit"); gtk_init (&argc, &argv); + gtk_rc_parse (gimp_gtkrc ()); /* Get the stuff for the preview window...*/ gtk_preview_set_gamma(gimp_gamma()); @@ -282,6 +369,7 @@ cache_preview(); /* Get the preview image and store it also set has_alpha */ + /* Start buildng the dialog up */ dlg = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dlg), "TileIt"); gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); @@ -312,12 +400,22 @@ frame = gtk_frame_new ("preview"); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_container_border_width (GTK_CONTAINER (frame), 10); - table = gtk_table_new (5, 5, FALSE); - gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_container_border_width (GTK_CONTAINER (frame), 1); + table = gtk_table_new (6, 6, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 1); gtk_container_add (GTK_CONTAINER (frame), table); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); tint.preview = gtk_preview_new(GTK_PREVIEW_COLOR); + + gtk_widget_set_events( GTK_WIDGET(tint.preview), PREVIEW_MASK ); + gtk_signal_connect_after( GTK_OBJECT(tint.preview), "expose_event", + (GtkSignalFunc) tileit_preview_expose, + NULL); + + gtk_signal_connect( GTK_OBJECT(tint.preview), "event", + (GtkSignalFunc) tileit_preview_events, + NULL); + gtk_preview_size(GTK_PREVIEW(tint.preview), preview_width, preview_height); xframe = gtk_frame_new(NULL); gtk_frame_set_shadow_type (GTK_FRAME (xframe), GTK_SHADOW_IN); @@ -328,18 +426,190 @@ gtk_widget_show(table); gtk_container_add(GTK_CONTAINER(frame), xframe); - frame = gtk_frame_new ("Parameter Settings"); + /* Area for buttons etc */ + /* This was built up incrementally... shows does'nt it */ + + frame = gtk_frame_new("Flipping"); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_container_border_width (GTK_CONTAINER (frame), 1); + table2 = gtk_table_new (7, 7, FALSE); + gtk_container_border_width (GTK_CONTAINER (table2), 1); + gtk_container_add (GTK_CONTAINER (frame), table2); + + toggle = gtk_check_button_new_with_label ("Horizontal"); + gtk_table_attach (GTK_TABLE (table2), toggle, 0, 1, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) tileit_hvtoggle_update, + &do_horz); + gtk_widget_show (toggle); + res_call.htoggle = toggle; + + toggle = gtk_check_button_new_with_label ("Vertical"); + gtk_table_attach (GTK_TABLE (table2), toggle, 1, 2, 1, 2, GTK_EXPAND , GTK_EXPAND , 0, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) tileit_hvtoggle_update, + &do_vert); + gtk_widget_show (toggle); + res_call.vtoggle = toggle; + + + xframe = gtk_frame_new("Applied to tile"); + gtk_frame_set_shadow_type (GTK_FRAME (xframe), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (xframe), 10); + gtk_table_attach (GTK_TABLE (table2), xframe, 0, 2, 2, 3, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_widget_show(xframe); + + /* Table for the inner widgets..*/ + table4 = gtk_table_new (6, 6, FALSE); + gtk_container_border_width (GTK_CONTAINER (table4), 10); + gtk_container_add (GTK_CONTAINER (xframe), table4); + gtk_widget_show(table4); + + toggle = gtk_radio_button_new_with_label (orientation_group,"All tiles"); + orientation_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_table_attach (GTK_TABLE (table4), toggle, 0, 3, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) tileit_toggle_update, + (gpointer)ALL); + gtk_widget_show (toggle); + + toggle = gtk_radio_button_new_with_label (orientation_group,"Alternate tiles"); + orientation_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_table_attach (GTK_TABLE (table4), toggle, 0, 3, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) tileit_toggle_update, + (gpointer)ALT); + gtk_widget_show (toggle); + + toggle = gtk_radio_button_new_with_label (orientation_group,"Explict tile"); + orientation_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_table_attach (GTK_TABLE (table4), toggle, 0, 1, 2, 3, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_widget_show (toggle); + + /* Table for the stuff next to the explict button */ + table3 = gtk_table_new (6, 6, FALSE); + gtk_container_border_width (GTK_CONTAINER (table3), 0); + gtk_container_add (GTK_CONTAINER (xframe), table3); + + label = gtk_label_new ("Row"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_widget_show(label); + gtk_table_attach (GTK_TABLE (table3), label, 0 , 1, 0, 1, GTK_FILL | GTK_EXPAND , GTK_FILL, 1, 1); + gtk_widget_set_sensitive(label,FALSE); + exp_call.r_label = label; + + entry = gtk_entry_new(); + gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); + sprintf(buf, "%0.1d", 2); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_widget_show (entry); + gtk_table_attach (GTK_TABLE (table3), entry, 2 , 3, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_widget_set_sensitive(entry,FALSE); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) tileit_exp_update_f, + &exp_call); + exp_call.r_entry = entry; + + label = gtk_label_new ("Column"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_widget_show(label); + gtk_table_attach (GTK_TABLE (table3), label, 0 , 1, 1, 2, GTK_FILL , GTK_FILL, 1, 1); + gtk_widget_set_sensitive(label,FALSE); + exp_call.c_label = label; + + entry = gtk_entry_new(); + gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); + sprintf(buf, "%0.1d", 2); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_widget_show (entry); + gtk_widget_set_sensitive(entry,FALSE); + gtk_table_attach (GTK_TABLE (table3), entry, 2 , 3, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) tileit_exp_update_f, + &exp_call); + exp_call.c_entry = entry; + + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + (GtkSignalFunc) tileit_toggle_update, + (gpointer)EXPLICT); + + button = gtk_button_new_with_label ("Apply"); + gtk_widget_set_sensitive(button,FALSE); + gtk_table_attach (GTK_TABLE (table3), button, 3, 4, 0, 3, 0, 0, 1, 1); + gtk_widget_show (button); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) tileit_exp_update, + (gpointer)&exp_call); + exp_call.applybut = button; + + /* Widget for selecting the Opacity */ + sprintf(buf,"Opacity: ",2); + label = gtk_label_new (buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table4), label, 0, 1, 3, 4, 0, 0, 0, 0); + gtk_widget_show (label); + + op_data = gtk_adjustment_new (100, 0, 100, 1, 1, 0); + slider = gtk_hscale_new (GTK_ADJUSTMENT (op_data)); + gtk_widget_set_usize (slider, SCALE_WIDTH, 0); + gtk_table_attach (GTK_TABLE (table4), slider, 1,3 , 3, 4, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + + gtk_scale_set_value_pos (GTK_SCALE (slider), GTK_POS_LEFT); + gtk_scale_set_digits (GTK_SCALE (slider), 0); + gtk_range_set_update_policy (GTK_RANGE (slider),GTK_UPDATE_CONTINUOUS ); + + gtk_signal_connect (GTK_OBJECT (op_data), "value_changed", + (GtkSignalFunc) tileit_scale_update, + &opacity); + if(!has_alpha) + gtk_widget_set_sensitive(slider,FALSE); + gtk_widget_show (slider); + + entry = gtk_entry_new(); + gtk_object_set_user_data(GTK_OBJECT(entry), op_data); + gtk_object_set_user_data(op_data, entry); + gtk_widget_set_usize(entry, 3*ENTRY_WIDTH/2, 0); + sprintf(buf, "%0.1d", opacity); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_connect(GTK_OBJECT(entry), "changed", + (GtkSignalFunc) tileit_entry_update, + &opacity); + gtk_table_attach(GTK_TABLE(table4), entry, 3, 4, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + if(!has_alpha) + gtk_widget_set_sensitive(entry,FALSE); + gtk_widget_show(entry); + + + gtk_widget_show(table3); + + gtk_table_attach (GTK_TABLE (table4), table3, 1, 2, 2, 3, GTK_FILL , GTK_FILL, 0, 0); + + button = gtk_button_new_with_label ("Reset"); + gtk_table_attach (GTK_TABLE (table2), button, 0, 2, 5, 6, 0 , 0, 0, 0); + gtk_widget_show (button); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) tileit_reset, + (gpointer)&res_call); + + gtk_widget_show(frame); + gtk_widget_show(table2); + + gtk_table_attach(GTK_TABLE(table), frame, 1, 2, 0, 2, GTK_EXPAND , GTK_EXPAND, 0, 0); + + /* Lower frame saying howmany segments */ + + frame = gtk_frame_new ("Segment Setting"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 1); table = gtk_table_new (5, 5, FALSE); - gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_container_border_width (GTK_CONTAINER (table), 1); gtk_container_add (GTK_CONTAINER (frame), table); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); sprintf(buf,"1/(%d**n) ",2); label = gtk_label_new (buf); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL, 4, 0); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_EXPAND, GTK_FILL, 0, 0); gtk_widget_show (label); size_data = gtk_adjustment_new (itvals.numtiles, 2, MAX_SEGS, 1, 1, 0); @@ -364,7 +634,7 @@ gtk_signal_connect(GTK_OBJECT(entry), "changed", (GtkSignalFunc) tileit_entry_update, &itvals.numtiles); - gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 1, 2, GTK_FILL, GTK_FILL, 4, 0); + gtk_table_attach(GTK_TABLE(table), entry, 3, 4, 1, 2, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show(entry); gtk_widget_show(frame); @@ -396,46 +666,337 @@ } static void -tileit_scale_update(GtkAdjustment *adjustment, gint *value) +tileit_hvtoggle_update(GtkWidget *widget, + gpointer data) +{ + int *toggle_val; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + { + /* Only do for event that sets a toggle button to true */ + /* This will break if any more toggles are added? */ + *toggle_val = TRUE; + } + else + *toggle_val = FALSE; + + switch(exp_call.type) + { + case ALL: + /* Clear current settings */ + memset(tileactions,0,sizeof(tileactions)); + all_update(); + break; + case ALT: + /* Clear current settings */ + memset(tileactions,0,sizeof(tileactions)); + alt_update(); + break; + case EXPLICT: + break; + } + dialog_update_preview(); +} + +static void +draw_explict_sel(void) +{ + if(exp_call.type == EXPLICT) + { + gdouble x,y; + gdouble width = (gdouble)preview_width/(gdouble)itvals.numtiles; + gdouble height = (gdouble)preview_height/(gdouble)itvals.numtiles; + + x = width*(exp_call.x - 1); + y = height*(exp_call.y - 1); + + gdk_gc_set_function ( tint.preview->style->black_gc, GDK_INVERT); + + gdk_draw_rectangle(tint.preview->window, + tint.preview->style->black_gc, + 0, + (gint)x, + (gint)y, + (gint)width, + (gint)height); + gdk_draw_rectangle(tint.preview->window, + tint.preview->style->black_gc, + 0, + (gint)x+1, + (gint)y+1, + (gint)width-2, + (gint)height-2); + gdk_draw_rectangle(tint.preview->window, + tint.preview->style->black_gc, + 0, + (gint)x+2, + (gint)y+2, + (gint)width-4, + (gint)height-4); + gdk_gc_set_function ( tint.preview->style->black_gc, GDK_COPY); + + } +} + +static gint +tileit_preview_expose( GtkWidget *widget, + GdkEvent *event ) +{ + draw_explict_sel(); + return FALSE; +} + +static void +exp_need_update(gint nx, gint ny) +{ + gchar buf[256]; + + if (nx <= 0 || nx > itvals.numtiles || ny <= 0 || ny > itvals.numtiles) + return; + + if( nx != exp_call.x || + ny != exp_call.y ) + { + draw_explict_sel(); /* Clear old 'un */ + exp_call.x = nx; + exp_call.y = ny; + draw_explict_sel(); + + sprintf(buf,"%d",nx); + gtk_signal_handler_block_by_data(GTK_OBJECT(exp_call.c_entry),&exp_call); + gtk_entry_set_text(GTK_ENTRY(exp_call.c_entry), buf); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(exp_call.c_entry), &exp_call); + sprintf(buf,"%d",ny); + gtk_signal_handler_block_by_data(GTK_OBJECT(exp_call.r_entry),&exp_call); + gtk_entry_set_text(GTK_ENTRY(exp_call.r_entry), buf); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(exp_call.r_entry), &exp_call); + } +} + +static gint +tileit_preview_events ( GtkWidget *widget, + GdkEvent *event ) +{ + GdkEventButton *bevent; + GdkEventMotion *mevent; + gint nx,ny; + gchar buf[256]; + gint twidth = preview_width/itvals.numtiles; + gint theight = preview_height/itvals.numtiles; + + switch (event->type) + { + case GDK_EXPOSE: + break; + + case GDK_BUTTON_PRESS: + bevent = (GdkEventButton *) event; + nx = bevent->x/twidth + 1; + ny = bevent->y/theight + 1; + exp_need_update(nx,ny); + break; + + case GDK_MOTION_NOTIFY: + mevent = (GdkEventMotion *) event; + if ( !mevent->state ) + break; + if(mevent->x < 0 || mevent->y < 0) + break; + nx = mevent->x/twidth + 1; + ny = mevent->y/theight + 1; + exp_need_update(nx,ny); + break; + + default: + break; + } + + return FALSE; +} + +static void +explict_update(gint settile) +{ + char buf[256]; + int x,y; + + /* Make sure bounds are OK */ + y = atoi(gtk_entry_get_text(GTK_ENTRY(exp_call.r_entry))); + if(y > itvals.numtiles || y <= 0) + { + y = itvals.numtiles; + } + x = atoi(gtk_entry_get_text(GTK_ENTRY(exp_call.c_entry))); + if(x > itvals.numtiles || x <= 0) + { + x = itvals.numtiles; + } + + /* Set it */ + if(settile == TRUE) + tileactions[x-1][y-1] = (((do_horz)?HORIZONTAL:0)|((do_vert)?VERTICAL:0)); + + exp_call.x = x; + exp_call.y = y; + +} + +static void +all_update(void) +{ + int x,y; + for(x = 0 ; x < MAX_SEGS; x++) + for(y = 0 ; y < MAX_SEGS; y++) + tileactions[x][y] |= (((do_horz)?HORIZONTAL:0)|((do_vert)?VERTICAL:0)); +} + +static void +alt_update(void) +{ + int x,y; + for(x = 0 ; x < MAX_SEGS; x++) + for(y = 0 ; y < MAX_SEGS; y++) + if(!((x+y)%2)) + tileactions[x][y] |= + (((do_horz)?HORIZONTAL:0)|((do_vert)?VERTICAL:0)); +} + +static void +tileit_toggle_update(GtkWidget *widget, + gpointer data) { - GtkWidget *entry; - char buf[256]; - - if (*value != adjustment->value) { - *value = adjustment->value; - - entry = gtk_object_get_user_data(GTK_OBJECT(adjustment)); - sprintf(buf,"%d",*value); - - gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value); - gtk_entry_set_text(GTK_ENTRY(entry), buf); - gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value); - - dialog_update_preview(); + AppliedTo type = (AppliedTo)data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + { + switch(type) + { + case ALL: + /* Clear current settings */ + memset(tileactions,0,sizeof(tileactions)); + all_update(); + break; + case ALT: + /* Clear current settings */ + memset(tileactions,0,sizeof(tileactions)); + alt_update(); + break; + case EXPLICT: + /* Make widget active */ + gtk_widget_set_sensitive(exp_call.r_label,TRUE); + gtk_widget_set_sensitive(exp_call.r_entry,TRUE); + gtk_widget_set_sensitive(exp_call.c_label,TRUE); + gtk_widget_set_sensitive(exp_call.c_entry,TRUE); + gtk_widget_set_sensitive(exp_call.applybut,TRUE); + explict_update(FALSE); + break; + } + exp_call.type = type; + } + else + { + switch(type) + { + case ALL: + break; + case ALT: + break; + case EXPLICT: + gtk_widget_set_sensitive(exp_call.r_label,FALSE); + gtk_widget_set_sensitive(exp_call.r_entry,FALSE); + gtk_widget_set_sensitive(exp_call.c_label,FALSE); + gtk_widget_set_sensitive(exp_call.c_entry,FALSE); + gtk_widget_set_sensitive(exp_call.applybut,FALSE); + break; } + } + + dialog_update_preview(); +} + + +static void +tileit_scale_update(GtkAdjustment *adjustment, gint *value) +{ + GtkWidget *entry; + char buf[256]; + + if (*value != adjustment->value) { + *value = adjustment->value; + + entry = gtk_object_get_user_data(GTK_OBJECT(adjustment)); + sprintf(buf,"%d",*value); + + gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value); + gtk_entry_set_text(GTK_ENTRY(entry), buf); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value); + + dialog_update_preview(); + } } + static void -tileit_entry_update(GtkWidget *widget, gint *value) +tileit_reset(GtkWidget *widget, gpointer data) { - GtkAdjustment *adjustment; - gdouble new_value; + Reset_Call *r = (Reset_Call *)data; - new_value = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); + memset(tileactions,0,sizeof(tileactions)); - if (*value != new_value) { - adjustment = gtk_object_get_user_data(GTK_OBJECT(widget)); + gtk_signal_handler_block_by_data(GTK_OBJECT(r->htoggle),&do_horz); + gtk_signal_handler_block_by_data(GTK_OBJECT(r->vtoggle),&do_vert); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(r->htoggle),FALSE); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(r->vtoggle),FALSE); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(r->htoggle),&do_horz); + gtk_signal_handler_unblock_by_data(GTK_OBJECT(r->vtoggle),&do_vert); + do_horz = do_vert = FALSE; - if ((new_value >= adjustment->lower) && - (new_value <= adjustment->upper)) { - *value = new_value; - adjustment->value = new_value; + dialog_update_preview(); +} - gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed"); - dialog_update_preview(); - } - } +/* Could avoid almost dup. functions by using a field in the data + * passed. Must still pass the data since used in sig blocking func. + */ + +static void +tileit_exp_update(GtkWidget *widget, gpointer applied) +{ + explict_update(TRUE); + dialog_update_preview(); +} + + +static void +tileit_exp_update_f(GtkWidget *widget, gpointer applied) +{ + explict_update(FALSE); + dialog_update_preview(); +} + +static void +tileit_entry_update(GtkWidget *widget, gint *value) +{ + GtkAdjustment *adjustment; + gdouble new_value; + + new_value = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); + + if (*value != new_value) { + adjustment = gtk_object_get_user_data(GTK_OBJECT(widget)); + + if ((new_value >= adjustment->lower) && + (new_value <= adjustment->upper)) { + *value = new_value; + adjustment->value = new_value; + + gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed"); + + dialog_update_preview(); + } + } } @@ -456,6 +1017,9 @@ src_rows = g_new(guchar ,sel_width*4); p = tint.pv_cache = g_new(guchar ,preview_width*preview_height*4); + img_width = gimp_drawable_width(tileitdrawable->id); + img_height = gimp_drawable_height(tileitdrawable->id); + tint.img_bpp = gimp_drawable_bpp(tileitdrawable->id); has_alpha = gimp_drawable_has_alpha(tileitdrawable->id); @@ -494,122 +1058,159 @@ } -/* Crunch the image down simply.... */ -/* The image is repeated multiple times we could just cache - * the image as in the preview case and ue this to generate - * the final image. - * This would not be memory friendly on V.large images - * so in this case we trade CPU/memory and reget the - * rows for each image. But wait why got get the row once - * and load it not the image multiple times! This sounds like a much - * better idea. So the steps are - * - * 1) Get a row from the original image - * 2) compress the row down to its new size - * 3) multiply this back up to its orginal size - * 4) apply it to each row in the image - apply as a rect. region. - * - */ - -#define STEP 40 -static void -do_tiles(void) +static void +tileit_get_pixel(int x, int y, guchar *pixel) { - GPixelRgn des_rgn; - GPixelRgn src_rgn; - gchar *src_row,*des_row,*des_row2; - gint available; - int x,y,i; - int loop; - static gint tilewidths[MAX_SEGS]; - static gint tileheights[MAX_SEGS]; - - gimp_pixel_rgn_init(&src_rgn,tileitdrawable,sel_x1,sel_y1,sel_width,sel_height,FALSE,FALSE); - gimp_pixel_rgn_init(&des_rgn,tileitdrawable,sel_x1,sel_y1,sel_width,sel_height,TRUE,TRUE); - - src_row = g_new(guchar ,sel_width*4); - des_row = g_new(guchar ,sel_width*4); - des_row2 = g_new(guchar ,sel_width*4); - - /* Apply it */ - - available = sel_width; - for ( i = 0 ; i < itvals.numtiles; i++) - { - - /* Width of segs are variable */ - tilewidths[i] = available/(itvals.numtiles - i); - available -= tilewidths[i]; - } - - available = sel_height; - for ( i = 0 ; i < itvals.numtiles; i++) - { - - /* Width of segs are variable */ - tileheights[i] = available/(itvals.numtiles - i); - available -= tileheights[i]; + static gint row = -1; + static gint col = -1; + + gint newcol, newrow; + gint newcoloff, newrowoff; + guchar *p; + int i; + + if ((x < 0) || (x >= img_width) || (y < 0) || (y >= img_height)) { + pixel[0] = 0; + pixel[1] = 0; + pixel[2] = 0; + pixel[3] = 0; + + return; } + + newcol = x / tile_width; + newcoloff = x % tile_width; + newrow = y / tile_height; + newrowoff = y % tile_height; + + if ((col != newcol) || (row != newrow) || (the_tile == NULL)) { + if (the_tile != NULL) + gimp_tile_unref(the_tile, FALSE); + + the_tile = gimp_drawable_get_tile(tileitdrawable, FALSE, newrow, newcol); + gimp_tile_ref(the_tile); + + col = newcol; + row = newrow; + } + + p = the_tile->data + the_tile->bpp * (the_tile->ewidth * newrowoff + newcoloff); + + for (i = img_bpp; i; i--) + *pixel++ = *p++; +} - for (y = 0; y < sel_height/itvals.numtiles + 1; y ++) - { - int i; - int left_over; - int dy,dx; - - dy = sel_y1 + y*itvals.numtiles; - - if(dy >= sel_height) - dy = sel_height - 1; - gimp_pixel_rgn_get_row (&src_rgn, - src_row, - sel_x1, - dy, - sel_width); +static void +do_tiles(void) +{ + GPixelRgn dest_rgn; + gpointer pr; + gint progress, max_progress; + guchar *dest_row; + guchar *dest; + gint row, col; + guchar pixel[4]; + double cx, cy; + int bpp; + int nc,nr; + int i; + + /* Initialize pixel region */ + + gimp_pixel_rgn_init(&dest_rgn, tileitdrawable, sel_x1, sel_y1, sel_width, sel_height, TRUE, TRUE); + + progress = 0; + max_progress = sel_width * sel_height; + + img_bpp = gimp_drawable_bpp(tileitdrawable->id); + + for (pr = gimp_pixel_rgns_register(1, &dest_rgn); + pr != NULL; pr = gimp_pixel_rgns_process(pr)) { + dest_row = dest_rgn.data; + + for (row = dest_rgn.y; row < (dest_rgn.y + dest_rgn.h); row++) { + dest = dest_row; - for( loop = 0 ; - loop < ((sel_width/itvals.numtiles) + 1)*src_rgn.bpp; - loop += src_rgn.bpp) + for (col = dest_rgn.x; col < (dest_rgn.x + dest_rgn.w); col++) { - int inner; - for(inner = 0 ; inner < src_rgn.bpp; inner++) - des_row2[loop + inner] = src_row[loop*itvals.numtiles + inner]; + int an_action; + + an_action = + tiles_xy(sel_width, + sel_height, + col-sel_x1,row-sel_y1, + &nc,&nr); + tileit_get_pixel(nc+sel_x1,nr+sel_y1,pixel); + for (i = 0; i < img_bpp; i++) + *dest++ = pixel[i]; + + if(an_action && has_alpha) + { + dest--; + *dest = ((*dest)*opacity)/100; + dest++; + } } + dest_row += dest_rgn.rowstride; + } + + progress += dest_rgn.w * dest_rgn.h; + gimp_progress_update((double) progress / max_progress); + } + + if (the_tile != NULL) { + gimp_tile_unref(the_tile, FALSE); + the_tile = NULL; + } + + gimp_drawable_flush(tileitdrawable); + gimp_drawable_merge_shadow(tileitdrawable->id, TRUE); + gimp_drawable_update(tileitdrawable->id, sel_x1, sel_y1, sel_width, sel_height); +} - dx = 0; - for(loop = 0 ; loop < itvals.numtiles; loop++) + +/* Get the xy pos and any action */ +static gint +tiles_xy(gint width, + gint height, + gint x, + gint y, + gint *nx, + gint *ny) +{ + gint px,py; + gint rnum,cnum; + gint actiontype; + gdouble rnd = 1 - (1.0/(gdouble)itvals.numtiles) +0.01; + + rnum = y*itvals.numtiles/height; + + py = (y*itvals.numtiles)%height; + px = (x*itvals.numtiles)%width; + cnum = x*itvals.numtiles/width; + + if(actiontype = tileactions[cnum][rnum]) + { + if(actiontype & HORIZONTAL) { - memcpy(&des_row[dx*src_rgn.bpp], - &des_row2[0], - src_rgn.bpp*tilewidths[loop]); - dx += tilewidths[loop]; + gdouble pyr; + pyr = height - y - 1 + rnd; + py = ((int)(pyr*(gdouble)itvals.numtiles))%height; } - - dy = 0; - for (i = 0 ; i < itvals.numtiles; i++) + + if(actiontype & VERTICAL) { - - if((dy + y)>= sel_height) - break; - gimp_pixel_rgn_set_row (&des_rgn, - des_row, - sel_x1, - sel_y1 + y + dy, - sel_width); - dy += tileheights[i]; + gdouble pxr; + pxr = width - x - 1 + rnd; + px = ((int)(pxr*(gdouble)itvals.numtiles))%width; } - - gimp_progress_update((double)y/(double)(sel_height/itvals.numtiles)); } + + *nx = px; + *ny = py; - g_free(src_row); - g_free(des_row); - g_free(des_row2); - - gimp_drawable_flush(tileitdrawable); - gimp_drawable_merge_shadow(tileitdrawable->id, TRUE); - gimp_drawable_update(tileitdrawable->id, sel_x1, sel_y1, sel_width, sel_height); + return(actiontype); } @@ -622,32 +1223,49 @@ gint height, gint bpp) { - int x; - int i; - int last_pnty = height*width*bpp; - int last_pntx = width*bpp; - int lng_col = dh*width*itvals.numtiles*bpp; - int lng_row; - int sy; - - sy = lng_col%last_pnty; - -#if 0 - memcpy(dest_row,&src_rows[dh*bpp*width],width*bpp); - return; -#endif /* 0 */ - - for (x = 0; x < width; x ++) { - /* Get the pixels of each col */ - int sxy; - - lng_row = x*bpp*itvals.numtiles; - sxy = sy+(lng_row%last_pntx); - - for (i = 0 ; i < bpp; i++ ) - dest_row[x*tint.img_bpp+i] = - src_rows[sxy+i]; - } + gint x; + gint i; + gint px,py; + gint rnum,cnum; + gint actiontype; + gdouble rnd = 1 - (1.0/(gdouble)itvals.numtiles) +0.01; + + rnum = dh*itvals.numtiles/height; + + for (x = 0; x < width; x ++) + { + + py = (dh*itvals.numtiles)%height; + + px = (x*itvals.numtiles)%width; + cnum = x*itvals.numtiles/width; + + if(actiontype = tileactions[cnum][rnum]) + { + if(actiontype & HORIZONTAL) + { + gdouble pyr; + pyr = height - dh - 1 + rnd; + py = ((int)(pyr*(gdouble)itvals.numtiles))%height; + } + + if(actiontype & VERTICAL) + { + gdouble pxr; + pxr = width - x - 1 + rnd; + px = ((int)(pxr*(gdouble)itvals.numtiles))%width; + } + } + + for (i = 0 ; i < bpp; i++ ) + dest_row[x*tint.img_bpp+i] = + src_rows[(px + (py*width))*bpp+i]; + + if(has_alpha && actiontype) + dest_row[x*tint.img_bpp + (bpp - 1)] = + (dest_row[x*tint.img_bpp + (bpp - 1)]*opacity)/100; + + } } static void @@ -697,8 +1315,11 @@ } gtk_preview_draw_row(GTK_PREVIEW(tint.preview), tint.preview_row, 0, y, preview_width); - } - + } + + draw_explict_sel(); gtk_widget_draw(tint.preview, NULL); gdk_flush(); } + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/universal.c gimp-0.99.pre11/plug-ins/universal.c --- gimp-0.99.10/plug-ins/universal.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/universal.c Wed Aug 13 21:11:23 1997 @@ -0,0 +1,1108 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Universal plug-in -- universal matrix filter + * Copyright (C) 1997 Ole Steinfatt + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * The plug-in code structure is based on the Whirl plug-in, + * which is Copyright (C) 1997 Federico Mena Quintero + * + * The basic code is form the solid_noise plug-in + * Copyright (C) 1997 Marcelo de Gomensoro Malheiros + * + * The convolution is copied from the sharpen plug-in + * Copyright 1997 Michael Sweet + * + * Also some stuff from some other plug-ins and from the Gimp has + * been used. Thanks to all! + */ + + +/* Version 0.0: + * + * My first try + */ + + +#include +#include + +#include "gtk/gtk.h" +#include "libgimp/gimp.h" + + +/*---- Defines ----*/ + +#define MATRIX_SIZE 3 +#define ENTRY_WIDTH 48 + +/*---- Typedefs ----*/ + +typedef struct { + gint matrix[MATRIX_SIZE*MATRIX_SIZE]; + gint automatic; + gint norm; + gint bias; +} UniversalValues; + +typedef struct { + gint run; +} UniversalInterface; + +typedef struct { + GtkWidget *normentry; + GtkWidget *normlabel; + GtkWidget *biasentry; + GtkWidget *biaslabel; + GtkWidget *list; +} UniDialog; + +typedef struct { + char *name; + char *filename; + int xsize; + int ysize; + int *matrix; + int automatic; + int norm; + int bias; +} UniMatrix; + +/* Neede for functions copied from the GIMP */ +typedef void (*QueryFunc) (GtkWidget *, gpointer, gpointer); + + +/*---- Prototypes ----*/ + +static void query (void); +static void run (char *name, int nparams, GParam *param, + int *nreturn_vals, GParam **return_vals); + +static void universal (GDrawable *drawable); +static void calc_norm (void); +static void uni_save_matrix (UniMatrix *matrix, char *fname); +static void uni_load_matrix (char *fname); +static UniMatrix *uni_new_matrix (void); +static UniMatrix *uni_new_matrix_with_defaults (gchar *name); +static void uni_add_to_list(UniMatrix *matrix); + +static gint universal_dialog (void); +static void dialog_close_callback (GtkWidget *widget, gpointer data); +static void dialog_toggle_update (GtkWidget *widget, gpointer data); +static void dialog_entry_callback (GtkWidget *widget, gpointer data); +static void dialog_matrixentry_callback (GtkWidget *widget, gpointer data); +static void dialog_ok_callback (GtkWidget *widget, gpointer data); +static void dialog_selector_new_callback (GtkWidget *widget, gpointer data); +static void dialog_selector_get_callback (GtkWidget *widget, gpointer data); +static void dialog_selector_save_callback (GtkWidget *widget, gpointer data); +static void dialog_selector_del_callback (GtkWidget *widget, gpointer data); +static void dialog_do_selector_new_callback (GtkWidget *widget, + gpointer client_data, gpointer call_data); +static void dialog_selector_select (GtkWidget *widget, gpointer data); + +/* Functions copied from the GIMP */ +GtkWidget *query_string_box (char *title, char *message, char *initial, QueryFunc callback, gpointer data); +char *prune_filename (char *filename); + + +/*---- Variables ----*/ + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + +static UniversalValues univals = { + {0,0,0, + 0,1,0, + 0,0,0}, + 1, + 1, + 0, +}; + +static UniversalInterface uniint = { + FALSE /* run */ +}; + +static UniDialog *unidlg = NULL; +static UniMatrix *current_matrix = NULL; + +/*---- Functions ----*/ + +MAIN(); + + +static void +query (void) +{ + static GParamDef args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Input drawable" }, + { PARAM_INT32, "matrix(0,0)", "Filter Matrix (0,0)" }, + { PARAM_INT32, "matrix(0,1)", "Filter Matrix (0,1)" }, + { PARAM_INT32, "matrix(0,2)", "Filter Matrix (0,2)" }, + { PARAM_INT32, "matrix(1,0)", "Filter Matrix (1,0)" }, + { PARAM_INT32, "matrix(1,1)", "Filter Matrix (1,1)" }, + { PARAM_INT32, "matrix(1,2)", "Filter Matrix (1,2)" }, + { PARAM_INT32, "matrix(2,0)", "Filter Matrix (2,0)" }, + { PARAM_INT32, "matrix(2,1)", "Filter Matrix (2,1)" }, + { PARAM_INT32, "matrix(2,2)", "Filter Matrix (2,2)" }, + { PARAM_INT32, "auto", "Automatic Normalisation (n/y)" }, + { PARAM_INT32, "norm", "Normalisation value" }, + { PARAM_INT32, "bias", "Bias value" }, + }; + static GParamDef *return_vals = NULL; + static gint nargs = sizeof (args) / sizeof (args[0]); + static gint nreturn_vals = 0; + + gimp_install_procedure ("universal filter", + "Universal matrix filter", + "Filter the image by usage of convolution", + "O. Steinfatt", + "O. Steinfatt", + "June 1997, 0.0", + "/Filters/Image/Universal...", + "RGB*, GRAY*", + PROC_PLUG_IN, + nargs, + nreturn_vals, + args, + return_vals); +} + + +static void +run (char *name, int nparams, GParam *param, int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[1]; + + int i; + + GDrawable *drawable; + GRunModeType run_mode; + GStatusType status; + + status = STATUS_SUCCESS; + run_mode = param[0].data.d_int32; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; + + *nreturn_vals = 1; + *return_vals = values; + + /* Get the specified drawable */ + drawable = gimp_drawable_get (param[2].data.d_drawable); + + /* See how we will run */ + switch (run_mode) { + case RUN_INTERACTIVE: + /* Possibly retrieve data */ + gimp_get_data("plug_in_universal", &univals); + + /* Get information from the dialog */ + if (!universal_dialog ()) + return; + + break; + + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are present */ + if (nparams != 15) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) { + for (i=0; i<(MATRIX_SIZE*MATRIX_SIZE); i++) + univals.matrix[i] = param[3+i].data.d_int32; + univals.automatic=param[12].data.d_int32; + univals.norm=param[13].data.d_int32; + univals.bias=param[14].data.d_int32; + } + break; + + case RUN_WITH_LAST_VALS: + /* Possibly retrieve data */ + gimp_get_data("plug_in_universal", &univals); + break; + + default: + break; + } + + /* Create texture */ + if ((status == STATUS_SUCCESS) && (gimp_drawable_color (drawable->id) || + gimp_drawable_gray (drawable->id))) + { + /* Set the tile cache size */ + gimp_tile_cache_ntiles((drawable->width + gimp_tile_width() - 1) / gimp_tile_width()); + + /* Run! */ + universal (drawable); + + /* If run mode is interactive, flush displays */ + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush(); + + /* Store data */ + if (run_mode == RUN_INTERACTIVE) + gimp_set_data("plug_in_universal", &univals, + sizeof(UniversalValues)); + } + else + { + /* gimp_message ("Universal Filter: cannot operate on indexed color images"); */ + status = STATUS_EXECUTION_ERROR; + } + + values[0].data.d_status = status; + + gimp_drawable_detach(drawable); +} + +static void calc_norm (void) +{ + int i; + + if (univals.automatic) { + univals.norm=0; + univals.bias=0; + for (i=0; iid, &sel_x1, &sel_y1, &sel_x2, &sel_y2); + sel_width = sel_x2 - sel_x1; + sel_height = sel_y2 - sel_y1; + img_bpp = gimp_drawable_bpp(drawable->id); + + /* + * Let the user know what we're doing... + */ + + gimp_progress_init("Filtering..."); + + /* + * Setup for filter... + */ + + gimp_pixel_rgn_init(&src_rgn, drawable, sel_x1, sel_y1, sel_width, sel_height, FALSE, FALSE); + gimp_pixel_rgn_init(&dst_rgn, drawable, sel_x1, sel_y1, sel_width, sel_height, TRUE, TRUE); + + width = sel_width * img_bpp; + xmax = width - img_bpp; + + for (row = 0; row < 4; row ++) + src_rows[row] = g_malloc(width * sizeof(guchar)); + + dst_row = g_malloc(width * sizeof(guchar)); + + /* + * Pre-load the first row for the filter... + */ + + gimp_pixel_rgn_get_row(&src_rgn, src_rows[0], sel_x1, sel_y1, sel_width); + row = 1; + count = 1; + + /* + * Filter... + */ + + for (y = sel_y1; y < sel_y2; y ++) + { + /* + * Load the next pixel row... + */ + + if ((y + 1) < sel_y2) + { + /* + * Check to see if our src_rows[] array is overflowing yet... + */ + + if (count >= 3) + count --; + + /* + * Grab the next row... + */ + + gimp_pixel_rgn_get_row(&src_rgn, src_rows[row], sel_x1, y + 1, sel_width); + + count ++; + row = (row + 1) & 3; + } + else + { + /* + * No more pixels at the bottom... Drop the oldest samples... + */ + + count --; + }; + + /* + * Now filter pixels and save the results... + */ + + if (count == 3) + { + for (i = 0, trow = (row + 1) & 3; + i < 3; + i ++, trow = (trow + 1) & 3) + src_filters[i] = src_rows[trow]; + + for (x = img_bpp, dst_ptr = dst_row + img_bpp; + x < xmax; + x ++, dst_ptr ++) + { + i = ((univals.matrix[4] * src_filters[1][x] + + univals.matrix[0] * src_filters[0][x - img_bpp] + + univals.matrix[1] * src_filters[0][x] + + univals.matrix[2] * src_filters[0][x + img_bpp] + + univals.matrix[3] * src_filters[1][x - img_bpp] + + univals.matrix[5] * src_filters[1][x + img_bpp] + + univals.matrix[6] * src_filters[2][x - img_bpp] + + univals.matrix[7] * src_filters[2][x] + + univals.matrix[8] * src_filters[2][x + img_bpp])/univals.norm) + +univals.bias; + + if (i < 0) + *dst_ptr = 0; + else if (i > 255) + *dst_ptr = 255; + else + *dst_ptr = i; + }; + + gimp_pixel_rgn_set_row(&dst_rgn, dst_row + img_bpp, sel_x1 + 1, y, sel_width - 2); + }; + + if ((y & 15) == 0) + gimp_progress_update((double)(y - sel_y1) / (double)sel_height); + }; + + /* + * OK, we're done. Free all memory used... + */ + + for (row = 0; row < 4; row ++) + g_free(src_rows[row]); + + g_free(dst_row); + + /* + * Update the screen... + */ + + gimp_drawable_flush(drawable); + gimp_drawable_merge_shadow(drawable->id, TRUE); + gimp_drawable_update(drawable->id, sel_x1, sel_y1, sel_width, sel_height); +} + +static gint +universal_dialog (void) +{ + GtkWidget *dlg; + GtkWidget *frame; + GtkWidget *toggle; + GtkWidget *table; + GtkWidget *gtable; + GtkWidget *button; + GtkWidget *entry; + GtkWidget *listbox; + GtkWidget *vbox; + GtkWidget *hbox; + + gchar **argv; + gint argc; + guchar buffer[32]; + + static struct { + char *label; + GtkSignalFunc callback; + } buttons[] = { + { "New", (GtkSignalFunc) &dialog_selector_new_callback}, + { "Get", (GtkSignalFunc) &dialog_selector_get_callback}, + { "Save", (GtkSignalFunc) &dialog_selector_save_callback}, + { "Delete", (GtkSignalFunc) &dialog_selector_del_callback} + }; + + int i,j; + + /* Set args */ + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("universal"); + gtk_init (&argc, &argv); + + /* Init global stucture */ + unidlg = g_new (UniDialog,1); + /* Dialog initialization */ + dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Universal Filter"); + gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) dialog_close_callback, + NULL); + /* General table */ + gtable = gtk_table_new (2, 2, FALSE); + gtk_container_border_width (GTK_CONTAINER (gtable), 5); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), gtable, TRUE, TRUE, 0); + + /* Frame */ + frame = gtk_frame_new ("Matrix"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 5); + gtk_table_attach (GTK_TABLE (gtable), frame, 0, 1, 0, 1, GTK_FILL, + GTK_FILL, 0, 0 ); + + /* Matrix Table */ + table = gtk_table_new (MATRIX_SIZE, MATRIX_SIZE, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 5); + gtk_container_add (GTK_CONTAINER (frame), table); + + for (i=0; inormlabel = gtk_label_new ("Divider"); + gtk_misc_set_alignment (GTK_MISC (unidlg->normlabel), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), unidlg->normlabel, 0, 1, 1, 2, GTK_FILL, + 0, 5, 0); + gtk_widget_set_sensitive (unidlg->normlabel,!univals.automatic); + gtk_widget_show (unidlg->normlabel); + + unidlg->normentry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), unidlg->normentry, 1, 2, 1, 2, GTK_FILL, + GTK_FILL, 0, 0 ); + gtk_widget_set_usize (unidlg->normentry, ENTRY_WIDTH, 0); + sprintf(buffer, "%d", univals.norm); + gtk_entry_set_text (GTK_ENTRY (unidlg->normentry), buffer); + gtk_signal_connect (GTK_OBJECT (unidlg->normentry), "changed", + (GtkSignalFunc) dialog_entry_callback + , &univals.norm); + gtk_widget_set_sensitive (unidlg->normentry,!univals.automatic); + gtk_widget_show (unidlg->normentry); + + /* Entry 2 */ + + unidlg->biaslabel = gtk_label_new ("Bias"); + gtk_misc_set_alignment (GTK_MISC (unidlg->biaslabel), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), unidlg->biaslabel, 0, 1, 2, 3, GTK_FILL, + 0, 5, 0); + gtk_widget_set_sensitive (unidlg->biaslabel,!univals.automatic); + gtk_widget_show (unidlg->biaslabel); + + unidlg->biasentry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), unidlg->biasentry, 1, 2, 2, 3, GTK_FILL, + GTK_FILL, 0, 0 ); + gtk_widget_set_usize (unidlg->biasentry, ENTRY_WIDTH, 0); + sprintf(buffer, "%d", univals.bias); + gtk_entry_set_text (GTK_ENTRY (unidlg->biasentry), buffer); + gtk_signal_connect (GTK_OBJECT (unidlg->biasentry), "changed", + (GtkSignalFunc) dialog_entry_callback + , &univals.bias); + gtk_widget_set_sensitive (unidlg->biasentry,!univals.automatic); + gtk_widget_show (unidlg->biasentry); + + /* Button #1 */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) dialog_ok_callback, dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, + TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + /* Button #2 */ + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, + TRUE, TRUE, 0); + gtk_widget_show (button); + + gtk_widget_show (frame); + gtk_widget_show (table); + + /* Selection Frame */ + frame = gtk_frame_new ("Defined"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 5); + gtk_table_attach (GTK_TABLE (gtable), frame, 1, 2, 0, 2, GTK_FILL, + GTK_FILL, 0, 0 ); + + /* Selection List */ + vbox = gtk_vbox_new (FALSE,0); + gtk_container_add (GTK_CONTAINER (frame), vbox); + + listbox = gtk_scrolled_window_new (NULL, NULL); + gtk_box_pack_start (GTK_BOX (vbox), listbox, TRUE, TRUE, 0); + + /* gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (listbox), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_ALWAYS); */ + gtk_widget_set_usize (listbox, 100 /* DLG_LISTBOX_WIDTH */, 100 /* DLG_LISTBOX_HEIGHT */ ); + + gtk_widget_show (listbox); + + unidlg->list = gtk_list_new (); + gtk_list_set_selection_mode (GTK_LIST (unidlg->list), GTK_SELECTION_BROWSE); + gtk_container_add (GTK_CONTAINER (listbox), unidlg->list); + gtk_widget_show (unidlg->list); + + uni_new_matrix_with_defaults("default"); + /* + * Buttons + */ + hbox = gtk_hbox_new (FALSE, 0); + for (i = 0; i < sizeof (buttons) / sizeof (buttons[0]); i++) + { + button = gtk_button_new_with_label (buttons[i].label); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + buttons[i].callback, dlg); + gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); + gtk_widget_show (button); + } + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + gtk_widget_show (vbox); + + /* additional features diabled for the moment */ + /* gtk_widget_show (frame); */ + + /* Display all */ + + gtk_widget_show (gtable); + gtk_widget_show (dlg); + + gtk_main (); + gdk_flush (); + + return uniint.run; +} + + +static void +dialog_close_callback (GtkWidget *widget, gpointer data) +{ + gtk_main_quit (); +} + + +static void +dialog_toggle_update (GtkWidget *widget, gpointer data) +{ + int *toggle_val; + char buffer[10]; + + toggle_val = (int *) data; + + if (GTK_TOGGLE_BUTTON (widget)->active) + *toggle_val = TRUE; + else + *toggle_val = FALSE; + + gtk_widget_set_sensitive (unidlg->normentry,!(*toggle_val)); + gtk_widget_set_sensitive (unidlg->normlabel,!(*toggle_val)); + gtk_widget_set_sensitive (unidlg->biasentry,!(*toggle_val)); + gtk_widget_set_sensitive (unidlg->biaslabel,!(*toggle_val)); + if (*toggle_val) { + calc_norm(); + sprintf(buffer, "%d", univals.norm); + gtk_entry_set_text (GTK_ENTRY (unidlg->normentry), buffer); + sprintf(buffer, "%d", univals.bias); + gtk_entry_set_text (GTK_ENTRY (unidlg->biasentry), buffer); + } +} + + +static void +dialog_entry_callback (GtkWidget *widget, gpointer data) +{ + gint *text_val; + + text_val = (gint *) data; + + *text_val = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); +} + +static void +dialog_matrixentry_callback (GtkWidget *widget, gpointer data) +{ + gint *text_val; + char buffer[10]; + + text_val = (gint *) data; + + *text_val = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); + + if (univals.automatic) { + calc_norm(); + sprintf(buffer, "%d", univals.norm); + gtk_entry_set_text (GTK_ENTRY (unidlg->normentry), buffer); + sprintf(buffer, "%d", univals.bias); + gtk_entry_set_text (GTK_ENTRY (unidlg->biasentry), buffer); + } +} + +static void +dialog_ok_callback (GtkWidget *widget, gpointer data) +{ + uniint.run = TRUE; + gtk_widget_destroy (GTK_WIDGET (data)); +} + +static void +dialog_selector_new_callback (GtkWidget *widget, gpointer data) +{ + query_string_box ( "New Filtermatrix", + "Enter a name for the new Matrix", + "untitled", + dialog_do_selector_new_callback, unidlg); +} + +static void +dialog_do_selector_new_callback (GtkWidget *widget, gpointer client_data, + gpointer call_data) +{ + char *new_name = call_data; + UniMatrix *matrix; + + g_assert (new_name != NULL); + + matrix = uni_new_matrix_with_defaults (new_name); +} + +static void +dialog_selector_get_callback (GtkWidget *widget, gpointer data) +{ + if (current_matrix==NULL) return; + + univals.automatic=current_matrix->automatic; + univals.norm=current_matrix->norm; + univals.bias=current_matrix->bias; +} + +static void +dialog_selector_save_callback (GtkWidget *widget, gpointer data) +{ +} + +static void +dialog_selector_del_callback (GtkWidget *widget, gpointer data) +{ +} + +static void +dialog_selector_select (GtkWidget *widget, gpointer data) +{ + current_matrix=data; +} + +static void +uni_load_matrix (char *filename) +{ + FILE *file; + char line[1024]; + UniMatrix *matrix; + int i; + + g_assert(filename != NULL); + + file = fopen(filename, "r"); + if (!file) return; + + fgets(line, 1024, file); + if (strcmp(line, "GIMP Matrix\n") != 0) return; + + matrix = uni_new_matrix(); + + matrix->filename = g_strdup(filename); + matrix->name = g_strdup(prune_filename(filename)); + + fgets(line, 1024, file); + matrix->xsize =atoi(line); + + fgets(line, 1024, file); + matrix->ysize =atoi(line); + + if ((matrix->xsize < 1) || (matrix->ysize < 1)) { + g_warning("uni_load_matrix(): invalid number of rows/colums in \"%s\"", + filename); + g_free(matrix); + return; + } + + matrix->matrix = g_malloc(sizeof(int) * matrix->xsize * matrix->ysize); + + for (i=0; i<(matrix->ysize * matrix->xsize); i++) { + fgets(line, 1024, file); + matrix->matrix[i]=atoi(line); + } + + fgets(line, 1024, file); + matrix->automatic =atoi(line); + fgets(line, 1024, file); + matrix->norm =atoi(line); + fgets(line, 1024, file); + matrix->bias =atoi(line); + + fclose(file); +} + +static void +uni_save_matrix (UniMatrix *matrix, char *filename) +{ + FILE *file; + int i; + + g_assert(matrix != NULL); + + if (!filename) { + g_warning("uni_save_matrix(): can not save matrix with NULL filename"); + return; + } /* if */ + + file = fopen(filename, "w"); + if (!file) { + g_warning("uni_save_matrix(): can't open \"%s\"", filename); + return; + } /* if */ + + /* File format is: + * + * GIMP Matrix + * columns + * rows + * value(0,0) (column,row) + * value(1,0) + * ... + * automatic + * divider + * bias + */ + + fprintf (file,"GIMP Matrix\n"); + fprintf (file,"%i\n",matrix->xsize); + fprintf (file,"%i\n",matrix->ysize); + for (i=0; i< (matrix->xsize * matrix->ysize); i++) + fprintf (file,"%i",matrix->matrix[i]); + fprintf (file,"%i\n",matrix->automatic); + fprintf (file,"%i\n",matrix->norm); + fprintf (file,"%i\n",matrix->bias); + + fclose(file); +} + +static UniMatrix *uni_new_matrix (void) +{ + UniMatrix *matrix; + + matrix = g_malloc(sizeof(UniMatrix)); + + matrix->name = NULL; + matrix->filename = NULL; + matrix->xsize = 0; + matrix->ysize = 0; + matrix->matrix = NULL; + matrix->automatic = 1; + matrix->norm = 1; + matrix->bias = 0; + + return matrix; +} + + +static UniMatrix *uni_new_matrix_with_defaults (gchar *name) +{ + UniMatrix *matrix; + int i; + + matrix = uni_new_matrix (); + + matrix->name = name; + matrix->filename = name; + matrix->xsize = 3; + matrix->ysize = 3; + matrix->matrix = g_malloc(sizeof(int)*9); + for (i=0; i<9; i++) + matrix->matrix[i]=0; + matrix->matrix[4]= 1; + matrix->automatic = 1; + matrix->norm = 1; + matrix->bias = 0; + + uni_add_to_list (matrix); + + return matrix; +} + +static void uni_add_to_list(UniMatrix *matrix) +{ + GList *list; + GtkWidget *list_item; + + list_item = gtk_list_item_new_with_label(matrix->name); + gtk_signal_connect(GTK_OBJECT(list_item), "select", + (GtkSignalFunc) dialog_selector_select, + (gpointer) matrix); + gtk_widget_show (list_item); + list = g_list_append(NULL,list_item); + gtk_list_insert_items(GTK_LIST(unidlg->list), list, 0); +} + +/*************************************************************************/ +/** **/ +/** +++ Miscellaneous **/ +/** **/ +/*************************************************************************/ + +/* + These query box functions are yanked from app/interface.c. taka + */ + +/* + * A text string query box + */ + +typedef struct _QueryBox QueryBox; + +struct _QueryBox +{ + GtkWidget *qbox; + GtkWidget *entry; + QueryFunc callback; + gpointer data; +}; + +static void query_box_cancel_callback (GtkWidget *, gpointer); +static void query_box_ok_callback (GtkWidget *, gpointer); + +GtkWidget * +query_string_box (char *title, + char *message, + char *initial, + QueryFunc callback, + gpointer data) +{ + QueryBox *query_box; + GtkWidget *qbox; + GtkWidget *vbox; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *button; + + query_box = (QueryBox *) g_malloc (sizeof (QueryBox)); + + qbox = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (qbox), title); + gtk_window_position (GTK_WINDOW (qbox), GTK_WIN_POS_MOUSE); + + gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG (qbox)->action_area), 2); + + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) query_box_ok_callback, + query_box); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (qbox)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) query_box_cancel_callback, + query_box); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (qbox)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + vbox = gtk_vbox_new (FALSE, 1); + gtk_container_border_width (GTK_CONTAINER (vbox), 2); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (qbox)->vbox), vbox); + gtk_widget_show (vbox); + + label = gtk_label_new (message); + gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, FALSE, 0); + gtk_widget_show (label); + + entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0); + if (initial) + gtk_entry_set_text (GTK_ENTRY (entry), initial); + gtk_widget_show (entry); + + query_box->qbox = qbox; + query_box->entry = entry; + query_box->callback = callback; + query_box->data = data; + + gtk_widget_show (qbox); + + return qbox; +} + +static void +query_box_cancel_callback (GtkWidget *w, + gpointer client_data) +{ + QueryBox *query_box; + + query_box = (QueryBox *) client_data; + + /* Destroy the box */ + gtk_widget_destroy (query_box->qbox); + + g_free (query_box); +} + +static void +query_box_ok_callback (GtkWidget *w, + gpointer client_data) +{ + QueryBox *query_box; + char *string; + + query_box = (QueryBox *) client_data; + + /* Get the entry data */ + string = g_strdup (gtk_entry_get_text (GTK_ENTRY (query_box->entry))); + + /* Call the user defined callback */ + (* query_box->callback) (w, query_box->data, (gpointer) string); + + /* Destroy the box */ + gtk_widget_destroy (query_box->qbox); + + g_free (query_box); +} + +/* Function copied from general.c */ +/* prune filename removes all of the leading path information to a filename */ + +char * +prune_filename (char *filename) +{ + char *last_slash = filename; + + while (*filename) + if (*filename++ == '/') + last_slash = filename; + + return last_slash; +} + + + + + + + + + + + diff -u --recursive --new-file gimp-0.99.10/plug-ins/xcompose.txt gimp-0.99.pre11/plug-ins/xcompose.txt --- gimp-0.99.10/plug-ins/xcompose.txt Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/xcompose.txt Wed Aug 13 20:48:07 1997 @@ -0,0 +1,56 @@ + +COMPOSE/DECOMPOSE plugin V1.00 for the GIMP +=========================================== + Peter Kirchgessner, 30-Jun-97 + e-mail: pkirchg@aol.com + WWW : http://members.aol.com/pkirchg + +Here are the Compose/Decompose plug-ins known from V0.54 +for the GIMP V 0.99.10 and up. +In the directory + + ftp://members.aol.com/pkirchg/pub/gimp + +you will find the following files: + + xcompose.txt : this document + xcompose.tgz : gzipped tarfile with sources/documentation + xcompose.linux.386.elf.tgz : gzipped tarfile with Linux exectuable + +Features: + Decomposes RGB and RGBA-images into R/G/B, H/S/V, C/M/Y, C/M/Y/K + and Alpha channels and vice versa. + +Installation of executable +-------------------------- + To tell the GIMP about the COMPOSE/DECOMPOSE-plug-ins, copy the + executables to /usr/local/lib/gimp/0.99.x/plug-ins . + +Installation from source +------------------------ + The COMPOSE-plug-in needs two modifications to the GIMP V 99.10 to + run correctly: + 1.: Apply this patch to libgimp/gimpmenu.c + (needed for default gray-image in menu): + +--- gimpmenu.c.orig Sun Mar 9 02:00:20 1997 ++++ gimpmenu.c Mon Jun 30 07:22:41 1997 +@@ -47,7 +47,7 @@ + g_free (label); + + if (images[i] == active_image) +- gtk_menu_set_active (GTK_MENU (menu), i); ++ gtk_menu_set_active (GTK_MENU (menu), k); + + k += 1; + } + + 2.: Add the following library to pre_LDADD in your plug-in makefile: + + $(top_builddir)/libgimp/libgimpui.la + + 3.: Add compose and decompose to your plug-in makefile + +Suggestions +----------- + Suggestions about the plug-ins should be mailed to pkirchg@aol.com diff -u --recursive --new-file gimp-0.99.10/plug-ins/xpm-orig.c gimp-0.99.pre11/plug-ins/xpm-orig.c --- gimp-0.99.10/plug-ins/xpm-orig.c Wed Dec 31 19:00:00 1969 +++ gimp-0.99.pre11/plug-ins/xpm-orig.c Wed Aug 13 20:31:37 1997 @@ -0,0 +1,242 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#include +#include +#include +#include +#include "gtk/gtk.h" +#include "libgimp/gimp.h" + +/* Originally S&P, I guess, hacked for 0.99 by Josh MacDonald. */ +/* Declare some local functions. + */ +static void query (void); +static void run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals); +static gint32 load_image (char *filename); + + +GPlugInInfo PLUG_IN_INFO = +{ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ +}; + + +MAIN (); + +static void +query () +{ + static GParamDef load_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_STRING, "filename", "The name of the file to load" }, + { PARAM_STRING, "raw_filename", "The name entered" }, + }; + static GParamDef load_return_vals[] = + { + { PARAM_IMAGE, "image", "Output image" }, + }; + static int nload_args = sizeof (load_args) / sizeof (load_args[0]); + static int nload_return_vals = sizeof (load_return_vals) / sizeof (load_return_vals[0]); + gimp_install_procedure ("file_xpm_load", + "loads files of the xpm file format", + "FIXME: write help for xpm_load", + "Spencer Kimball & Peter Mattis", + "Spencer Kimball & Peter Mattis", + "1995-1997", + "/Xpm", + NULL, + PROC_PLUG_IN, + nload_args, nload_return_vals, + load_args, load_return_vals); + gimp_register_magic_load_handler ("file_xpm_load", "xpm", "", + "0,string,/*\\040XPM\\040*/"); +} + +static void +run (char *name, + int nparams, + GParam *param, + int *nreturn_vals, + GParam **return_vals) +{ + static GParam values[2]; + GRunModeType run_mode; + gint32 image_ID; + + run_mode = param[0].data.d_int32; + + *nreturn_vals = 1; + *return_vals = values; + + values[0].type = PARAM_STATUS; + values[0].data.d_status = STATUS_CALLING_ERROR; + + if (strcmp (name, "file_xpm_load") == 0) + { + image_ID = load_image (param[1].data.d_string); + if (image_ID != -1) + { + *nreturn_vals = 2; + values[0].data.d_status = STATUS_SUCCESS; + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image_ID; + } + else + { + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + } + else + g_assert (FALSE); +} + +static gint32 +load_image (char *filename) +{ + Display *display; + XpmImage xpm_image; + XpmColor *xpm_color; + GPixelRgn pixel_rgn; + GDrawable *drawable; + gint32 image_ID; + gint32 layer_ID; + gchar *temp; + guint *src; + gint screen; + guchar *dest, *dest_base; + guchar *gimp_cmap; + Colormap colormap; + gint i, j, tile_height, val, row; + XColor xcolor; + + temp = malloc (strlen (filename) + 12); + if (!temp) gimp_quit (); + sprintf (temp, "Loading %s:", filename); + gimp_progress_init (temp); + free (temp); + + display = XOpenDisplay (NULL); + screen = DefaultScreen (display); + colormap = DefaultColormap (display, screen); + XpmReadFileToXpmImage (filename, &xpm_image, NULL); + gimp_cmap = malloc (sizeof (guchar) * 3 * xpm_image.ncolors); + + for (i = 0, j = 0; i < xpm_image.ncolors; i++) + { + xpm_color = &xpm_image.colorTable[i]; + if (xpm_color->c_color) + { + XParseColor (display, colormap, xpm_color->c_color, &xcolor); + } + else if (xpm_color->g_color) + { + XParseColor (display, colormap, xpm_color->g_color, &xcolor); + } + else if (xpm_color->g4_color) + { + XParseColor (display, colormap, xpm_color->g4_color, &xcolor); + } + else if (xpm_color->m_color) + { + XParseColor (display, colormap, xpm_color->m_color, &xcolor); + } + gimp_cmap[j++] = xcolor.red >> 8; + gimp_cmap[j++] = xcolor.green >> 8; + gimp_cmap[j++] = xcolor.blue >> 8; + } + + XCloseDisplay (display); + + if (xpm_image.ncolors > 256) + { + image_ID = gimp_image_new (xpm_image.width, xpm_image.height, RGB); + gimp_image_set_filename (image_ID, filename); + layer_ID = gimp_layer_new (image_ID, "Background", + xpm_image.width, + xpm_image.height, + RGB_IMAGE, 100, NORMAL_MODE); + gimp_image_add_layer (image_ID, layer_ID, 0); + drawable = gimp_drawable_get (layer_ID); + gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, TRUE, FALSE); + tile_height = gimp_tile_height (); + dest_base = dest = g_new (guchar, 3 * xpm_image.width * tile_height); + src = xpm_image.data; + + for (i = 0; i < xpm_image.height;) + { + for (dest = dest_base, row = 0; + row < tile_height && i < xpm_image.height; + i += 1, row += 1) + { + for (j = 0; j < xpm_image.width; j++) + { + val = *src++ * 3; + *dest++ = gimp_cmap[val+0]; + *dest++ = gimp_cmap[val+1]; + *dest++ = gimp_cmap[val+2]; + } + } + gimp_pixel_rgn_set_rect (&pixel_rgn, dest_base, 0, i-row, xpm_image.width, row); + gimp_progress_update ((double) i / (double) xpm_image.height); + } + } + else + { + image_ID = gimp_image_new (xpm_image.width, xpm_image.height, INDEXED); + gimp_image_set_filename (image_ID, filename); + layer_ID = gimp_layer_new (image_ID, "Background", + xpm_image.width, + xpm_image.height, + INDEXED_IMAGE, 100, NORMAL_MODE); + gimp_image_add_layer (image_ID, layer_ID, 0); + drawable = gimp_drawable_get (layer_ID); + gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, TRUE, FALSE); + gimp_image_set_cmap (image_ID, + gimp_cmap, + xpm_image.ncolors); + tile_height = gimp_tile_height (); + dest_base = dest = g_new (guchar, xpm_image.width * tile_height); + src = xpm_image.data; + + for (i = 0; i < xpm_image.height;) + { + for (dest = dest_base, row = 0; + row < tile_height && i < xpm_image.height; + i += 1, row += 1) + { + for (j = 0; j < xpm_image.width; j++) + *dest++ = *src++; + } + gimp_pixel_rgn_set_rect (&pixel_rgn, dest_base, 0, i-row, xpm_image.width, row); + gimp_progress_update ((double) i / (double) xpm_image.height); + } + } + + gimp_drawable_flush (drawable); + gimp_drawable_detach (drawable); + + return image_ID; +} diff -u --recursive --new-file gimp-0.99.10/plug-ins/xpm.c gimp-0.99.pre11/plug-ins/xpm.c --- gimp-0.99.10/plug-ins/xpm.c Fri Jun 6 02:03:42 1997 +++ gimp-0.99.pre11/plug-ins/xpm.c Wed Aug 13 21:26:10 1997 @@ -15,23 +15,91 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* + RGB and RGBA images only + + Not tested under 8-bit displays. (not likely to be either...) + + Seems to generate an AWFUL lot of colors, especially on 24 bit display + You'll probably have better results if you convert to indexed and back + before saving to cut down the number of colors. +*/ + #include #include +#include #include #include #include "gtk/gtk.h" #include "libgimp/gimp.h" -/* Originally S&P, I guess, hacked for 0.99 by Josh MacDonald. */ -/* Declare some local functions. - */ + +#define SCALE_WIDTH 125 + +/* Structs for the save dialog */ +typedef struct +{ + gdouble threshold; +} XpmSaveVals; + +typedef struct +{ + gint run; +} XpmSaveInterface; + + +/* Declare local functions */ static void query (void); static void run (char *name, int nparams, GParam *param, int *nreturn_vals, GParam **return_vals); -static gint32 load_image (char *filename); + +static void +dump(XImage *xx, char *yy); + +static gint32 +load_image (char *filename); + +static void +parse_colors (XpmImage *xpm_image, + guchar **cmap); + +static void +parse_image (gint32 image_ID, + XpmImage *xpm_image, + guchar *cmap); + +static gint +save_image (char *filename, + gint32 image_ID, + gint32 drawable_ID); + +static gint +save_image_2 (GDrawable *drawable, + XImage *image, + XImage *mask, + int depth, + int alpha); + +static gint +save_dialog (); + +static void +save_close_callback (GtkWidget *widget, + gpointer data); + +static void +save_ok_callback (GtkWidget *widget, + gpointer data); + +static void +save_scale_update (GtkAdjustment *adjustment, + double *scale_val); + + GPlugInInfo PLUG_IN_INFO = @@ -42,6 +110,17 @@ run, /* run_proc */ }; +static XpmSaveVals xpmvals = +{ + 0.50 /* alpha threshold */ +}; + +static XpmSaveInterface xpmint = +{ + FALSE /* run */ +}; + + MAIN (); @@ -60,19 +139,43 @@ }; static int nload_args = sizeof (load_args) / sizeof (load_args[0]); static int nload_return_vals = sizeof (load_return_vals) / sizeof (load_return_vals[0]); + + static GParamDef save_args[] = + { + { PARAM_INT32, "run_mode", "Interactive, non-interactive" }, + { PARAM_IMAGE, "image", "Input image" }, + { PARAM_DRAWABLE, "drawable", "Drawable to save" }, + { PARAM_STRING, "filename", "The name of the file to save the image in" }, + { PARAM_STRING, "raw_filename", "The name of the file to save the image in" }, + }; + static int nsave_args = sizeof (save_args) / sizeof (save_args[0]); + gimp_install_procedure ("file_xpm_load", "loads files of the xpm file format", "FIXME: write help for xpm_load", + "Spencer Kimball & Peter Mattis & Ray Lehtiniemi", "Spencer Kimball & Peter Mattis", - "Spencer Kimball & Peter Mattis", - "1995-1997", + "1997", "/Xpm", - NULL, + NULL, PROC_PLUG_IN, nload_args, nload_return_vals, load_args, load_return_vals); - gimp_register_magic_load_handler ("file_xpm_load", "xpm", "", - "0,string,/*\\040XPM\\040*/"); + + gimp_install_procedure ("file_xpm_save", + "saves files in the xpm file format (if you're on a 16 bit display...)", + "FIXME: write help for xpm", + "Spencer Kimball & Peter Mattis & Ray Lehtiniemi", + "Spencer Kimball & Peter Mattis", + "1997", + "/Xpm", + "RGB", /* , GRAY", */ + PROC_PLUG_IN, + nsave_args, 0, + save_args, NULL); + + gimp_register_load_handler ("file_xpm_load", "xpm", "/Xpm"); + gimp_register_save_handler ("file_xpm_save", "xpm", "/Xpm"); } static void @@ -85,6 +188,7 @@ static GParam values[2]; GRunModeType run_mode; gint32 image_ID; + GStatusType status = STATUS_SUCCESS; run_mode = param[0].data.d_int32; @@ -97,146 +201,573 @@ if (strcmp (name, "file_xpm_load") == 0) { image_ID = load_image (param[1].data.d_string); + if (image_ID != -1) + { + *nreturn_vals = 2; + values[0].data.d_status = STATUS_SUCCESS; + values[1].type = PARAM_IMAGE; + values[1].data.d_image = image_ID; + } + else + { + values[0].data.d_status = STATUS_EXECUTION_ERROR; + } + } + else if (strcmp (name, "file_xpm_save") == 0) + { + switch (run_mode) { - *nreturn_vals = 2; - values[0].data.d_status = STATUS_SUCCESS; - values[1].type = PARAM_IMAGE; - values[1].data.d_image = image_ID; + case RUN_INTERACTIVE: + /* Possibly retrieve data */ + gimp_get_data ("file_xpm_save", &xpmvals); + + /* First acquire information with a dialog */ + if (! save_dialog ()) + return; + break; + + case RUN_NONINTERACTIVE: + /* Make sure all the arguments are there! */ + if (nparams != 4) + status = STATUS_CALLING_ERROR; + if (status == STATUS_SUCCESS) + { + xpmvals.threshold = param[4].data.d_float; + } + if (status == STATUS_SUCCESS && + (xpmvals.threshold < 0.0 || xpmvals.threshold > 1.0)) + status = STATUS_CALLING_ERROR; + + case RUN_WITH_LAST_VALS: + /* Possibly retrieve data */ + gimp_get_data ("file_xpm_save", &xpmvals); + break; + + default: + break; } - else + *nreturn_vals = 1; + if (save_image (param[3].data.d_string, + param[1].data.d_int32, + param[2].data.d_int32)) { - values[0].data.d_status = STATUS_EXECUTION_ERROR; + gimp_set_data ("file_xpm_save", &xpmvals, sizeof (XpmSaveVals)); + values[0].data.d_status = STATUS_SUCCESS; } + else + values[0].data.d_status = STATUS_EXECUTION_ERROR; } else g_assert (FALSE); } + + + static gint32 load_image (char *filename) { - Display *display; - XpmImage xpm_image; - XpmColor *xpm_color; - GPixelRgn pixel_rgn; - GDrawable *drawable; - gint32 image_ID; - gint32 layer_ID; - gchar *temp; - guint *src; - gint screen; - guchar *dest, *dest_base; - guchar *gimp_cmap; - Colormap colormap; - gint i, j, tile_height, val, row; - XColor xcolor; - - temp = malloc (strlen (filename) + 12); - if (!temp) gimp_quit (); - sprintf (temp, "Loading %s:", filename); - gimp_progress_init (temp); - free (temp); - - display = XOpenDisplay (NULL); - screen = DefaultScreen (display); - colormap = DefaultColormap (display, screen); + XpmImage xpm_image; + guchar *cmap; + gint32 image_ID; + char *name; + + /* put up a progress bar */ + name = malloc (strlen (filename) + 12); + if (!name) + gimp_quit(); + sprintf (name, "Loading %s:", filename); + gimp_progress_init (name); + free (name); + + /* read the raw file */ XpmReadFileToXpmImage (filename, &xpm_image, NULL); - gimp_cmap = malloc (sizeof (guchar) * 3 * xpm_image.ncolors); - for (i = 0, j = 0; i < xpm_image.ncolors; i++) + /* parse out the colors into a cmap */ + parse_colors (&xpm_image, &cmap); + if (cmap == NULL) + gimp_quit(); + + /* create the new image */ + image_ID = gimp_image_new (xpm_image.width, + xpm_image.height, + RGB); + + /* name it */ + gimp_image_set_filename (image_ID, filename); + + /* fill it */ + parse_image(image_ID, &xpm_image, cmap); + + /* clean up and exit */ + g_free(cmap); + + return image_ID; +} + + + + +static void +parse_colors (XpmImage *xpm_image, guchar **cmap) +{ + Display *display; + Colormap colormap; + int i, j; + + + /* open the display and get the default color map */ + display = XOpenDisplay (NULL); + colormap = DefaultColormap (display, DefaultScreen (display)); + + /* alloc a buffer to hold the parsed colors */ + *cmap = g_new(guchar, sizeof (guchar) * 4 * xpm_image->ncolors); + + if ((*cmap) != NULL) { - xpm_color = &xpm_image.colorTable[i]; - if (xpm_color->c_color) - { - XParseColor (display, colormap, xpm_color->c_color, &xcolor); - } - else if (xpm_color->g_color) - { - XParseColor (display, colormap, xpm_color->g_color, &xcolor); - } - else if (xpm_color->g4_color) - { - XParseColor (display, colormap, xpm_color->g4_color, &xcolor); - } - else if (xpm_color->m_color) - { - XParseColor (display, colormap, xpm_color->m_color, &xcolor); - } - gimp_cmap[j++] = xcolor.red >> 8; - gimp_cmap[j++] = xcolor.green >> 8; - gimp_cmap[j++] = xcolor.blue >> 8; + /* default to black transparent */ + memset((void*)(*cmap), 0, sizeof (guchar) * 4 * xpm_image->ncolors); + + /* parse each color in the file */ + for (i = 0, j = 0; i < xpm_image->ncolors; i++) + { + char *colorspec = "None"; + XpmColor *xpm_color; + XColor xcolor; + + xpm_color = &(xpm_image->colorTable[i]); + + /* pick the best spec available */ + if (xpm_color->c_color) + colorspec = xpm_color->c_color; + else if (xpm_color->g_color) + colorspec = xpm_color->g_color; + else if (xpm_color->g4_color) + colorspec = xpm_color->g4_color; + else if (xpm_color->m_color) + colorspec = xpm_color->m_color; + + /* parse if it's not transparent. the assumption is that + g_new will memset the buffer to zeros */ + if (strcmp(colorspec, "None") != 0) { + XParseColor (display, colormap, colorspec, &xcolor); + (*cmap)[j++] = xcolor.red >> 8; + (*cmap)[j++] = xcolor.green >> 8; + (*cmap)[j++] = xcolor.blue >> 8; + (*cmap)[j++] = ~0; + } else { + j += 4; + } + } } - + XCloseDisplay (display); +} - if (xpm_image.ncolors > 256) - { - image_ID = gimp_image_new (xpm_image.width, xpm_image.height, RGB); - gimp_image_set_filename (image_ID, filename); - layer_ID = gimp_layer_new (image_ID, "Background", - xpm_image.width, - xpm_image.height, - RGB_IMAGE, 100, NORMAL_MODE); - gimp_image_add_layer (image_ID, layer_ID, 0); - drawable = gimp_drawable_get (layer_ID); - gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, TRUE, FALSE); - tile_height = gimp_tile_height (); - dest_base = dest = g_new (guchar, 3 * xpm_image.width * tile_height); - src = xpm_image.data; - for (i = 0; i < xpm_image.height;) - { - for (dest = dest_base, row = 0; - row < tile_height && i < xpm_image.height; - i += 1, row += 1) - { - for (j = 0; j < xpm_image.width; j++) - { - val = *src++ * 3; - *dest++ = gimp_cmap[val+0]; - *dest++ = gimp_cmap[val+1]; - *dest++ = gimp_cmap[val+2]; - } - } - gimp_pixel_rgn_set_rect (&pixel_rgn, dest_base, 0, i-row, xpm_image.width, row); - gimp_progress_update ((double) i / (double) xpm_image.height); - } + +static void +parse_image(gint32 image_ID, XpmImage *xpm_image, guchar *cmap) +{ + int tile_height; + int scanlines; + int val; + guchar *buf; + guchar *dest; + unsigned int *src; + GPixelRgn pixel_rgn; + GDrawable *drawable; + gint32 layer_ID; + int i,j; + + + layer_ID = gimp_layer_new (image_ID, + "Color", + xpm_image->width, + xpm_image->height, + RGBA_IMAGE, + 100, + NORMAL_MODE); + + gimp_image_add_layer (image_ID, layer_ID, 0); + + drawable = gimp_drawable_get (layer_ID); + + gimp_pixel_rgn_init (&pixel_rgn, drawable, + 0, 0, + drawable->width, drawable->height, + TRUE, FALSE); + + tile_height = gimp_tile_height (); + + buf = g_new (guchar, tile_height * xpm_image->width * 4); + + if (buf != NULL) + { + src = xpm_image->data; + for (i = 0; i < xpm_image->height; i+=tile_height) + { + dest = buf; + scanlines = MIN(tile_height, xpm_image->height - i); + j = scanlines * xpm_image->width; + while (j--) { + { + val = *(src++) * 4; + *(dest) = cmap[val]; + *(dest+1) = cmap[val+1]; + *(dest+2) = cmap[val+2]; + *(dest+3) = cmap[val+3]; + dest += 4; + } + + if ((j % 100) == 0) + gimp_progress_update ((double) i / (double) xpm_image->height); + } + + gimp_pixel_rgn_set_rect (&pixel_rgn, buf, + 0, i, + drawable->width, scanlines); + + } + + g_free(buf); } - else + + gimp_drawable_detach (drawable); +} + + + + + +static gint +save_image (char *filename, + gint32 image_ID, + gint32 drawable_ID) +{ + Display *display; + int screen; + Visual *visual; + int depth; + + GDrawable *drawable; + + int width; + int height; + int alpha; + + XImage *image = NULL; + XImage *mask = NULL; + guchar *ibuff = NULL; + guchar *mbuff = NULL; + + gint rc = FALSE; + + + /* get some basic stats about the image */ + switch (gimp_drawable_type (drawable_ID)) { + case RGBA_IMAGE: + alpha = 1; + break; + case RGB_IMAGE: + alpha = 0; + break; + default: + return FALSE; + } + + drawable = gimp_drawable_get (drawable_ID); + width = drawable->width; + height = drawable->height; + + /* get some info about the display */ + display = XOpenDisplay (NULL); + screen = DefaultScreen (display); + visual = DefaultVisual (display, screen); + depth = DefaultDepth (display, screen); + + /* allocate the XImages */ + if ((image = XCreateImage(display, visual, depth, + ZPixmap, 0, NULL, + width, height, 16, 0)) == NULL) + goto cleanup; + + if ((mask = XCreateImage(display, visual, 1, + ZPixmap, 0, NULL, + width, height, 8, 0)) == NULL) + goto cleanup; + + + /* allocate buffers making the assumption that ibuff and mbuff + are 32 bit aligned... */ + if ((ibuff = g_new(guchar, image->bytes_per_line*height)) == NULL) + goto cleanup; + memset(ibuff, 0, image->bytes_per_line*height); + image->data = ibuff; + + if ((mbuff = g_new(guchar, mask->bytes_per_line*height)) == NULL) + goto cleanup; + memset(mbuff, 0, mask->bytes_per_line*height); + mask->data = mbuff; + + + /* put up a progress bar */ + { + char *name = malloc (strlen (filename) + 12); + if (!name) + gimp_quit(); + sprintf (name, "Saving %s:", filename); + gimp_progress_init (name); + free (name); + } + + /* do the save */ + if (save_image_2 (drawable, image, mask, depth, alpha)) { - image_ID = gimp_image_new (xpm_image.width, xpm_image.height, INDEXED); - gimp_image_set_filename (image_ID, filename); - layer_ID = gimp_layer_new (image_ID, "Background", - xpm_image.width, - xpm_image.height, - INDEXED_IMAGE, 100, NORMAL_MODE); - gimp_image_add_layer (image_ID, layer_ID, 0); - drawable = gimp_drawable_get (layer_ID); - gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, TRUE, FALSE); - gimp_image_set_cmap (image_ID, - gimp_cmap, - xpm_image.ncolors); - tile_height = gimp_tile_height (); - dest_base = dest = g_new (guchar, xpm_image.width * tile_height); - src = xpm_image.data; + XpmWriteFileFromImage(display, filename, image, mask, NULL); + rc = TRUE; + } - for (i = 0; i < xpm_image.height;) - { - for (dest = dest_base, row = 0; - row < tile_height && i < xpm_image.height; - i += 1, row += 1) - { - for (j = 0; j < xpm_image.width; j++) - *dest++ = *src++; - } - gimp_pixel_rgn_set_rect (&pixel_rgn, dest_base, 0, i-row, xpm_image.width, row); - gimp_progress_update ((double) i / (double) xpm_image.height); - } - } + + cleanup: - gimp_drawable_flush (drawable); + /* clean up resources */ gimp_drawable_detach (drawable); + + if (image != NULL) { + image->data = NULL; + XDestroyImage(image); + } + + if (mask != NULL) { + mask->data = NULL; + XDestroyImage(mask); + } + + if (ibuff != NULL) g_free(ibuff); + if (mbuff != NULL) g_free(mbuff); - return image_ID; + XCloseDisplay (display); + + return rc; +} + + +static gint +save_image_2 (GDrawable *drawable, + XImage *image, + XImage *mask, + int depth, + int alpha) +{ + GPixelRgn pixel_rgn; + guchar *buffer; + guchar *data; + int i, j, k; + int width = drawable->width; + int height = drawable->height; + int bpp = drawable->bpp; + int threshold = 255 * xpmvals.threshold; + + + /* allocate a pixel region to work with */ + if ((buffer = g_new(guchar, gimp_tile_height()*width*bpp)) == NULL) + return 0; + gimp_pixel_rgn_init (&pixel_rgn, drawable, + 0, 0, + width, height, + TRUE, FALSE); + + /* process each row of tiles */ + for (i = 0; i < height; i+=gimp_tile_height()) + { + int scanlines; + + /* read the next row of tiles */ + scanlines = MIN(gimp_tile_height(), height - i); + gimp_pixel_rgn_get_rect(&pixel_rgn, buffer, 0, i, width, scanlines); + data = buffer; + + /* process each pixel row */ + for (j=0; jdata + (i+j) * image->bytes_per_line; + guchar *mdata = mask->data + (i+j) * mask->bytes_per_line; + + /* do each pixel in the row */ + for (k=0; k> 3; + ipixel |= (b & 0xc0) >> 5; + break; + + case 16: + ipixel |= (r & 0xf8) << 8; + ipixel |= (g & 0xfc) << 3; + ipixel |= (b & 0xf8) >> 3; + + *(idata++) = ipixel & 0xff; + *(idata++) = (ipixel>>8) & 0xff; + break; + + case 24: + *(idata++) = r; + *(idata++) = g; + *(idata++) = b; + *(idata++) = 0; + break; + } + + /* mask doesn't worry about depth */ + { + static char masks[] = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 + }; + if (a >= threshold) + mdata[k >> 3] |= masks[k & 0x07]; + } + } + + /* kick the progress bar */ + gimp_progress_update ((double) (i+j) / (double) height); + } + } + + g_free(buffer); + return 1; +} + +static void +dump(XImage *xx, char *yy) +{ + printf("\n%s\n", yy); + printf("%d %d %d\n", xx->width, xx->height, xx->depth); + printf("%x %x %x\n", xx->red_mask, xx->green_mask, xx->blue_mask); + printf("%d %d %d\n", xx->format, xx->byte_order, xx->bitmap_bit_order); + printf("%d %d\n", xx->bitmap_unit, xx->bitmap_pad); + printf("%d %d\n", xx->bytes_per_line, xx->bits_per_pixel); +} + + +static gint +save_dialog () +{ + GtkWidget *dlg; + GtkWidget *label; + GtkWidget *button; + GtkWidget *scale; + GtkWidget *frame; + GtkWidget *table; + GtkObject *scale_data; + gchar **argv; + gint argc; + + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("save"); + + gtk_init (&argc, &argv); + + dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Save as Xpm"); + gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) save_close_callback, + NULL); + + /* Action area */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) save_ok_callback, + dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); + + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + /* parameter settings */ + frame = gtk_frame_new ("Parameter Settings"); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width (GTK_CONTAINER (frame), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0); + + table = gtk_table_new (1, 2, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_container_add (GTK_CONTAINER (frame), table); + + label = gtk_label_new ("Alpha Threshold"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 0); + scale_data = gtk_adjustment_new (xpmvals.threshold, 0.0, 1.0, 0.01, 0.01, 0.0); + scale = gtk_hscale_new (GTK_ADJUSTMENT (scale_data)); + gtk_widget_set_usize (scale, SCALE_WIDTH, 0); + gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); + gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_TOP); + gtk_scale_set_digits (GTK_SCALE (scale), 2); + gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED); + gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed", + (GtkSignalFunc) save_scale_update, + &xpmvals.threshold); + gtk_widget_show (label); + gtk_widget_show (scale); + + gtk_widget_show (frame); + gtk_widget_show (table); + gtk_widget_show (dlg); + + gtk_main (); + gdk_flush (); + + return xpmint.run; +} + + +/* Save interface functions */ + +static void +save_close_callback (GtkWidget *widget, + gpointer data) +{ + gtk_main_quit (); +} + +static void +save_ok_callback (GtkWidget *widget, + gpointer data) +{ + xpmint.run = TRUE; + gtk_widget_destroy (GTK_WIDGET (data)); +} + +static void +save_scale_update (GtkAdjustment *adjustment, + double *scale_val) +{ + *scale_val = adjustment->value; }