Commit Graph

252 Commits

Author SHA1 Message Date
Michael Natterer 7499fc89ff added gimp_guide_get_ID().
2006-06-07  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpguide.[ch]: added gimp_guide_get_ID().

	* app/core/gimpimage-crop.c
	* app/core/gimpimage-duplicate.c
	* app/core/gimpimage-flip.c
	* app/core/gimpimage-guides.c
	* app/core/gimpimage-resize.c
	* app/core/gimpimage-rotate.c
	* app/core/gimpimage-scale.c
	* app/core/gimpimage-snap.c
	* app/core/gimpimage-undo-push.c
	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell.c
	* app/tools/gimpmovetool.c
	* app/xcf/xcf-save.c
	* tools/pdbgen/pdb/guides.pdb: use accessors instead of accessing
	GimpGuide's struct members directly.

	* app/pdb/guides_cmds.c: regenerated.
2006-06-07 15:49:59 +00:00
William Skaggs a49cc445b8 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/core/gimpguide.c
	* app/core/gimpguide.h: new files, implementing GuideGimp as a GimpObject

	* app/core/Makefile.am: add new files as sources

	* app/core/gimpimage-guides.h
	* app/core/gimpimage-guides.c: use the new object instead of defining
	GimpGuide here as a struct.

	* app/core/gimpimage-crop.c
	* app/core/gimpimage-duplicate.c
	* app/core/gimpimage-flip.c
	* app/core/gimpimage-resize.c
	* app/core/gimpimage-rotate.c
	* app/core/gimpimage-scale.c
	* app/core/gimpimage-snap.c
	* app/core/gimpimage-undo-push.c
	* app/core/gimpimage.c
	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell.c
	* app/pdb/guides_cmds.c
	* app/tools/gimpmovetool.c
	* app/xcf/xcf-save.c
	* tools/pdbgen/pdb/guides.pdb: include "core/gimpguide.h", and use
	g_object_ref/unref instead of gimp_image_guide_ref/unref.
2006-06-06 22:48:57 +00:00
Sven Neumann 049872b361 app/*.[ch] converted tabs to spaces.
2006-04-12  Sven Neumann  <sven@gimp.org>

	* app/*.[ch]
	* app/*/*.[ch]: converted tabs to spaces.
2006-04-12 12:49:29 +00:00
Sven Neumann 5fc9bd4096 app/actions/tool-options-commands.c app/core/gimp.c
2006-04-07  Sven Neumann  <sven@gimp.org>

	* app/actions/tool-options-commands.c
	* app/core/gimp.c
	* app/core/gimpbrushpipe.c
	* app/core/gimpbuffer.c
	* app/core/gimpcontext.c
	* app/core/gimpdatafactory.c
	* app/core/gimpgradient-load.c
	* app/core/gimpimage-merge.c
	* app/core/gimpimage-undo-push.c
	* app/core/gimpitem.c
	* app/core/gimplayer.c
	* app/core/gimplayermask.c
	* app/core/gimplist.c
	* app/core/gimppalette.c
	* app/dialogs/template-options-dialog.c
	* app/display/gimpdisplayshell-dnd.c
	* app/file/file-open.c
	* app/paint/gimp-paint.c
	* app/widgets/gimpdataeditor.c
	* app/widgets/gimpdatafactoryview.c
	* app/widgets/gimplayertreeview.c
	* app/widgets/gimptemplateview.c
	* app/widgets/gimptoolbox-dnd.c: use gimp_object_set_static_name()
	and gimp_object_take_name() where appropriate.
2006-04-07 10:51:22 +00:00
Sven Neumann cef9db57fe renamed gimp_drawable_data() to gimp_drawable_get_tiles().
2006-04-07  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdrawable.[ch]: renamed gimp_drawable_data() to
	gimp_drawable_get_tiles().

	[lots of files]: changed accordingly.
2006-04-07 09:21:18 +00:00
Michael Natterer 5e28089de9 use "const GimpParasite*" insted of gpointer for the parasite parameter.
2006-04-02  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-undo-push.[ch]
	(gimp_image_undo_push_image,item_parasite): use "const GimpParasite*"
	insted of gpointer for the parasite parameter.

	* app/core/gimpparasitelist.[ch] (gimp_parasite_list_add): added
	const to the parasite parameter, return the actually added
	parasite (which is a copy).

	* app/core/gimpunit.[ch] (_gimp_unit_new): added const to all
	string parameters.
2006-04-02 14:44:32 +00:00
Sven Neumann 905fdfcbed did a global gimage -> image substitution.
2006-03-28  Sven Neumann  <sven@gimp.org>

	* app/*: did a global gimage -> image substitution.
2006-03-28 17:08:36 +00:00
Michael Natterer 20b4769cf5 app/actions/layers-actions.c app/actions/layers-commands.[ch]
2005-07-10  Michael Natterer  <mitch@gimp.org>

	* app/actions/layers-actions.c
	* app/actions/layers-commands.[ch]
	* app/core/core-enums.[ch]
	* app/core/gimpimage-undo-push.[ch]
	* app/core/gimplayer-floating-sel.c
	* app/core/gimplayer.[ch]
	* app/text/gimptextlayer-xcf.c
	* app/widgets/gimphelp-ids.h
	* app/widgets/gimplayertreeview.[ch]
	* app/xcf/xcf-load.c
	* app/xcf/xcf-private.h
	* app/xcf/xcf-save.c
	* tools/pdbgen/pdb/layer.pdb
	* menus/image-menu.xml.in
	* libgimp/gimp.def: did a global s/preserve_trans/lock_alpha/ in
	preparation for more layer locking flags.

	* app/pdb/procedural_db.c
	* libgimp/gimplayer.[ch]: added compat stuff for preserve_trans.

	* app/pdb/layer_cmds.c
	* libgimp/gimplayer_pdb.[ch]: regenerated.

	* plug-ins/common/colortoalpha.c
	* plug-ins/common/iwarp.c
	* plug-ins/common/psd.c
	* plug-ins/common/psd_save.c
	* plug-ins/common/psp.c
	* plug-ins/common/rotate.c
	* plug-ins/common/threshold_alpha.c
	* plug-ins/common/vpropagate.c
	* plug-ins/script-fu/scripts/3d-outline.scm
	* plug-ins/script-fu/scripts/alien-glow-bar.scm
	* plug-ins/script-fu/scripts/alien-glow-bullet.scm
	* plug-ins/script-fu/scripts/alien-glow-logo.scm
	* plug-ins/script-fu/scripts/basic1-logo.scm
	* plug-ins/script-fu/scripts/basic2-logo.scm
	* plug-ins/script-fu/scripts/beveled-pattern-button.scm
	* plug-ins/script-fu/scripts/blend-anim.scm
	* plug-ins/script-fu/scripts/blended-logo.scm
	* plug-ins/script-fu/scripts/bovinated-logo.scm
	* plug-ins/script-fu/scripts/burn-in-anim.scm
	* plug-ins/script-fu/scripts/carved-logo.scm
	* plug-ins/script-fu/scripts/chalk.scm
	* plug-ins/script-fu/scripts/chip-away.scm
	* plug-ins/script-fu/scripts/comic-logo.scm
	* plug-ins/script-fu/scripts/coolmetal-logo.scm
	* plug-ins/script-fu/scripts/crystal-logo.scm
	* plug-ins/script-fu/scripts/drop-shadow.scm
	* plug-ins/script-fu/scripts/gimp-headers.scm
	* plug-ins/script-fu/scripts/gimp-labels.scm
	* plug-ins/script-fu/scripts/glowing-logo.scm
	* plug-ins/script-fu/scripts/gradient-bevel-logo.scm
	* plug-ins/script-fu/scripts/image-structure.scm
	* plug-ins/script-fu/scripts/neon-logo.scm
	* plug-ins/script-fu/scripts/perspective-shadow.scm
	* plug-ins/script-fu/scripts/starburst-logo.scm
	* plug-ins/script-fu/scripts/starscape-logo.scm
	* plug-ins/script-fu/scripts/textured-logo.scm
	* plug-ins/script-fu/scripts/title-header.scm
	* plug-ins/script-fu/scripts/waves-anim.scm
	* plug-ins/xjt/xjt.c: changed accordingly.
2005-07-10 21:17:22 +00:00
Michael Natterer 0231374c86 added new signals "sample-point-added" and "sample-point-removed" and
2005-04-03  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage.[ch]: added new signals "sample-point-added"
	and "sample-point-removed" and public functions to emit them.

	* app/core/gimpimage-sample-points.c (gimp_image_add_sample_point)
	(gimp_image_remove_sample_point): emit them accordingly.

	* app/core/gimpimage-undo-push.c (undo_pop_image_sample_point):
	ditto.

	(undo_pop_image_guide)
	(undo_pop_image_sample_point): added comments why we add/remove
	stuff manually instead of using the GimpImage APIs.

	* app/widgets/Makefile.am
	* app/widgets/widgets-types.h
	* app/widgets/gimpcursorview.[ch]
	* app/widgets/gimpsamplepointeditor.[ch]: new widgets.
	GimpCursorView is a replacement for the info window's "Cursor"
	page, GimpSamplePointEditor is a view on an image's sample points.
	The sample point editor does nothing yet except keeping a 2x2 grid
	of GimpColorFrames. Addresses bug #137776.

	* app/dialogs/dialogs.c
	* app/dialogs/dialogs-constructors.[ch]: register the new widgets
	as dockable dialogs.

	* app/actions/dialogs-actions.c (dialogs_dockable_actions)
	* menus/dialogs-menuitems.xml: added actions and menu items for
	the new dialogs.

	* app/display/gimpdisplayshell-cursor.c
	(gimp_display_shell_update_cursor)
	(gimp_display_shell_clear_cursor): update the new cursor view.

	* app/widgets/gimphelp-ids.h: help IDs for the new dialogs.

	* app/widgets/widgets-enums.[ch] (enum GimpColorFrameMode):
	changed description "Pixel values" to "Pixel" because the former
	was too long.
2005-04-03 15:48:03 +00:00
Michael Natterer 46a25c2c60 app/core/core-enums.[ch] app/core/gimpimage-undo-push.[ch] eek, my
2005-03-24  Michael Natterer  <mitch@gimp.org>

	* app/core/core-enums.[ch]
	* app/core/gimpimage-undo-push.[ch]
	* app/core/gimplayermask.[ch]: eek, my fault... removed
	GIMP_UNDO_LAYER_MASK_EDIT stuff again because that just determines
	the active drawable, which must not affect undo.

	* app/pdb/pdb_glue.h
	* app/actions/layers-commands.c (layers_mask_edit_cmd_callback):
	changed accordingly.

	(layers_mask_disable_cmd_callback): reverted last change. the old
	code was correct.
2005-03-24 22:34:36 +00:00
Michael Natterer b17e5b4aad reordered values so layer and layer mask undos are grouped together.
2005-03-24  Michael Natterer  <mitch@gimp.org>

	* app/core/core-enums.[ch] (enum GimpUndoType) : reordered values
	so layer and layer mask undos are grouped together.

	* app/core/gimpimage-undo-push.[ch]: same here. Changed the new
	layer mask undos to have 3 simple push functions for the 3
	properties, just as the layer property undos. Also made the code
	look like the layer properties undo stuff.

	* app/core/gimplayermask.c (gimp_layer_mask_set_apply,edit,show):
	changed accordingly.
2005-03-24 22:15:10 +00:00
William Skaggs bd9ef9bed6 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/core/gimpimage-undo-push.[ch]
	* app/core/gimplayermask.c: fix compile warnings.
2005-03-24 19:23:14 +00:00
William Skaggs b5f1ae88e2 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/core/core-enums.[ch]
	* app/core/gimpimage-undo-push.[ch]
	* app/core/gimplayermask.[ch]:
	* app/pdb/pdb_glue.h
	* app/actions/layers-commands.c: try again from clean tree;
	hopefully will work this time.  (bug #148852)
2005-03-24 17:10:03 +00:00
Sven Neumann 4314dca031 app/actions/layers-commands.c app/core/core-enums.[ch]
2005-03-24  Sven Neumann  <sven@gimp.org>

	* app/actions/layers-commands.c
	* app/core/core-enums.[ch]
	* app/core/gimpimage-undo-push.[ch]
	* app/pdb/pdb_glue.h: reverted Bill's changes to fix the build.
2005-03-24 10:34:41 +00:00
William Skaggs 72241e5ed2 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/core/core-enums.[ch]
	* app/core/gimpimage-undo-push.[ch]
	* app/pdb/pdb_glue.h
	* app/actions/layers-commands.c: make layer mask property changes
	undoable, should fix bug #148852.  Note that a little shape-layer
	stuff is in core-enums, will be needed shortly.
2005-03-24 02:16:40 +00:00
Michael Natterer f41e059067 More sample point stuff. Addresses bug #137776.
2005-03-09  Michael Natterer  <mitch@gimp.org>

	More sample point stuff. Addresses bug #137776.

	* app/core/gimpimage-sample-points.c
	* app/core/gimpimage-undo-push.c: append, not prepend the sample
	paints to the image's list because their index matters. Update
	sample points when their index changes.

	* app/display/gimpcanvas.[ch]: added own sytles for the sample
	points.  Added gimp_canvas_draw_text() which uses a PangoLayout
	which is cached in the canvas.

	* app/display/gimpdisplayshell-draw.c
	(gimp_display_shell_draw_sample_point): draw the sample points
	more distinct from guides using the new canvas APIs above.

	* app/display/gimpdisplayshell-callbacks.c
	(gimp_display_shell_[hv]ruler_button_press): factored out all
	code to

	(gimp_display_shell_ruler_burron_press): which takes a boolean
	"horizontal" variable and allows to add sample points with
	<control>+drag.

	* app/tools/gimpcolortool.[ch]: implement adding, moving and
	removing of sample points in the same way as the move tool moves
	guides.

	* app/tools/gimpcolorpickertool.c
	(gimp_color_picker_tool_oper_update): chain up.
2005-03-09 00:23:19 +00:00
Michael Natterer be6a9d2a8b app/actions/view-actions.c app/actions/view-commands.[ch]
2005-03-05  Michael Natterer  <mitch@gimp.org>

	* app/actions/view-actions.c
	* app/actions/view-commands.[ch]
	* app/config/gimprc-blurbs.h
	* app/core/core-enums.[ch]
	* app/core/gimp.c
	* app/core/gimpimage-crop.c
	* app/core/gimpimage-undo-push.[ch]
	* app/core/gimpimage.c
	* app/display/gimpdisplayoptions.[ch]
	* app/display/gimpdisplayshell-appearance.[ch]
	* app/display/gimpdisplayshell-callbacks.c
	* app/display/gimpdisplayshell-draw.[ch]
	* app/widgets/gimphelp-ids.h
	* menus/image-menu.xml.in: reordered stuff to be in guides, grid,
	sample points order. Some cleanup and indentation.
2005-03-05 00:10:40 +00:00
William Skaggs ea267753f6 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/core/gimpimage-sample-points.c
	* app/core/gimpimage-sample-points.h: new files

	* app/actions/view-actions.c
	* app/actions/view-commands.c
	* app/actions/view-commands.h
	* app/config/gimprc-blurbs.h
	* app/core/Makefile.am
	* app/core/core-enums.c
	* app/core/core-enums.h
	* app/core/core-types.h
	* app/core/gimp.c
	* app/core/gimp.h
	* app/core/gimpimage-crop.c
	* app/core/gimpimage-duplicate.c
	* app/core/gimpimage-flip.c
	* app/core/gimpimage-rotate.c
	* app/core/gimpimage-scale.c
	* app/core/gimpimage-undo-push.c
	* app/core/gimpimage-undo-push.h
	* app/core/gimpimage.c
	* app/core/gimpimage.h
	* app/display/gimpdisplayoptions.c
	* app/display/gimpdisplayoptions.h
	* app/display/gimpdisplayshell-appearance.c
	* app/display/gimpdisplayshell-appearance.h
	* app/display/gimpdisplayshell-callbacks.c
	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-draw.h
	* app/display/gimpdisplayshell-handlers.c
	* app/display/gimpdisplayshell.c
	* app/display/gimpdisplayshell.h
	* app/widgets/gimphelp-ids.h
	* menus/image-menu.xml.in: add support for a list of "sample
	points" in each image, coded and handled very similarly to
	guides, for use mainly in color correction.  See bug #137776.
2005-03-04 16:34:59 +00:00
William Skaggs 1cee9b7298 continuing commit after broken pipe 2005-01-25 19:11:26 +00:00
Michael Natterer a708b85b8b when removing the floating selection, call
2004-12-03  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-undo-push.c (undo_pop_layer): when removing
	the floating selection, call gimp_drawable_invalidate_boundary()
	*before* setting gimage->floating_sel to NULL because otherwise
	gimp_display_shell_selection_invis() won't clear the correct
	selection bounds and leave garbage on screen. Fixes bug #160247.
2004-12-03 13:39:50 +00:00
Michael Natterer b7e8659ac3 disallow non-attached items to be pushed to the undo stack.
2004-11-12  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-undo-push.c: disallow non-attached items
	to be pushed to the undo stack.
2004-11-12 10:56:23 +00:00
Sven Neumann ab6c609ce1 renamed struct member "unit" to "resolution_unit".
2004-10-12  Sven Neumann  <sven@gimp.org>

	* app/core/gimpimage.[ch]: renamed struct member "unit" to
	"resolution_unit".

	* app/actions/image-commands.c
	* app/core/gimp-edit.c
	* app/core/gimpimage-duplicate.c
	* app/core/gimpimage-undo-push.c
	* app/dialogs/info-window.c
	* app/vectors/gimpvectors-export.c
	* app/widgets/gimptoolbox-dnd.c:
	* app/xcf/xcf-load.c
	* app/xcf/xcf-save.c: changed accordingly. Use gimp_image_get_unit()
	where appropriate.

	* app/core/gimptemplate.c (gimp_template_set_from_image): fixed
	unit handling. Don't touch the template unit, it is used as the
	initial display unit. This will need further changes...
2004-10-12 21:28:53 +00:00
Michael Natterer 877b19c372 factored common code out of the UNDO amd REDO cases. Use
2004-09-24  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-undo-push.c (undo_pop_fs_to_layer): factored
	common code out of the UNDO amd REDO cases. Use gimp_drawable_update()
	instead of gimp_viewable_invalidate_preview() so the projection
	gets updated correctly. Fixes bug #149558.

	* app/core/gimplayer-floating-sel.c (floating_sel_to_layer):
	removed unused variables and their assignments.
2004-09-24 18:06:49 +00:00
Michael Natterer 10d80dac75 removed the hack that was displaying "Floating Selection" instead of the
2004-09-22  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimplayertreeview.c
	(gimp_layer_tree_view_floating_selection_changed): removed the
	hack that was displaying "Floating Selection" instead of the
	floating layer's real name.

	* app/core/gimplayer.c: implement GimpViewable::get_description()
	instead and special case floating selections with a two-line
	text that contains "Floating Selection".

	* app/core/gimplayer-floating-sel.c
	* app/core/gimpimage-undo-push.c: emit "name_changed" on the layer
	when it changes its state from floating to normal or vice versa
	so the views can update accordingly.

	* app/core/gimpselection.c: s/"Selection"/"Floated Layer"/.

	* app/tools/gimpeditselectiontool.c:
	s/"Floating Layer"/"Floating Selection"/.
2004-09-22 12:46:35 +00:00
Sven Neumann 23690346af Improved undo memory calculation for paint operations (bug #153035):
2004-09-19  Sven Neumann  <sven@gimp.org>

	Improved undo memory calculation for paint operations (bug #153035):

	* app/base/tile-manager.[ch] (tile_manager_get_memsize): added a
	"gboolean sparse" parameter to get more accurate results for
	sparse tile-managers.

	* app/core/gimpbuffer.c
	* app/core/gimpdrawable.c
	* app/core/gimpimage-undo-push.c
	* app/core/gimpimage.c
	* app/core/gimplayer.c
	* app/core/gimpprojection.c: changed accordingly.
2004-09-19 19:47:26 +00:00
Michael Natterer 4b582b481a Replaced the concept of having a boolean indicating if an undo step
2004-07-29  Michael Natterer  <mitch@gimp.org>

	Replaced the concept of having a boolean indicating if an undo
	step dirties the image by a bitfield indicating which parts
	of the image are dirtied:

	* app/core/core-enums.[ch]: reordered two values in enum
	GimpUndoType, added GIMP_DIRTY_IMAGE_SIZE to enum GimpDirtyMask.

	The values of GimpDirtyMask are still questionable and will
	probably change...

	* app/core/gimpimage.[ch]: removed signal "undo_start" and added
	a GimpDirtyMask parameter to the "dirty" and "clean" signals.

	* app/core/gimpimage-undo.[ch] (gimp_image_undo_push): replaced
	"gboolean dirties_image" by "GimpDirtyMask dirty_mask" and pass
	it to gimp_image_dirty().

	(gimp_image_undo_group_start): added *ugly* code which tries to
	figure GimpDirtyMask from the group's GimpUndoType and store it in
	the GimpUndoGroup. Call gimp_image_dirty() instead of the removed
	gimp_image_undo_start(). This means the undo group now dirties the
	image just like one of its undo steps, but that's no problem since
	undoing cleans it in the same way.

	* app/core/gimpundo.[ch]: s/dirties_image/dirty_mask/g

	(gimp_undo_pop): emit clean/dirty signals *before* performing the
	actual undo step so listeners can detach from the image before it
	is changed by undo.

	* app/core/gimpimage-undo-push.c (gimp_image_undo_push_*): pass a
	GimpDirtyMask instead of TRUE/FALSE to gimp_image_undo_push().

	* app/core/gimpimagemap.[ch]: removed "gboolean interactive"
	because it makes no sense to use GimpImageMap noninteractively.
	Don't freeze()/thaw() undo while the image_map is active which
	fixes many ways of trashing the image's undo state but probably
	introduces new ways of doing evil things.

	* app/display/gimpdisplay-foreach.c
	* app/display/gimpdisplayshell-handlers.c: changed according
	to the GimpImage::clean()/dirty() signal changes. Small fixes
	in the quit dialog's dirty image container.

	* app/tools/gimptoolcontrol.[ch]: added member and API to
	set/get the dirty_mask.

	* app/tools/gimpcroptool.c
	* app/tools/gimpimagemaptool.c
	* app/tools/gimpiscissorstool.c
	* app/tools/gimptexttool.c
	* app/tools/gimptransformtool.c: whenever setting "preserve" to
	FALSE, also set a "dirty_mask" which specifies on which image
	changes the tool wants to be canceled.

	* app/tools/tool_manager.c: removed "undo_start" connection and
	connect to both "dirty" *and* "clean" to check if the active_tool
	needs to be canceled. Cancel the tool only if the dirty_mask
	passed in the signal has common bits with the tool's dirty_mask.

	Fixes bug #109561 and probably opens some new ones...
2004-07-29 14:16:21 +00:00
Michael Natterer 87b5322fdb added properties "gimp", "id", "width", "height" and "base-type". Moved
2004-07-14  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage.c: added properties "gimp", "id", "width",
	"height" and "base-type". Moved all code from gimp_image_new()
	to GObject::constructor().

	* app/core/gimpimage-convert.c
	* app/core/gimpimage-crop.c
	* app/core/gimpimage-resize.c
	* app/core/gimpimage-rotate.c
	* app/core/gimpimage-scale.c
	* app/core/gimpimage-undo-push.c: set "width", "height" and
	"base-type" with g_object_set() so "notify" is emitted on the
	properties.

	* app/core/gimpimage-undo.c (gimp_image_undo_pop_stack):
	freeze/thaw property notifications around undoing/redoing so they
	are not emitted in the middle of the undo operation.
2004-07-14 12:12:50 +00:00
Michael Natterer da74f1269e app/core/gimpundo.[ch] app/core/gimpitemundo.[ch] removed all _new()
2004-07-12  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpundo.[ch]
	* app/core/gimpitemundo.[ch]
	* app/text/gimptextundo.[ch]: removed all _new() functions and
	added properties and GObject::constructor() implementations
	instead.

	* app/core/gimpimage-undo.[ch] (gimp_image_undo_push): added
	"GType undo_gtype" parameter and allow to pass name-value pairs as
	"...". Une the new GParameter utility functions to construct the
	appropriate undo step with g_object_newv().

	(gimp_image_undo_push_item): removed.

	(gimp_image_undo_push_undo): removed. Merged its code back into
	gimp_image_undo_push(), where it originally came from.

	* app/core/gimpimage-undo-push.c
	* app/core/gimpundostack.c
	* app/paint/gimppaintcore-undo.c
	* app/tools/gimptransformtool-undo.c
	* app/widgets/gimpundoeditor.c: changed accordingly.
2004-07-12 16:59:36 +00:00
Michael Natterer 525a98f81a Made the undo system robust against the currently pushed undo being too
2004-07-07  Michael Natterer  <mitch@gimp.org>

	Made the undo system robust against the currently pushed undo
	being too large according to prefs settings. Fixes bug #145379.

	* app/core/gimpimage-undo.[ch] (gimp_image_undo_push_undo)
	(gimp_image_undo_group_end): emit "undo-event" *before* calling
	gimp_image_undo_free_space() so the undo history doesn't try to
	remove an item that has never been added.

	(gimp_image_undo_push_undo): added boolean return value indicating
	if the undo could be pushed (FALSE means the undo was to large
	and was discarded right away).

	(gimp_image_undo_push_item): return NULL if the above returned
	FALSE.

	* app/core/gimpimage-undo-push.c (gimp_image_undo_push_text_layer):
	changed accordingly.
2004-07-07 13:58:51 +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 0af7cfa584 when re-adding a layer with mask, don't forget to set layer->mask->removed
2004-03-28  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-undo-push.c (undo_pop_layer): when re-adding
	a layer with mask, don't forget to set layer->mask->removed to FALSE.
2004-03-28 14:25:42 +00:00
Michael Natterer 77447984cc added "gboolean removed" to the GimpItem struct. Defaults to FALSE. Set it
2004-03-28  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpitem.[ch]: added "gboolean removed" to the GimpItem
	struct. Defaults to FALSE. Set it to TRUE in gimp_item_removed().
	Added public function gimp_item_is_removed().

	* app/core/gimpimage-undo-push.c (undo_pop_layer)
	(undo_pop_layer_mask) (undo_pop_channel) (undo_pop_vectors):
	set it to FALSE manually when re-adding something from the
	undo stack.

	* tools/pdbgen/app.pl
	* tools/pdbgen/pdb.pl: don't allow any operation on items which
	are removed from the image (and exist on the undo stack only).
	Fixes bug #138311.

	* app/pdb/channel_cmds.c
	* app/pdb/color_cmds.c
	* app/pdb/drawable_cmds.c
	* app/pdb/edit_cmds.c
	* app/pdb/floating_sel_cmds.c
	* app/pdb/image_cmds.c
	* app/pdb/layer_cmds.c
	* app/pdb/paint_tools_cmds.c
	* app/pdb/parasite_cmds.c
	* app/pdb/selection_cmds.c
	* app/pdb/selection_tools_cmds.c
	* app/pdb/transform_tools_cmds.c: regenerated.
2004-03-28 14:20:57 +00:00
Sven Neumann 2326e1b979 added gimp_undo_type_to_name() a similar function used to live in
2004-03-21  Sven Neumann  <sven@gimp.org>

	* app/core/gimpundo.[ch]: added gimp_undo_type_to_name() a similar
	function used to live in gimpimage-undo.[ch].

	* app/core/gimpitemundo.c (gimp_item_undo_new): allow NULL as name
	and generate it from the undo_type then.

	* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_undu(),
	new function that allows to push an undo on the image.

	* app/text/Makefile.am
	* app/text/text-types.h
	* app/text/gimptextundo.[ch]: added GimpTextUndo, derived from
	GimpItemUndo.

	* app/core/gimpimage-undo-push.c (gimp_image_undo_push_text_layer):
	use the new code and simply push a text undo here.

	* app/tools/gimptexttool.c: compress text undos by peeking at the
	undo stack. Fixes bug #137766.
2004-03-21 23:14:21 +00:00
Sven Neumann 584b3ceb9b don't take the image from tool->gdisp, this might be a NULL pointer.
2004-03-20  Sven Neumann  <sven@gimp.org>

	* app/tools/gimptexttool.c (gimp_text_tool_create_vectors): don't
	take the image from tool->gdisp, this might be a NULL pointer.

	* app/core/gimpimage-undo-push.c: removed debugging output.
2004-03-20 20:10:05 +00:00
Sven Neumann 20d03407fe avoid to set the unit property with every size change; only set it if it
2004-03-20  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimppropwidgets.c (gimp_prop_size_entry_callback):
	avoid to set the unit property with every size change; only set it
	if it actually changed.

	* app/core/gimpimage-undo-push.c (gimp_image_undo_push_text_layer):
	allow to pass a GParamSpec that identifies a single text property
	to be changed. In this case, don't store a GimpText object on the
	undo stack but only the changed value.

	* app/tools/gimptexttool.c: use the new undo feature to reduce the
	memory footprint of text undo for the common case.

	* app/text/gimptextlayer.c: changed accordingly.
2004-03-20 17:21:48 +00:00
Sven Neumann 8214f17256 fixed a bug that Mitch spotted.
2004-03-20  Sven Neumann  <sven@gimp.org>

	* app/core/gimpimage-undo-push.c (undo_pop_text_layer): fixed a
	bug that Mitch spotted.
2004-03-19 23:38:02 +00:00
Sven Neumann cbbe4f3871 don't exchange the text_layer's text object but sync it with the text
2004-03-20  Sven Neumann  <sven@gimp.org>

	* app/core/gimpimage-undo-push.c (undo_pop_text_layer): don't
	exchange the text_layer's text object but sync it with the text
	object from the undo step.

	* app/text/gimptextlayer.c (gimp_text_layer_set): in case the
	layer has a mask, push an undo group around the text modifications.

	* app/tools/gimptexttool.c (gimp_text_tool_idle_apply): push a
	text layer undo before applying the text changes.
2004-03-19 23:08:24 +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 83dc4c3b49 removed unused #includes.
2004-03-16  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-undo-push.c: removed unused #includes.
2004-03-16 00:37:24 +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 800b7a5d53 added "gboolean alpha_changed" to GimpImageFlushAccumulator. Install an
2004-03-15  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage.[ch]: added "gboolean alpha_changed" to
	GimpImageFlushAccumulator. Install an "alpha_changed" handler
	on gimage->layers and set flush_accum.alpha_changed = TRUE
	whenever the image's *only* layer changed its alpha.

	* app/core/gimpimage-undo-push.c (undo_pop_layer_mod)
	* app/core/gimplayer.c (gimp_layer_add_alpha): removed
	explicit calls to gimp_image_alpha_changed().
2004-03-15 16:38:49 +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 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
Sven Neumann c94f85b345 tile-cache.c tile-private.h removed trailing whitespace, added some
2004-02-18  Sven Neumann  <sven@gimp.org>

	* tile-cache.c
	* tile-private.h
	* tile.[ch]: removed trailing whitespace, added some newlines,
	let tile_is_valid() return a gboolean instead of a gint.

	* app/core/gimpimage-projection.c
	* app/core/gimpimage-undo-push.c
	* app/paint/gimppaintcore.c
	* app/tools/gimpinktool.c: use the return value from tile_is_valid()
	as a boolean.
2004-02-18 18:54:33 +00:00
Michael Natterer 25b81b1570 Fixed lots of QuickMask brokenness by letting the image adjust its
2004-02-14  Michael Natterer  <mitch@gimp.org>

	Fixed lots of QuickMask brokenness by letting the image adjust
	its qmask_state automatically:

	* app/core/gimpimage-qmask.h: #define GIMP_IMAGE_QMASK_NAME "Qmask".
	Use the define in all files below.

	* app/core/gimpimage.[ch]: split gimp_image_drawable_add,_remove()
	into separate handlers for layers and channels. Added a
	"name_changed" handler for all channels. In the channel "add",
	"remove" and "name_changed" handlers, check if it was a channel
	named "Qmask" that was added, removed or renamed and call
	gimp_image_set_qmask_state() accordingly.

	* app/core/core-enums.[ch]
	* app/core/gimpimage-undo-push.[ch]
	* app/core/gimpundo.c: removed all Qmask undo code because the image
	does the right thing without undo interaction now.

	* app/core/gimpimage-qmask.c (gimp_image_set_qmask_state): set
	gimage->qmask_state early so we can return early when called
	recursively. Removed calls to gimp_image_undo_push_image_qmask().
	Returned "removed" callback (it was utterly broken the way it was
	implemented).

	* app/display/gimpdisplayshell-callbacks.c
	(gimp_display_shell_qmask_toggled): check if the image's
	qmask state needs to be changed before changing it.

	* app/xcf/xcf-load.c (xcf_load_channel): removed code which
	recognized the qmask. GimpImage does this automatically now.

	* app/gui/qmask-commands.c: cleanup.

	* app/widgets/gimpimagedock.c (gimp_image_dock_constructor):
	destroy the "/Select/By Color" and "/Select/Toggle QuickMask" menu
	items.

	* app/widgets/image-menu.c (image_menu_update): changed accordingly.
2004-02-14 15:37:23 +00:00
Michael Natterer 8312e82ad8 Make sure that non-indexed images never have a colormap. Fixes bug
2004-02-12  Michael Natterer  <mitch@gimp.org>

	Make sure that non-indexed images never have a colormap.
	Fixes bug #121033.

	* app/core/gimpimage-colormap.c (gimp_image_set_colormap): set
	image->cmap to NULL when called with a NULL colormap.

	* app/core/gimpimage-undo-push.c: made colormap undo/redo aware
	of NULL colormaps.

	* app/core/gimpimage-convert.c (gimp_image_convert): remove the
	colormap using gimp_image_set_colormap() instead of freeing it
	manually.

	* app/widgets/gimpcolormapeditor.c: always check if the image
	is INDEXED *and* has a colormap before accessing the colormap.

	(need this new check because the fixed behaviour of colormap undo
	produces undo groups which, when being popped, make the image have
	no colormap while still being INDEXED in the small time frame
	between the emission of "colormap_changed" and "mode_changed").
2004-02-12 12:13:21 +00:00