Commit graph

1329 commits

Author SHA1 Message Date
Michael Natterer
d1ba870458 added a GimpContainer of tool options presets.
2003-09-29  Michael Natterer  <mitch@gimp.org>

	* app/core/gimptoolinfo.[ch]: added a GimpContainer of tool
	options presets.

	* app/core/gimptooloptions.[ch] (gimp_tool_options_set_property):
	silently accept setting the *same* tool_info again.

	(gimp_tool_options_build_filename): is public now.

	* app/tools/gimp-tools.c (gimp_tools_restore,save): load and save
	the presets container.

	* app/gui/tool-options-dialog.[ch]: removed.

	* app/gui/tool-options-commands.[ch]
	* app/gui/tool-options-menu.[ch]: new files implementing a menu
	for the new GimpToolOptionsEditor widget. Has submenus for saving,
	loading, and deleting tool options to/from the
	tool_info->options_presets container.

	* app/gui/Makefile.am
	* app/gui/dialogs-constructors.c
	* app/gui/menus.c: changed accordingly.

	* app/widgets/Makefile.am
	* app/widgets/widgets-types.h
	* app/widgets/gimptooloptionseditor.[ch]: the tool options dialog
	as proper widget. The "Load" and "Save" buttons still do the same
	stuff as before. Will make them use the new presets since making
	them do something useful was the reason for this whole change.

	* app/widgets/gimphelp-ids.h: added missing help IDs for the tool
	options dialog.
2003-09-29 20:26:09 +00:00
Michael Natterer
2b57062c01 minor cleanups.
2003-09-29  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpcroptool.c: minor cleanups.

	(gimp_crop_tool_modifier_key): s/crop-type/crop-mode/. Fixes tool
	toggling which was broken after my GimpCropMode change.

	(crop_tool_crop_image): replaced parameter "gboolean crop_layers"
	by "GimpCropMode crop_mode". Makes its callers simpler and more
	readable.
2003-09-29 18:06:15 +00:00
Simon Budig
02f375b8d4 Made the preview respect the aspect ratio and resolutions of the image.
2003-09-29  Simon Budig  <simon@gimp.org>

	* app/widgets/gimppreviewrenderervectors.c: Made the preview
	respect the aspect ratio and resolutions of the image. There
	apparently still is an off-by-one error in it.

	* app/tools/gimpvectortool.c: (Hopefully) fixed a crash when a new
	image gets opened with the vectors tool active.
2003-09-29 16:35:30 +00:00
Simon Budig
eb489c44c4 Made these widgets show a preview of the vectors object. Does not work
2003-09-29  Simon Budig  <simon@gimp.org>

	* app/widgets/gimppreviewrenderervectors.c: Made these widgets
	show a preview of the vectors object. Does not work everywhere
	right now, also most probably has scaling issues for non-square
	images.

	* app/tools/gimpdrawtool.c: Fixed Svens fix.
2003-09-29 11:48:15 +00:00
Sven Neumann
30a4f72166 plugged memleaks and added some sanity checks.
2003-09-28  Sven Neumann  <sven@gimp.org>

	* app/core/gimpscanconvert.c (gimp_scan_convert_free)
	(gimp_scan_convert_finish): plugged memleaks and added some sanity
	checks.

	* app/base/pixel-region.c
	* app/core/gimpdrawable-preview.c: removed trailing whitespace.

	* app/tools/gimpdrawtool.c (gimp_draw_tool_on_vectors_curve):
	gimp_stroke_nearest_point_get() doesn't set cur_pos when there are
	no strokes; don't use the uninitialized variable.
2003-09-28 20:13:59 +00:00
Simon Budig
3f76868aee This still is very much in progress. I just want to commit this to avoid
2003-09-27  Simon Budig  <simon@gimp.org>

	This still is very much in progress. I just want to commit this
	to avoid lossage. It kind of works but there definitely is
	code in the wrong place now.

	* app/gui/stroke-dialog.[ch]: New files implementing a dialog
	containing Svens GimpStrokeEditor-Widget.

	* app/gui/Makefile.am: changed accordingly.

	* app/gui/vectors-commands.c: Open the StrokeOptions-Dialog when
	the "stroke" menu entry gets selected.

	* app/vectors/gimpvectors.c: Remove bad #ifdef hacks and use
	Libart/Paintcore-Stroking depending on the type of the stroke_desc
	Parameter.

	* app/core/gimpstrokeoptions.c: Proper handle the Enum-Properties.

	* app/core/gimpscanconvert.[ch]: make the antialias-parameter
	to gimp_scan_convert_new a gboolean.

	* app/tools/gimpiscissorstool.c
	* app/core/gimpdrawable-stroke.c
	* app/core/gimpimage-mask-select.c: Changed accordingly.
2003-09-27 02:34:18 +00:00
Michael Natterer
7d2c75940f don't scan "app/tools/tools-enums.h" for PDB types since the PDB doesn't
2003-09-26  Michael Natterer  <mitch@gimp.org>

	* tools/pdbgen/Makefile.am: don't scan "app/tools/tools-enums.h"
	for PDB types since the PDB doesn't depend on app/tools/ any more.

	* app/tools/tools-enums.h: removed lengthy "skip" vs. "pdb-skip"
	comment. Removed "pdb-skip" from all enums. Renamed GimpCropType
	to GimpCropMode, renamed the enum's values to GIMP_CROP_MODE_*.

	* app/tools/tools-enums.c: regenerated.

	* app/tools/gimpcropoptions.[ch]
	* app/tools/gimpcroptool.c: changed accordingly.
2003-09-26 16:20:05 +00:00
Michael Natterer
e13afaf260 Cleaned up all places which pick colors to work consistently: the concept
2003-09-26  Michael Natterer  <mitch@gimp.org>

	Cleaned up all places which pick colors to work consistently: the
	concept of an "active color" has disappeared, instead <ctrl> picks
	the BG color all over the place (fixes bug #122931).

	* app/tools/tools-enums.[ch]: added enum GimpColorPickMode which
	can be one of { FOREGROUND, BACKGROUND }. Reordered enums so
	non-registered ones are at the end of the file. Removed trailing
	whitespace.

	* app/tools/gimpcolorpickeroptions.[ch]: added a "pick-mode"
	property and a GUI for it. Renamed the "update-active" property to
	"update-toolbox".

	* app/tools/gimpcolorpickertool.c: honor the new option. Toggle
	pick-mode on <ctrl>.

	* app/tools/gimpcolortool.[ch]: added pick_mode member and change
	the cursor accordingly.

	* app/widgets/gimpcolormapeditor.[ch]: added "GdkModifierType
	state" to the "selected" signal. Removed the signal's default
	implementation.

	* app/gui/dialogs-constructors.c: fixed the signal handler which
	lives here and set BG if <ctrl> was pressed.

	* app/widgets/gimppaletteeditor.c: removed weird <ctrl> <->
	active_color interaction and pick BG on <ctrl>. Don't change the
	toolbox color when editing a color in the palette.

	* app/widgets/gimptoolbox-color-area.[ch]: made the whole
	active_color stuff private. Will remove these artefacts soon...

	* app/gui/colormap-editor-menu.c
	* app/gui/palette-editor-menu.c: added separate menu entries
	for adding a color from the current FG and BG.

	* app/gui/colormap-editor-commands.c
	* app/gui/palette-editor-commands.[ch]: changed callbacks
	accordingly.

	* cursors/background.xbm
	* cursors/background_mask.xbm
	* cursors/foreground.xbm
	* cursors/foreground_mask.xbm
	* cursors/gimp-tool-cursors.xcf: moved the FG/BG cursor modifiers
	closer to the upper right corner.

	* app/widgets/gimpcursor.c: ignore the cursor modifiers' hotspots
	since they are not relevant and I didn't save the hotspot in the
	updated cursor files for that reason.
2003-09-26 13:33:54 +00:00
Simon Budig
2c212214fe Fixed vectors stroking on GRAY* and INDEXED* layers.
2003-09-23  Simon Budig  <simon@gimp.org>

	* app/core/gimpdrawable-stroke.c: Fixed vectors stroking on
	GRAY* and INDEXED* layers.

	* app/tools/gimpvectortool.c: Made the polygonal mode more
	consistent.
2003-09-22 23:19:22 +00:00
Simon Budig
fa450f09b5 Previous commit got a broken pipe. 2003-09-21 19:09:56 +00:00
Michael Natterer
da6c31af1f moved the call to gimp_color_tool_enable() from GimpTool::initialize() to
2003-09-19  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpcolorpickertool.c: moved the call to
	gimp_color_tool_enable() from GimpTool::initialize() to
	GObject::constructor() so the right cursor is shown before the
	first button_press. Fixes bug #122693.
2003-09-19 12:11:04 +00:00
Simon Budig
1ac86b5a90 Show a little help in the status bar. Maybe the functions I implemented to
2003-09-19  Simon Budig  <simon@gimp.org>

	* app/tools/gimpvectortool.[ch]: Show a little help in the
	status bar. Maybe the functions I implemented to track
	the status of the status bar should live in a parent class.
	Still behaves a little weird, but I need help to fix it and it
	does not crash, so I committed it anyway...  :-)
2003-09-18 23:58:37 +00:00
Simon Budig
66a49483a7 Renamed the modes of the vector tools: - Design (creative stuff: placing
2003-09-18  Simon Budig  <simon@gimp.org>

	* app/tools/tools-enums.h: Renamed the modes of the vector tools:
	    - Design  (creative stuff: placing of new anchors /
	                               moving anchors/segments)
	    - Edit    (technical stuff: inserting/deleting anchors/segments)
	    - Move    (moving strokes/vectors)

	Jimmac: These need icons...  :-)

	* app/tools/tools-enums.c: regenerated

	* app/tools/gimpvectoroptions.c
	* app/tools/gimpvectortool.c: changed accordingly.
2003-09-18 14:54:54 +00:00
Michael Natterer
6b2ca702ad app/paint/Makefile.am removed... ...and added.
2003-09-18  Michael Natterer  <mitch@gimp.org>

	* app/paint/Makefile.am
	* app/paint/paint.[ch]: removed...
	* app/paint/gimp-paint.[ch]: ...and added.

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

	* app/tools/Makefile.am
	* app/tools/tools.[ch]: removed...

	* app/tools/gimp-tools.[ch]: ...and added. Added
	gimp_tools_restore() and gimp_tools_save() and moved the entire
	tool registering and tool_options loading/saving code here. Call
	tool_manager_init() from gimp_tools_init() and tool_manager_exit()
	from gimp_tools_exit().

	* app/tools/tool_manager.[ch]: removed the code which now lives
	in gimp-tools.[ch]. The tool manager now has no knowledge about
	individual tools any more and just handles the active_tool
	and the tool part of tool <-> display interaction.
	Removed tool_manager_get_info_by_type().

	* app/tools/gimpvectortool.c (gimp_vector_tool_register): the
	tool's identifier is "gimp-vector-tool", not "gimp-path-tool".

	* app/app_procs.c
	* app/display/gimpdisplayshell-callbacks.c
	* app/gui/vectors-commands.c
	* app/tools/gimppainttool.c: changed accordingly.
2003-09-18 13:51:10 +00:00
Simon Budig
3b1c873724 app/vectors/gimpstroke.[ch] added the endpoint of the segment to the list
2003-09-18  Simon Budig  <simon@gimp.org>

	* app/vectors/gimpstroke.[ch]
	* app/vectors/gimpbezierstroke.c: (gimp_stroke_nearest_point_get)
	added the endpoint of the segment to the list of returned values.

	* app/tools/gimpdrawtool.[ch]: (gimp_draw_tool_on_vectors_curve)
	return the endpoint also.

	* app/tools/gimpvectortool.[ch]: Use that to activate the
	to-be-changed anchors when dragging on the curve directly.

	* app/tools/gimpmovetool.[ch]: changed accordingly.
2003-09-18 13:20:40 +00:00
Simon Budig
90bf56c75b Cursor keys now move the currently active anchors, SHIFT and CTRL increase
2003-09-18  Simon Budig  <simon@gimp.org>

	* app/tools/gimpvectortool.c: Cursor keys now move the currently
	active anchors, SHIFT and CTRL increase the steps.

	* MAINTAINERS: Added myself in an attack of hubris...
2003-09-18 00:42:26 +00:00
Michael Natterer
b46c0f7f4d initialize undo_type to shut up the compiler.
2003-09-17  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpeditselectiontool.c
	(gimp_edit_selection_tool_arrow_key): initialize undo_type to shut
	up the compiler.
2003-09-17 22:00:10 +00:00
Simon Budig
66cc2b98b5 app/vectors/gimpstroke.[ch] Changed gimp_*_anchor_select to accept the
2003-09-17  Simon Budig  <simon@gimp.org>

	* app/vectors/gimpstroke.[ch]
	* app/vectors/gimpvectors.[ch]: Changed gimp_*_anchor_select to
	accept the selection state as an argument.

	* app/tools/gimpdrawtool.[ch]: Added "exclusive" boolean parameter
	to gimp_draw_tool_on_vectors_handle(), so that you can specify
	that you just get exactly the type of anchor you want to have.

	* app/tools/gimpvectortool.[ch]: Handling of multiple selected
	anchors: Shift-Clicking in Extend mode selects them, you can
	move them together.
2003-09-17 21:49:45 +00:00
Michael Natterer
776bc79292 moved the path tool after the selection tools.
2003-09-17  Michael Natterer  <mitch@gimp.org>

	* app/tools/tools.c (tools_init): moved the path tool after the
	selection tools.
2003-09-17 21:34:43 +00:00
Simon Budig
12a4cc19bc smallish change to enable dragging out of handles again. It is now
2003-09-17  Simon Budig  <simon@gimp.org>

	* app/tools/gimpvectortool.c: smallish change to enable
	dragging out of handles again. It is now dragging handles
	out of anchors, when click/dragging on them in Insert/Delete
	mode. Deletion of nodes now requires the SHIFT modifier.
2003-09-17 13:08:19 +00:00
Michael Natterer
2ce758b846 Added nomis' favorite feature ;)
2003-09-17  Michael Natterer  <mitch@gimp.org>

	Added nomis' favorite feature ;)

	* app/paint/gimppaintcore.[ch]: added gimp_paint_core_cancel()
	which can be called instead of gimp_paint_core_finish().
	It simply copies core->undo_tiles back to the drawable instead of
	pushing them to the undo stack.

	* app/tools/gimppainttool.c (gimp_paint_core_button_release): call
	_cancel() instead of _finish() if the right mouse button is
	pressed.
2003-09-17 12:05:11 +00:00
Michael Natterer
69e11c9af2 added "GimpVectorMode saved_mode" to the GimpVectorTool struct.
2003-09-17  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpvectortool.[ch]: added "GimpVectorMode saved_mode"
	to the GimpVectorTool struct.

	(gimp_vector_tool_modifier_key): use it to correctly keep track of
	the modifier state.

	* app/tools/gimpselectiontool.c (gimp_selection_tool_modifier_key):
	moved variable to local scope.
2003-09-17 11:16:55 +00:00
Michael Natterer
f4942b7255 cursors/hand.xbm removed.
2003-09-17  Michael Natterer  <mitch@gimp.org>

	* cursors/hand.xbm
	* cursors/hand_mask.xbm: removed.

	* cursors/hand_small.xbm
	* cursors/hand_small_mask.xbm: ...and added under new names.

	* cursors/Makefile.am
	* cursors/gimp-tool-cursors.xcf: changed accordingly.

	* app/widgets/widgets-enums.h
	* app/widgets/gimpcursor.c: removed HAND from the GimpCursorModifier
	enum and added it to the GimpToolCursorType enum. We don't have a
	hand tool but this way the hand cursor (which is in the lower
	right corner) can be used together with other cursor modifiers
	(which are in the upper right corner).

	* app/tools/gimpmovetool.c
	* app/tools/gimpvectortool.c: show cursor modifers with the hand
	cursor where appropriate.
2003-09-17 10:42:26 +00:00
Simon Budig
a2f699f822 Ok, since the obsolete undo step is invalid the undo_event of the image
2003-09-17  Simon Budig  <simon@gimp.org>

	* app/tools/gimpvectortool.c: Ok, since the obsolete undo
	step is invalid the undo_event of the image probably should be
	GIMP_UNDO_EVENT_UNDO_EXPIRED. This fixes at least the undo
	history...
2003-09-17 00:20:42 +00:00
Simon Budig
790c11ec98 Restored Mitchs favourite feature :-) (now the cursor indicates if you
2003-09-17  Simon Budig  <simon@gimp.org>

	* app/tools/gimpvectortool.[ch]: Restored Mitchs favourite
	feature :-)  (now the cursor indicates if you hover over
	a vectors object when no other one is active...). Also added
	more descriptive Undo names and RMB-Cancel for the Vectors tool.

	Please note, that the RMB-Cancel is implemented using the Undo
	System. I do not really have a clue on that and so right now
	there is an oddity - the undo-object popped from the undo
	stack does not get removed from e.g. the Undo History Dialog.

	Someone with a clue please have a look at that...  :-)
2003-09-16 23:51:56 +00:00
Michael Natterer
94dddc1820 changed "gboolean move_mask" to "GimpTransformType move_type" and added an
2003-09-16  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpmoveoptions.[ch]: changed "gboolean move_mask" to
	"GimpTransformType move_type" and added an "Affect:" stock radio
	box so it offers the same LAYER,SELECTION,PATH choice as the other
	transform tools.

	* app/tools/gimpmovetool.[ch]: honor the new tool option, made
	cursor_update() show more different cursors which describe the
	state of the tool more closely, fixed some cases where the
	GimpeditSelectionTool was invoked with meaningless values
	(like requesting a selection transform when there is no
	selection).

	Changed modifiers:

	- Made <Shift> toggle "move current layer".
	- Made <Control> switch to path moving.
	- <Alt> switched to selection moving as before.

	* app/tools/gimpeditselectiontool.[ch]: added EDIT_VECTORS_TRANSLATE
	operation mode and honor it all over the place. Unified the code
	which transforms layers and vectors since it's essentially the same.

	(gimp_edit_selection_tool_cursor_key): simplified selection moving
	code and added support for moving paths (using <Control>).
2003-09-16 16:23:38 +00:00
Sven Neumann
555038debf app/composite/gimp-composite-generic.c app/composite/gimp-composite-mmx.c
2003-09-16  Sven Neumann  <sven@gimp.org>

	* app/composite/gimp-composite-generic.c
	* app/composite/gimp-composite-mmx.c
	* app/composite/gimp-composite-sse.c
	* app/composite/gimp-composite-sse2.c
	* app/config/gimpconfig-deserialize.c
	* app/config/gimpconfig-path.c
	* app/config/gimpconfig-serialize.c
	* app/core/cpercep.c
	* app/core/gimpunit.c
	* app/gui/palette-import-dialog.c
	* app/gui/plug-in-menus.c
	* app/paint-funcs/paint-funcs-generic.h
	* app/paint-funcs/paint-funcs.c
	* app/pdb/procedural_db.c
	* app/text/gimptextlayout-render.c
	* app/tools/gimpfuzzyselecttool.c
	* app/widgets/gimpcursor.c: some trivial code cleanups: avoid
	casts that discard const qualifiers and avoid useless comparisons
	on unsigned variables. Also reordered qualifiers in function
	declarations (static comes before const).
2003-09-16 13:12:50 +00:00
Simon Budig
e899c701ba Implemented an (unused/untested) gimp_vectors_bounds () that returns the
2003-09-16  Simon Budig  <simon@gimp.org>

	* app/vectors/gimpvectors.[ch]: Implemented an (unused/untested)
	gimp_vectors_bounds () that returns the bounding box of an vectors
	object.

	* app/tools/gimpdrawtool.[ch]: made gimp_draw_tool_on_vectors()
	ignore handles/anchors, since they are not visible when that
	function gets used.
2003-09-15 22:41:25 +00:00
Simon Budig
0e407cba35 fixed bogus gimp_item_set_image (GIMP_ITEM (vectors), NULL);
2003-09-15  Simon Budig  <simon@gimp.org>

	* app/core/gimpimage.c: fixed bogus
	gimp_item_set_image (GIMP_ITEM (vectors), NULL);

	* app/tools/gimpdrawtool.[ch]: added gimp_draw_tool_on_vectors:
	checks if the given coordinate is on any vectors object of the image.

	* app/tools/gimpvectortool.[ch]: Changed the tool modes.
	VECTORS_SELECT_VECTORS now is active when the tool does not
	have a current vectors object or the gdisplay is different
	than the one the tool is drawing on. Also the Move mode now
	uses it, when clicking outside the current vectors object.

	Factored out the sanity check of the internal state
	(gimp_vector_tool_verify_state).
2003-09-15 21:12:10 +00:00
Sven Neumann
b4cc25eb18 removed...
2003-09-15  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdrawable-transform-utils.[ch]: removed...

	* app/core/gimp-transform-utils.[ch]: ...and added under new names
	because these functions are not at all related to GimpDrawable.
	Changed the function names accordingly.

	* app/tools/gimpperspectivetool.c
	* app/tools/gimprotatetool.c
	* app/tools/gimpscaletool.c
	* app/tools/gimpsheartool.c
	* app/vectors/gimpstroke.c
	* app/vectors/gimpvectors.c
	* tools/pdbgen/pdb/transform_tools.pdb: changed accordingly.

	* app/pdb/transform_tools_cmds.c: regenerated.
2003-09-15 17:41:18 +00:00
Michael Natterer
5b33524acf added new functions gimp_draw_tool_on_vectors_handle() and
2003-09-12  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpdrawtool.[ch]: added new functions
	gimp_draw_tool_on_vectors_handle() and _on_vectors_curve()
	so they can be used by all GimpDrawTool subclasses.

	* app/tools/gimpvectortool.[ch]: removed the _on_handle() and
	_on_curve() functions here. Connect to "active_vectors_changed" of
	the active_vector's image, so once it has been avtivated, the tool
	follows the path which is selected in the paths dialog.
2003-09-12 16:44:10 +00:00
Michael Natterer
9c13b724d4 app/core/gimpimage-mask-select.c (gimp_image_mask_select_vectors)
2003-09-12  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-mask-select.c (gimp_image_mask_select_vectors)
	* app/paint/gimppaintcore-stroke.c (gimp_paint_core_stroke_vectors)
	* app/display/gimpdisplayshell.c (gimp_display_shell_draw_vector)
	* app/tools/gimpdrawtool.c (gimp_draw_tool_real_draw)
	* app/tools/gimptransformtool.c (gimp_transform_tool_draw)
	* app/tools/gimpvectortool.c (gimp_vector_tool_vectors_visible)
	(gimp_vector_tool_draw): all callers of gimp_stroke_interpolate():
	don't leak the returned GimpCoords array and don't crash if it's
	NULL.

	* app/tools/gimpvectortool.[ch]: added VECTORS_SELECT_VECTOR state
	which enables activating any visible GimpVectors on any display.

	(gimp_vector_tool_on_handle)
	(gimp_vector_tool_on_curve): added a GimpVectors parameter so we
	can check for vectors which are not vector_tool->vectors.

	(gimp_vector_tool_oper_update): iterate gdisp->gimage->vectors
	to figure if we are hovering any visible vectors and set
	VECTORS_SELECT_VECTOR.

	(gimp_vector_tool_button_press): catch VECTORS_SELECT_VECTOR and
	start editing the selected vectors. Also make it the image's
	active_vectors.

	(gimp_vector_tool_button_release): removed unneeded call to
	gimp_viewable_invalidate_preview(vectors).

	Random cleanup all over the place.
2003-09-12 10:04:37 +00:00
Michael Natterer
3f437bb73b removed all calls to gimp_tool_control_set_preserve() so the tool doesn't
2003-09-12  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpvectortool.c: removed all calls to
	gimp_tool_control_set_preserve() so the tool doesn't get
	confused by the image being dirtied.

	Made it aware of visible vectors:

	(gimp_vector_tool_draw): don't draw the stroke itself if the
	current vectors is visible.

	(gimp_vector_tool_vectors_visible): new callback which just draws
	the stroke itself when the vectors changes visibility.

	(gimp_vector_tool_set_vectors): connect the new callback.
2003-09-12 00:00:23 +00:00
Michael Natterer
c7414c12a0 made gimp_item_linked_get_list() and the GimpItemLinkedMask enum public.
2003-09-11  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpitem-linked.[ch]: made gimp_item_linked_get_list()
	and the GimpItemLinkedMask enum public. Hiding them just causes
	code duplication.

	* app/tools/gimpdrawtool.[ch]: added a GList of GimpVectors and a
	GimpMatrix3 transformation matrix for them. Just set them with
	gimp_draw_tool_set_vectors() and gimp_draw_tool_set_transform()
	and chain up in your tools's GimpdrawTool::draw() implementation
	to get the vectors drawn.

	* app/tools/gimpeditselectiontool.c: use
	gimp_item_linked_get_list() instead of traversing image->layers,
	->channels and ->vectors manually to find the linked items.
	Use gimp_draw_tool_set_vectors() and _set_transform() to show
	the linked vectors while moving.

	(gimp_edit_selection_tool_arrow_key): transform all linked items,
	not just the linked layers.
2003-09-11 18:02:39 +00:00
Sven Neumann
6f1a0df89f app/display/Makefile.am app/gui/Makefile.am app/paint/Makefile.am
2003-09-07  Sven Neumann  <sven@gimp.org>

	* app/display/Makefile.am
	* app/gui/Makefile.am
	* app/paint/Makefile.am
	* app/pdb/Makefile.am
	* app/text/Makefile.am
	* app/tools/Makefile.am
	* app/widgets/Makefile.am
	* app/xcf/Makefile.am (INCLUDES): removed $(LIBART_CFLAGS) again.
2003-09-07 19:35:10 +00:00
Michael Natterer
8df1badccd removed the last traces of xinput_airbrush.
2003-09-07  Michael Natterer  <mitch@gimp.org>

	* app/tools/airbrush_blob.[ch]: removed the last traces of
	xinput_airbrush.
2003-09-07 15:34:49 +00:00
Michael Natterer
47ba171afd app/display/display-types.h app/tools/tools-types.h
2003-09-07  Michael Natterer  <mitch@gimp.org>

	* app/display/display-types.h
	* app/tools/tools-types.h
	* app/vectors/vectors-types.h
	* app/widgets/widgets-types.h: removed some forgotten cruft.

	* app/vectors/gimpbezierstroke.h
	* app/vectors/gimpstroke.h
	* app/vectors/gimpvectors.h: added class struct typedefs here.
2003-09-07 10:29:10 +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
b28c23611b app/display/Makefile.am app/gui/Makefile.am app/paint/Makefile.am
2003-09-06  Michael Natterer  <mitch@gimp.org>

	* app/display/Makefile.am
	* app/gui/Makefile.am
	* app/paint/Makefile.am
	* app/pdb/Makefile.am
	* app/text/Makefile.am
	* app/tools/Makefile.am
	* app/widgets/Makefile.am
	* app/xcf/Makefile.am (INCLUDES): add $(LIBART_CFLAGS) here too.
2003-09-06 17:20:02 +00:00
Michael Natterer
a33f06e7e5 removed the _push_undo() and _invalidate() wrappers.
2003-09-04  Michael Natterer  <mitch@gimp.org>

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

	* app/core/gimpimage-mask-select.c
	* app/core/gimpimage-undo-push.c
	* app/core/gimplayer-floating-sel.c
	* app/tools/gimptransformtool.c: changed accordingly.
2003-09-04 11:44:57 +00:00
Simon Budig
36941635a2 Cleanup. Properly freeze/thaw the vectors.
2003-09-04  Simon Budig  <simon@gimp.org>

	* app/tools/gimpvectortool.c: Cleanup. Properly freeze/thaw
	the vectors.
2003-09-03 23:00:47 +00:00
Simon Budig
70088acbcd app/vectors/gimpstroke.c Two small hacks to make the editing behave more
2003-09-03  Simon Budig  <simon@gimp.org>

	* app/vectors/gimpstroke.c
	* app/vectors/gimpbezierstroke.c: Two small hacks to make the
	editing behave more symmetric (no more a user visible difference
	between extending to the start or to the end of a stroke).

	* app/tools/gimpvectortool.c: Use dashed lines for the connection
	between the anchor and the handles. Looks great IMHO.
2003-09-03 21:35:24 +00:00
Simon Budig
2dec640c62 properly keep track of the active anchor and retrieve that information
2003-09-03  Simon Budig  <simon@gimp.org>

	* app/tools/gimpvectortool.[ch]: properly keep track of the
	active anchor and retrieve that information after a _thaw () so
	that proper editing is possible after an undo. Now the
	vector_tool->cur_* variables are constantly updated in
	_oper_update () so that we don't need to determine them in
	_button_press () again.

	On request by Jimmac and Joao connecting two stroke-ends now
	works by activating one endpoint and clicking on the other
	endpoint in Insert/Delete Mode.
2003-09-03 19:52:46 +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
157dc58571 Ctrl only sets the clone source when Shift isn't pressed at the same time
2003-09-03  Sven Neumann  <sven@gimp.org>

	* app/tools/gimpclonetool.c: Ctrl only sets the clone source when
	Shift isn't pressed at the same time (fixes bug #121324).
2003-09-03 16:41:30 +00:00
Michael Natterer
e837849934 removed the _value() and _is_empty() wrappers.
2003-09-03  Michael Natterer  <mitch@gimp.org>

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

	* app/display/gimpdisplayshell.[ch]: removed
	gimp_display_shell_mask_value() since it is not used.

	* app/core/gimpdrawable-blend.c
	* app/core/gimpdrawable-transform.c
	* app/core/gimpedit.c
	* app/core/gimpimage.c
	* app/core/gimplayer.c
	* app/gui/image-menu.c
	* app/gui/vectors-menu.c
	* app/tools/gimpclonetool.c
	* app/tools/gimpfliptool.c
	* app/tools/gimpinktool.c
	* app/tools/gimpmovetool.c
	* app/tools/gimpselectiontool.c
	* app/tools/gimptransformtool.c
	* tools/pdbgen/pdb/misc_tools.pdb: changed accordingly.

	* app/pdb/misc_tools_cmds.c: regenerated.
2003-09-03 15:13:19 +00:00
Michael Natterer
1c04c3f601 removed the _clear() wrapper.
2003-09-03  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-mask-select.[ch]: removed the _clear() wrapper.

	* app/core/gimpimage-mask.[ch]: changed accordingly. Added
	"const gchar *undo desc" parameter to
	gimp_image_mask_select_vectors().

	* app/core/gimpimage-qmask.c
	* app/gui/vectors-commands.c
	* app/text/gimptext-compat.c
	* app/tools/gimpbucketfilltool.c
	* app/tools/gimpfreeselecttool.c
	* app/tools/gimpfuzzyselecttool.c
	* app/tools/gimprectselecttool.c
	* app/widgets/gimpvectorstreeview.c
	* tools/pdbgen/pdb/paths.pdb
	* tools/pdbgen/pdb/selection.pdb: changed accordingly. Also
	replaced some wrappers which still exist.

	* tools/pdbgen/pdb/paths.pdb: stroke using gimp_item_stroke().

	* app/pdb/paths_cmds.c
	* app/pdb/selection_cmds.c: regenerated.
2003-09-03 14:22:38 +00:00
Michael Natterer
f47b758f32 removed the _translate() and _stroke() wrappers.
2003-09-03  Michael Natterer  <mitch@gimp.org>

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

	* app/gui/edit-commands.c
	* app/tools/gimpeditselectiontool.c
	* app/widgets/gimpselectioneditor.c
	* tools/pdbgen/pdb/edit.pdb
	* tools/pdbgen/pdb/selection.pdb: changed accordingly.

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

	* app/core/gimpselection.c: implement GimpItem::scale(), resize(),
	flip() and rotate().

	* 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: no need to call
	gimp_image_mask_invalidate() and/or gimp_image_mask_changed()
	manually after scale, resize, flip and rotate, since GimpSelection
	updates itself correctly.
2003-09-03 10:19:47 +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
Sven Neumann
138bab295b added new function gimp_draw_tool_draw_dashed_line().
2003-09-02  Sven Neumann  <sven@gimp.org>

	* app/tools/gimpdrawtool.[ch]: added new function
	gimp_draw_tool_draw_dashed_line().
2003-09-02 16:13:48 +00:00