Commit Graph

168 Commits

Author SHA1 Message Date
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 fe9d9be66b Code review & cleanup:
2004-07-14  Michael Natterer  <mitch@gimp.org>

	Code review & cleanup:

	* app/config/gimpguiconfig.[ch]: removed transparency-size,
	transparency-type and snap-distance properties...

	* app/config/gimpdisplayconfig.[ch]: ...and added them here.

	* app/display/gimpdisplayshell.c
	* app/tools/gimpmovetool.c: changed accordingly.

	* app/core/gimpimage-scale.[ch] (gimp_layer_scale_check): added a
	"max_memsize" parameter instead of looking it up in GimpGuiConfig.

	* app/actions/image-commands.c: changed accordingly.

	* app/core/gimparea.c
	* app/core/gimpdrawable.c: converted tabs to spaces, cleanup.

	* app/core/gimpprojection.[ch]: renamed IdleRenderStruct to
	GimpProjectionIdleRender, reordered functions, cleanup.

	* app/display/gimpdisplay-handlers.c
	* app/display/gimpdisplay.c: removed unused #includes.

	* app/display/gimpdisplayshell.[ch]
	* app/display/gimpdisplayshell-close.c: renamed
	shell->warning_dialog to shell->close_dialog, some random
	cleanups.

	* app/display/gimpdisplayshell-handlers.c
	* app/widgets/gimpselectioneditor.c: minor coding style cleanup.
2004-07-14 10:31:59 +00:00
Michael Natterer 54cc251b08 app/core/Makefile.am app/core/core-types.h new interface which has
2004-07-14  Michael Natterer  <mitch@gimp.org>

	* app/core/Makefile.am
	* app/core/core-types.h
	* app/core/gimppickable.[ch]: new interface which has
	get_image_type(), get_tiles() and get_color_at() methods.

	* app/core/gimpdrawable.[ch]
	* app/core/gimpimagemap.[ch]
	* app/core/gimpprojection.[ch]: implement GimpPickableInterface
	and removed public get_colot_at() functions.

	* app/core/gimpimage-pick-color.[ch]: removed typedef
	GimpImagePickColorFunc and gimp_image_pick_color_by_func(). Use
	gimp_pickable_pick_color() instead.

	* app/core/gimpimage-contiguous-region.c
	* app/core/gimpimage-crop.c
	* app/gui/info-window.c
	* app/paint/gimpconvolve.c
	* app/paint/gimpsmudge.c
	* app/tools/gimpbycolorselecttool.c
	* app/tools/gimpimagemaptool.c
	* app/widgets/gimpselectioneditor.c: use GimpPickable functions
	instead of the various get_color_at() functions. Simplifies code
	which has a "sample_merged" boolean. Various cleanups.
2004-07-13 23:04:05 +00:00
Michael Natterer de7a940501 app/config/gimpconfig-deserialize.c app/config/gimpscanner.c
2004-05-12  Michael Natterer  <mitch@gimp.org>

	* app/config/gimpconfig-deserialize.c
	* app/config/gimpscanner.c
	* app/core/gimp-edit.c
	* app/core/gimpchannel-combine.c
	* app/core/gimpcontainer.c
	* app/core/gimpdrawable-bucket-fill.c
	* app/core/gimpdrawable-combine.c
	* app/core/gimpdrawable.c
	* app/core/gimpgradient.c
	* app/core/gimpimage-flip.c
	* app/core/gimpimage-merge.c
	* app/core/gimpimage-projection.c
	* app/core/gimpimage.c
	* app/display/gimpdisplay-handlers.c
	* app/display/gimpdisplayshell-callbacks.c
	* app/display/gimpprogress.c
	* app/gui/info-dialog.c
	* app/gui/module-browser.c
	* app/gui/offset-dialog.c
	* app/plug-in/plug-in.c
	* app/tools/gimpdrawtool.c
	* app/tools/tool_manager.c
	* app/widgets/gimpactiongroup.c
	* app/widgets/gimpdialogfactory.c
	* app/widgets/gimpgradienteditor.c
	* app/widgets/gimpitemfactory.c
	* app/widgets/gimppropwidgets.c
	* app/widgets/gimpwidgets-utils.c
	* app/xcf/xcf-save.c
	* libgimp/gimpexport.c
	* libgimpwidgets/gimphelpui.c
	* libgimpwidgets/gimppixmap.c
	* libgimpwidgets/gimpunitmenu.c: replaced G_GNUC_FUNCTION,
	G_GNUC_PRETTY_FUNCTION, G_STRLOC and hardcoded function names in
	g_warning()s by G_STRFUNC.
2004-05-12 08:13:33 +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 2e61d12ed4 Moved the calls to floating_sel_relax()/rigor() from various places to two
2004-04-13  Michael Natterer  <mitch@gimp.org>

	Moved the calls to floating_sel_relax()/rigor() from various
	places to two single spots in the core where they are actually
	needed. Fixes bug #138356 (which was caused by the projection
	being triggered in the middle of changing the floating selection's
	size or the size of the drawable it is attached to). This commit
	effectively removes floating selection fiddling from the core's
	public API.

	* app/core/gimpdrawable.[ch] (gimp_drawable_has_floating_sel): new
	function which returns TRUE if there is a floating selection
	attached to the drawable.

	* app/core/gimpdrawable.c (gimp_drawable_translate)
	(gimp_drawable_set_tiles_full): if the drawable *has* a floating
	selection, relax/rigor it before/after modifying the drawable.

	* app/core/gimplayer.c (gimp_layer_translate)
	(gimp_layer_set_tiles): if the layer *is* the floating selection,
	relax/rigor it before/after modifying it.

	* app/core/gimpdrawable-transform.c
	* app/core/gimpimage-convert.c
	* app/core/gimpimage-crop.c
	* app/core/gimpimage-flip.c
	* app/core/gimpimage-resize.c
	* app/core/gimpimage-rotate.c
	* app/core/gimpimage-scale.c
	* app/gui/layers-commands.c
	* app/tools/gimpeditselectiontool.c
	* tools/pdbgen/pdb/layer.pdb: removed calls to
	floating_sel_rigor()/relax() all over the place. Also removed
	lots of undo groups which are obsolete now.

	* app/pdb/layer_cmds.c: regenerated.
2004-04-13 13:54:54 +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
Sven Neumann fe3dc81387 create the initial text layer with a size of 1 x 1 since
2004-04-03  Sven Neumann  <sven@gimp.org>

	* app/text/gimptextlayer.c (gimp_text_layer_new): create the
	initial text layer with a size of 1 x 1 since tile_manager_new()
	does not any longer accept 0 x 0.

	* app/core/gimpdrawable.c (gimp_drawable_configure): check that
	width and height are > 0.
2004-04-03 12:03:27 +00:00
Michael Natterer acc72b620e added undo type GIMP_UNDO_TEXT_LAYER_MODIFIED and undo group types
2004-04-01  Michael Natterer  <mitch@gimp.org>

	* app/core/core-enums.[ch] (enum GimpUndoType): added undo type
	GIMP_UNDO_TEXT_LAYER_MODIFIED and undo group types
	GIMP_UNDO_GROUP_DRAWABLE and GIMP_UNDO_GROUP_DRAWABLE_MOD.

	* app/core/gimpimage-undo-push.[ch]: added new new function
	gimp_image_undo_push_text_layer_modified() which makes
	modifications of the text_layer's "modified" boolean undoable.

	* app/core/gimpdrawable.[ch]: added new virtual function
	GimpDrawable::push_undo() and moved the actual undo pushing into
	the default implementation gimp_drawable_real_push_undo().

	* app/text/gimptextlayer.c (gimp_text_layer_push_undo): new
	function. Pushes the text_layer's modified state to the undo stack
	after upchaining and sets modified to TRUE.

	(gimp_text_layer_set_tiles): ditto.

	(gimp_lext_layer_apply_region)
	(gimp_text_layer_replace_region): removed because their default
	implementations already call gimp_drawable_push_undo().

	(gimp_text_layer_swap_pixels): removed because swap_pixels() is
	used by undo only and doesn't need to care about the text_layer's
	modified state.

	(gimp_text_layer_render): don't set modified to FALSE here because
	we can't push an undo step here.

	(gimp_text_layer_set): push the modified state to the undo stack
	and set it to FALSE here. Also push the layer's tiles if the
	layer was modified.

	* app/tools/gimptexttool.c (gimp_text_tool_apply): push "modified"
	to the undo stack and set it to FALSE here, too.

	Fixes bug #137767.
2004-04-01 14:51:58 +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 59b77c35c2 emit "update" signals from the drawable before and after setting tiles and
2004-03-15  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_set_tiles_full): emit
	"update" signals from the drawable before and after setting tiles
	and offsets.

	* app/core/gimpdrawable-offset.c (gimp_drawable_offset)
	* app/core/gimpdrawable-transform.c (gimp_drawable_transform_paste)
	* app/core/gimpimage-undo-push.c (undo_pop_layer_mod, _channel_mod)
	* app/text/gimptextlayer.c (gimp_text_layer_render)
	* app/tools/gimptransformtool.c (gimp_transform_tool_doit):
	removed calls to gimp_drawable_update().

	* app/core/gimpdrawable-offset.c (gimp_drawable_offset): don't
	push an undo step before calling gimp_drawable_set_tiles()
	but simply pass push_undo == TRUE and the undo_desc.
2004-03-15 20:05:31 +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 d376ac5d5e emit "alpha_changed" if the drawable got/lost an alpha channel by setting
2004-03-15  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_real_set_tiles): emit
	"alpha_changed" if the drawable got/lost an alpha channel by
	setting the new tiles.

	* app/core/gimpimage-undo-push.c (undo_pop_layer_mod)
	* app/core/gimplayer.c (gimp_layer_add_alpha): removed explicit
	calls to gimp_drawable_alpha_changed().
2004-03-15 15:37:12 +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 d1fe0f9e6b app/core/gimpdrawable-offset.c (gimp_drawable_offset)
2004-03-14  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable-offset.c (gimp_drawable_offset)
	* app/core/gimpdrawable.c (gimp_drawable_scale) (gimp_drawable_resize)
	* app/core/gimplayer.c (gimp_layer_convert) (gimp_layer_add_alpha):
	use gimp_drawable_set_tiles() instead of fiddling with
	drawable->tiles, ->bytes etc. manually.
2004-03-14 11:34:31 +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
Raphael Quinet 59dfdac9b1 added new "supersample" property to GimpTransformOptions and added
2004-03-13  Raphael Quinet  <quinet@gamers.org>

	* app/tools/gimptransformoptions.[ch]: added new "supersample"
	property to GimpTransformOptions and added corresponding check
	button in the option dialog for the transform tools.

	* app/core/gimpdrawable-transform.[ch],
	* app/core/gimpdrawable.c,
	* app/tools/gimptransformtool.c: new "gboolean supersample"
	parameter added to gimp_drawable_transform_tiles_affine() and
	gimp_drawable_transform_affine().

	* tools/pdbgen/pdb/transform_tools.pdb: ditto.  For the PDB calls,
	the supersample parameter is set to FALSE for "rotate" and "shear"
	and set to TRUE for "perspective", "scale" and "transform_2d".

	* app/pdb/transform_tools_cmds.c: regenerated.

	The new "supersample" option lets the user decide if the
	transformations should use supersampling (RECURSION_LEVEL 3) or
	not.  This fixes both bug #136702 and bug #109817.  Hopefully for
	good, this time.
2004-03-13 11:24:25 +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
Michael Natterer 9efe077ca2 also return the color's alpha byte if it has alpha, not only the converted
2004-01-18  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage.[ch] (gimp_image_get_color): also return the
	color's alpha byte if it has alpha, not only the converted RGB
	values.  Return OPAQUE_OPACITY for drawables without alpha.
	Fixes bug #131706.

	* app/core/gimpdrawable.c (gimp_drawable_get_color_at)
	* app/core/gimpimage-contiguous-region.c
	(gimp_image_contiguous_region_by_color)
	* app/core/gimpimage-projection.c (gimp_image_projection_get_color_at)
	* app/core/gimpimagemap.c (gimp_image_map_get_color_at)
	* app/paint/gimpclone.c (gimp_clone_line_image): removed separate
	handling of the alpha byte from all users of gimp_image_get_color().
2004-01-18 13:19:59 +00:00
Michael Natterer 9d43b0669b added GIMP_IMAGE_TYPE_WITHOUT_ALPHA() macro as counterpart to
2004-01-14  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage.h: added GIMP_IMAGE_TYPE_WITHOUT_ALPHA()
	macro as counterpart to GIMP_IMAGE_TYPE_WITH_ALPHA().

	* app/core/gimpdrawable.[ch]: added
	gimp_drawable_type_without_alpha() and
	gimp_drawable_bytes_without_alpha() convenience functions.
2004-01-14 19:41:00 +00:00
Michael Natterer dec20d8214 Enabled skipping enum values for either the PDB or GType registration
2004-01-06  Michael Natterer  <mitch@gimp.org>

	Enabled skipping enum values for either the PDB or GType
	registration (don't always skip both targets):

	* tools/gimp-mkenums: skip enum values only if there is a literal
	"skip" (don't match "pdb-skip").

	* tools/pdbgen/enumgen.pl: skip only "pdb-skip" values, not "skip"
	ones.

	* app/base/base-enums.h
	* app/core/core-enums.h
	* app/paint/paint-enums.h
	* libgimpbase/gimpbaseenums.h: use the right "pdb-skip"/"skip"
	combination to skip enum values. Changed comments accordingly.

	Cleaned up the fill functions:

	* app/core/core-enums.[ch]: added GIMP_PATTERN_FILL enum value to
	the GimpFillType enum. Don't export GIMP_NO_FILL to the PDB
	because it's completely useless to export a NOP.

	* app/core/gimp-edit.c (gimp_edit_fill, gimp_edit_fill_internal):
	handle pattern fill requests.

	* app/core/gimpdrawable.[ch] (gimp_drawable_fill): added GimpPattern
	parameter and fill with it if it's non-NULL.

	(gimp_drawable_fill_by_type): handle pattern fill and pass the
	current pattern to gimp_drawable_fill().

	* app/text/gimptextlayer.c: changed accordingly.

	* app/gui/edit-commands.c
	* app/gui/image-menu.c: use gimp_edit_fill() instead of
	gimp_drawable_bucket_fill() for FG, BG and pattern filling.

	* libgimp/gimpcompat.h
	* plug-ins/script-fu/siod-wrapper.c: removed NO_IMAGE_FILL compat
	enum value. It should have never been exported to the PDB.

	* app/pdb/drawable_cmds.c
	* app/pdb/edit_cmds.c
	* libgimp/gimpenums.h
	* plug-ins/pygimp/gimpenums.py
	* plug-ins/script-fu/script-fu-constants.c
	* tools/pdbgen/enums.pl: regenerated.
2004-01-06 14:02:08 +00:00
Sven Neumann 83ae886609 removed the addition of 0.001 that isn't correct for use with integers
2003-11-17  Sven Neumann  <sven@gimp.org>

	* libgimpcolor/gimprgb.h (GIMP_RGB_INTENSITY): removed the
	addition of 0.001 that isn't correct for use with integers (should
	be 0.5 then) and just plain wrong for use with floats/doubles.

	* app/base/temp-buf.c
	* app/core/gimpdrawable.c
	* app/core/gimpimage-convert.c
	* app/core/gimpimage.c
	* plug-ins/common/aa.c
	* plug-ins/common/engrave.c
	* plug-ins/common/gradmap.c
	* plug-ins/common/newsprint.c
	* plug-ins/gflare/gflare.c
	* plug-ins/gfli/gfli.c
	* plug-ins/pagecurl/pagecurl.c: add 0.5 to the result of
	GIMP_RGB_INTENSITY() in all places that use it with integers.
2003-11-17 17:33:14 +00:00
Sven Neumann e4c5b6b0ca added a GIMP_RGB prefix to the INTENSITY macros.
2003-11-17  Sven Neumann  <sven@gimp.org>

	* libgimpcolor/gimprgb.[ch]: added a GIMP_RGB prefix to the
	INTENSITY macros.

	* libgimp/gimpcompat.h: document this change here.

	* app/base/colorize.c
	* app/base/temp-buf.c
	* app/core/gimpdrawable-blend.c
	* app/core/gimpdrawable.c
	* app/core/gimpimage-convert.c
	* app/core/gimpimage.c
	* plug-ins/common/aa.c
	* plug-ins/common/bumpmap.c
	* plug-ins/common/colorify.c
	* plug-ins/common/displace.c
	* plug-ins/common/engrave.c
	* plug-ins/common/gradmap.c
	* plug-ins/common/newsprint.c
	* plug-ins/common/oilify.c
	* plug-ins/gflare/gflare.c
	* plug-ins/gfli/gfli.c
	* plug-ins/pagecurl/pagecurl.c: changed accordingly.

	* libgimpcolor/gimpcolor.h: removed trailing whitespace.

	* app/paint-funcs/paint-funcs.c: fixed indentation.
2003-11-17 14:58:31 +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 df108404a1 new utility function which does everything gimp_edit_clear() and
2003-10-08  Michael Natterer  <mitch@gimp.org>

	* app/core/gimp-edit.c (gimp_edit_fill_internal): new utility
	function which does everything gimp_edit_clear() and
	gimp_edit_fill() do but doesn't fail to:

	- fill an indexed drawable with white.
	- fill a drawable with alpha with transparency.

	(gimp_edit_clear)
	(gimp_edit_fill): use gimp_edit_fill_internal().

	* app/core/gimpdrawable.c (gimp_drawable_[apply,replace]_region):
	added more g_return_if_fail(required_parameter != NULL).
2003-10-08 17:20:06 +00:00
Michael Natterer fdbbfff852 one more fix for bug #107949: don't take the selection into account if we
2003-10-06  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_mask_bounds): one
	more fix for bug #107949: don't take the selection into
	account if we are operating on the selection itself.

	Ordered shadow tiles functions together, cleanup.
2003-10-06 18:26:06 +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
Sven Neumann 489cff5303 app/core/Makefile.am new files with preview code factored out of
2003-09-29  Sven Neumann  <sven@gimp.org>

	* app/core/Makefile.am
	* app/core/gimpitem-preview.[ch]: new files with preview code
	factored out of GimpDrawable.

	* app/core/gimpdrawable-preview.[ch]: code removed here.

	* app/core/gimpdrawable.c
	* app/core/gimpitem.c: let GimpItem implement
	GimpViewable::get_preview_size and GimpViewable::get_popup_size.

	* app/widgets/gimppreviewrenderervectors.c: simple scale to the
	renderer's size; it already respects the aspect ratio.
2003-09-29 23:14:28 +00:00
Sven Neumann 472574986d moved the visibility toggle before the linked toggle again.
2003-09-13  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpitemtreeview.c: moved the visibility toggle
	before the linked toggle again.

	* app/core/gimpdrawable.c (gimp_drawable_configure)
	* app/core/gimpitem.c (gimp_item_init): quick fix for bug #122153:
	don't make the item visible in gimp_drawable_configure() since that
	breaks duplicate(); instead create all items as visible.
2003-09-12 22:43:02 +00:00
Michael Natterer 7cf4eb467a removed "visible" and all its API...
2003-09-11  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.[ch]: removed "visible" and all its API...

	* app/core/gimpitem.[ch]: ...and added it here.

	* app/core/core-enums.[ch]
	* app/core/gimpimage-undo-push.[ch]: changed the drawable
	visibility undo to be an item visibility undo.

	* app/xcf/xcf-load.c
	* app/xcf/xcf-save.c: save it in PROP_VECTORS and changed channel
	and layer loading/saving accordingly.

	* app/core/gimpimage-merge.c
	* app/core/gimpimage-preview.c
	* app/core/gimpimage-projection.c
	* app/core/gimpimage.c
	* app/core/gimplayer-floating-sel.c
	* app/core/gimplayer.c
	* app/core/gimpselection.c
	* app/text/gimptextlayer.c
	* app/gui/channels-commands.c
	* tools/pdbgen/pdb/channel.pdb
	* tools/pdbgen/pdb/layer.pdb: changed accordingly.

	* app/pdb/channel_cmds.c
	* app/pdb/layer_cmds.c: regenerated.

	* app/widgets/gimpdrawabletreeview.[ch]: removed the eye icon...

	* app/widgets/gimpitemtreeview.[ch]: ...and added it here.
2003-09-11 19:52: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 27ad396d10 made my last commit compile. Sorry.
2003-09-06  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_fill): made my last
	commit compile. Sorry.
2003-09-06 15:20:46 +00:00
Michael Natterer 31b754df21 code cleanup. (gimp_drawable_fill): use the INTENSITY() of the passed
2003-09-06  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c: code cleanup.
	(gimp_drawable_fill): use the INTENSITY() of the passed GimpRGB to
	fill GIMP_GRAY drawables, not just the RED_PIX. Cleanup.

	* app/core/gimpimage.c (gimp_image_transform_color):
	added assertion for src_type != GIMP_INDEXED.
2003-09-06 13:41:58 +00:00
Michael Natterer aaf84a73d2 removed function map_to_color() since it does not belong here and the two
2003-09-05  Michael Natterer  <mitch@gimp.org>

	* app/paint-funcs/paint-funcs.[ch]: removed function map_to_color()
	since it does not belong here and the two places using it look much
	cleaner when doing that stuff themselves.

	* app/core/gimpdrawable-preview.c: cleanup.
	(gimp_drawable_preview_scale): do the indexed palette lookup here
	instead of calling map_to_color().

	* app/core/gimpimage.c (gimp_image_get_color): transform the
	colors here instead of calling map_to_color().

	* app/core/gimpimage.[ch] (gimp_image_get_color): reordered
	parameters src parameters are before dest parameters.
	Made the src color const.

	(gimp_image_transform_color): reordered so src parameters are
	*after* dest parameters (since this function operates on the dest
	image and it makes sense to have the dest parameters
	together). Made the src color const here, too.

	* app/core/gimpdrawable-bucket-fill.c
	* app/core/gimpdrawable.c
	* app/core/gimpimage-contiguous-region.c
	* app/core/gimpimage-projection.c
	* app/core/gimpimagemap.c
	* app/core/gimplayer.c
	* app/core/gimppalette-import.c
	* app/paint/gimpclone.c
	* app/paint/gimppaintcore.c: changed accordingly.

	* app/core/gimpedit.c (gimp_edit_cut,copy): simplified by
	moving the "cropped" variable to a local scope.

	* app/core/gimpimage-mask.c: calling gimp_image_update() followed
	by gimp_viewable_imvalidate_preview(drawable) is equal to calling
	gimp_drawable_update() directly.
2003-09-05 17:44:39 +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 008e3e208c removed the _bounds() and _boundary() wrappers.
2003-09-03  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-mask.[ch]: removed the _bounds() and
	_boundary() wrappers.

	* app/core/gimpdrawable.c
	* app/display/gimpdisplayshell-selection.c
	* app/gui/image-commands.c
	* app/gui/layers-commands.c
	* app/tools/gimpcroptool.c
	* app/tools/gimpeditselectiontool.c
	* app/tools/gimptransformtool.c
	* app/xcf/xcf-save.c: changed accordingly.
2003-09-03 17:17:18 +00:00
Sven Neumann e924a1372b app/text/gimptextlayout-render.c (gimp_text_layout_render)
2003-09-02  Sven Neumann  <sven@gimp.org>

	* app/text/gimptextlayout-render.c (gimp_text_layout_render)
	* app/widgets/gimpfontselection.c (gimp_font_selection_set_fontname)
	* app/widgets/gimptexteditor.c (gimp_text_editor_new)
	* app/gui/file-save-dialog.c (file_save_ok_callback): plugged
	some memleaks found using memprof.

	* app/vectors/gimpvectors.c: implemented the finalize method.

	* app/vectors/gimpstroke.c: minor code cleanup.

	* app/core/gimpdrawable.c (gimp_drawable_finalize)
	* app/core/gimplayer.c (gimp_layer_finalize)
	* app/core/gimpparasitelist.c (gimp_parasite_list_finalize):
	removed useless assertions.
2003-09-02 13:43:26 +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
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
Michael Natterer 9b206bd4df removed the check again because adding e.g. GRAY drawables to RGB images
2003-06-12  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_configure): removed the
	check again because adding e.g. GRAY drawables to RGB images is
	prefectly ok as long as they are channels/masks.
2003-06-12 14:18:33 +00:00
Sven Neumann d942668ff6 check if the drawable type fits to the image. This assertion would have
2003-06-12  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_configure): check if the
	drawable type fits to the image. This assertion would have catched
	the problem below.
2003-06-12 10:43:00 +00:00
Michael Natterer 0c6d379081 added some more g_return_if_fail() to avoid NULL pointer dereferencing.
2003-06-11  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_mask_bounds): added some
	more g_return_if_fail() to avoid NULL pointer dereferencing.
2003-06-11 13:50:04 +00:00
Sven Neumann b1c437b4f8 use OPAQUE_OPACITY instead of 255.
2003-06-05  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_get_color_at):
	* app/core/gimpimage-projection.c (gimp_image_projection_get_color_at):
	use OPAQUE_OPACITY instead of 255.

	* app/core/gimpimage-pick-color.[ch]: factored out code that
	averages over colors so it can be used from GimpImageTool.

	* app/tools/gimpimagemaptool.[ch]: derived from GimpColorTool and
	added a GimpColorTool::pick implementation.

	* app/tools/gimpcoloroptions.c
	* app/tools/gimpcolorpickeroptions.c: add the toggle for
	"sample_merged" in gimp_color_picker_options_gui().

	* app/tools/gimpcolortool.c (gimp_color_tool_cursor_update): check
	if the cursor is over the active drawable or if "sample_merged" is
	active.

	* app/tools/gimplevelstool.c: simplified since all color-picking is
	now handled by the parent classes. Fixes bug #112668.
2003-06-05 18:47:23 +00:00
Michael Natterer 707e597665 added "gint ref_count" to the TileManager struct.
2003-05-26  Michael Natterer  <mitch@gimp.org>

	* app/base/tile-manager-private.h: added "gint ref_count" to the
	TileManager struct.

	* app/base/tile-manager.[ch]: replaced tile_manager_destroy()
	by tile_manager_ref() and tile_manager_unref().

	* app/core/gimpimage-undo-push.c: ref the tile managers stored in
	the undo system and DON'T destroy them if no undo could be pushed.
	Should fix the remaining crashes with undo disabled like in
	bug #9350.

	(!!!) Note that the tiles passed to gimp_image_undo_push_image()
	and gimp_drawable_push_undo() as well as the tile managers of
	drawables passed to gimp_image_undo_push_[layer|channel]_mod()
	must be unref'ed by the caller now.

	* app/core/gimpdrawable-transform.c (gimp_drawable_transform_paste):
	don't take ownership of the passed tiles but ref them if needed.

	(!!!) Callers must unref the passed tiles themselves now.

	* app/core/gimpbuffer.c
	* app/core/gimpdrawable-blend.c
	* app/core/gimpdrawable-bucket-fill.c
	* app/core/gimpdrawable-offset.c
	* app/core/gimpdrawable.c
	* app/core/gimpedit.c
	* app/core/gimpimage-convert.c
	* app/core/gimpimage-mask.c
	* app/core/gimpimage-projection.c
	* app/core/gimpimage.c
	* app/core/gimpimagemap.c
	* app/core/gimplayer-floating-sel.c
	* app/core/gimplayer.c
	* app/paint/gimppaintcore.c
	* app/text/gimptextlayer.c
	* app/tools/gimpinktool.c
	* app/tools/gimpiscissorstool.c
	* app/tools/gimptransformtool-undo.c
	* app/tools/gimptransformtool.c: changed accordingly.
2003-05-26 17:02:06 +00:00
Michael Natterer 31bf3c9052 added GimpDrawable::alpha_changed() signal.
2003-05-21  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.[ch]: added GimpDrawable::alpha_changed()
	signal.

	* app/core/gimpimage-undo-push.c
	* app/core/gimplayer.c: emit it when alpha is removed from or
	added to a layer.

	* app/widgets/gimpcontainertreeview.[ch]: added a
	"name_attributes" column to the list store which provides a
	PangoAttrList for the name column.

	* app/widgets/gimplayertreeview.[ch]: connect to all layers'
	"alpha_changed" and set the BG layer's name to bold.

	* app/widgets/gimpdrawabletreeview.c: removed redundant assertions.
2003-05-21 11:34:00 +00:00
Sven Neumann 1de667f0b6 added new enum GimpRotationType.
2003-05-20  Sven Neumann  <sven@gimp.org>

	* app/core/core-enums.[ch]: added new enum GimpRotationType.

	* app/core/Makefile.am
	* app/core/gimpimage-rotate.[ch]: new files.

	* app/core/gimpchannel.c
	* app/core/gimpdrawable-transform.[ch]
	* app/core/gimpdrawable.c
	* app/core/gimpitem.[ch]
	* app/core/gimplayer.c
	* app/vectors/gimpvectors.c: added GimpItem::rotate. Still work in
	progress.

	* plug-ins/common/rotate.c: don't install any menu entries. The
	plug-in is only kept around to provide plug_in_rotate for backward
	compatibility.

	* app/gui/drawable-commands.[ch]
	* app/gui/image-commands.[ch]
	* app/gui/image-menu.c: use the new rotate implementation and use
	stock icons for the menu entries. Fixes bug #57797.
2003-05-20 10:36:29 +00:00
Michael Natterer 149e81dab5 app/core/Makefile.am new file for utility functions. Contains
2003-05-14  Michael Natterer  <mitch@gimp.org>

	* app/core/Makefile.am
	* app/core/gimp-utils.[ch]: new file for utility functions.
	Contains gimp_rectangle_intersect() for now.

	* app/core/gimpdrawable-transform.c: removed the function here.

	* app/core/gimpdrawable.c (gimp_drawable_resize): use it to
	determine the amount of pixels to copy between the old and new
	tile managers. Removed restriction that forced the areas to
	overlap by at least one pixel.

	* app/core/gimpitem.c (gimp_item_real_transform): removed the
	restriction here, too.

	* app/core/gimplayer.c (gimp_layer_create_mask): use the new
	function to decide how much to copy from the selection when
	creating a mask from it.
2003-05-14 15:32:07 +00:00