Commit Graph

280 Commits

Author SHA1 Message Date
Michael Natterer c35ff719a7 app/libgimp*: remove stuff found by -Wunused-but-set-variable 2011-05-01 23:23:19 +02:00
Michael Natterer cc47b2a600 libgimpwidgets/color: move the cairo color utility functions to libgimpcolor
Add CAIRO_CFLAGS to a lot of Makefiles to make this possible, and
because they pull in cairo via the libgimp headers.
2011-04-28 15:50:39 +02:00
Mikael Magnusson 71541db52d app: Make scale timer output depend on GIMP_UNSTABLE 2011-04-08 14:04:36 +02:00
Michael Natterer 047d31fa68 app: gimp_drawable_transform: place new the tiles at offset_x, offset_y
and not at offset_y, offset_y (typo).
2011-03-26 16:50:38 +01:00
Michael Natterer bc8d5f84d6 app: remove the "offset" API from TileManager
It made the transform code hard to read and never belonged into the
tile manager anyway. It's a simple pixel buffer that should not know
about any position in an image. Instead, pass around the offsets of
tile managers explicitly, so everything is less obscure for the price
of having more parameters. This will also help replacing TileManagers
with GeglBuffers.
2011-03-26 08:30:15 +01:00
Michael Natterer c07811f0a3 app: remove unused variables in gimp_drawable_duplicate() 2011-03-16 02:06:21 +01:00
Michael Natterer 9f30550f9a app: move drawable->type to private 2011-03-16 02:02:47 +01:00
Michael Natterer a62071e9eb app: remove mamber GimpDrawable::bytes
because it's always the same as GIMP_IMAGE_TYPE_BYTES(drawable->type)
2011-03-16 00:16:31 +01:00
Michael Natterer eacd80446d app: finally get rid of gimp_item_configure() and drawable_configure()
and turn them into gimp_item_new() and gimp_drawable_new()
2011-02-01 12:47:24 +01:00
Michael Natterer ccd3beb8ff app: don't use gimp_drawable_configure() in gimp_drawable_duplicate()
Instead, copy over the needed drawable members manually.
2011-02-01 10:46:53 +01:00
Michael Natterer 5c8ec234cc app: add "image" as construct property to GimpItem
- The image *must* now be passed to g_object_new() when creating items
- Remove the "image" parameter from all item configure() functions
- Set the item's ID in gimp_item_set_image() if it has none yet
2011-02-01 10:28:10 +01:00
Michael Natterer e82e40033a app: some cosmetic cleanup in the item's node handling code 2010-12-19 20:39:18 +01:00
Michael Natterer 095ae5cc9b app: move mask_bounds() and mask_intersect() from GimpDrawable to GimpItem
There is nothing drawable-specific in there, and having them on
GimpItem enables some simplifications, esp. in upcoming PDB
wrappers. None of these refactorings is in this commit though.
2010-09-07 21:30:46 +02:00
Michael Natterer df1575234c app: make the code in gimp_drawable_mask_intersect() a bit more readable 2010-09-07 17:08:54 +02:00
Barak Itkin 5930b13084 app: add context to all undo descriptions
Description of undo actions should be marked as action descriptions,
and not as commands. This is required for translation for some
language (like Hebrew) that require a different grammatical tense for
describing actions
2010-06-09 18:50:23 +02:00
Michael Natterer 5dd9e4bbc3 app: remove member GimpDrawable::has_alpha
because it is always the same as GIMP_IMAGE_TYPE_HAS_ALPHA(drawable->type),
so simply use that instead.
2010-06-08 10:10:04 +02:00
Michael Natterer 8a27702ac3 app: add simple macros GIMP_TIMER_START() and GIMP_TIMER_END()
which measure the time taken between them and print out a message.
Use it for projection benchmarking and add timing to scaling.
2010-06-06 20:24:27 +02:00
Michael Natterer 17961941fc app: use gegl:scale for scaling if use-gegl is TRUE 2010-06-06 19:54:44 +02:00
Michael Natterer 5c3cf19095 Revert "app: Make drawable updates happen at fixed framerate"
This reverts commit 32aca3c8b6.
Clearly needs more review, thinking and discussion.
2010-04-18 15:03:16 +02:00
Alexia Death 32aca3c8b6 app: Make drawable updates happen at fixed framerate 2010-04-18 15:53:22 +03:00
Michael Natterer 8688037a58 Optionally make a copy of the drawable's tiles in GimpDrawableModUndo
instead of simply reffing drawable->tiles. Add boolean property "copy-tiles"
and a boolean parameter to gimp_image_undo_push_drawable_mod() to control
the new feature. However, pass FALSE in gimp_drawable_real_set_tiles() (which
currently is the undo's only user)
2010-03-18 10:25:18 +01:00
Øyvind Kolås e30cdddeb0 app: include gegl-plugin.h in gimpdrawable.c
GimpDrawable uses gegl_operation_invalidate () which is part of the
plug-in/operation API, not the core GEGL API.
2010-03-17 22:26:40 +00:00
Michael Natterer 12aa801441 app: protect against calling a subclass' GimpItem::get_node() impl directly
gimp_drawable_get_mode_node() was calling gimp_drawable_get_node()
instead of gimp_item_get_node() if the mode_node didn't already exist.
Fortunately that was never the case i nthe current code. Added
warnings in the GimpItem::get_node() impls that would go off in such a
situation.
2010-02-14 20:26:16 +01:00
Michael Natterer 5f46061830 app: add gimp_item_peek_node() and use it
so we can avoid peeking into the GimpItem struct if we want to get to
the item's node without implicitly creating it if it doesn't already
exist.
2010-02-14 13:55:45 +01:00
Martin Nordholts b5defd4e4a app: Add GIMP_LOG_FLOATING_SELECTION domain
Add GIMP_LOG_FLOATING_SELECTION domain to get rid of the somewhat
annoying debug prints. Floating selection is likely to require further
debuggin later on, so instead of just removing the output, use
GIMP_LOG for it.
2010-01-02 23:41:52 +01:00
Michael Natterer 2c05af036c Use gegl:over instead of gegl:normal 2009-11-27 21:11:26 +01:00
Michael Natterer 717b4e6a07 Fix undoing a group layer type conversion
* app/core/gimpdrawable.[ch]: add "gboolean push_undo" to
  GimpDrawable::convert_type().

* app/core/gimpdrawable-convert.[ch]: same here for the gray and rgb
  conversion functions.

* app/core/gimpchannel.c
* app/core/gimplayer.c: pass FALSE when called from GimpItem::convert()
  because it can be called on unattached items only.

* app/core/gimpimage-convert.c: pass TRUE.

* app/core/core-enums.[ch]
* app/core/gimpgrouplayerundo.[ch]
* app/core/gimpimage-undo-push.[ch]: add GIMP_UNDO_GROUP_LAYER_CONVERT
  which simply calls gimp_drawable_convert_type() with the old type
  when undone/redone.

* app/core/gimpgrouplayer.c: push a group layer convert undo so this
  can be properly undone/redone.
2009-09-13 19:24:19 +02:00
Michael Natterer 86a264e9f2 Add new virtual function GimpDrawable::convert_type()
This may look like duplication of GimpItem::convert() but in fact will
fix the longstanding uglyness that GimpItem::convert() both transfers
an item to another image *and* converts the image type of drawables.
When this refactoring is done, GimpItem::convert() will only move an
item to another image, and its implementation in GimpDrawable classes
will call GimpDrawable::convert_type() to convert the pixels to
whatever format.

Takes a "dest_image" parameter anyway because for converting to
indexed we need the destination colormap. The default impl in
GimpDrawable can only convert to gray and rgb however.
2009-09-11 22:03:54 +02:00
Michael Natterer 4347c67964 Use gimp_drawable_get_tiles() in a few places instead of direct access 2009-09-03 08:16:26 +02:00
Michael Natterer b2fa005445 Chain up unconditionally in GimpViewable::invalidate_preview() 2009-09-01 23:36:46 +02:00
Michael Natterer bbc83d33b5 gimp_drawable_fs_update() takes a GimpLayer, not a GimpDrawable 2009-08-31 20:55:03 +02:00
Michael Natterer d50d5b5878 Let the drawable connect to its floating selection's "update" signal
When attaching/detaching a floating selection to/from its drawable,
connect/disconnect the floating selection's "update" signal and update
the drawable in the callback, because changes to the floating
selection affect the drawable and not the projection directly. Fixes
floating selection compositing in layer trees and is the right thing
to do anyway.
2009-08-31 17:37:22 +02:00
Martin Nordholts 957cf2cfa9 app: Always use gimp_object_get_name()
Begin to consider GimpObject::name as private and always use
gimp_object_get_name(). Change gimp_object_get_name() to take an
untyped pointer so we don't have to do so awfully many casts. There is
a runtime check for the type inside the function anyway.
2009-08-29 12:41:29 +02:00
Michael Natterer 2a8f29f00a Minor whitespace cleanup 2009-08-27 11:01:51 +02:00
Michael Natterer 98123f3475 Add freeze_notify/thaw_notify around GimpDrawable::set_tiles() 2009-08-26 13:20:18 +02:00
Michael Natterer ea33581451 Use gimp_image_set_size() instead of setting width and height manually
This also (really this time) fixes nested group layers. There were
cases when the outer group layer didn't properly resize itself because
gimp_drawable_set_tiles() on the inner group layer failed to emit
notify::width and notify::height.
2009-08-26 13:03:40 +02:00
Martin Nordholts b2b2b41e62 Get rid of artificial compiler warnings
Get rid of artificial compiler warnings generated with the #warning
directive. They pollute the build output and don't work as incentives
for fixing stuff.
2009-07-20 12:47:59 +02:00
Michael Natterer 13cb156a80 Get rid of more x1,y1,x2,y2 uglyness
(gimp_drawable_push_undo): change x1,y1,x2,y2 parameters to
x,y,witdh,height and update all callers accordingly.
2009-06-16 22:59:07 +02:00
Martin Nordholts 18640f90e5 Remove gimp_drawable_update_tile_source_node()
Remove gimp_drawable_update_tile_source_node(), it was not useful.

svn path=/trunk/; revision=28034
2009-02-14 18:53:50 +00:00
Michael Natterer 4897f4841c need to rip the floating selection's source node out of its layer's graph
2009-02-13  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_sync_source_node): need
	to rip the floating selection's source node out of its layer's
	graph before using it in the floating selection sub-graph, and
	need to plug it back there when it's not a floating selection any
	longer.

	Unrelated:

	Also introduce a "fs_crop_node" that makes sure the floating
	selection stops at the drawable's boundaries.

	(gimp_drawable_visibility_changed): use item->node instead of
	gimp_item_get_node() because the latter creates the node on
	demand.

	* app/core/gimpdrawable-private.h: add fs_crop_node member.


svn path=/trunk/; revision=28022
2009-02-13 15:35:13 +00:00
Michael Natterer cb0f8d8d51 Simplify floating selection handling a bit more:
2009-02-07  Michael Natterer  <mitch@gimp.org>

	Simplify floating selection handling a bit more:

	* app/core/gimpdrawable.c
	(gimp_drawable_attach_floating_sel)
	(gimp_drawable_detach_floating_sel): call
	gimp_image_set_floating_selection() from these functions.

	* app/core/gimpfloatingselundo.c (gimp_floating_sel_undo_pop)
	* app/core/gimpimage.c (gimp_image_add,remove_layer)
	* app/core/gimplayer-floating-sel.c (floating_sel_to_layer): don't
	call it here because we already call above functions.


svn path=/trunk/; revision=28000
2009-02-07 19:23:32 +00:00
Michael Natterer bfb8e1e115 call gimp_drawable_invalidate_boundary(floating_sel). Fixes missing
2009-02-07  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c
	(gimp_drawable_attach_floating_sel)
	(gimp_drawable_detach_floating_sel): call
	gimp_drawable_invalidate_boundary(floating_sel). Fixes missing
	selection update after turning a floating selection into a
	layer. It's called redundantly now when adding or deleting a
	floating selection, but that doesn't hurt much.

	* app/core/gimpfloatingselundo.c (gimp_floating_sel_undo_pop):
	don't call it here because we already call above functions.


svn path=/trunk/; revision=27999
2009-02-07 19:09:55 +00:00
Michael Natterer d2a716d37f app/core/gimpdrawable.h move the preview related members to the private
2009-02-05  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.h
	* app/core/gimpdrawable-preview.c: move the preview related
	members to the private struct.

	* app/core/gimpdrawable.c
	* app/core/gimpdrawable-private.h
	* app/core/gimpselection.c: changed accordingly.


svn path=/trunk/; revision=27986
2009-02-05 20:27:09 +00:00
Michael Natterer a1fd84119c app/core/Makefile.am new file which contains struct GimpDrawablePrivate.
2009-02-04  Michael Natterer  <mitch@gimp.org>

	* app/core/Makefile.am
	* app/core/gimpdrawable-private.h: new file which contains struct
	GimpDrawablePrivate. Move some stuff from GimpDrawable here.

	* app/core/gimpdrawable.[ch]
	* app/core/gimpdrawable-shadow.c: changed accordingly.

	* app/text/gimptextlayer-xcf.c
	* app/xcf/xcf-load.c: include the private struct for these ugly
	corner cases.


svn path=/trunk/; revision=27982
2009-02-03 23:57:11 +00:00
Martin Nordholts 82636d3a30 Allow NULL as "tile-manager" on the tile_manager_source
Allow NULL as "tile-manager" on the tile_manager_source to better
handle ref-counting.

svn path=/trunk/; revision=27977
2009-02-01 19:42:03 +00:00
Martin Nordholts da9ddd3398 Add and use gimp_drawable_update_tile_source_node()
Collect logic to update the tile_source_node in a new helper function
gimp_drawable_update_tile_source_node().

svn path=/trunk/; revision=27976
2009-02-01 18:55:56 +00:00
Michael Natterer 521555c439 add new accessor gimp_layer_get_floating_sel_drawable() which returns the
2009-01-26  Michael Natterer  <mitch@gimp.org>

	* app/core/gimplayer.[ch]: add new accessor
	gimp_layer_get_floating_sel_drawable() which returns the drawable
	the floating layer is attached to.

	* app/core/gimpdrawable.c
	* app/core/gimpfloatingselundo.c
	* app/core/gimpimage-duplicate.c
	* app/core/gimpimage-quick-mask.c
	* app/core/gimpimage.c
	* app/core/gimplayer.c
	* app/core/gimplayer-floating-sel.c
	* app/xcf/xcf-save.c
	* tools/pdbgen/pdb/image.pdb: use it instead of accessing
	layer->fs.drawable directly.

	* app/pdb/image-cmds.c: regenerated.


svn path=/trunk/; revision=27962
2009-01-26 22:47:16 +00:00
Michael Natterer 785eef1af9 The GEGL projection does floating selections now:
2009-01-26  Michael Natterer  <mitch@gimp.org>

	The GEGL projection does floating selections now:

	* app/core/gimpdrawable.[ch] (struct GimpDrawable): add a couple
	of GeglNodes which are used to create a sub-graph for this
	drawable's floating selection.

	(gimp_drawable_detach_floating_sel)
	(gimp_drawable_attach_floating_sel): new functions to call
	whenever a floating selection gets attached or detached.

	Change the role of the drawable's "source_node": it's no longer a
	direct tile source but an arbitrary graph. Add new internal
	function gimp_drawable_sync_source_node() which creates a
	sub-graph for the floating selection within the source node, and
	uses the new "tile_source_node" directly otherwise. Connect to
	"notify" of the floating selection and reconfigure its sub-graph
	when its properties change. This is also one more refactoring in
	the direction of layer trees.

	* app/core/gimpfloatingselundo.c
	* app/core/gimpimage.c
	* app/core/gimplayer-floating-sel.c: call the new attach/detach
	API whenever a floating selection is attached or detached from a
	drawable. This will need more refactoring i guess...


svn path=/trunk/; revision=27961
2009-01-26 22:05:07 +00:00
Michael Natterer abe3230755 don't show the floating selection layer in the image graph, it will be
2009-01-26  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.c (gimp_drawable_visibility_changed):
	don't show the floating selection layer in the image graph, it
	will be shown by the drawable it is attached to. This is a temp
	special case hack, but better fits here than into the newly
	created and clean GimpDrawableStack. The floating selection will
	see the end of its days as layer soon enough anyway.


svn path=/trunk/; revision=27960
2009-01-26 21:20:03 +00:00
Michael Natterer d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00