Commit Graph

181 Commits

Author SHA1 Message Date
Sven Neumann adff5aeb09 code cleanup. Removed unsued code, renamed variables and types.
2005-02-11  Sven Neumann  <sven@gimp.org>

	* app/base/pixel-processor.[ch]: code cleanup. Removed unsued code,
	renamed variables and types.

	* app/base/gimphistogram.c
	* app/core/gimpchannel-combine.c
	* app/core/gimpchannel.c
	* app/core/gimpdrawable-equalize.c
	* app/core/gimpdrawable-invert.c
	* app/core/gimpdrawable-levels.c
	* app/paint-funcs/paint-funcs.c
	* tools/pdbgen/pdb/color.pdb: changed accordingly.

	* app/pdb/color_cmds.c: regenerated.
2005-02-11 17:03:56 +00:00
Michael Natterer db89496a11 implement GimpItem::convert(). Handles any drawable, including conversion
2005-01-15  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.c: implement GimpItem::convert(). Handles
	any drawable, including conversion to GRAY, flattening and
	resizing.

	* app/widgets/gimpchanneltreeview.c: implement dropping of all
	kinds of drawables as new channels. Fixes bug #158133.

	Simplified component dropping by removing stuff which is done by
	gimp_item_convert() now.
2005-01-15 21:15:43 +00:00
Michael Natterer d0a78f3bdb don't require a non-NULL color parameter (just leave the default color
2005-01-15  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.c (gimp_channel_new*): don't require a
	non-NULL color parameter (just leave the default color untouched
	if NULL is passed).

	* app/actions/channels-commands.c
	* app/core/gimpchannel-select.c: pass NULL as color for temporary
	channels or channels where we used to pass black.
2005-01-15 16:59:34 +00:00
Michael Natterer 0d5df41904 app/core/gimpchannel-select.c app/core/gimpchannel.c
2004-11-16  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel-select.c
	* app/core/gimpchannel.c
	* app/core/gimpdrawable-desaturate.c
	* app/core/gimpdrawable-equalize.c
	* app/core/gimpdrawable-histogram.c
	* app/core/gimpdrawable-invert.c
	* app/core/gimpdrawable-levels.c
	* app/core/gimpdrawable-offset.c
	* app/core/gimpdrawable-stroke.c
	* app/core/gimpdrawable-transform.c
	* app/core/gimpdrawable.c
	* app/core/gimpitem-linked.c
	* app/core/gimpitem.c
	* app/core/gimplayer.c
	* app/core/gimpselection.c
	* app/paint/gimppaintcore-stroke.c
	* app/text/gimptextlayer.c: in all functions which somehow
	(explicitely or implicitely) touch undo, either g_return_if_fail()
	on gimp_item_is_attached() or simply don't push an undo step if
	feasible (e.g. for simple stuff like layer opacity).

	* tools/pdbgen/pdb/color.pdb
	* tools/pdbgen/pdb/drawable.pdb
	* tools/pdbgen/pdb/image.pdb
	* tools/pdbgen/pdb/layer.pdb
	* tools/pdbgen/pdb/paint_tools.pdb: let PDB wrappers fail
	accordingly so they don't run into the assertions added above.

	* app/pdb/color_cmds.c
	* app/pdb/drawable_cmds.c
	* app/pdb/image_cmds.c
	* app/pdb/layer_cmds.c
	* app/pdb/paint_tools_cmds.c: regenerated.
2004-11-16 13:41:55 +00:00
Michael Natterer 06447c00c2 added new enum GimpStrokeMethod which can be one of { LIBART, PAINT_CORE
2004-10-22  Michael Natterer  <mitch@gimp.org>

	* app/core/core-enums.[ch]: added new enum GimpStrokeMethod which
	can be one of { LIBART, PAINT_CORE }.

	* app/core/Makefile.am
	* app/core/core-types.h
	* app/core/gimpstrokedesc.[ch]: new object which encapsulates
	the params and setup logic for the different stroke methods.

	* app/core/gimpitem.[ch]: use it in GimpItem::stroke() and
	in the gimp_item_stroke() wrapper.

	* app/core/gimpchannel.c (gimp_channel_stroke)
	* app/core/gimpselection.c (gimp_selection_stroke)
	* app/vectors/gimpvectors.c (gimp_vectors_stroke): changed accprdingly.

	* app/actions/select-commands.c
	* app/actions/vectors-commands.c
	* app/dialogs/stroke-dialog.c
	* tools/pdbgen/pdb/edit.pdb
	* tools/pdbgen/pdb/paths.pdb: use GimpStrokeDesc. Simplifies the
	code quite a bit.

	* app/pdb/edit_cmds.c
	* app/pdb/paths_cmds.c: regenerated.
2004-10-22 12:32:31 +00:00
Michael Natterer 5aeac72ef1 added comment about not changing the silly "Qmask" string because it is
2004-09-25  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-qmask.h: added comment about not changing the
	silly "Qmask" string because it is used to identify the Quick Mask
	in the XCF.

	* app/core/gimpchannel.c: implement GimpViewable::get_description()
	and return "Quick Mask" if it's the Quick Mask.

	* app/actions/qmask-actions.c
	* app/actions/qmask-commands.c
	* app/core/core-enums.[ch]
	* app/core/gimpimage-qmask.c
	* app/display/gimpdisplayshell.c: s/QuickMask/Quick Mask/.
2004-09-25 16:52:49 +00:00
Michael Natterer 9e76c5a4bc added "GimpPaintInfo *paint_info" member and construct property. Changed
2004-08-31  Michael Natterer  <mitch@gimp.org>

	* app/paint/gimppaintoptions.[ch]: added "GimpPaintInfo *paint_info"
	member and construct property. Changed gimp_paint_options_new()
	to take only a GimpPaintInfo parameter.

	* app/core/gimpitem.c (gimp_item_stroke)
	* app/core/gimppaintinfo.c (gimp_paint_info_new): changed accordingly.

	* app/core/gimpchannel.c (gimp_channel_stroke)
	* app/vectors/gimpvectors.c (gimp_vectors_stroke): use
	paint_options->paint_info->paint_type directly instead of casting
	to GimpToolOptions and using
	tool_options->tool_info->paint_info->paint_type (eek). Fixes crash
	when stroking via the PDB because newly created GimpToolOptions
	instances have no "tool_info" pointer yet.

	* tools/pdbgen/pdb/paint_tools.pdb: changed all paint PDB wrappers
	accordingly.

	* app/pdb/paint_tools_cmds.c: regenerated.
2004-08-31 13:20:57 +00:00
Michael Natterer f1d0db6d99 removed "gboolean use_default_values" from GimpItem::stroke().
2004-08-26  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpitem.[ch]: removed "gboolean use_default_values"
	from GimpItem::stroke().

	* app/core/gimpchannel.c
	* app/core/gimpselection.c
	* app/vectors/gimpvectors.c: changed accordingly.
2004-08-26 16:33:42 +00:00
Michael Natterer 23bd12162d implement the whole paint_options fiddling here instead of in each
2004-08-26  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpitem.c (gimp_item_stroke): implement the whole
	paint_options fiddling here instead of in each subclass and pass
	either GimpStrokeOptions or GimpPaintOptions (instead of
	GimpStrokeOptions or GimpPaintInfo) to GimpItem::stroke().

	Also copied code (that needs to be abstracted to a utility
	function) from the tool_manager which makes sure we really use the
	global brush, pattern etc. if these options are checked in prefs.
	Fixes bug #150716.

	* app/core/gimpchannel.c (gimp_channel_stroke)
	* app/vectors/gimpvectors.c (gimp_vectors_stroke): removed the
	duplicated code mentioned above and simply use the paint_options
	passed.
2004-08-26 16:06:13 +00:00
Michael Natterer 02d2b990f5 Redid the whole internal progress stuff: don't pass around
2004-08-10  Michael Natterer  <mitch@gimp.org>

	Redid the whole internal progress stuff: don't pass around
	progress_callback and progress_data; instead, provide a
	pointer to a GimpProgressInterface which can be implemented
	by a variety of backends.

	Addresses (but not yet fixes) bugs #6010, #97266 and #135185.

	* app/display/Makefile.am
	* app/display/gimpprogress.[ch]: removed the old progress hack.

	* app/core/Makefile.am
	* app/core/core-types.h
	* app/core/gimpprogress.[ch]: implement GimpProgressInterface.

	* app/widgets/Makefile.am
	* app/widgets/widgets-types.h
	* app/widgets/gimpprogressdialog.[ch]: the standalone progress
	dialog as widget implementing GimpProgressInterface.

	* app/display/gimpdisplay.c
	* app/display/gimpstatusbar.[ch]
	* app/widgets/gimpfiledialog.[ch]
	* app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface
	implementation to these classes.

	* app/core/gimp-gui.[ch]
	* app/gui/gui-vtable.c: replaced the old progress vtable entries
	by two new to create and destroy a GimpProgressDialog in case
	no other progress is available.

	* app/pdb/procedural_db.[ch]
	* app/plug-in/plug-in-run.[ch]
	* tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and
	all plug-ins.

	* app/plug-in/plug-in.[ch]
	* app/plug-in/plug-ins.c
	* app/plug-in/plug-in-message.c
	* app/plug-in/plug-in-progress.c: handle the case there the
	plug-in was crated with a progress as well as the case where it
	wasn't.

	* app/app_procs.c
	* app/batch.c
	* app/xcf/xcf.c
	* app/file/file-open.[ch]
	* app/file/file-save.[ch]
	* app/widgets/gimphelp.c
	* app/widgets/gimpbrushselect.c
	* app/widgets/gimpfontselect.c
	* app/widgets/gimpgradientselect.c
	* app/widgets/gimppaletteselect.c
	* app/widgets/gimppatternselect.c: changed accordingly.

	* app/core/gimpimagefile.[ch]
	* app/display/gimpdisplayshell-dnd.c
	* app/gui/file-open-dialog.c
	* app/gui/file-open-location-dialog.c
	* app/gui/file-save-dialog.c
	* app/widgets/gimplayertreeview.c
	* app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file
	related functions. Embed the progress in the file dialog where
	possible.

	* app/core/gimpdrawable-blend.[ch]
	* app/core/gimpdrawable-transform.[ch]
	* app/core/gimpimage-convert.[ch]
	* app/core/gimpimage-flip.[ch]
	* app/core/gimpimage-resize.[ch]
	* app/core/gimpimage-rotate.[ch]
	* app/core/gimpimage-scale.[ch]
	* app/core/gimpitem-linked.[ch]
	* app/core/gimpitem.[ch]
	* app/core/gimpchannel.c
	* app/core/gimpdrawable.c
	* app/core/gimplayer.c
	* app/core/gimpselection.c
	* app/vectors/gimpvectors.c: replaced callback/data by GimpProgress.

	* app/tools/gimpblendtool.c
	* app/tools/gimptransformtool.c
	* app/gui/convert-dialog.c
	* app/actions/documents-commands.c
	* app/actions/file-commands.c
	* app/actions/image-commands.c
	* app/actions/layers-commands.c
	* app/actions/plug-in-commands.c
	* app/actions/vectors-commands.c
	* tools/pdbgen/pdb/convert.pdb
	* tools/pdbgen/pdb/edit.pdb
	* tools/pdbgen/pdb/image.pdb
	* tools/pdbgen/pdb/layer.pdb: changed callers accordingly.

	* app/pdb/*_cmds.c: regenerated.
2004-08-10 18:47:21 +00:00
Michael Natterer c5ec0d4f70 *** empty log message *** 2004-07-13 16:36:29 +00:00
Michael Natterer d476ee65ae added signal "color-changed" and emit it in gimp_channel_set_color() and
2004-07-05  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.[ch]: added signal "color-changed" and emit
	it in gimp_channel_set_color() and gimp_channel_set_opacity().

	* app/core/gimpimage-qmask.[ch]: added new functions
	gimp_image_set,get_qmask_color().

	* app/core/gimpimage.[ch]: install a "color-changed" handler on
	gimage->channels and update gimage->qmask_color when the qmask's
	color changes. Fixes bug #145361.

	* app/actions/qmask-commands.c: use the new qmask color API.
2004-07-05 11:18:34 +00:00
Michael Natterer f41e1ff5d0 added "const gchar *stroke_desc" to the GimpItemClass struct and always
2004-04-15  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpitem.[ch]: added "const gchar *stroke_desc" to
	the GimpItemClass struct and always push an undo group
	around GimpItem::stroke().

	* app/core/gimpchannel.c
	* app/core/gimpselection.c
	* app/vectors/gimpvectors.c: set the stroke_desc accordingly
	and don't push undo groups.

	* app/text/gimptextlayer.c (gimp_text_layer_class_init): set
	all of GimpItemClass' undo_descs.

	* app/text/gimptextlayer-transform.c: don't push undo groups here.
2004-04-15 14:41:36 +00:00
Michael Natterer 837fa4294d Context cleanup continued:
2004-04-15  Michael Natterer  <mitch@gimp.org>

	Context cleanup continued:

	* app/core/gimpitem.[ch]: added context parameter to
	GimpItem::stroke().

	* app/core/gimpchannel.c (gimp_channel_stroke)
	* app/vectors/gimpvectors.c (gimp_vectors_stroke): use it to get
	default values from instead of gimp_get_user_context().

	* app/core/gimpselection.c
	* app/gui/stroke-dialog.c
	* tools/pdbgen/pdb/edit.pdb
	* tools/pdbgen/pdb/paths.pdb: changed accordingly.

	* app/pdb/edit_cmds.c
	* app/pdb/paths_cmds.c: regenerated.

	* app/plug-in/plug-in.[ch]: added GimpContext member to the PlugIn
	struct. Added context parameter to plug_in_new(),
	plug_in_call_query() and plug_in_call_init().

	* app/plug-in/plug-in-run.[ch]: added context parameters to
	plug_in_run() and plug_in_repeat().

	* app/gui/plug-in-commands.c
	* app/gui/vectors-commands.c
	* app/pdb/procedural_db.c
	* app/widgets/gimphelp.c: pass a context to plug_in_run() and
	plug_in_repeat().

	* app/plug-in/plug-in-message.c (plug_in_handle_proc_run): call
	procedures with the plug-in's context.

	* app/plug-in/plug-ins.c: use a temporary context for running the
	plug-ins' query() and init() functions. Use the same context for
	running automatic extensions. This temporarily separates the main
	Script-Fu extension from the user context (i.e. scripts have no
	way of setting/getting the global FG, BG, brush etc.).
2004-04-15 13:10:51 +00:00
Michael Natterer 18d9161eea Get rid of the "current_context" which was in fact just a bunch of global
2004-04-15  Michael Natterer  <mitch@gimp.org>

	Get rid of the "current_context" which was in fact just a bunch of
	global variables. Instead, pass the needed context all the way
	from the GUI and the PDB to the core. This is a prerequisite for
	macro recording and generally helps separating the various
	subsystems from each other. Work in progress...

	* app/core/gimp.[ch]: removed member "current_context" and
	gimp_[get|set]_current_context().

	* app/core/gimp-edit.[ch]
	* app/core/gimpdrawable-blend.[ch]
	* app/core/gimpdrawable-bucket-fill.[ch]
	* app/core/gimpdrawable-offset.[ch]
	* app/core/gimpdrawable-transform.[ch]
	* app/core/gimpimage-crop.[ch]
	* app/core/gimpimage-flip.[ch]
	* app/core/gimpimage-merge.[ch]
	* app/core/gimpimage-resize.[ch]
	* app/core/gimpimage-rotate.[ch]
	* app/core/gimpimage.[ch]
	* app/core/gimpimagefile.[ch]
	* app/core/gimpitem-linked.[ch]
	* app/core/gimpitem.[ch]
	* app/core/gimplayer.[ch]
	* app/core/gimpselection.[ch]
	* app/core/gimptemplate.[ch]
	* app/file/file-open.[ch]
	* app/file/file-save.[ch]
	* app/pdb/procedural_db.[ch]
	* app/text/gimptext-compat.[ch]
	* app/text/gimptextlayer-transform.[ch]
	* app/gui/brush-select.[ch]
	* app/gui/font-select.[ch]
	* app/gui/gradient-select.[ch]
	* app/gui/palette-select.[ch]
	* app/gui/pattern-select.[ch]: added tons of "GimpContext *context"
	parameters and use the passed context instead of
	gimp_get_current_context().

	* app/app_procs.c
	* app/batch.c
	* app/core/gimpchannel.c
	* app/core/gimpdrawable.c
	* app/paint/gimperaser.c
	* app/paint/gimppaintbrush.c
	* app/plug-in/plug-in-message.c
	* app/plug-in/plug-ins.c
	* app/text/gimptextlayer.c
	* app/tools/gimpblendtool.c
	* app/tools/gimpbucketfilltool.c
	* app/tools/gimpcroptool.c
	* app/tools/gimpeditselectiontool.c
	* app/tools/gimpfliptool.c
	* app/tools/gimpinktool.c
	* app/tools/gimptransformtool.c
	* app/vectors/gimpvectors.c
	* app/gui/convert-dialog.c
	* app/gui/drawable-commands.c
	* app/gui/edit-commands.c
	* app/gui/file-commands.c
	* app/gui/file-new-dialog.c
	* app/gui/file-open-dialog.c
	* app/gui/file-save-dialog.c
	* app/gui/image-commands.c
	* app/gui/layers-commands.c
	* app/gui/offset-dialog.c
	* app/gui/select-commands.c
	* app/gui/vectors-commands.c
	* app/widgets/gimpdnd.c
	* app/widgets/gimpdocumentview.c
	* app/widgets/gimphelp.c
	* app/widgets/gimpthumbbox.c: pass gimp_get_user_context() or
	GIMP_CONTEXT(tool_options) or whatever is the right context
	to the changed core functions.

	* tools/pdbgen/app.pl: pass "GimpContext *context" to all
	generated PDB invokers.

	* tools/pdbgen/pdb/brush_select.pdb
	* tools/pdbgen/pdb/brushes.pdb
	* tools/pdbgen/pdb/drawable.pdb
	* tools/pdbgen/pdb/edit.pdb
	* tools/pdbgen/pdb/font_select.pdb
	* tools/pdbgen/pdb/gradient_select.pdb
	* tools/pdbgen/pdb/gradients.pdb
	* tools/pdbgen/pdb/image.pdb
	* tools/pdbgen/pdb/layer.pdb
	* tools/pdbgen/pdb/paint_tools.pdb
	* tools/pdbgen/pdb/palette.pdb
	* tools/pdbgen/pdb/palette_select.pdb
	* tools/pdbgen/pdb/palettes.pdb
	* tools/pdbgen/pdb/paths.pdb
	* tools/pdbgen/pdb/pattern_select.pdb
	* tools/pdbgen/pdb/patterns.pdb
	* tools/pdbgen/pdb/selection.pdb
	* tools/pdbgen/pdb/text_tool.pdb
	* tools/pdbgen/pdb/transform_tools.pdb: pass the new context
	parameter to the changed core functions.

	* app/pdb/*_cmds.c: regenerated.
2004-04-14 23:37:34 +00:00
Michael Natterer 069489fb71 GimpItem undo group cleanup in preparation of fixing bug #138356:
2004-04-13  Michael Natterer  <mitch@gimp.org>

	GimpItem undo group cleanup in preparation of fixing bug #138356:

	* app/core/core-enums.[c]: renamed LAYER_SCALE and LAYER_RESIZE
	undo groups to ITEM_SCALE and ITEM_RESIZE.

	* app/core/gimpitem.[ch]: always push undo groups around
	GimpItem::translate(), scale(), resize(), flip(), rotate() and
	transform(). Added the resp. undo_desc strings to GimpItemClass.

	* app/core/gimpchannel.[ch]
	* app/core/gimpdrawable.[ch]
	* app/core/gimplayer.c: removed all undo groups from
	implementations of the above methods. Removed the undo_desc
	strings which were moved to GimpItemClass.

	* app/core/gimpimage-crop.c
	* app/core/gimpselection.c
	* app/gui/layers-commands.c
	* app/vectors/gimpvectors.c
	* tools/pdbgen/pdb/layer.pdb: changed accordingly.

	* app/pdb/layer_cmds.c: regenerated.
2004-04-13 11:43:27 +00:00
Michael Natterer 49238237dc ref new tiles before unrefing the old ones.
2004-03-16  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_set_tiles): ref new
	tiles before unrefing the old ones.

	* app/core/gimpimage-undo-push.c: keep undo memsize exact by
	adjusting undo->size when the stored data changes.

	* app/core/gimpchannel.[ch] (gimp_channel_new_from_alpha)
	* app/core/gimpchannel-select.[ch] (gimp_channel_select_alpha):
	replaced "layer" parameter by "drawable".

	* app/gui/layers-commands.c
	* tools/pdbgen/pdb/selection.pdb: changed accordingly.

	* app/pdb/selection_cmds.c: regenerated.

	* app/core/gimpchannel.c
	* app/core/gimplayer.c
	* app/core/gimplayermask.[ch]
	* app/core/gimpselection.c: remdom cleanup & code review.
2004-03-16 16:23:06 +00:00
Michael Natterer 5ef7c7746d replaced GIMP_UNDO_LAYER_MOD and GIMP_UNDO_CHANNEL_MOD by
2004-03-15  Michael Natterer  <mitch@gimp.org>

	* app/core/core-enums.[ch] (enum GimpUndoType): replaced
	GIMP_UNDO_LAYER_MOD and GIMP_UNDO_CHANNEL_MOD by
	GIMP_UNDO_DRAWABLE_MOD.

	* app/core/gimpimage-undo-push.[ch]: ditto: replaced
	gimp_image_undo_push_layer_mod() and
	gimp_image_undo_push_channel_mod() by
	gimp_image_undo_push_drawable_mod().

	* app/core/gimpdrawable.[ch]: added undo_desc strings for "resize"
	and "scale" to the GimpDrawableClass struct.

	(gimp_drawable_scale)
	(gimp_drawable_resize): pass push_undo = TRUE to
	gimp_drawable_set_tiles_full() and use the undo_desc from the
	class.

	(gimp_drawable_real_set_tiles): push a GIMP_UNDO_DRAWABLE_MOD here...

	* app/core/gimpchannel.c
	* app/core/gimplayer.c: ...and don't push undos in
	GimpItem::scale(), GimpItem::resize(), GimpDrawable::set_tiles().

	* app/core/gimpchannel.c: Removed even more bounds_known = FALSE
	assignments from functions which already call
	gimp_drawable_set_tiles().
2004-03-15 20:58:07 +00:00
Michael Natterer 1ef5fa93ca added "offset_x" and "offset_y" parameters to GimpDrawable::set_tiles().
2004-03-15  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.[ch]: added "offset_x" and "offset_y"
	parameters to GimpDrawable::set_tiles().

	(gimp_drawable_set_tiles): removed the "GimpImageType" parameter.

	(gimp_drawable_set_tiles_full): new function adding type, offset_x
	and offset_y parameters.

	(gimp_drawable_real_set_tiles): set the drawable's offsets from
	the offset parameters and its size from the passed TileManager's
	size. Emit "size_changed" accordingly.

	* app/core/gimpchannel.c
	* app/core/gimpdrawable-offset.c
	* app/core/gimpdrawable-transform.c
	* app/core/gimpimage-convert.c
	* app/core/gimpimage-undo-push.c
	* app/core/gimplayer.c
	* app/text/gimptextlayer.c
	* app/tools/gimptransformtool.c: changed accordingly: removed
	calls to gimp_viewable_size_changed() and all sorts of hackish
	assignments of the drawable's width/height/offset_x/offset_y
	properties.
2004-03-15 19:34:35 +00:00
Michael Natterer 7977603648 don't call gimp_image_flush().
2004-03-15  Michael Natterer  <mitch@gimp.org>

	* app/text/gimptextlayer.c (gimp_text_layer_render): don't call
	gimp_image_flush().

	* app/tools/gimpxttool.c (gimp_text_tool_apply): call it here
	instead.

	Now that we have a common place that exchanges drawable->tiles,
	we can abstract away boundary invalidation for this operation:

	* app/core/gimpdrawable.c (gimp_drawable_real_set_tiles):
	call gimp_drawable_invalidate_boundary() before setting
	the new tiles.

	* app/core/gimpchannel.c (gimp_channel_set_tiles)
	* app/core/gimpdrawable-transform.c (gimp_drawable_transform_paste)
	* app/core/gimpimage-undo-push.c (undo_pop_layer_mod)
	* app/core/gimplayer.c (gimp_layer_scale) (gimp_layer_resize)
	(gimp_layer_flip) (gimp_layer_rotate) (gimp_layer_transform)
	* app/text/gimptextlayer.c (gimp_text_layer_render): removed
	calls to gimp_drawable_invalidate_boundary() from all functions
	which finally call gimp_drawable_real_set_tiles().

	* app/tools/gimptransformtool.c (gimp_transform_tool_doit): no
	need to set channel->bounds_known to FALSE, because
	gimp_drawable_set_tiles() already did this.
2004-03-15 17:53:55 +00:00
Michael Natterer 434500023d Closer to text layer undo:
2004-03-15  Michael Natterer  <mitch@gimp.org>

	Closer to text layer undo:

	* app/core/gimpchannel.c (gimp_channel_set_tiles): invalidate the
	channel's boundary and bounds.

	* app/text/gimptextlayer.c: implement GimpDrawable::swap_pixels()
	and set text_layer->modified = TRUE after upchaining.

	(gimp_text_layer_render): use gimp_drawable_set_tiles() and
	set text_layer->modified = FALSE afterwards.

	* app/core/gimpimage-undo-push.c: cleaned up variable declarations
	and initializations.

	(undo_pop_layer_mod)
	(undo_pop_channel_mod): use gimp_channel_set_tiles() instead of
	touching drawable->tiles manually. Now all pixel manipulation
	(at least on layers) should be virtualized and can be detected by
	the text layer.
2004-03-15 15:18:25 +00:00
Michael Natterer a18a1d12dd Prepare the undo system for proper text layer undo:
2004-03-15  Michael Natterer  <mitch@gimp.org>

	Prepare the undo system for proper text layer undo:

	* app/core/core-enums.[ch] (enum GimpUndoType): replaced
	GIMP_UNDO_IMAGE and GIMP_UNDO_IMAGE_MOD by GIMP_UNDO_DRAWABLE.

	* app/core/gimpimage-undo-push.[ch]: ditto: replaced
	gimp_image_undo_push_image() and gimp_image_undo_push_image_mod()
	by gimp_image_undo_push_drawable() which *always* expects to get a
	TileManager passed. Also added g_return_if_fail()s to check if the
	passed in tile manager follows the semantics of the "sparse"
	boolean.

	(undo_pop_drawable): removed all code and call the new
	gimp_drawable_swap_pixels() instead (see below).

	* app/core/gimpdrawable.[ch] (gimp_drawable_push_undo): if tiles
	are NULL, create a copy of the area here and always pass tiles to
	gimp_image_undo_push_drawable(). Added lots of g_return_if_fail()
	here too.

	Added new vitrual function GimpDrawable::swap_pixels() which
	does what undo_pop_drawable() did.

	* app/core/gimpchannel.c: implement swap_pixels() and invalidate
	the channel's bounds and boundary.
2004-03-15 14:10:30 +00:00
Michael Natterer 2498c6659e Completed the fix for bug #136702:
2004-03-13  Michael Natterer  <mitch@gimp.org>

	Completed the fix for bug #136702:

	* app/core/gimpitem.[ch]: added "gboolean supersample" and
	"gint recursion_level" to GimpItem::transform().

	* app/core/gimpitem-linked.[ch]	(gimp_item_linked_transform): ditto.

	* app/core/gimpdrawable-transform.[ch]: added "recursion_level"
	parameters and removed the RECURSION_LEVEL #define.

	* app/core/gimpchannel.c
	* app/core/gimpdrawable.c
	* app/core/gimplayer.c
	* app/vectors/gimpvectors.c: changed accordingly.

	* app/tools/gimptransformoptions.[ch]: added new property
	"recursion_level" which is not serializable and has no GUI. Pretty
	useless, but it's IMHO better to hardcode the default value here
	than in gimpdrawable-transform.c

	* app/tools/gimptransformtool.c: changed accordingly.

	* tools/pdbgen/pdb/transform_tools.pdb: hardcode "recursion_level"
	to 3.

	* app/pdb/transform_tools_cmds.c: regenerated.
2004-03-13 17:45:58 +00:00
Sven Neumann c179f9acaf added new virtual function GimpDrawable::set_tiles().
2004-03-13  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdrawable.[ch]: added new virtual function
	GimpDrawable::set_tiles().

	* app/core/gimpchannel.c
	* app/core/gimplayer.c: push an undo before chaining up in
	set_tiles().

	* app/core/gimpdrawable-transform.c
	* app/core/gimpimage-convert.c
	* app/tools/gimptransformtool.c: use gimp_drawable_set_tiles()
	instead of fiddling with the drawable's tile manager directly.
2004-03-13 13:56:09 +00:00
Sven Neumann 1359960a56 added progress callback pointers to gimp_item_scale() and its variants.
2004-02-09  Sven Neumann  <sven@gimp.org>

	* app/core/gimpitem.[ch]: added progress callback pointers to
	gimp_item_scale() and its variants.

	* app/core/gimpchannel.c
	* app/core/gimpdrawable.c
	* app/core/gimpimage-scale.c
	* app/core/gimplayer.c
	* app/core/gimpselection.c
	* app/gui/layers-commands.c97999
	* app/paint-funcs/paint-funcs.[ch]
	* app/vectors/gimpvectors.c
	* tools/pdbgen/pdb/layer.pdb: changed accordingly. Fixes bug #97999.

	* app/pdb/layer_cmds.c: regenerated.
2004-02-09 00:09:20 +00:00
Sven Neumann b49e39e8ed app/core/gimpchannel.c app/tools/gimptexttool.c app/vectors/gimpvectors.c
2004-02-04  Sven Neumann  <sven@gimp.org>

	* app/core/gimpchannel.c
	* app/tools/gimptexttool.c
	* app/vectors/gimpvectors.c
	* app/widgets/gimpbufferview.c: removed double semicolons.
2004-02-04 16:52:35 +00:00
Michael Natterer 748d432f3a removed gimp_image_owns_item() again.
2004-01-26  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage.[ch]: removed gimp_image_owns_item() again.

	* app/core/gimpitem.[ch]: instead, added new virtual function
	GimpItem::is_attached().

	* app/core/gimpchannel.c
	* app/core/gimplayer.c
	* app/core/gimplayermask.c
	* app/core/gimpselection.c
	* app/vectors/gimpvectors.c: implement it.

	* app/core/gimp-edit.c
	* app/core/gimpdrawable-transform.c
	* app/core/gimplayer-floating-sel.c
	* app/text/gimptext-compat.c
	* tools/pdbgen/pdb/edit.pdb
	* tools/pdbgen/pdb/floating_sel.pdb
	* tools/pdbgen/pdb/selection.pdb
	* tools/pdbgen/pdb/text_tool.pdb
	* tools/pdbgen/pdb/transform_tools.pdb_ changed accordingly.

	* app/pdb/edit_cmds.c
	* app/pdb/floating_sel_cmds.c
	* app/pdb/selection_cmds.c
	* app/pdb/text_tool_cmds.c
	* app/pdb/transform_tools_cmds.c: regenerated.
2004-01-26 16:18:16 +00:00
Michael Natterer f3c91918de added "gboolean use_default_values" to GimpItem::stroke().
2004-01-22  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpitem.[ch]: added "gboolean use_default_values"
	to GimpItem::stroke().

	* app/core/gimpselection.c: changed accordingly.

	* app/core/gimpchannel.c
	* app/vectors/gimpvectors.c: if use_default_values is TRUE, don't
	use the GimpPaintOptions passed in the GimpPaintInfo, but create a
	new one.

	* app/gui/stroke-dialog.c: pass FALSE so the values as set in the
	tool options are used.

	* tools/pdbgen/pdb/edit.pdb
	* tools/pdbgen/pdb/paths.pdb: pass TRUE so tool options settings
	don't affect PDB stroke calls. Fixes part 2 of bug #132145.

	* app/pdb/edit_cmds.c
	* app/pdb/paths_cmds.c: regenerated.
2004-01-22 00:16:49 +00:00
Michael Natterer db6ff24dcd converted tabs to spaces, cosmetics.
2004-01-12  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.c: converted tabs to spaces, cosmetics.
2004-01-12 13:57:30 +00:00
Sven Neumann fd30d5c976 app/config/gimpbaseconfig.h use gint64 for all memsize properties.
2003-11-16  Sven Neumann  <sven@gimp.org>

	* app/config/gimpbaseconfig.h
	* app/config/gimpcoreconfig.h: use gint64 for all memsize properties.

	* app/base/tile-manager.[ch] (tile_manager_get_memsize): since
	tiles can be swapped out, a tilemanager can be larger than gsize
	(on 32bit platforms). Use a gint64 to avoid an overflow.

	* app/core/gimp.c
	* app/core/gimpbrush.c
	* app/core/gimpbrushpipe.c
	* app/core/gimpbuffer.c
	* app/core/gimpchannel.c
	* app/core/gimpcontainer.c
	* app/core/gimpcontext.c
	* app/core/gimpdata.c
	* app/core/gimpdatafactory.c
	* app/core/gimpdrawable.c
	* app/core/gimpgradient.c
	* app/core/gimpimage-undo-push.c
	* app/core/gimpimage-undo.[ch]
	* app/core/gimpimage.c
	* app/core/gimpitem.c
	* app/core/gimpitemundo.[ch]
	* app/core/gimplayer.c
	* app/core/gimplist.c
	* app/core/gimpobject.[ch]
	* app/core/gimppalette.c
	* app/core/gimpparasitelist.c
	* app/core/gimppattern.c
	* app/core/gimpundo.[ch]
	* app/core/gimpundostack.c
	* app/core/gimpviewable.c
	* app/text/gimptext.c
	* app/text/gimptextlayer.c
	* app/vectors/gimpstroke.c
	* app/vectors/gimpvectors.c: use gint64 for gimp_object_get_memsize()
	and all its implementations.

	* app/display/gimpdisplayshell-title.c
	* app/gui/info-window.c: changed accordingly.
2003-11-16 17:51:36 +00:00
Michael Natterer d734595991 create a channel which the size of the layer, not of the image...
2003-10-06  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.c (gimp_channel_new_from_alpha): create
	a channel which the size of the layer, not of the image...

	* app/core/gimpchannel-select.c (gimp_channel_select_alpha):
	...and take the layer's offsets into account.

	* app/core/gimpscanconvert.[ch] (gimp_scan_convert_render): added
	off_x and off_y parameters and don't use the passed TileManager's
	offsets.

	* app/core/gimpchannel-select.c
	* app/core/gimpdrawable-stroke.c
	* app/tools/gimpiscissorstool.c: changed accordingly.
2003-10-06 16:43:05 +00:00
Michael Natterer a20e04bdaf added new virtual functions GimpDrawable::get_active_components(),
2003-10-06  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.[ch]: added new virtual functions
	GimpDrawable::get_active_components(), apply_region() and
	replace_region().

	* app/core/Makefile.am
	* app/core/gimpdrawable-combine.[ch]: new files containing
	apply_region()'s and replace_region()'s default implementation.
	They are identical to the ones removed from GimpImage except that
	they don't mask the selection with itself (bug #107949).

	* app/core/gimpchannel.c
	* app/core/gimplayer.c: implement get_active_components().

	* app/core/gimpchannel.c: implement apply_region() and
	replace_region() and invalidate the channel's boundary
	before upchaining (bug #107949).

	* app/core/gimpimage.[ch]: removed gimp_image_apply_image(),
	gimp_image_replace_image() and gimp_image_get_active_components().

	* app/core/gimpimage-undo-push.c (undo_pop_image): invalidate
	boundary and bounds if the drawable is a channel (bug #107949).

	(undo_pop_mask)
	(undo_pop_channel_mod): finish previous commit :)

	* app/core/gimp-edit.c
	* app/core/gimpdrawable-blend.c
	* app/core/gimpdrawable-bucket-fill.c
	* app/core/gimpdrawable-stroke.c
	* app/core/gimpimagemap.c
	* app/core/gimplayer-floating-sel.c
	* app/paint/gimppaintcore.c
	* app/tools/gimpinktool.c: changed accordingly.
2003-10-06 14:40:12 +00:00
Michael Natterer f0372cad0f Treat changes to the selection like changes to any other drawable:
2003-10-06  Michael Natterer  <mitch@gimp.org>

	Treat changes to the selection like changes to any other drawable:

	* app/core/gimpchannel.c
	* app/core/gimpchannel-combine.c: call gimp_drawable_update() after
	changing the channel.

	* app/core/gimpimage.[ch]: added struct GimpImageFlushAccumulator
	with one member "gboolean mask_changed". Connect to "update" of
	the selection and set accum.mask_changed to TRUE in the callback.
	Added default implementation for GimpImage::flush() and emit
	"mask_changed" there.

	Unrelated:
	* app/core/gimpimage.h: removed GimpGuide struct...
	* app/core/gimpimage-guides.h: ...and added it here.

	* app/core/gimpimage-undo-push.c (undo_pop_mask)
	(undo_pop_channel_mod): don't distinguish between selection and
	non-selection channels and just call gimp_drawable_update().

	* app/core/gimpundo.h
	* app/core/gimpimage-undo.c: removed "gboolean mask_changed" from
	the GimpUndoAccumulator struct since we don't have to care about
	that signal explicitly any more.

	* app/display/gimpdisplay-foreach.[ch]: removed gimp_displays_flush().

	* tools/pdbgen/pdb/display.pdb (displays_flush_invoker): call
	gimp_image_flush() on all images so the flush accumulator is
	honored.

	This generalization enables the removal of more special purpose
	code which was needed to treat the selection different:

	* app/core/gimpimage-mask-select.[ch]: removed...

	* app/core/gimpchannel-select.[ch]: ...and added under a new name
	because it's not selection specific any more.

	* app/core/gimpimage-mask.[ch]: removed...

	* app/core/gimpselection.[ch]: ...added the two remaining
	functions here. Removed all calls to gimp_image_mask_changed().

	* app/core/Makefile.am
	* app/core/gimp-edit.c
	* app/core/gimpdrawable-transform.c
	* app/core/gimpimage-scale.c
	* app/core/gimpimage-snap.c
	* app/display/gimpdisplayshell.c
	* app/gui/channels-commands.c
	* app/gui/layers-commands.c
	* app/gui/select-commands.c
	* app/gui/vectors-commands.c
	* app/tools/gimpbycolorselecttool.c
	* app/tools/gimpeditselectiontool.c
	* app/tools/gimpellipseselecttool.c
	* app/tools/gimpfreeselecttool.c
	* app/tools/gimpfuzzyselecttool.c
	* app/tools/gimpiscissorstool.c
	* app/tools/gimprectselecttool.c
	* app/tools/gimptransformtool.c
	* app/widgets/gimpchanneltreeview.c
	* app/widgets/gimpselectioneditor.c
	* app/widgets/gimpvectorstreeview.c
	* app/xcf/xcf-save.c
	* tools/pdbgen/pdb/paths.pdb
	* tools/pdbgen/pdb/selection.pdb
	* tools/pdbgen/pdb/selection_tools.pdb: changed accordingly.

	* app/core/gimpdrawable-bucket-fill.c
	* app/core/gimpimage-colormap.c
	* app/core/gimplayer-floating-sel.c
	* app/core/gimplayer.c
	* app/gui/image-menu.c
	* app/paint/gimppaintcore.c
	* app/tools/gimpcroptool.c
	* app/tools/gimpinkoptions.c
	* app/tools/gimpvectortool.c: removed useless and/or obsolete
	#includes.

	* app/pdb/display_cmds.c
	* app/pdb/paths_cmds.c
	* app/pdb/selection_cmds.c
	* app/pdb/selection_tools_cmds.c: regenerated.
2003-10-06 12:17:11 +00:00
Michael Natterer 5426aba926 pass the channel's offsets to gimp_paint_core_stroke_boundary().
2003-09-30  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.c (gimp_channel_stroke): pass the channel's
	offsets to gimp_paint_core_stroke_boundary().
2003-09-30 15:59:57 +00:00
Simon Budig 20683bede5 Accept NULL for ret_closed.
2003-09-30  Simon Budig  <simon@gimp.org>

	* app/vectors/gimpbezierstroke.c:
	(gimp_bezier_stroke_interpolate) Accept NULL for ret_closed.

	* app/widgets/gimppreviewrenderervectors.c: removed "closed"
	variable.

	* app/core/gimpdrawable-stroke.[ch]: Factored out the final
	rendering of the scanconvert. Implemented
	gimp_drawable_stroke_boundary. Unfortunately the results are
	not really good, since the boundary calculation code is
	too exact for this purpose. I have a rough idea how to fix this.

	* app/core/gimpchannel.c: changed accordingly.
2003-09-30 15:16:51 +00:00
Michael Natterer d0e1c1c661 cleanup.
2003-09-30  Michael Natterer  <mitch@gimp.org>

	* app/paint/gimppaintcore-stroke.c: cleanup.

	(gimp_paint_core_stroke_boundary): don't push a separate undo
	for each part of the boundary.

	* app/core/gimpdrawable-stroke.[ch]: added empty stub
	gimp_drawable_stroke_boundary(). Changed
	gimp_drawable_stroke_vectors() to take the GimpStrokeOptions as
	second parameter.

	* app/core/gimpchannel.c (gimp_channel_stroke): use it. No need
	to push an undo group around gimp_paint_core_stroke_boundary().

	* app/vectors/gimpvectors.c: changed accordingly.

	* app/widgets/gimpselectioneditor.[ch]: added a GimpStrokeItemFunc
	pointer and use it for stroking.

	* app/gui/edit-commands.[ch] (edit_stroke_selection): a
	GimpStrokeItemFunc which strokes the selection using the
	stroke-dialog.

	* app/gui/dialogs-constructors.c: use it for the selection editor.
2003-09-30 02:44:17 +00:00
Simon Budig 10a5269e22 New Object, holding the Options for a Libart-Stroke.
2003-09-26  Simon Budig  <simon@gimp.org>

	* app/core/gimpstrokeoptions.[ch]: New Object, holding the
	Options for a Libart-Stroke.

	* app/core/Makefile.am
	* app/core/core-types.h: Changed accordingly.

	* app/core/gimpitem.[ch]: Changed the Signature of
	gimp_item_stroke to accept a GimpObject instead of a
	GimpPaintInfo. This enables us to pass GimpStrokeOptions
	to it. To be cleaned up for 2.2.

	* app/core/gimpselection.c
	* app/core/gimpchannel.c
	* app/vectors/gimpvectors.c: Changed accordingly

	* app/gui/edit-commands.c
	* app/gui/vectors-commands.c
	* app/pdb/edit_cmds.c
	* app/pdb/paths_cmds.c
	* app/widgets/gimpselectioneditor.c
	* app/widgets/gimpvectorstreeview.c: Fixed warnings by
	casting the GimpPaintInfo to GimpObject.
2003-09-26 15:37:53 +00:00
Michael Natterer d620e7993d transform the channel's bounding box later so we really update the
2003-09-16  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.c (gimp_channel_translate): transform the
	channel's bounding box later so we really update the channel's new
	*and* old area.
2003-09-16 11:39:29 +00:00
Michael Natterer 7a5f914866 To optimize duplicate and/or wrong image updates away, introduced new
2003-09-06  Michael Natterer  <mitch@gimp.org>

	To optimize duplicate and/or wrong image updates away, introduced
	new policy that a child object must never explicitly update or
	invalidate its parent object (just like the GUI is not updated
	explicitly by the core):

	* app/core/gimpdrawable.[ch]: added new signal
	GimpDrawable::update(). Never update or invalidate the image when
	the drawable is updated or invalidated.

	(gimp_drawable_set_visible): don't gimp_drawable_update() the
	drawable since its pixels have not changed.

	* app/core/gimpimage.[ch]: connect to the "add" and "remove"
	signals of the layers and channels containers. Also connect to the
	"update" and "visibility_changed" signals of all drawables in
	these containers (optimizes away updates issued by drawables which
	are not yet added to the image and updates of the selection
	mask). Also, don't propagate updates to the image if the emitting
	drawable is invisible (optimizes away updates issued by invisible
	drawables).

	(gimp_image_add_layer,channel)
	(gimp_image_remove_layer,channel): don't update the image since
	that's done by our "add" and "remove" handlers now.

	(gimp_image_position_layer,channel): update just the image, not
	the drawable since its pixels have not changed.

	(gimp_image_real_colormap_changed)
	(gimp_image_set_component_visible): always call
	gimp_image_update() *and* gimp_viewable_invalidate_preview() to
	get everything updated, since update and invalidate of images are
	not connected.

	* app/core/gimpimage-undo-push.c (undo_pop_layer,channel): don't
	update the drawable since (a) its pixels don't change and (b) the
	image updates itself upon adding/removing now.

	(undo_pop_layer_mod): replaced gimp_image_update() by
	gimp_drawable_update() (just for consistency with other similar
	functions).

	* app/core/gimplayer.c: connect to "update" of the layer mask and
	issue updates on the layer if the mask update has any effect on
	the projection.
	(gimp_layer_create_mask): don't set the mask's offsets here since
	they may be different when we later add the mask to the layer.

	* app/core/gimplayermask.c (gimp_layer_mask_set_layer): set the
	mask offsets here instead.

	* app/core/gimpchannel.c (gimp_channel_translate): update the
	channel even if push_undo == FALSE.

	* app/paint/gimppaintcore.c (gimp_paint_core_finish)
	* app/tools/gimpinktool.c (ink_finish): invalidate both the
	drawable and the image preview since invalidating the drawable
	doesn't invalidate the image any more.

	* app/text/gimptextlayer.c (gimp_text_layer_render_now): also
	update the new extents of the text layer, not only the old one.

	(gimp_text_layer_render_layout): don't update the drawable since
	gimp_drawable_fill() already updated it.
2003-09-06 20:06:53 +00:00
Michael Natterer e2e049080b removed gimp_channel_load().
2003-09-04  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.[ch]: removed gimp_channel_load().

	* app/core/gimpimage-mask.[ch]: removed gimp_image_mask_load()
	and _save().

	* app/core/gimpselection.[ch]: added gimp_selection_load() and
	_save() since these functions are specific to the selection.

	* app/core/gimpimage-qmask.c
	* app/gui/select-commands.c
	* app/widgets/gimpselectioneditor.c
	* tools/pdbgen/pdb/selection.pdb: changed accordingly.

	* app/pdb/selection_cmds.c: regenerated.
2003-09-04 20:18:08 +00:00
Michael Natterer ce437b5870 app/core/gimpchannel.[ch] reordered GimpChannel::is_empty() after
2003-09-04  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.[ch]
	* app/core/gimpselection.c: reordered GimpChannel::is_empty()
	after GimpChannel::boudary() and GimpChannel::bounds() because it
	belongs to that group of functions.
2003-09-04 13:45:31 +00:00
Michael Natterer 3911d511cf app/core/Makefile.am new files split out of gimpchannel.[ch].
2003-09-04  Michael Natterer  <mitch@gimp.org>

	* app/core/Makefile.am
	* app/core/gimpchannel-combine.[ch]: new files split out of
	gimpchannel.[ch].

	* app/core/gimpchannel.[ch]: removed the combine functions here.

	* app/core/gimpdrawable-bucket-fill.c
	* app/core/gimpimage-mask-select.c
	* tools/pdbgen/pdb/channel.pdb: changed #includes accordingly.

	* app/pdb/channel_cmds.c: regenerated.
2003-09-04 12:18:40 +00:00
Michael Natterer f9f5089f91 added new pure virtual function GimpDrawable::invalidate_boundary().
2003-09-04  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.[ch]: added new pure virtual function
	GimpDrawable::invalidate_boundary().

	* app/core/gimplayer.[ch]: implement it and removed public
	function gimp_layer_invalidate_boundary().

	* app/core/gimpchannel.[ch]: implement it.

	* app/core/gimpselection.[ch]: implement it and removed public
	function gimp_selection_invalidate().

	* app/core/gimpimage-mask.c (gimp_image_mask_invalidate)
	* app/core/gimpimage-undo-push.c
	* app/core/gimpimage.c
	* app/core/gimplayer-floating-sel.c
	* app/text/gimptextlayer.c: changed accordingly.

	* app/core/gimpchannel.[ch]: made gimp_channel_push_undo() a
	public function and made it call
	gimp_drawable_invalidate_boundary(). Added undo_desc strings for
	all undo pushing functions to GimpChannelClass.

	* app/core/gimpselection.[ch]: removed gimp_selection_push_undo()
	since after the change above it was identical to
	gimp_channel_push_undo().  Don't push any undo here since
	upchaining does the right thing now.  Override GimpChannelClass'
	undo_desc strings to say "Selection".

	* app/core/gimpimage-mask.c (gimp_image_mask_push_undo): changed
	accordingly.
2003-09-04 11:33:06 +00:00
Michael Natterer 420d17d286 made all functions which push an undo step virtual and added them all as
2003-09-03  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.[ch]: made all functions which push an
	undo step virtual and added them all as default implementations.

	* app/core/Makefile.am
	* app/core/core-types.h
	* app/core/gimpselection.[ch]: new object which is a GimpChannel
	subclass and implements all of its virtual functions, pushes
	an image_mask undo and chains up with "push_undo = FALSE".

	* app/core/gimpimage-mask.[ch]: made most functions simple
	wrappers like gimp_channel_invert(gimp_image_get_mask(gimage));
	so the API stays the same for now.

	* app/core/gimpimage.[ch]: create a GimpSelection object
	as gimage->selection_mask. Removed "gboolean mask_stroking"
	since it is in GimpSelection now.

	* app/xcf/xcf-load.c (xcf_load_channel_props): added an evil hack
	which turns a GimpChannel into a GimpSelection once we figured the
	loaded channel is the selection.

	* app/core/gimplayer.c (gimp_layer_create_mask):
	gimp_channel_clear() takes an additional "const gchar *undo_desc"
	parameter now.

	* app/core/gimpscanconvert.c (gimp_scan_convert_to_channel): set
	mask->bounds_known to FALSE before returning the new channel

	* app/tools/gimpiscissorstool.c (iscissors_convert): no need to
	call gimp_channel_invalidate_boundary() on the channel returned by
	the above function.

	* app/core/gimpchannel.[ch]: removed
	gimp_channel_invalidate_boundary() since it is no longer needed.
2003-09-02 23:07:40 +00:00
Michael Natterer dcb6f225d9 added new virtual function GimpItem::stroke().
2003-09-01  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpitem.[ch]: added new virtual function
	GimpItem::stroke().

	* app/core/gimpchannel.c
	* app/vectors/gimpvectors.c: implement GimpItem::stroke().

	* app/core/gimpimage-mask.[ch] (gimp_image_mask_stroke): changed
	signature to match gimp_item_stroke() (the selection mask *really*
	should be a GimpChannel subclass).
	Removed global variable "gboolean gimp_image_mask_stroking"...

	* app/core/gimpimage.[ch]: ...and added "gboolean mask_stroking"
	to the GimpImage struct.

	* app/gui/vectors-commands.[ch]: removed vectors_stroke_vectors().

	* app/widgets/widgets-types.h: removed GimpStrokeItemFunc typedef.

	* app/widgets/gimpvectorstreeview.[ch]: removed "stroke_item_func"
	member and use gimp_item_stroke() instead.

	* app/gui/dialogs-constructors.c (dialogs_vectors_list_view_new)
	* app/gui/edit-commands.c (edit_stroke_cmd_callback)
	* app/gui/vectors-commands. (vectors_stroke_cmd_callback)
	* app/widgets/gimpselectioneditor.c
	(gimp_selection_editor_stroke_clicked)
	* tools/pdbgen/pdb/edit.pdb (gimp_edit_stroke): changed accordingly.

	* app/pdb/edit_cmds.c: regenerated.

	Note that there is no GUI for "stroke channel", although it would
	be utterly cool to have one, since currently slelection stroking
	cannot be masked by a selection (because we stroke the selection).
	Anyway, if anyone has an idea how to trigger "stroke channel" with
	another drawable active (the one to stroke to), please let me
	know...
2003-09-01 17:56:44 +00:00
Michael Natterer 2da93d692f app/core/gimpchannel.[ch] (gimp_channel_boundary)
2003-08-30  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.[ch] (gimp_channel_boundary)
	* app/core/gimpimage-mask.[ch] (gimp_image_mask_boundary)
	* app/core/gimplayer-floating-sel.[ch] (floating_sel_boundary):
	return const BoundSeg arrays because they are cached and not newly
	allocated.

	* app/base/boundary.[ch] (sort_boundary)
	* app/tools/gimpdrawtool.[ch] (gimp_draw_tool_draw_boundary):
	take const BoundSeg arrays.

	* app/core/gimpimage-mask.c (gimp_image_mask_stroke)
	* app/display/gimpdisplayshell-selection.c
	* app/tools/gimpeditselectiontool.c (init_edit_selection):
	changed accordingly.
2003-08-30 14:25:05 +00:00
Michael Natterer 24f3da165b changed GimpObject::get_memsize() to return a second value named
2003-08-25  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpobject.[ch]: changed GimpObject::get_memsize() to
	return a second value named "gui_size", where the primary return
	value is the "constant" actual size (as long as no operation is
	performed on the object), and the second "gui_size" return value
	is the size of temporary stuff like preview caches or boundary
	segments (which may change asynchronously, even if the object is
	on the undo stack).

	* app/core/gimp.c
	* app/core/gimpbrush.c
	* app/core/gimpbrushpipe.c
	* app/core/gimpbuffer.c
	* app/core/gimpchannel.c
	* app/core/gimpcontainer.c
	* app/core/gimpcontext.c
	* app/core/gimpdata.c
	* app/core/gimpdatafactory.c
	* app/core/gimpdrawable.c
	* app/core/gimpgradient.c
	* app/core/gimpimage-undo.c
	* app/core/gimpimage.c
	* app/core/gimpitem.c
	* app/core/gimplayer.c
	* app/core/gimplist.c
	* app/core/gimppalette.c
	* app/core/gimpparasitelist.c
	* app/core/gimppattern.c
	* app/core/gimpundo.c
	* app/core/gimpundostack.c
	* app/core/gimpviewable.c
	* app/text/gimptextlayer.c
	* app/vectors/gimpstroke.c
	* app/vectors/gimpvectors.c: changed get_memsize() implementations
	accordingly.

	* app/display/gimpdisplayshell-title.c
	* app/gui/debug-commands.c
	* app/widgets/gimppreview.c: changed callers accordingly.

	* app/core/gimpimage-undo-push.c: changed layer, channel, vectors
	and layer_mask undo steps to add/subtract the size of the
	resp. objects whenever they take/drop ownership of them. Ignore
	the objects' "gui_size" to get identical sizes on
	adding/subtracting. Fixes bug #120429.
2003-08-25 10:49:33 +00:00
Michael Natterer a319c455d9 app/widgets/Makefile.am new file defining the available help topics. Work
2003-08-21  Michael Natterer  <mitch@gimp.org>

	* app/widgets/Makefile.am
	* app/widgets/gimphelp-ids.h: new file defining the available help
	topics. Work in progress and totally unusable for matching to the
	help system. Stay tuned...

	* app/gui/about-dialog.c
	* app/gui/brushes-menu.c
	* app/gui/buffers-menu.c
	* app/gui/channels-commands.[ch]
	* app/gui/channels-menu.c
	* app/gui/edit-commands.c
	* app/gui/file-commands.c
	* app/gui/file-new-dialog.c
	* app/gui/file-open-dialog.c
	* app/gui/file-save-dialog.c
	* app/gui/gradients-commands.c
	* app/gui/gradients-menu.c
	* app/gui/image-menu.c
	* app/gui/layers-commands.[ch]
	* app/gui/layers-menu.c
	* app/gui/module-browser.c
	* app/gui/offset-dialog.c
	* app/gui/palettes-menu.c
	* app/gui/patterns-menu.c
	* app/gui/resize-dialog.c
	* app/gui/select-commands.c
	* app/gui/templates-menu.c
	* app/gui/tips-dialog.c
	* app/gui/toolbox-menu.c
	* app/gui/vectors-commands.[ch]
	* app/gui/vectors-menu.c: replaced literal HTML file paths by help
	IDs from gimphelp-ids.h. Renamed some menu callbacks to be
	consistent with similar ones. This is just an intermediate commit
	and not finished.

	While browsing all the menus, I noticed that our "x to selection"
	functions are not consistent at all. They should all offer the
	REPLACE,ADD,SUBTRACT,INTERSECT options:

	* app/core/gimpchannel.[ch]: added new function
	gimp_channel_new_from_alpha(). Removed gimp_channel_layer_alpha()
	and gimp_channel_layer_mask().

	* app/core/gimpimage-mask.[ch]: added
	gimp_image_mask_select_alpha() and
	gimp_image_mask_select_component() which offer the full set of
	operation, feather and feather_radius parameters as the other
	selection functions.

	* app/core/gimpimage-mask-select.[ch]: removed
	gimp_image_mask_layer_alpha() and gimp_image_mask_layer_mask().

	* app/gui/channels-commands.c (channels_channel_to_selection): use
	gimp_image_mask_select_component() instead of implementing it
	here.

	* app/gui/image-menu.c
	* app/gui/layers-commands.[ch]: offer the full choice of
	REPLACE,ADD,SUBTRACT,INTERSECT with "Alpha to Selection" and "Mask
	to Selection".

	* tools/pdbgen/pdb/selection.pdb: changed accordingly.

	* app/pdb/selection_cmds.c: regenerated.
2003-08-21 15:54:47 +00:00
Michael Natterer e8a7307a8f added "guchar threshold" parameters all over the place instead of always
2003-07-10  Michael Natterer  <mitch@gimp.org>

	* app/base/boundary.[ch]: added "guchar threshold" parameters all
	over the place instead of always using 127. Made the HALF_WAY
	#define public.
	(find_empty_segs): don't crash if PR->tiles is NULL but treat
	PR->data as the entire buffer so the function can be used on
	PixelRegions of TempBufs.

	* app/core/gimpchannel.c
	* app/core/gimplayer-floating-sel.c
	* app/tools/gimpfuzzyselecttool.c: pass HALF_WAY to
	find_mask_boundary().
2003-07-10 11:59:38 +00:00
Sven Neumann 5c4020edf2 libgimpmath/gimpmathtypes.h moved struct declarations.
2003-07-07  Sven Neumann  <sven@gimp.org>

	* libgimpmath/gimpmathtypes.h
	* libgimpmath/gimpvector.h: moved struct declarations.

	* libgimpmath/gimpmatrix.[ch]: made GimpMatrix3 and GimpMatrix4
	structs instead of typedefs for arrays. Pass them by reference,
	not by value. Added lots of const qualifiers.

	* app/core/gimpchannel.c
	* app/core/gimpdrawable-transform-utils.[ch]
	* app/core/gimpdrawable-transform.[ch]
	* app/core/gimpdrawable.c
	* app/core/gimpitem-linked.[ch]
	* app/core/gimpitem.[ch]
	* app/core/gimplayer.c
	* app/pdb/transform_tools_cmds.c
	* app/tools/gimpperspectivetool.c
	* app/tools/gimprotatetool.c
	* app/tools/gimpscaletool.c
	* app/tools/gimpsheartool.c
	* app/tools/gimptransformtool.c
	* app/vectors/gimpvectors.c
	* tools/pdbgen/pdb/transform_tools.pdb: changed accordingly.
2003-07-07 13:50:48 +00:00