2008-04-21 Michael Natterer <mitch@gimp.org>
Move the shadow tiles from the image to the drawable.
Fixes bug #100469.
* app/core/Makefile.am
* app/core/gimpdrawable-shadow.[ch]: new files implementing
the shadow tiles.
* app/core/gimpimage.[ch]: remove the shadow tile manager from the
GimpImage struct. Remove gimp_image_get_shadow_tiles() and
_free_shadow_tiles().
* app/core/gimpdrawable.[ch]: add the shadow tile manager
here. Remove get_shadow_tiles() and merge_shadow(). Free the
shadow tiles in finalize and when the drawable gets removed from
the image.
* app/core/gimpdrawable-brightness-contrast.c
* app/core/gimpdrawable-color-balance.c
* app/core/gimpdrawable-colorize.c
* app/core/gimpdrawable-curves.c
* app/core/gimpdrawable-desaturate.c
* app/core/gimpdrawable-equalize.c
* app/core/gimpdrawable-hue-saturation.c
* app/core/gimpdrawable-invert.c
* app/core/gimpdrawable-levels.c
* app/core/gimpdrawable-operation.c
* app/core/gimpdrawable-posterize.c
* app/core/gimpdrawable-threshold.c
* app/core/gimpimagemap.c: changed accordingly. Free the shadow tiles
after using them.
* app/plug-in/gimpplugin-cleanup.[ch]: add
gimp_plug_in_cleanup_add_shadow() and _remove_shadow() which keep
track of whether shadow tiles were created on behalf of a plug-in
procedure.
(gimp_plug_in_cleanup): free shadow tiles which were created but
not destroyed by a plug-in procedure.
* app/plug-in/gimpplugin-message.c (plug_in_handle_tile_request):
call gimp_plug_in_cleanup_add_shadow() whenever a plug-in requests
shadow tiles.
* tools/pdbgen/pdb/drawable.pdb: use the new drawable shadow
API. Add new procedure gimp-drawable-free-shadow. Call
gimp_plug_in_cleaup_remove_shadow() when it gets called.
* tools/pdbgen/pdb/image.pdb: deprecate gimp-image-free-shadow.
Calling it has no effect any longer.
* app/pdb/drawable-cmds.c
* app/pdb/image-cmds.c
* app/pdb/internal-procs.c
* libgimp/gimpimage_pdb.[ch]
* libgimp/gimpdrawable_pdb.[ch]: regenerated.
svn path=/trunk/; revision=25510
2008-01-24 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.c
* app/core/gimpimage-undo.c: fixed handling of the image undo
counter for the case where the user has undone the image to a
state before the last save and then pushes a new undo. Fixes
bug #509822.
svn path=/trunk/; revision=24699
2007-11-08 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c (gimp_image_clean_all): pass GIMP_DIRTY_ALL
to the "clean" signal instead of uninitialized memory.
svn path=/trunk/; revision=24087
2007-09-20 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.[ch]: added a load_proc member to GimpImage
and getters and setters for it.
* app/file/file-open.c (file_open_image): set the load
procedure,
but only if it hasn't been set already. Use the MIME type from
the
load procedure that is set on the image.
* tools/pdbgen/pdb/fileops.pdb (file_load_invoker): set the load
procedure. This causes it to be set when the URI plug-in calls
gimp-file-load to load the image.
* app/pdb/fileops_cmds.c: regenerated.
* app/widgets/gimpimagepropview.c
(gimp_image_prop_view_label_set_filetype): use the MIME type
from
the load procedure, in case that no save procedure is set.
svn path=/trunk/; revision=23597
2007-09-11 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.c (gimp_image_add_layers): make the first of
the added layers the active layer. Fixes bug #469752.
svn path=/trunk/; revision=23501
2007-08-07 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.c (gimp_image_get_icc_profile): return NULL
if the parasite exists but it is empty.
svn path=/trunk/; revision=23132
2007-06-26 Michael Natterer <mitch@gimp.org>
Invalidate the image preview after the projection is
completely constructed. Fixes bug #449141.
* app/core/gimpmarshal.list: add VOID:BOOLEAN
* app/core/gimpimage.[ch]: add boolean parameter
invalidate_preview to the "flush" signal.
* app/core/gimpprojection.[ch]: add boolean member
invalidate_preview to the GimpProjection struct. Set it to TRUE if
it was TRUE in the image's "flush" signal. When the projection is
completely constructed after a flush, invalidate the image's
preview.
* app/display/gimpdisplay-handlers.c
* app/widgets/gimpitemtreeview.c
* app/widgets/gimpimagedock.c
* app/widgets/gimpimageeditor.c: changed callback signatures
accordingly.
svn path=/trunk/; revision=22840
2007-06-21 Michael Natterer <mitch@gimp.org>
Make sure the image preview is only invalidated for visible
image changes (as it was before the change below).
* app/core/gimpimage.h (struct GimpImageFlushAccumulator): added
member "gboolean preview_invalidated".
* app/core/gimpimage.c (gimp_image_update): set it to TRUE here.
(gimp_image_real_flush): inavlidate the preview only if
flush_accum.preview_invalidated is TRUE.
svn path=/trunk/; revision=22817
2007-06-21 Michael Natterer <mitch@gimp.org>
Part one of fix for bug #449141 (fixes the projection but still
leaves some image previews unupdated).
* app/core/gimpimage.c (lots of functions)
* app/paint/gimppaintcore.c (gimp_paint_core_finish)
* app/file/file-open.c (file_open_sanitize_image): removed calls
to gimp_viewable_invalidate_preview(image).
* app/file/file-open.c (file_open_sanitize_image): update and
flush the entire image instead. Load plug-ins are not required to
call gimp_drawable_update() or anything else to make sure the
projection is up-to-date.
* app/core/gimpimage.c (gimp_image_real_flush): inavlidate the
image preview here because we now create it from the projection.
(this is still not the entirely correct place though).
svn path=/trunk/; revision=22815
2007-06-07 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.[ch]: removed the boolean from the GimpImage
struct that used to track whether the preview was valid.
(gimp_image_invalidate_preview): just set the preview to NULL.
* app/core/gimpimage-preview.c (gimp_image_get_new_preview):
construct the preview from the projection instead of compositing
the drawable previews.
svn path=/trunk/; revision=22737
2007-01-19 Sven Neumann <sven@gimp.org>
* app/file/file-utils.[ch]: let the filename -> uri functions take
a Gimp parameter instead of the list of load procedures.
* app/core/gimpimage.c
* app/app_procs.c
* app/dialogs/file-open-location-dialog.c
* tools/pdbgen/pdb/fileops.pdb: changed accordingly.
* app/pdb/fileops_cmds.c: regenerated.
svn path=/trunk/; revision=21736
2006-12-15 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c (gimp_image_add_layers): fixed order of
layers for the position == -1 (add above avtive layer) case.
Fixes bug #386199.
2006-12-11 Sven Neumann <sven@gimp.org>
* app/actions/file-commands.c: don't message "Image saved" from
here.
* app/core/gimpimage.[ch]: introduced new signal "saved".
* app/file/file-save.c (file_save): call gimp_image_saved() from
here.
* app/display/gimpdisplay-handlers.c: connect to
GimpImage::saved
and show the "Image saved" message. Makes it show up on all
displays
and regardless of how the file was saved.
* app/display/gimpdisplay.c: fixed typo in comment.
2006-11-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch]: added gimp_image_add_layers() which
takes a list of layers and vierport coordinates to center the
layers in.
* app/dialogs/file-open-dialog.c
* app/display/gimpdisplayshell-dnd.c
* app/widgets/gimplayertreeview.c: use it instead of having the
same code three times.
2006-10-25 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.[ch]: added signals "parasite-attached" and
"parasite-detached".
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpimageprofileview.[ch]: draft of a new widget
that
displays color profile information.
* app/widgets/gimpimagepropview.c: minor cleanup and bug fix.
* app/dialogs/image-properties-dialog.c: added Color Profile
information.
* plug-ins/common/lcms.c: bug fixes.
2006-10-16 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.[ch]: removed the "floating" flag and the
floating/sink API.
(gimp_item_init): call g_object_force_floating() instead.
* app/core/gimpimage.c
* app/core/gimplayer.c
* app/xcf/xcf-load.c
* tools/pdbgen/pdb/drawable.pdb
* tools/pdbgen/pdb/image.pdb: use combinations of
g_object_ref_sink() and g_object_unref() instead of
gimp_item_sink(). Use g_object_is_floating() instead of
gimp_item_is_floating().
* app/pdb/drawable_cmds.c
* app/pdb/image_cmds.c: regenerated.
2006-08-04 Michael Natterer <mitch@gimp.org>
* app/actions/image-actions.c: cosmetics.
* app/core/gimpimage.c: factor common code out to new utility
function gimp_image_get_item_by_tattoo(), minor cleanups.
2006-06-07 Sven Neumann <sven@gimp.org>
* app/core/gimpguide.[ch]: derive from GObject, we don't need any
GimpObject functionality here. Declare "orientation" and "id"
properties CONSTRUCT_ONLY, added a gimp_guide_new() function and
emit notify on position changes.
* app/core/gimpimage-guides.c: use gimp_guide_new() to instantiate
guides.
* app/core/gimpimage.c (gimp_image_get_memsize): formatting.
* 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-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch]: renamed
gimp_image_coords_in_active_drawable() to
gimp_image_coords_in_active_pickable() and added boolean
"sample_merged" and "selected_only" parameters. Use floor()
instead of ROUND(), we want to round to the actual pixel, not to
the nearest pixel boundary.
* app/tools/gimpbucketfilltool.c
* app/tools/gimpclonetool.c
* app/tools/gimpcolortool.c
* app/tools/gimpfliptool.c
* app/tools/gimptransformtool.c: changed accordingly. Removed
quite some duplicated code which checked sample_merged and the
mask value at the cursor location.
* app/tools/gimpbycolorselecttool.c: use the hand tool cursor,
there's also a hand in the toolbox icon. Fixed cursor_update()
function to set the bad modifier when there is no pickable pixel
at the cursor loction.
* app/tools/gimpfuzzyselecttool.c: added cursor_update()
implementation which does the same as by_color_select's one.
* app/tools/gimpselectiontool.c
(gimp_selection_tool_cursor_update): don't override the bad
modifier which was set by a subclass' cursor_update().
2006-05-30 Michael Natterer <mitch@gimp.org>
Honor active components when pasting. Fixes bug #150845:
* app/core/gimplayer-floating-sel.c (floating_sel_composite):
don't temporarily set all image components to active while
compositing.
* app/core/gimpimage.c (gimp_image_set_component_active):
relax()/rigor() the floating selection around setting the "active"
flag. Also make sure the projection is updated correctly.
2006-05-09 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c (gimp_image_new)
* app/core/gimpitem.c (gimp_item_configure)
* app/display/gimpdisplay.c (gimp_display_new): make sure IDs wrap
correctly at G_MAXINT and skip IDs which are currently in use.
It makes no sense to treat gimp->image_table and gimp->images
differently, since they keep the same set of images. And it makes
no sense to treat gimp->displays and gimp->images differently.
Moved all container adding into the objects' constructors:
* app/core/gimp.c (gimp_create_image): don't add the new image
to gimp->images here...
* app/core/gimpimage.c (gimp_image_constructor): ...but here.
* app/core/gimp-gui.c (gimp_create_display): don't add the new
display to gimp->displays here...
* app/display/gimpdisplay.c (gimp_display_new): ...but here.
2006-04-05 Michael Natterer <mitch@gimp.org>
* app/plug-in/plug-in-types.h
* app/plug-in/plug-in-proc-def.[ch]: renamed to GimpPlugInProcedure
and made a GObject derived from GimpProcedure (instead of having
a pointer to a GimpProcedure). Added image_types and file_magic
utility functions taken from plug-ins.[ch]. Still lives in the
same crappy files because I am undecided where to put it...
* app/pdb/gimpprocedure.c (gimp_procedure_real_execute): removed
switch() statement and always call the internal marshaller because
GimpProcedure::execute() is properly overridden by
GimpPlugInProcedure now.
* app/plug-in/plug-ins.[ch]: removed the mime_type and file_magic
utilities added to GimpPlugInProcedure.
* app/actions/file-commands.c
* app/actions/plug-in-actions.[ch]
* app/actions/plug-in-commands.[ch]
* app/core/gimp-gui.[ch]
* app/core/gimp.[ch]
* app/core/gimpimage.[ch]
* app/dialogs/file-open-dialog.c
* app/dialogs/file-save-dialog.c
* app/dialogs/print-size-dialog.c
* app/file/file-open.[ch]
* app/file/file-save.[ch]
* app/file/file-utils.[ch]
* app/gui/gui-vtable.c
* app/menus/plug-in-menus.[ch]
* app/plug-in/plug-in-def.[ch]
* app/plug-in/plug-in-message.c
* app/plug-in/plug-in-rc.c
* app/plug-in/plug-in-run.c
* app/plug-in/plug-in.c
* app/plug-in/plug-ins-query.c
* app/widgets/gimpactiongroup.[ch]
* app/widgets/gimpdnd-xds.c
* app/widgets/gimpfiledialog.[ch]
* app/widgets/gimpfileprocview.[ch]
* app/widgets/gimppluginaction.[ch]
* app/xcf/xcf.c
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/plug_in.pdb: changed addordingly.
* app/pdb/fileops_cmds.c
* app/pdb/plug_in_cmds.c: regenerated.
2006-04-02 Michael Natterer <mitch@gimp.org>
* app/core/gimpparasitelist.[ch] (gimp_parasite_list_add): removed
the return value again.
(gimp_parasite_list_find): return a const parasite.
* app/core/gimp-parasites.[ch]
* app/core/gimpimage.[ch]
* app/core/gimpitem.[ch] (*_parasite_attach): take a const
parasite. Make a local copy of the parasite struct because
gimp_parasite_shift_parent() changes it.
(*_parasite_find): return a const parasite.
* app/core/gimptemplate.c
* app/text/gimptextlayer-xcf.c
* app/xcf/xcf-load.c: changed accordingly.
2006-03-13 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.c (gimp_image_raise_layer_to_top,
gimp_image_lower_layer_to_bottom): silently return TRUE if the
layer is already at the top (or the bottom respectively).
2006-01-18 Michael Natterer <mitch@gimp.org>
* app/config/config-types.c: define GIMP_PARAM_STATIC_STRINGS
which is G_PARAM_STATIC_NAME|NICK|BLURB. Also define
GIMP_PARAM_READABLE, _WRITABLE and _READWRITE which include
GIMP_PARAM_STATIC_STRINGS.
* app/*/*.c: use them for all object properties so their
strings are not copied.
2005-12-10 Michael Natterer <mitch@gimp.org>
* app/config/*.c
* app/core/*.c
* app/display/*.c
* app/text/*.c
* app/vectors/*.c: port to G_DEFINE_TYPE() and friends. Some related
core reordering and cleanup.