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)
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.
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.
* 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.
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.
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.
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.
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.
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-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-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 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-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-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-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 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-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
2008-11-15 Michael Natterer <mitch@gimp.org>
Bug 560897 – Floating Selection, objects appearing in background
* app/core/gimpdrawable.c (gimp_drawable_init_src_region): use the
right offsets (not off_y for both x and y) when applying the
floating selection.
svn path=/trunk/; revision=27658
2008-11-09 Michael Natterer <mitch@gimp.org>
Bye bye floating_sel_rigor() and floating_sel_relax():
* app/core/gimpdrawable.[ch] (gimp_drawable_init_src_region):
implement compositing the floating selection on the fly. Add
return parameter "TileManager **temp_tiles" which returns the temp
buffer used for compositing; the caller has to unref the tiles.
* app/core/gimpchannel-project.c
* app/core/gimplayer-project.c: unref the temp_tiles.
* app/core/gimplayer.[ch]: remove members fs.backing_store and
fs.initial.
* app/core/gimplayer-floating-sel.[ch]: remove functions rigor(),
relax(), store() and restore(), they are not needed any longer.
Some minor cleanup, more to come.
* app/core/gimpprojection-construct.c: don't composite the
floating selection before projecting because that happens on the
fly now.
* app/core/core-enums.[ch]
* app/core/gimpfloatingselundo.c
* app/core/gimpimage-undo-push.[ch]: remove the rigor and relax
undos.
* app/core/gimpdrawable.c
* app/core/gimpimage-convert.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage.c
* app/core/gimplayer.c
* app/xcf/xcf-save.c: remove all calls to rigor and relax and all
implementations of virtual functions that were just there to
rigor/releax around chaining up.
* tools/pdbgen/pdb/floating_sel.pdb: remove all code from the
rigor and relax wrappers and deprecate the API.
* app/pdb/floating-sel-cmds.c
* libgimp/gimpfloatingsel_pdb.[ch]: regenerated.
* plug-ins/file-xjt/xjt.c: don't call rigor and relax.
svn path=/trunk/; revision=27579
2008-11-08 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: add optional parameter "PixelRegion
*destPR" to GimpDrawable::apply_region().
* app/core/gimpdrawable-combine.[ch]: if the passed destPR is !=
NULL, write the result of the combination into that region instead
of the drawable's tiles. The region must have the exact size of
the result.
* app/core/gimp-edit.c
* app/core/gimpchannel.c
* app/core/gimpdrawable-blend.c
* app/core/gimpdrawable-bucket-fill.c
* app/core/gimpdrawable-shadow.c
* app/core/gimpdrawable-stroke.c
* app/core/gimpimagemap.c
* app/core/gimplayer-floating-sel.c
* app/paint/gimppaintcore.c: pass NULL as destPR. Code actually
using this feature follows.
svn path=/trunk/; revision=27574
2008-11-08 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: add new function
gimp_drawable_init_src_region() which will initialize a
PixelRegion on this drawable's "projection" (with the floating
selection combined), but for now just uses drawable->tiles.
* app/core/gimpchannel-project.c
* app/core/gimplayer-project.c: use it instead of
pixel_region_init() on the drawable's tiles.
svn path=/trunk/; revision=27573
2008-11-08 Michael Natterer <mitch@gimp.org>
Abstract the legacy projection code away into a virtual function
of GimpDrawable:
* app/core/gimpdrawable.[ch]: add new virtual function
GimpDrawable::project_region() which projects an area of a
drawable onto a passed in PixelRegion.
* app/core/Makefile.am
* app/core/gimpchannel-project.[ch]
* app/core/gimplayer-project.[ch]: new files which implement it.
* app/core/gimpchannel.c
* app/core/gimplayer.c: hook it in.
* app/core/gimpprojection-construct.c: get rid all the projection
code moved to above new files and project all drawables in one
loop.
* app/core/gimpprojectable.[ch]: remove the legacy methods
get_colormap() and get_components(), they are not needed any
longer.
* app/core/gimpimage.c: changed accordingly.
svn path=/trunk/; revision=27571
2008-11-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch] (gimp_drawable_set_tiles): add
"GimpImageType type" parameter because there are only a few calls
to this function which (can easily pass the current type); however
most calls to gimp_drawable_set_tiles_full() were just using the
function because of the type argument and passed in the item's
current offsets (which means peeking into the item struct or using
temp variables).
* app/core/gimpdrawable-offset.c (gimp_drawable_offset)
* app/text/gimptextlayer.c (gimp_text_layer_render)
* app/tools/gimptransformtool.c (gimp_transform_tool_doit): pass
the type to set_tiles().
* app/core/gimpchannel.c (gimp_channel_convert)
* app/core/gimpimage-convert.c (gimp_image_convert)
* app/core/gimplayer.c (gimp_layer_convert,add_alpha,flatten):
change calls to set_tiles_full() into set_tiles() because the
offset doesn't change.
svn path=/trunk/; revision=27535
* app/core/gimpitem.c (gimp_item_set_offsets): New function that
sets the offset of the item and also keeps the offset_node in
sync.
* app/core/gimpdrawable.c (gimp_drawable_real_set_tiles): Use the
function instead of setting the offsets directly. Fixes corrupted
display when cropping images with GEGL enabled for the projection.
svn path=/trunk/; revision=27528
* app/core/gimpitem.[ch]: Move the base GeglNode here in
preparation for moving the GimpLayer gegl:shift op to here as
well. After all, the offsets are properties of GimpItem and not
GimpLayer.
* app/core/gimpdrawable.[ch]: Delegate appropriate stuff to the
GimpItem base class, like part of the visibility toggling and the
creation and destruction of the GimpItem node.
* app/core/gimplayer.c
* app/core/gimpchannel.c
* app/core/gimpdrawablestack.c: Changed accordingly, use the new
function names.
* app/core/gimpitempropundo.c
* app/vectors/gimpvectors-warp.c
* app/vectors/gimpvectorsmodundo.c: Include gegl.h instead of
glib-object.h
svn path=/trunk/; revision=27521
* app/gegl/gimpoperation*.c: Prefix the GIMP GEGL operations with
"gimp:" instead of "gimp-" so we follow the GEGL prefix style and
better serialize to XML.
* app/tools/gimp*tool.c
* app/core/gimpdrawable-*.c
* app/core/gimpdrawable.c
* app/core/gimpimagemap.c
* app/core/gimpprojection.c: Changed accordingly.
svn path=/trunk/; revision=27512
2008-10-14 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: add a default implementation of
GimpDrawable::get_node() which contains a layer mode node.
Implement GimpItem::visibility_changed() and turn the node into a
nop when the drawable is invisible. Added public function
gimp_drawable_get_mode_node() so subclasses can plug stuff
into its "aux" pad.
* app/core/gimplayer.[ch]
* app/core/gimpchannel.[ch]: changed accordingly (remove
duplicated member and code that is now in GimpDrawable).
svn path=/trunk/; revision=27277
2008-10-10 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: add virtual function
GimpDrawable::get_node() which returns a node to be plugged into
the projection.
* app/core/gimplayer.[ch]: remove public get_node() api and
implement the virtual function instead.
* app/core/gimpimage.c: changed accordingly.
svn path=/trunk/; revision=27211
2008-10-10 Michael Natterer <mitch@gimp.org>
Bug 554983 – Layers Projection using GEGL
First projection using GEGL, wheeeee. Disabled by default because
it doesn't work with floating selection (and will not, FS
refactoring is in the queue).
* app/core/gimpimage.[ch]: add gimp_image_get_graph() which
returns a GeglNode representing the image's projection.
(gimp_image_add_layer_node)
(gimp_image_remove_layer_node): new utility functions to add and
remove layer nodes to/from the graph.
(gimp_image_add_layer)
(gimp_image_remove_layer)
(gimp_image_position_layer): call them to keep the graph up to date.
* app/core/gimpdrawable.c (gimp_drawable_real_update): invalidate
the source node.
* app/core/gimpprojection.[ch]: keep a projection graph around and
add gimp_projection_get_sink_node() which returns the node that
writes to the projection tiles.
* app/core/gimpprojection-construct.c: add
gimp_projection_construct_gegl() which is a few-liner that uses a
GeglProcessor to run the projection graph.
(gimp_projection_construct): call the new function (disabled by
default).
svn path=/trunk/; revision=27207
2008-10-09 Michael Natterer <mitch@gimp.org>
Address Bug 554983 – Layers Projection using GEGL
* app/gegl/gimp-gegl-utils.[ch]: add (imcomplete) function
gimp_layer_mode_to_gegl_operation() from bug #554983.
* app/core/gimpdrawable.[ch]: add gimp_drawable_get_source_node()
which returns a GimpOperationTileSource for the drawable's
tiles.
(gimp_drawable_real_set_tiles)
(gimp_drawable_configure): set the node's "tiles" property.
* app/core/gimplayer.[ch]: add gimp_layer_get_node() which returns
a GeglNode with proxy "input" and "output" pads to be plugged
into the projection graph. The node has children for opacity,
mask, layer mode and layer offset.
(gimp_layer_translate)
(gimp_layer_add_mask)
(gimp_layer_apply_mask)
(gimp_layer_set_opacity)
(gimp_layer_set_mode): reconfigure the respective nodes.
* app/core/gimpimage.[ch]: keep a "graph" node around and destroy
it in finalize(). Not even a stub, just a silly GEGL dependency.
svn path=/trunk/; revision=27204
2008-10-09 Michael Natterer <mitch@gimp.org>
Add GEGL_CFLAGS and #includes as if gimpdrawable.h and gimpimage.h
had a GEGL dependency (they will have in the next commit, but I
wanted to keep the commit separate).
* app/dialogs/Makefile.am
* app/file/Makefile.am
* app/gui/Makefile.am
* app/menus/Makefile.am
* app/paint/Makefile.am
* app/plug-in/Makefile.am
* app/text/Makefile.am
* app/vectors/Makefile.am
* app/widgets/Makefile.am
* app/xcf/Makefile.am: add GEGL_CFLAGS.
* app/actions/*.c
* app/core/*.c
* app/dialogs/*.c
* app/display/*.c
* app/file/*.c
* app/gui/*.c
* app/menus/*.c
* app/paint/*.c
* app/pdb/gimppdb-utils.c
* app/pdb/gimpprocedure.c
* app/plug-in/*.c
* app/text/*.c
* app/tools/*.c
* app/vectors/*.c
* app/widgets/*.c
* app/xcf/*.c: add <gegl.h> or replace <glib-object.h> by <gegl.h>
to all files which include a drawable subclass or gimpimage.h
* tools/pdbgen/app.pl: include <gegl.h> instead of <glib-object.h>
in all generated files.
* app/pdb/*-cmds.c: regenerated.
* data/images/gimp-splash.png: the goat is still sleeping.
By Aurore Derriennic.
svn path=/trunk/; revision=27202
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
2007-12-04 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: added new API
gimp_drawable_estimate_memsize() and virtual function
GimpDrawable::estimate_memsize() which estimate the memsize of a
drawable after scaling/resizing.
* app/core/gimplayer.c: implement the virtual function and take
the layer mask into account.
* app/core/gimpimage-item-list.[ch] (gimp_image_item_list_get_list):
added const qualifiers.
* app/core/gimpimage-scale.c (gimp_image_scale_check): use the new
function to correctly estimate the new size instead of scaling the
drawables' memsizes including all constant parts. Fixes bug #329468.
* app/gimp-log.[ch]: added IMAGE_SCALE log domain.
* app/core/gimpimage-scale.c: use it here for debugging output.
svn path=/trunk/; revision=24260
2007-05-02 Sven Neumann <sven@gimp.org>
* app/core/gimppickable.[ch]: removed get_color_at() from the
GimpPickable interface. Implement the same functionality using
get_pixel_at() but with a saner API.
* app/core/gimpdrawable.c
* app/core/gimpprojection.c
* app/core/gimpimagemap.c: removed get_color_at() implementations.
* app/tools/gimpbycolorselecttool.c: adapt to API change of
gimp_pickable_get_color_at().
* app/tools/gimprectangleselecttool.c: added missing include.
svn path=/trunk/; revision=22383
2007-04-27 Sven Neumann <sven@gimp.org>
* app/core/gimppickable.[ch]: added get_pixel_at() method to the
GimpPickable interface. This gives direct access to the pixel
without converting it to an RGB color.
* app/core/gimpdrawable.c
* app/core/gimpimagemap.c
* app/core/gimpprojection.c: implement the new method and also use
it to reimplement get_color_at().
* app/core/gimpimage-crop.c (gimp_image_crop_guess_bgcolor): use
gimp_pickable_get_pixel_at(). Fixes auto-shrink on indexed and
grayscale images.
svn path=/trunk/; revision=22359
2006-08-29 Sven Neumann <sven@gimp.org>
* libgimpbase/Makefile.am
* libgimpbase/gimpbase.h
* libgimpbase/gimprectangle.[ch]: added new files that hold
gimp_rectangle_intersect(), factored out of the core.
* libgimpbase/gimpbase.def: updated.
* app/core/gimp-edit.c
* app/core/gimp-utils.c
* app/core/gimp-utils.h
* app/core/gimpchannel-combine.c
* app/core/gimpdrawable-foreground-extract.c
* app/core/gimpdrawable-transform.c
* app/core/gimpdrawable.c
* app/core/gimpimage-preview.c
* app/core/gimplayer.c
* app/core/gimpscanconvert.c
* app/display/gimpdisplayshell-draw.c: changed includes accordingly.
* libgimp/gimpdrawablepreview.c: don't duplicate
gimp_rectangle_intersect() here, use the function in libgimpbase.
* app/base/siox.c: use gimp_rectangle_intersect() to reduce the
working area to the region of interest. Fixes bug #340422.
2006-08-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpchannel.c (gimp_channel_bounds)
* app/core/gimpdrawable.c (gimp_drawable_mask_bounds)
(gimp_drawable_mask_intersect): allow to pass in NULL return
locations for any of the boundary return values.
* app/tools/gimpselectiontool.c (gimp_selection_tool_oper_update):
don't require hovering the selection for moving the selected
pixels, since this can be distinguished by looking at the
modifiers now. Check for the presence of any selected pixels
instead. Fixes bug #349341.
2006-04-07 Sven Neumann <sven@gimp.org>
* app/core/gimpdrawable.[ch]: renamed gimp_drawable_cmap() to
gimp_drawable_get_colormap() and let it return a const array.
* app/core/gimpdrawable-convert.c
* app/core/gimpimage-convert.c
* app/core/gimpselection.c
* app/display/gimpdisplayshell-preview.c: changed accordingly.
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-03-02 Michael Natterer <mitch@gimp.org>
* app/core/gimppickable.[ch]: added new methods ::get_bytes() and
::flush()
* app/core/gimpchannel.c
* app/core/gimpdrawable.c
* app/core/gimpimagemap.c
* app/core/gimpprojection.c: implement ::get_bytes()
* app/core/gimpprojection.c: implement ::flush() (immediately
process both the idle renderer's queue and the unflushed update
areas, to make sure that any reading from the projection will
re-construct it).
* app/core/gimp-edit.c
* app/core/gimpchannel.c
* app/core/gimpimage-contiguous-region.c
* app/core/gimpimage-crop.c
* app/core/gimppalette-import.c
* app/paint/gimpclone.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpiscissorstool.c
* tools/pdbgen/pdb/image.pdb: use the pickable interface more
consistently when reading from any drawable or the projection, and
call gimp_pickable_flush() before doing so. Fixes bug #332933.
* app/core/gimpimage-pick-color.c: added comment why the we don't
call gimp_pickable_flush() here.
* app/pdb/image_cmds.c
* libgimp/gimpimage_pdb.c: regenerated.
2005-12-23 Michael Natterer <mitch@gimp.org>
* app/core/gimpchannel.c
* app/core/gimpdrawable.c
* app/core/gimplayer.c
* app/core/gimplayermask.c
* app/text/gimptextlayer.c
* app/vectors/gimpvectors.c: moved variables to local scopes in
implementations of GimpItem::duplicate()
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.
2005-05-25 Michael Natterer <mitch@gimp.org>
* app/core/gimpviewable.[ch]: added virtual function
GimpViewable::get_size() and public API gimp_viewable_get_size()
which return width and height and a boolean indicating if the
viewable has a size at all.
Added default implementation of GimpViewable::get_popup_size()
using the new get_size() API.
* app/core/gimpbrush.c
* app/core/gimpbuffer.c
* app/core/gimpdrawable.c
* app/core/gimpimage.c
* app/core/gimppattern.c: implement GimpViewable::get_size().
* app/core/gimpbrush.c
* app/core/gimppattern.c: removed GimpViewable::get_popup_size()
implementations, the default one is good enough.
* app/core/gimpbrushpipe.c (gimp_brush_pipe_get_popup_size):
redirect to gimp_viewable_get_size() instead of duplicating its
return values.
* app/widgets/gimpcontainertreeview.c
* app/widgets/gimpview.c: allow pixbuf dragging out of any
viewable that has a size.
* app/widgets/gimpdrawabletreeview.c: removed pixbuf dragging code
here.
* app/widgets/gimpdnd.c: set gimp busy around encoding/decoding
pixbufs into/from GtkSelectionData, because it can be a time
consuming operation.
2005-01-15 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.c
* app/core/gimpdrawable.c
* app/vectors/gimpvectors.c: made GimpItem::scale() and ::resize()
work on unattached items.
* app/widgets/gimplayertreeview.c
(gimp_layer_tree_view_drop_component): fix drop index.
* app/widgets/gimpchanneltreeview.c: implement dropping of
components as new channels. Fixes bug #158483.
2005-01-11 Sven Neumann <neumann@jpk.com>
* app/base/base-enums.[ch]
* app/core/gimpdrawable-transform.c
* app/core/gimpdrawable.c
* app/paint-funcs/Makefile.am
* app/paint-funcs/paint-funcs.[ch]
* app/paint-funcs/scale-funcs.[ch]: applied patch by Geert Jordaens
(after a good deal of reformatting for coding style compliance).
This factors the scale routines into their own file and adds a
sinc-based (Lanczos) interpolation routine (bug #162250).
2004-11-26 Sven Neumann <sven@gimp.org>
* app/core/gimpdocumentlist.c (gimp_document_list_deserialize):
don't add documents w/o a name to the list. Fixes bug #159510.
* app/core/gimpdrawable.c (gimp_drawable_resize): extended the
check to take the offsets into account as well.
2004-11-23 Sven Neumann <sven@gimp.org>
* app/core/gimpdrawable.c (gimp_drawable_resize): do nothing if
the size doesn't change. This keeps text layers from being
modified when an image is cropped and the layer is entirely inside
the cropped area.
* menus/image-menu.xml.in: put the Quit item back for now. We
should think about this again in the next development cycle.
* plug-ins/common/psd.c: Skip resources with unknown signatures
instead of quiting. Fixes bug #142468, and bug #152728
* app/core/gimpdrawable.c: in functions gimp_drawable_mask_bounds,
and gimp_drawable_mask_intersect: reinitialize the return values
after calling gimp_channel_bounds because gimp_channel_bounds
overwrites the values even when it returns false. This fixes the
bug where the gimp crashes when running color tools on layers
smaller than the image, and processes only part of the image when
the layer is larger than the image size.
2004-11-08 Sven Neumann <sven@gimp.org>
* app/core/gimpdrawable.c (gimp_drawable_mask_bounds)
(gimp_drawable_mask_intersect): initialize the return values before
checking if the drawable is attached. Keeps GIMP from going mad if
this assertion is ever triggered.
2004-10-20 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: added gimp_drawable_mask_intersect()
which returns the same bounding box as gimp_drawable_mask_bounds(),
but returns TRUE only if there is a non-empty intersection between
the drawable and the selection, or no selection at all. It also
returns the intersection as x,y,width,height instead of the
eeky x1,y1,x2,y2.
* app/core/gimp-edit.c
* app/core/gimpdrawable-blend.c
* app/core/gimpdrawable-bucket-fill.c
* app/core/gimpdrawable-desaturate.c
* app/core/gimpdrawable-equalize.c
* app/core/gimpdrawable-histogram.c
* app/core/gimpdrawable-invert.c
* app/core/gimpdrawable-stroke.c
* app/core/gimpimagemap.c
* app/core/gimpselection.c
* tools/pdbgen/pdb/color.pdb
* tools/pdbgen/pdb/transform_tools.pdb: either switch from
gimp_drawable_mask_bounds() to _intersect() or check the return
values of _mask_bounds() manually to avoid operations on empty
areas. Return successfully because it's a nop, not a failure.
Fixes bug #155733 for the core.
* app/pdb/color_cmds.c
* app/pdb/transform_tools_cmds.c: regenerated.
2004-09-25 Michael Natterer <mitch@gimp.org>
* app/core/gimppickable.[ch]: added new vitrual function
GimpPickableInterface::get_image()
* app/core/gimpdrawable.c
* app/core/gimpimagemap.c
* app/core/gimpprojection.[ch]: implement it.
2004-08-10 Michael Natterer <mitch@gimp.org>
Redid the whole internal progress stuff: don't pass around
progress_callback and progress_data; instead, provide a
pointer to a GimpProgressInterface which can be implemented
by a variety of backends.
Addresses (but not yet fixes) bugs #6010, #97266 and #135185.
* app/display/Makefile.am
* app/display/gimpprogress.[ch]: removed the old progress hack.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpprogress.[ch]: implement GimpProgressInterface.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpprogressdialog.[ch]: the standalone progress
dialog as widget implementing GimpProgressInterface.
* app/display/gimpdisplay.c
* app/display/gimpstatusbar.[ch]
* app/widgets/gimpfiledialog.[ch]
* app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface
implementation to these classes.
* app/core/gimp-gui.[ch]
* app/gui/gui-vtable.c: replaced the old progress vtable entries
by two new to create and destroy a GimpProgressDialog in case
no other progress is available.
* app/pdb/procedural_db.[ch]
* app/plug-in/plug-in-run.[ch]
* tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and
all plug-ins.
* app/plug-in/plug-in.[ch]
* app/plug-in/plug-ins.c
* app/plug-in/plug-in-message.c
* app/plug-in/plug-in-progress.c: handle the case there the
plug-in was crated with a progress as well as the case where it
wasn't.
* app/app_procs.c
* app/batch.c
* app/xcf/xcf.c
* app/file/file-open.[ch]
* app/file/file-save.[ch]
* app/widgets/gimphelp.c
* app/widgets/gimpbrushselect.c
* app/widgets/gimpfontselect.c
* app/widgets/gimpgradientselect.c
* app/widgets/gimppaletteselect.c
* app/widgets/gimppatternselect.c: changed accordingly.
* app/core/gimpimagefile.[ch]
* app/display/gimpdisplayshell-dnd.c
* app/gui/file-open-dialog.c
* app/gui/file-open-location-dialog.c
* app/gui/file-save-dialog.c
* app/widgets/gimplayertreeview.c
* app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file
related functions. Embed the progress in the file dialog where
possible.
* app/core/gimpdrawable-blend.[ch]
* app/core/gimpdrawable-transform.[ch]
* app/core/gimpimage-convert.[ch]
* app/core/gimpimage-flip.[ch]
* app/core/gimpimage-resize.[ch]
* app/core/gimpimage-rotate.[ch]
* app/core/gimpimage-scale.[ch]
* app/core/gimpitem-linked.[ch]
* app/core/gimpitem.[ch]
* app/core/gimpchannel.c
* app/core/gimpdrawable.c
* app/core/gimplayer.c
* app/core/gimpselection.c
* app/vectors/gimpvectors.c: replaced callback/data by GimpProgress.
* app/tools/gimpblendtool.c
* app/tools/gimptransformtool.c
* app/gui/convert-dialog.c
* app/actions/documents-commands.c
* app/actions/file-commands.c
* app/actions/image-commands.c
* app/actions/layers-commands.c
* app/actions/plug-in-commands.c
* app/actions/vectors-commands.c
* tools/pdbgen/pdb/convert.pdb
* tools/pdbgen/pdb/edit.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/layer.pdb: changed callers accordingly.
* app/pdb/*_cmds.c: regenerated.
2004-07-14 Michael Natterer <mitch@gimp.org>
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimppickable.[ch]: new interface which has
get_image_type(), get_tiles() and get_color_at() methods.
* app/core/gimpdrawable.[ch]
* app/core/gimpimagemap.[ch]
* app/core/gimpprojection.[ch]: implement GimpPickableInterface
and removed public get_colot_at() functions.
* app/core/gimpimage-pick-color.[ch]: removed typedef
GimpImagePickColorFunc and gimp_image_pick_color_by_func(). Use
gimp_pickable_pick_color() instead.
* app/core/gimpimage-contiguous-region.c
* app/core/gimpimage-crop.c
* app/gui/info-window.c
* app/paint/gimpconvolve.c
* app/paint/gimpsmudge.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpimagemaptool.c
* app/widgets/gimpselectioneditor.c: use GimpPickable functions
instead of the various get_color_at() functions. Simplifies code
which has a "sample_merged" boolean. Various cleanups.
2004-04-13 Michael Natterer <mitch@gimp.org>
Moved the calls to floating_sel_relax()/rigor() from various
places to two single spots in the core where they are actually
needed. Fixes bug #138356 (which was caused by the projection
being triggered in the middle of changing the floating selection's
size or the size of the drawable it is attached to). This commit
effectively removes floating selection fiddling from the core's
public API.
* app/core/gimpdrawable.[ch] (gimp_drawable_has_floating_sel): new
function which returns TRUE if there is a floating selection
attached to the drawable.
* app/core/gimpdrawable.c (gimp_drawable_translate)
(gimp_drawable_set_tiles_full): if the drawable *has* a floating
selection, relax/rigor it before/after modifying the drawable.
* app/core/gimplayer.c (gimp_layer_translate)
(gimp_layer_set_tiles): if the layer *is* the floating selection,
relax/rigor it before/after modifying it.
* app/core/gimpdrawable-transform.c
* app/core/gimpimage-convert.c
* app/core/gimpimage-crop.c
* app/core/gimpimage-flip.c
* app/core/gimpimage-resize.c
* app/core/gimpimage-rotate.c
* app/core/gimpimage-scale.c
* app/gui/layers-commands.c
* app/tools/gimpeditselectiontool.c
* tools/pdbgen/pdb/layer.pdb: removed calls to
floating_sel_rigor()/relax() all over the place. Also removed
lots of undo groups which are obsolete now.
* app/pdb/layer_cmds.c: regenerated.
2004-04-13 Michael Natterer <mitch@gimp.org>
GimpItem undo group cleanup in preparation of fixing bug #138356:
* app/core/core-enums.[c]: renamed LAYER_SCALE and LAYER_RESIZE
undo groups to ITEM_SCALE and ITEM_RESIZE.
* app/core/gimpitem.[ch]: always push undo groups around
GimpItem::translate(), scale(), resize(), flip(), rotate() and
transform(). Added the resp. undo_desc strings to GimpItemClass.
* app/core/gimpchannel.[ch]
* app/core/gimpdrawable.[ch]
* app/core/gimplayer.c: removed all undo groups from
implementations of the above methods. Removed the undo_desc
strings which were moved to GimpItemClass.
* app/core/gimpimage-crop.c
* app/core/gimpselection.c
* app/gui/layers-commands.c
* app/vectors/gimpvectors.c
* tools/pdbgen/pdb/layer.pdb: changed accordingly.
* app/pdb/layer_cmds.c: regenerated.
2004-04-03 Sven Neumann <sven@gimp.org>
* app/text/gimptextlayer.c (gimp_text_layer_new): create the
initial text layer with a size of 1 x 1 since tile_manager_new()
does not any longer accept 0 x 0.
* app/core/gimpdrawable.c (gimp_drawable_configure): check that
width and height are > 0.
2004-04-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-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 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 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 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 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 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-14 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable-offset.c (gimp_drawable_offset)
* app/core/gimpdrawable.c (gimp_drawable_scale) (gimp_drawable_resize)
* app/core/gimplayer.c (gimp_layer_convert) (gimp_layer_add_alpha):
use gimp_drawable_set_tiles() instead of fiddling with
drawable->tiles, ->bytes etc. manually.
2004-03-13 Michael Natterer <mitch@gimp.org>
Completed the fix for bug #136702:
* app/core/gimpitem.[ch]: added "gboolean supersample" and
"gint recursion_level" to GimpItem::transform().
* app/core/gimpitem-linked.[ch] (gimp_item_linked_transform): ditto.
* app/core/gimpdrawable-transform.[ch]: added "recursion_level"
parameters and removed the RECURSION_LEVEL #define.
* app/core/gimpchannel.c
* app/core/gimpdrawable.c
* app/core/gimplayer.c
* app/vectors/gimpvectors.c: changed accordingly.
* app/tools/gimptransformoptions.[ch]: added new property
"recursion_level" which is not serializable and has no GUI. Pretty
useless, but it's IMHO better to hardcode the default value here
than in gimpdrawable-transform.c
* app/tools/gimptransformtool.c: changed accordingly.
* tools/pdbgen/pdb/transform_tools.pdb: hardcode "recursion_level"
to 3.
* app/pdb/transform_tools_cmds.c: regenerated.
2004-03-13 Sven Neumann <sven@gimp.org>
* app/core/gimpdrawable.[ch]: added new virtual function
GimpDrawable::set_tiles().
* app/core/gimpchannel.c
* app/core/gimplayer.c: push an undo before chaining up in
set_tiles().
* app/core/gimpdrawable-transform.c
* app/core/gimpimage-convert.c
* app/tools/gimptransformtool.c: use gimp_drawable_set_tiles()
instead of fiddling with the drawable's tile manager directly.
2004-03-13 Raphael Quinet <quinet@gamers.org>
* app/tools/gimptransformoptions.[ch]: added new "supersample"
property to GimpTransformOptions and added corresponding check
button in the option dialog for the transform tools.
* app/core/gimpdrawable-transform.[ch],
* app/core/gimpdrawable.c,
* app/tools/gimptransformtool.c: new "gboolean supersample"
parameter added to gimp_drawable_transform_tiles_affine() and
gimp_drawable_transform_affine().
* tools/pdbgen/pdb/transform_tools.pdb: ditto. For the PDB calls,
the supersample parameter is set to FALSE for "rotate" and "shear"
and set to TRUE for "perspective", "scale" and "transform_2d".
* app/pdb/transform_tools_cmds.c: regenerated.
The new "supersample" option lets the user decide if the
transformations should use supersampling (RECURSION_LEVEL 3) or
not. This fixes both bug #136702 and bug #109817. Hopefully for
good, this time.
2004-01-18 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch] (gimp_image_get_color): also return the
color's alpha byte if it has alpha, not only the converted RGB
values. Return OPAQUE_OPACITY for drawables without alpha.
Fixes bug #131706.
* app/core/gimpdrawable.c (gimp_drawable_get_color_at)
* app/core/gimpimage-contiguous-region.c
(gimp_image_contiguous_region_by_color)
* app/core/gimpimage-projection.c (gimp_image_projection_get_color_at)
* app/core/gimpimagemap.c (gimp_image_map_get_color_at)
* app/paint/gimpclone.c (gimp_clone_line_image): removed separate
handling of the alpha byte from all users of gimp_image_get_color().
2004-01-06 Michael Natterer <mitch@gimp.org>
Enabled skipping enum values for either the PDB or GType
registration (don't always skip both targets):
* tools/gimp-mkenums: skip enum values only if there is a literal
"skip" (don't match "pdb-skip").
* tools/pdbgen/enumgen.pl: skip only "pdb-skip" values, not "skip"
ones.
* app/base/base-enums.h
* app/core/core-enums.h
* app/paint/paint-enums.h
* libgimpbase/gimpbaseenums.h: use the right "pdb-skip"/"skip"
combination to skip enum values. Changed comments accordingly.
Cleaned up the fill functions:
* app/core/core-enums.[ch]: added GIMP_PATTERN_FILL enum value to
the GimpFillType enum. Don't export GIMP_NO_FILL to the PDB
because it's completely useless to export a NOP.
* app/core/gimp-edit.c (gimp_edit_fill, gimp_edit_fill_internal):
handle pattern fill requests.
* app/core/gimpdrawable.[ch] (gimp_drawable_fill): added GimpPattern
parameter and fill with it if it's non-NULL.
(gimp_drawable_fill_by_type): handle pattern fill and pass the
current pattern to gimp_drawable_fill().
* app/text/gimptextlayer.c: changed accordingly.
* app/gui/edit-commands.c
* app/gui/image-menu.c: use gimp_edit_fill() instead of
gimp_drawable_bucket_fill() for FG, BG and pattern filling.
* libgimp/gimpcompat.h
* plug-ins/script-fu/siod-wrapper.c: removed NO_IMAGE_FILL compat
enum value. It should have never been exported to the PDB.
* app/pdb/drawable_cmds.c
* app/pdb/edit_cmds.c
* libgimp/gimpenums.h
* plug-ins/pygimp/gimpenums.py
* plug-ins/script-fu/script-fu-constants.c
* tools/pdbgen/enums.pl: regenerated.
2003-11-17 Sven Neumann <sven@gimp.org>
* libgimpcolor/gimprgb.h (GIMP_RGB_INTENSITY): removed the
addition of 0.001 that isn't correct for use with integers (should
be 0.5 then) and just plain wrong for use with floats/doubles.
* app/base/temp-buf.c
* app/core/gimpdrawable.c
* app/core/gimpimage-convert.c
* app/core/gimpimage.c
* plug-ins/common/aa.c
* plug-ins/common/engrave.c
* plug-ins/common/gradmap.c
* plug-ins/common/newsprint.c
* plug-ins/gflare/gflare.c
* plug-ins/gfli/gfli.c
* plug-ins/pagecurl/pagecurl.c: add 0.5 to the result of
GIMP_RGB_INTENSITY() in all places that use it with integers.
2003-10-08 Michael Natterer <mitch@gimp.org>
* app/core/gimp-edit.c (gimp_edit_fill_internal): new utility
function which does everything gimp_edit_clear() and
gimp_edit_fill() do but doesn't fail to:
- fill an indexed drawable with white.
- fill a drawable with alpha with transparency.
(gimp_edit_clear)
(gimp_edit_fill): use gimp_edit_fill_internal().
* app/core/gimpdrawable.c (gimp_drawable_[apply,replace]_region):
added more g_return_if_fail(required_parameter != NULL).
2003-10-06 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.c (gimp_drawable_mask_bounds): one
more fix for bug #107949: don't take the selection into
account if we are operating on the selection itself.
Ordered shadow tiles functions together, cleanup.
2003-10-06 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: added new virtual functions
GimpDrawable::get_active_components(), apply_region() and
replace_region().
* app/core/Makefile.am
* app/core/gimpdrawable-combine.[ch]: new files containing
apply_region()'s and replace_region()'s default implementation.
They are identical to the ones removed from GimpImage except that
they don't mask the selection with itself (bug #107949).
* app/core/gimpchannel.c
* app/core/gimplayer.c: implement get_active_components().
* app/core/gimpchannel.c: implement apply_region() and
replace_region() and invalidate the channel's boundary
before upchaining (bug #107949).
* app/core/gimpimage.[ch]: removed gimp_image_apply_image(),
gimp_image_replace_image() and gimp_image_get_active_components().
* app/core/gimpimage-undo-push.c (undo_pop_image): invalidate
boundary and bounds if the drawable is a channel (bug #107949).
(undo_pop_mask)
(undo_pop_channel_mod): finish previous commit :)
* app/core/gimp-edit.c
* app/core/gimpdrawable-blend.c
* app/core/gimpdrawable-bucket-fill.c
* app/core/gimpdrawable-stroke.c
* app/core/gimpimagemap.c
* app/core/gimplayer-floating-sel.c
* app/paint/gimppaintcore.c
* app/tools/gimpinktool.c: changed accordingly.
2003-09-29 Sven Neumann <sven@gimp.org>
* app/core/Makefile.am
* app/core/gimpitem-preview.[ch]: new files with preview code
factored out of GimpDrawable.
* app/core/gimpdrawable-preview.[ch]: code removed here.
* app/core/gimpdrawable.c
* app/core/gimpitem.c: let GimpItem implement
GimpViewable::get_preview_size and GimpViewable::get_popup_size.
* app/widgets/gimppreviewrenderervectors.c: simple scale to the
renderer's size; it already respects the aspect ratio.
2003-09-13 Sven Neumann <sven@gimp.org>
* app/widgets/gimpitemtreeview.c: moved the visibility toggle
before the linked toggle again.
* app/core/gimpdrawable.c (gimp_drawable_configure)
* app/core/gimpitem.c (gimp_item_init): quick fix for bug #122153:
don't make the item visible in gimp_drawable_configure() since that
breaks duplicate(); instead create all items as visible.
2003-09-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 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.c: code cleanup.
(gimp_drawable_fill): use the INTENSITY() of the passed GimpRGB to
fill GIMP_GRAY drawables, not just the RED_PIX. Cleanup.
* app/core/gimpimage.c (gimp_image_transform_color):
added assertion for src_type != GIMP_INDEXED.
2003-09-05 Michael Natterer <mitch@gimp.org>
* app/paint-funcs/paint-funcs.[ch]: removed function map_to_color()
since it does not belong here and the two places using it look much
cleaner when doing that stuff themselves.
* app/core/gimpdrawable-preview.c: cleanup.
(gimp_drawable_preview_scale): do the indexed palette lookup here
instead of calling map_to_color().
* app/core/gimpimage.c (gimp_image_get_color): transform the
colors here instead of calling map_to_color().
* app/core/gimpimage.[ch] (gimp_image_get_color): reordered
parameters src parameters are before dest parameters.
Made the src color const.
(gimp_image_transform_color): reordered so src parameters are
*after* dest parameters (since this function operates on the dest
image and it makes sense to have the dest parameters
together). Made the src color const here, too.
* app/core/gimpdrawable-bucket-fill.c
* app/core/gimpdrawable.c
* app/core/gimpimage-contiguous-region.c
* app/core/gimpimage-projection.c
* app/core/gimpimagemap.c
* app/core/gimplayer.c
* app/core/gimppalette-import.c
* app/paint/gimpclone.c
* app/paint/gimppaintcore.c: changed accordingly.
* app/core/gimpedit.c (gimp_edit_cut,copy): simplified by
moving the "cropped" variable to a local scope.
* app/core/gimpimage-mask.c: calling gimp_image_update() followed
by gimp_viewable_imvalidate_preview(drawable) is equal to calling
gimp_drawable_update() directly.
2003-09-04 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: added new pure virtual function
GimpDrawable::invalidate_boundary().
* app/core/gimplayer.[ch]: implement it and removed public
function gimp_layer_invalidate_boundary().
* app/core/gimpchannel.[ch]: implement it.
* app/core/gimpselection.[ch]: implement it and removed public
function gimp_selection_invalidate().
* app/core/gimpimage-mask.c (gimp_image_mask_invalidate)
* app/core/gimpimage-undo-push.c
* app/core/gimpimage.c
* app/core/gimplayer-floating-sel.c
* app/text/gimptextlayer.c: changed accordingly.
* app/core/gimpchannel.[ch]: made gimp_channel_push_undo() a
public function and made it call
gimp_drawable_invalidate_boundary(). Added undo_desc strings for
all undo pushing functions to GimpChannelClass.
* app/core/gimpselection.[ch]: removed gimp_selection_push_undo()
since after the change above it was identical to
gimp_channel_push_undo(). Don't push any undo here since
upchaining does the right thing now. Override GimpChannelClass'
undo_desc strings to say "Selection".
* app/core/gimpimage-mask.c (gimp_image_mask_push_undo): changed
accordingly.
2003-08-25 Michael Natterer <mitch@gimp.org>
* app/core/gimpobject.[ch]: changed GimpObject::get_memsize() to
return a second value named "gui_size", where the primary return
value is the "constant" actual size (as long as no operation is
performed on the object), and the second "gui_size" return value
is the size of temporary stuff like preview caches or boundary
segments (which may change asynchronously, even if the object is
on the undo stack).
* app/core/gimp.c
* app/core/gimpbrush.c
* app/core/gimpbrushpipe.c
* app/core/gimpbuffer.c
* app/core/gimpchannel.c
* app/core/gimpcontainer.c
* app/core/gimpcontext.c
* app/core/gimpdata.c
* app/core/gimpdatafactory.c
* app/core/gimpdrawable.c
* app/core/gimpgradient.c
* app/core/gimpimage-undo.c
* app/core/gimpimage.c
* app/core/gimpitem.c
* app/core/gimplayer.c
* app/core/gimplist.c
* app/core/gimppalette.c
* app/core/gimpparasitelist.c
* app/core/gimppattern.c
* app/core/gimpundo.c
* app/core/gimpundostack.c
* app/core/gimpviewable.c
* app/text/gimptextlayer.c
* app/vectors/gimpstroke.c
* app/vectors/gimpvectors.c: changed get_memsize() implementations
accordingly.
* app/display/gimpdisplayshell-title.c
* app/gui/debug-commands.c
* app/widgets/gimppreview.c: changed callers accordingly.
* app/core/gimpimage-undo-push.c: changed layer, channel, vectors
and layer_mask undo steps to add/subtract the size of the
resp. objects whenever they take/drop ownership of them. Ignore
the objects' "gui_size" to get identical sizes on
adding/subtracting. Fixes bug #120429.
2003-06-12 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.c (gimp_drawable_configure): removed the
check again because adding e.g. GRAY drawables to RGB images is
prefectly ok as long as they are channels/masks.
2003-06-12 Sven Neumann <sven@gimp.org>
* app/core/gimpdrawable.c (gimp_drawable_configure): check if the
drawable type fits to the image. This assertion would have catched
the problem below.
2003-06-11 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.c (gimp_drawable_mask_bounds): added some
more g_return_if_fail() to avoid NULL pointer dereferencing.
2003-06-05 Sven Neumann <sven@gimp.org>
* app/core/gimpdrawable.c (gimp_drawable_get_color_at):
* app/core/gimpimage-projection.c (gimp_image_projection_get_color_at):
use OPAQUE_OPACITY instead of 255.
* app/core/gimpimage-pick-color.[ch]: factored out code that
averages over colors so it can be used from GimpImageTool.
* app/tools/gimpimagemaptool.[ch]: derived from GimpColorTool and
added a GimpColorTool::pick implementation.
* app/tools/gimpcoloroptions.c
* app/tools/gimpcolorpickeroptions.c: add the toggle for
"sample_merged" in gimp_color_picker_options_gui().
* app/tools/gimpcolortool.c (gimp_color_tool_cursor_update): check
if the cursor is over the active drawable or if "sample_merged" is
active.
* app/tools/gimplevelstool.c: simplified since all color-picking is
now handled by the parent classes. Fixes bug #112668.
2003-05-26 Michael Natterer <mitch@gimp.org>
* app/base/tile-manager-private.h: added "gint ref_count" to the
TileManager struct.
* app/base/tile-manager.[ch]: replaced tile_manager_destroy()
by tile_manager_ref() and tile_manager_unref().
* app/core/gimpimage-undo-push.c: ref the tile managers stored in
the undo system and DON'T destroy them if no undo could be pushed.
Should fix the remaining crashes with undo disabled like in
bug #9350.
(!!!) Note that the tiles passed to gimp_image_undo_push_image()
and gimp_drawable_push_undo() as well as the tile managers of
drawables passed to gimp_image_undo_push_[layer|channel]_mod()
must be unref'ed by the caller now.
* app/core/gimpdrawable-transform.c (gimp_drawable_transform_paste):
don't take ownership of the passed tiles but ref them if needed.
(!!!) Callers must unref the passed tiles themselves now.
* app/core/gimpbuffer.c
* app/core/gimpdrawable-blend.c
* app/core/gimpdrawable-bucket-fill.c
* app/core/gimpdrawable-offset.c
* app/core/gimpdrawable.c
* app/core/gimpedit.c
* app/core/gimpimage-convert.c
* app/core/gimpimage-mask.c
* app/core/gimpimage-projection.c
* app/core/gimpimage.c
* app/core/gimpimagemap.c
* app/core/gimplayer-floating-sel.c
* app/core/gimplayer.c
* app/paint/gimppaintcore.c
* app/text/gimptextlayer.c
* app/tools/gimpinktool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimptransformtool-undo.c
* app/tools/gimptransformtool.c: changed accordingly.
2003-05-21 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: added GimpDrawable::alpha_changed()
signal.
* app/core/gimpimage-undo-push.c
* app/core/gimplayer.c: emit it when alpha is removed from or
added to a layer.
* app/widgets/gimpcontainertreeview.[ch]: added a
"name_attributes" column to the list store which provides a
PangoAttrList for the name column.
* app/widgets/gimplayertreeview.[ch]: connect to all layers'
"alpha_changed" and set the BG layer's name to bold.
* app/widgets/gimpdrawabletreeview.c: removed redundant assertions.
2003-05-20 Sven Neumann <sven@gimp.org>
* app/core/core-enums.[ch]: added new enum GimpRotationType.
* app/core/Makefile.am
* app/core/gimpimage-rotate.[ch]: new files.
* app/core/gimpchannel.c
* app/core/gimpdrawable-transform.[ch]
* app/core/gimpdrawable.c
* app/core/gimpitem.[ch]
* app/core/gimplayer.c
* app/vectors/gimpvectors.c: added GimpItem::rotate. Still work in
progress.
* plug-ins/common/rotate.c: don't install any menu entries. The
plug-in is only kept around to provide plug_in_rotate for backward
compatibility.
* app/gui/drawable-commands.[ch]
* app/gui/image-commands.[ch]
* app/gui/image-menu.c: use the new rotate implementation and use
stock icons for the menu entries. Fixes bug #57797.
2003-05-14 Michael Natterer <mitch@gimp.org>
* app/core/Makefile.am
* app/core/gimp-utils.[ch]: new file for utility functions.
Contains gimp_rectangle_intersect() for now.
* app/core/gimpdrawable-transform.c: removed the function here.
* app/core/gimpdrawable.c (gimp_drawable_resize): use it to
determine the amount of pixels to copy between the old and new
tile managers. Removed restriction that forced the areas to
overlap by at least one pixel.
* app/core/gimpitem.c (gimp_item_real_transform): removed the
restriction here, too.
* app/core/gimplayer.c (gimp_layer_create_mask): use the new
function to decide how much to copy from the selection when
creating a mask from it.
2003-05-13 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.[ch]: added "gboolean clip_result" to
GimpItem::flip().
* app/vectors/gimpvectors.c
* app/tools/gimpfliptool.c: changed accordingly.
* app/core/gimpdrawable.c: implement GimpItem::flip() and
GimpItem::transform().
* app/core/gimpchannel.c
* app/core/gimplayer.c: chain up in flip() and transform() and do
only the layer/channel specific stuff here.
* app/core/gimpdrawable-transform.[ch]: fixed indentation.
(gimp_drawable_transform_tiles_flip): added "gboolean clip_result"
and warn that it is not yet implemented.
(gimp_drawable_transform_tiles_affine): when transforming a
channel set bg_color to transparent. Clip channels (but not layer
masks) only if the passed tiles have bpp == 1 (the channel is
unfloated).
(gimp_drawable_transform_affine): clip all unfloated channels.
* app/core/gimpitem-linked.[ch]: added gimp_item_linked_get_list()
utility function to avoind iterating all layers/channels/vectors
in all functions.
* app/tools/gimptransformtool.c: clip all unfloated channels.
The clipping fixes above together fix bug #112858.
2003-05-09 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.c: added default implementations for scale()
and resize() which just set the resulting width/height and offset
values.
* app/core/gimpdrawable.c: chain up in scale() and resize().
* app/vectors/gimpvectors.[ch]: buncha vectors changes/features:
- Removed unused "linked" and "locked" members.
- Removed "changed" signal.
- Added "freeze" and "thaw" signals and functions to emit them.
- Added "freeze_count" member so we emit only one freeze/thaw pair
even when doing nested changes.
- Added GimpItem::translate() implementation.
- Actually scale and resize the vectors in scale() and resize().
- Added undo for scale() and resize().
- Added freeze()/thaw() pairs around all modifying functions.
- Changed gimp_vectors_copy_strokes() to work as needed.
* app/core/gimpimage-resize.c
* app/core/gimpimage-scale.c: resize and scale all vectors.
Fixes bug #36491.
* app/core/gimpimage-undo-push.c (undo_pop_vectors_mod): added
freeze()/thaw() around the vectors-modifying code. Also restore
width, height and offsets.
* app/tools/gimpvectortool.c: connect to "freeze" and "thaw"
and pause()/resume() vectors drawing accordingly.
2003-05-07 Michael Natterer <mitch@gimp.org>
Started to abstract item transformation so we can easily
transform multiple linked items later:
* app/core/gimpitem.[ch]: added new virtual function
GimpItem::scale() with the same signature as the former
gimp_layer_scale_lowlevel().
* app/core/gimpdrawable.c: implement scale() and do the
common parts of layer/channel scaling here.
* app/core/gimpchannel.[ch]
* app/core/gimplayer.[ch]: implement scale() for the
channel/layer specific parts of scaling.
* app/core/gimplayer.[ch]: renamed gimp_layer_scale() to
gimp_layer_scale_by_origin().
* app/vectors/gimpvectors.c: added empty scale() implementation.
* app/core/gimpimage-scale.c
* app/core/gimpimage-undo-push.c
* app/gui/layers-commands.c
* tools/pdbgen/pdb/layer.pdb: changed accordingly.
* app/pdb/layer_cmds.c: regenerated.
Unrelated:
* app/core/gimpimage-undo-push.c: fixed item rename undo to
take the size of the saved name into account. Removed old
path_undo stuff.
2003-03-25 Sven Neumann <sven@gimp.org>
* Makefile.am
* gimpintl.h: removed this header file.
* gimpmiscui.c: include libgimp-intl.h.
* gimp.c (gimp_main): call setlocale() and bind to the libgimp
textdomain so that plug-ins don't need to do that explicitely.
* libgimp/stdplugins-intl.h: added the functionality that used to
live in gimpintl.h and removed the libgimp related stuff. Got rid
of the INIT_I18N_UI() macro.
* plug-ins/*/*.c: removed all occurances of INIT_I18N_UI().
Plug-ins simply call INIT_I18N() once in their run() function.
* plug-ins/script-fu/script-fu-intl.h: added the functionality
that used to live in gimpintl.h and removed the libgimp related
stuff.
* app/Makefile.am
* app/gimp-intl.h: new file that defines the gettext macros for
the GIMP core.
* app/*/*.c: include gimp-intl.h instead of libgimp/gimpintl.h.
* plug-ins/script-fu/scripts/test-sphere.scm: fixed typos.
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-06 Michael Natterer <mitch@gimp.org>
* themes/Default/images/stock-delete-16.png
* themes/Default/images/stock-lower-16.png
* themes/Default/images/stock-new-16.png
* themes/Default/images/stock-paste-16.png
* themes/Default/images/stock-raise-16.png
* themes/Default/images/stock-refresh-16.png: removed these files
since we use the icons provided by GTK+ now.
* themes/Default/gtkrc
* themes/Default/images/Makefile.am: removed them here hoo.
* libgimpwidgets/gimpstock.[ch]: reordered stuff to be consistent
in the header and the .c file. Added GIMP_STOCK_ERROR and
GIMP_STOCK_QUESTION which are available in all sizes (unlike
GTK_STOCK_DIALOG_ERROR and GTK_STOCK_DIALOG_QUESTION).
* app/core/gimpviewable.c
* app/display/gimpdisplayshell.c
* app/gui/file-commands.c
* app/gui/file-new-dialog.c
* app/gui/file-save-dialog.c
* app/widgets/gimpwidgets-utils.c
* app/widgets/gimpdatafactoryview.c: use the new stock IDs.
* app/config/gimpcoreconfig.[ch]: renamed "preview_size" to
"layer_preview_size" and added "gboolean layer_previews" which
switches layer previews on/off independent of their size.
* app/config/gimprc-blurbs.h: added/changed their blurbs.
* app/core/core-enums.[ch]: removed GIMP_PREVIEW_SIZE_NONE.
* app/core/gimpdrawable-preview.c
* app/core/gimpdrawable.c
* app/core/gimpimage.c: return NULL previews if
core_config->layer_previews is FALSE. Invalidate all layer/channel
previews whenever "layer_previews" changes.
* app/widgets/gimppreviewrendererdrawable.c
* app/widgets/gimppreviewrendererimage.c: render the stock_id
if the drawable/image returns a NULL preview. Fixes bug #107242.
* app/display/gimpdisplayshell-handlers.c: don't set the
sensitivity of the navigation button because it can no longer be
disabled.
* app/display/gimpdisplayshell-layer-select.c
* app/gui/dialogs-constructors.c
* app/gui/dialogs.c
* app/gui/paths-dialog.c: changed accordingly.
* app/gui/preferences-dialog.c: added a toggle button for the new
"layer_previews" boolean.
* app/widgets/gimpcontainergridview.c
* app/widgets/gimpcontainerlistview.c: chain up unconditionally
in GimpContainerView::clear_items().
* app/widgets/gimpcontainertreeview.c: ditto. Made the reorder()
implementation lengthy and eeky (but working) again... Stop signal
emission on double clicks so GtkTreeView doesn't re-select the
item we are about change.
* app/widgets/gimpcontainerview.c
(gimp_container_view_real_clear_items): need to use
g_hash_table_new_full() here too or everything will b0rk.
* app/widgets/gimppreviewrenderer.c
(gimp_preview_renderer_default_render_stock): use
gtk_widget_render_icon() instead of gtk_icon_set_render_icon().
* tools/pdbgen/enums.pl: this file wanted to be regenerated...
2003-02-27 Michael Natterer <mitch@gimp.org>
* app/core/gimpviewable.[ch]: added virtual function
get_popup_size() which returns a boolean indicating if a popup is
needed and its size.
* app/core/gimpbrush.c
* app/core/gimpbrushpipe.c
* app/core/gimpbuffer.c
* app/core/gimpdrawable-preview.[ch]
* app/core/gimpdrawable.c
* app/core/gimpgradient.c
* app/core/gimpimage.c
* app/core/gimppalette.c
* app/core/gimppattern.c
* app/core/gimpundo.c: implement it.
* app/widgets/gimppreview.[ch]: removed virtual functions
needs_popup() and create_popup(). Removed the code which creates
the popup and the popup members of the GimpPreview struct.
* app/widgets/gimppreview-popup.[ch]: new files providing the
utility function gimp_preview_popup_show() which can show popups
from any widget, not just from a GimpPreview. Checks if a popup is
needed using gimp_viewable_get_popup_size().
* app/widgets/gimpcellrendererviewable.c: show popups here too.
* app/widgets/gimpbrushpreview.c
* app/widgets/gimpbufferpreview.c
* app/widgets/gimpdrawablepreview.c
* app/widgets/gimpimagepreview.c: removed needs_popup() and
create_popup() implementations.
* app/widgets/gimpnavigationpreview.c: removed empty render()
implementation.
* app/widgets/gimpundoeditor.c: use a tree instead of a list view.
* app/widgets/gimpgradientpreview.[ch]
* app/widgets/gimppalettepreview.[ch]
* app/widgets/gimppatternpreview.[ch]: removed because they only
implemented the removed popup functions.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpmenuitem.c
* app/widgets/gimppreview-utils.c: changed accordingly
2003-01-31 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.[ch]: added gimp_item_configure() and
gimp_item_copy().
* app/core/gimpdrawable.c (gimp_drawable_configure,copy): use them.
* app/vectors/gimpvectors.[ch]: added gimp_vectors_new(),
gimp_vectors_copy() and gimp_vectors_copy_points(). Use the new
GimpItem functions just as GimpDrawable does. Added a
get_memsize() implementation.
* app/vectors/gimpstroke.[ch]: made it a GimpObject and added
a get_memsize() implementation.
* app/undo.c: implemented vectors undo as if the new GimpVectors
functions above worked.
* app/gui/dialogs-constructors.c
* app/gui/vectors-commands.c
* app/tools/gimpvectortool.c: use gimp_vectors_new,copy().
2003-01-09 Sven Neumann <sven@gimp.org>
* app/core/gimpdrawable.c (gimp_drawable_configure): use _("Unnamed")
if no name was given. Fixes bug #89328 in a more general way.
* plug-ins/common/psd.c: simply pass NULL as layer and channel
name if the PSD file provides none.
2003-01-05 Manish Singh <yosh@gimp.org>
* many files in app, modules and libgimp*: cleanup, removed unecessary
G_OBJECT() casts. Should do the same for plug-ins, when more of them
get undeprecated.
2002-06-06 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: renamed gimp_drawable_apply_image()
to gimp_drawable_push_undo() because that's what it actually does.
* app/image_map.c
* app/core/gimpdrawable-offset.c
* app/core/gimpimage-mask.c
* app/core/gimpimage.c
* app/core/gimplayer.c
* app/paint/gimppaintcore.c
* app/tools/gimpinktool.c: changed accordingly. Removed redundant
comments because it's now obvious what the function does from
looking at its name.
* app/core/gimpdrawable.[ch]
* app/core/gimpimage.h: renamed "gboolean undo" parameters to
"gboolean push_undo".
2002-05-15 Sven Neumann <sven@gimp.org>
* app/config/gimpconfig.[ch]: added a return value to indicate
success of GimpConfigInterface::serialize. Added a GimpConfigError
value for write errors and check the return value of all write()
calls. Allow to specify file header and footer when calling
gimp_config_serialize().
* app/config/gimpconfig-serialize.[ch]
* app/config/gimprc.c: changed accordingly.
* app/core/gimp-documents.[ch]: new files with functions to handle
gimp->documents.
* app/core/gimpdocuments.[ch]: removed ...
* app/core/gimpdocumentlist.[ch]: ... and added under this name.
Implements a generic document list.
* app/core/gimp-parasites.[ch]: new files with functions to handle
gimp->parasites.
* app/core/gimpparasite.[ch]: removed.
* app/core/gimpparasitelist.[ch]: nothing more than a generic
parasite list.
* app/undo.c
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimp.c
* app/core/gimpdrawable.c
* app/core/gimpimage-merge.c
* app/core/gimpimage.c
* app/core/gimpitem.c
* app/file/file-open.c
* app/file/file-save.c
* app/gui/file-open-dialog.c
* app/pdb/parasite_cmds.c
* tools/pdbgen/pdb/parasite.pdb: changed accordingly.
2002-03-22 Sven Neumann <sven@gimp.org>
* app/plug-in/plug-in-rc.c
* app/plug-in/plug-ins.c
* app/tools/tool_manager.c
* app/widgets/gimppreview.c
* app/widgets/gimptoolinfopreview.c: plugged a couple of mem leaks
found using valgrind.
* libgimpwidgets/gimpcolorarea.c (gimp_color_area_expose): don't draw
anything if an idle update is pending.
2002-03-03 Michael Natterer <mitch@gimp.org>
Use gdouble in a [0.0..1.0] range for opacity values in the whole
core's API. Convert them using (opacity * 255.999) when passing
them to base/ and paint-funcs/
Affected functions:
* app/core/gimpchannel.[ch]: gimp_channel_[set|get]_opacity()
* app/core/gimpimage.[ch]: gimp_image_[apply|replace]_image()
* app/paint/gimppaintcore.[ch]: gimp_paint_core_[paste|replace]_canvas()
* app/core/core-types.h: added defines GIMP_OPACITY_TRANSPARENT
and GIMP_OPACITY_OPAQUE, just like the ones from
paint-funcs/paint-funcs-types.h
* app/gimprc.c
* app/image_map.c
* app/core/gimpcontext.c
* app/core/gimpdrawable-blend.c
* app/core/gimpdrawable-bucket-fill.c
* app/core/gimpdrawable.c
* app/core/gimpedit.c
* app/core/gimplayer.c
* app/core/gimplayer-floating-sel.c
* app/core/gimppalette.c
* app/paint/gimpairbrush.c
* app/paint/gimpclone.c
* app/paint/gimpconvolve.c
* app/paint/gimpdodgeburn.c
* app/paint/gimperaser.c
* app/paint/gimppaintbrush.c
* app/paint/gimpsmudge.c
* app/tools/gimpinktool.c
* app/widgets/gimpcolorpanel.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimppreview.c
* app/xcf/xcf-load.c: changed accordingly, use the new constants.
2002-02-24 Michael Natterer <mitch@gimp.org>
* app/core/core-types.h: added parasite undo groups.
* app/undo.c: added assertions to make undo_push_group_start()
accept only "UndoType" values and undo_push() only "UndoImplType".
* app/core/gimpdrawable.c: use the new undo group and don't
include "undo_types.h".
2001-12-14 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch]: added
GIMP_IMAGE_TYPE_IS_[RGB|GRAY|INDEXED]() and
GIMP_IMAGE_TYPE_BASE_TYPE() macros.
* app/plug-in/plug-in.[ch]: new enum PlugInImageType instead of
multiple #defines.
* app/gui/file-dialog-utils.[ch]: file_dialog_update_menus(): take
a GimpImageType instead of the PlugInImageType.
* app/core/gimpdrawable-preview.c
* app/core/gimpdrawable-transform.c
* app/core/gimpdrawable.c
* app/core/gimpimage-contiguous-region.c
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayermask.c
* app/core/gimppalette-import.c
* app/display/gimpdisplay-handlers.c
* app/display/gimpdisplayshell-render.c
* app/gui/file-save-dialog.c
* app/gui/toolbox.c
* app/tools/gimpclonetool.c
* app/tools/gimpcolorpickertool.c
* tools/pdbgen/pdb/convert.pdb
* tools/pdbgen/pdb/image.pdb: use the new macros, cleanups like
storing GimpImageType in GimpImageType variables, not just gint.
* app/pdb/convert_cmds.c
* app/pdb/image_cmds.c: regenerated.
* app/widgets/gimpdialogfactory.c: save the state of the "Auto"
button in sessionrc.
2001-12-13 Michael Natterer <mitch@gimp.org>
* app/core/gimp.[ch]: made gimp->global_buffer a GimpBuffer,
not TileManager.
* app/core/gimpbuffer.[ch]: added a "gboolean copy_pixels" to
gimp_buffer_new().
* app/core/gimpimage-new.c
* app/core/gimpedit.[ch]
* app/core/gimpimage-qmask.c
* app/widgets/gimpbufferpreview.c
* app/widgets/gimpbufferview.c
* app/widgets/gimpcontainerview-utils.c: chaned accordingly, don't
include "base/tile-manager.h".
* app/core/gimpdrawable.[ch]: added gimp_drawable_copy().
* app/core/gimpchannel.[ch]
* app/core/gimplayer.[ch]
* app/core/gimplayermask.[ch]: use it in
gimp_[channel|layer|layer_mask]_copy(), added "GType new_type" as
paramater to all of them.
* app/core/gimpimage-duplicate.c
* app/gui/channels-commands.c
* app/gui/edit-commands.c
* app/gui/layers-commands.c
* app/widgets/gimpchannellistview.c
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb
* tools/pdbgen/pdb/selection.pdb: changed accordingly.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c
* app/pdb/selection_cmds.c: regenerated.
* app/core/gimplayer.[ch]: removed the "layer_type" parameter from
gimp_layer_new_from_tiles() because it always needed to be equal
to gimp_image_base_type_with_alpha() of the passed image.
* app/core/gimpdrawable-transform.c
* app/core/gimpedit.c
* app/core/gimpimage-mask.c: cahanged accordingly.
* app/core/gimpimage.[ch]: added some new GIMP_IMAGE_TYPE_FOO()
marcos to get rid of magic values like "pixels = 3" all over the
place.
* app/core/gimplayer.[ch]: added gimp_layer_new_from_drawable()
which creates a layer from an other image's drawable.
* app/core/gimpimage-convert.[ch]: made the RGB and GRAY converters
public to use them above, use the new GIMP_IMAGE_TYPE() macros.
* app/display/gimpdisplayshell-dnd.c
* app/gui/toolbox.c: removed tile manager stuff and use the new
functions.
* app/widgets/gimpdrawablelistview.[ch]: added a
"convert_drawable_func" which is used to handle drops from other
images.
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplistitem.[ch]: implemented DND of layers between
images using gimp_layer_new_from_drawable().
* app/gui/dialogs-constructors.c: changed accordingly.
2001-12-08 Sven Neumann <sven@gimp.org>
* app/core/Makefile.am
* app/core/core-enums.h: new file that holds enums that are registered
with the type system and is used to generate core-enums.c.
* app/core/core-types.h: include core-enums.h
* app/base/base-types.h: namespace cleanup. Prefix all enumeration
types with Gimp and their values with GIMP. Moved GimpLayerModeEffects
enum ...
* app/base/base-enums.h: ... here.
* app/image_map.c
* app/base/temp-buf.c
* app/core/gimpcontext.[ch]
* app/core/gimpdrawable-transform.c
* app/core/gimpdrawable.c
* app/core/gimpedit.c
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimpimage-new.c
* app/core/gimpimage-projection.c
* app/core/gimpimage.[ch]
* app/core/gimplayer.[ch]
* app/display/gimpdisplayshell-dnd.c
* app/display/gimpdisplayshell-render.c
* app/gui/brush-select.c
* app/gui/layers-commands.c
* app/gui/preferences-dialog.c
* app/gui/toolbox.c
* app/paint-funcs/paint-funcs.[ch]
* app/tools/gimpconvolvetool.c
* app/tools/gimperasertool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimppainttool.[ch]
* app/tools/gimptexttool.c
* app/tools/paint_options.c
* app/widgets/gimplayerlistview.c
* app/widgets/gimpwidgets-constructors.[ch]
* app/xcf/xcf-load.c
* tools/pdbgen/pdb/brush_select.pdb
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/color.pdb
* tools/pdbgen/pdb/layer.pdb
* tools/pdbgen/pdb/tools.pdb: changed accordingly.
* libgimpbase/gimpbasetypes.h: no need to chop GIMP prefix off the
enums any longer.
* app/pdb/brush_select_cmds.c
* app/pdb/brushes_cmds.c
* app/pdb/color_cmds.c
* app/pdb/layer_cmds.c
* app/pdb/message_cmds.c
* app/pdb/procedural_db_cmds.c
* app/pdb/tools_cmds.c
* libgimp/gimpenums.h
* plug-ins/script-fu/script-fu-constants.c
* tools/pdbgen/enums.pl: regenerated.
* app/gimprc.c: removed code to parse for "plug_in" keyword which was
left over from some very early gimp days.
* app/plug-in/plug-in.[ch]: removed now unused function plug_in_add().
2001-12-03 Sven Neumann <sven@gimp.org>
Michael Natterer <mitch@gimp.org>
* app/paint-funcs/paint-funcs-mmx.h: removed redefiniton of HAS_ALPHA
macro.
* app/core/gimp.c: reverted Daniel's change; it doesn't make the code
simpler, only more error-prone.
* app/gui/info-dialog.h
* app/gui/resize-dialog.h
* app/core/gimp.h
* app/core/gimpbrushgenerated.h
* app/core/gimpbrushpipe.h
* app/core/gimpchannel.[ch]
* app/core/gimpcontainer.h
* app/core/gimpcoreconfig.h
* app/core/gimpdata.h
* app/core/gimpdatafactory.[ch]
* app/core/gimpdrawable-blend.c
* app/core/gimpdrawable.[ch]
* app/core/gimpimage.h
* app/core/gimpimagefile.h
* app/core/gimplayer.h
* app/core/gimplayermask.h
* app/core/gimpmoduleinfo.h
* app/core/gimppalette.h
* app/core/gimpundo.h
* app/widgets/gimpbrushfactoryview.h
* app/widgets/gimpconstrainedhwrapbox.h
* app/widgets/gimpcontainermenu.h
* app/widgets/gimpcontainerview.h
* app/widgets/gimpdialogfactory.h
* app/widgets/gimpimagedock.h
* app/widgets/gimplistitem.h
* app/widgets/gimpmenuitem.h
* app/widgets/gimpnavigationpreview.h
* app/widgets/gimppreview.h
* app/gimprc.h
* app/pathP.h
* app/tools/gimpbezierselecttool.h
* app/tools/gimpcolorbalancetool.h
* app/tools/gimpcurvestool.h
* app/tools/gimpdodgeburntool.c
* app/tools/gimpfreeselecttool.h
* app/tools/gimphuesaturationtool.h
* app/tools/gimpinktool-blob.h
* app/tools/gimpinktool.h
* app/tools/gimpiscissorstool.h
* app/tools/gimpmagnifytool.h
* app/tools/gimpmeasuretool.h
* app/tools/gimppainttool.h
* app/tools/gimppathtool.h
* app/tools/gimprectselecttool.h
* app/tools/gimpthresholdtool.h
* app/tools/gimptool.h
* app/tools/gimptransformtool.h
* app/base/base-config.h
* app/base/gimplut.[ch]
* app/base/pixel-region.h
* app/base/pixel-surround.[ch]
* app/base/temp-buf.[ch]
* app/base/tile-manager-private.h
* app/base/tile-manager.[ch]
* app/base/tile-private.h
* app/base/tile.[ch]
* app/display/gimpdisplay.h
* app/display/gimpdisplayshell-selection.h
* app/display/gimpdisplayshell.h
* app/gui/brush-select.h
* app/gui/gradient-editor.h
* app/gui/gradient-select.h: reverted most of Daniel's changes.
There's no reason to use unsigned integers here and in lots of places
it is even wrong.
Then it's way too early to convert gbooleans into bitfields. This
change may make sense in a few places but can happen later when the
API has settled and the code is more stable.
* app/gimprc.c: reverted Daniel's change. This is a GCC-ism and this
code is about to die soon anyway.
2001-11-23 Sven Neumann <sven@gimp.org>
* configure.in: bumped version number to 1.3.1.
Require Glib/GTK+-1.3.11 and Pango-0.22. Removed GDK_DISABLE_COMPAT_H
and GTK_DISABLE_COMPAT_H from our default CFLAGS since they don't
exist any longer.
* RELEASE-TO-CVS.patch: removed since the glib/gtk+ API is supposed to
be frozen now.
* HACKING: removed reference to RELEASE-TO-CVS.patch
* app/gui/menus.c
* app/tools/gimptexttool.c: applied RELEASE-TO-CVS.patch to conform
to the new GTK+/Pango API.
* app/core/Makefile.am: generate marshallers with gimp_marshal prefix.
* app/core/gimpmarshal.list: added all marshallers we use.
* app/core/gimpmarshal.[ch]: regenerated.
* app/[lots of .c files]: use gimp_marshal_* for all marshallers.
* data/images/
* app/app_procs.c
* app/gui/splash.c:
* libgimpbase/Makefile.am
* libgimpbase/gimpbase.h
* libgimpbase/gimputils.[ch]: removed since they are no longer needed.
* app/gimprc.c
* plug-ins/common/ps.c
* plug-ins/gdyntext/gdyntext.c
* plug-ins/gdyntext/gdyntextcompat.c
* plug-ins/gfig/gfig.c
* plug-ins/gflare/gflare.c
* plug-ins/script-fu/script-fu-scripts.c: use glib functions instead
of gimp_strescape() and gimpstrcompress().
* cleaned up all header files: use G_BEGIN_DECLS/G_END_DECLS, declared
all _get_type function as G_GNUC_CONST.
* tools/pdbgen/enumcode.pl
* tools/pdbgen/lib.pl: make them generate header files using
G_BEGIN_DECLS/G_END_DECLS.
* pixmaps/Makefile.am
* pixmaps/wilber3.xpm: removed ...
* data/images/tips_wilber.png: ... and added here as PNG
* app/gui/tips-dialog.c: load the Wilber on demand using GdkPixbuf.
* data/images/gimp_splash.ppm: removed ...
* data/images/gimp_splash.png: ... and added as PNG
* app/app_procs.c
* app/gui/splash.[ch]: load the splash image using GdkPixbuf.
* app/gui/about-dialog.c: sink the GtkPreview.
2001-08-17 Michael Natterer <mitch@gimp.org>
* configure.in: added app/display/ and app/plug-in/. Empty for
now except for the types files.
* app/Makefile.am
* app/appenums.h
* app/apptypes.h: removed.
* app/display/Makefile.am
* app/display/display-types.h
* app/plug-in/Makefile.am
* app/plug-in/plug-in-types.h
* app/gui/Makefile.am
* app/gui/gui-types.h
* app/pdb/Makefile.am
* app/pdb/pdb-types.h: new files for typedefs.
* app/appenv.h: added MessageHandlerType and StackTraceMode here.
* app/undo_types.h: moved undo struct typedefs here.
* app/tools/tools-types.h
* app/core/core-types.h: added some enums and Tattoo here
(renamed to GimpTattoo).
* app/gdisplay.h: temp_hack: #include "display/display-types.h"
* app/gimphelp.c: s/gtk_idle_add/g_idle_add/
* app/gimprc.c: don't use "gimprc" in token handlers but the
passed "val1p" and "val2p".
* app/image_map.[ch]: cleanup in preparation of making a GObject
out of it.
* app/base/pixel-region.[ch]: no need to pass the
PixelRegionIterator around as void pointer.
* app/core/gimp.[ch]
* app/core/gimpcontext.[ch]
* app/core/gimptoolinfo.[ch]
* app/tools/tool_manager.c
* app/widgets/gimpdnd.c: added the standard_tool_info to the Gimp
object.
* app/batch.c
* app/file-open.c
* app/file-save.c
* app/file-utils.c
* app/interface.c
* app/main.c
* app/path.[ch]
* app/pathP.h
* app/plug_in.h
* app/core/gimpdrawable.[ch]
* app/core/gimpimage-mask.c
* app/core/gimpimage.[ch]
* app/core/gimplayer.c
* app/gui/color-area.c
* app/gui/color-notebook.c
* app/gui/colormap-dialog.c
* app/gui/dialogs-commands.c
* app/gui/dialogs-constructors.c
* app/gui/error-console-dialog.c
* app/gui/gradient-editor.c
* app/gui/gradient-select.c
* app/gui/indicator-area.c
* app/gui/info-dialog.c
* app/gui/palette-editor.c
* app/gui/palette-select.c
* app/gui/pattern-select.c
* app/gui/session.c
* app/gui/splash.c
* app/gui/view-commands.c
* app/tools/gimpinktool-blob.c
* app/widgets/gimpcolorpanel.c
* app/widgets/gimpdockbook.c
* app/widgets/gimppreview.c
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c
* app/xcf/xcf.c: changed accordingly: s/Tattoo/GimpTattoo/, include
the new types files, include <glib-object.h> instead of >gtk/gtk.h>.
Bad hacks to get rid of SELECTION_OFF and friends in core/ (will
be replaced ba a signal soon).
* tools/pdbgen/Makefile.am: changed list of headers scanned for
enums accordingly.
* app/pdb/procedural_db.c
* tools/pdbgen/app.pl
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/display.pdb
* tools/pdbgen/pdb/gradient_select.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/layer.pdb
* tools/pdbgen/pdb/pattern_select.pdb: same fixes as above, added
hacks to ensure that all foo-types.h files are included before all
other gimp internal includes, include "pdb-types.h" unconditionally.
* tools/pdbgen/enums.pl
* app/pdb/*_cmds.c: regenerated.
2001-08-14 Michael Natterer <mitch@gimp.org>
* app/gdisplay.h: an evil temp_hack which lets GimpContext managing
the active display withoug including "gdisplay.h". Will go away as
soon ad context properties are registered dynamically.
* app/module_db.c: cleaned up the object code in preparation of
moving it to core/.
* app/path.c: connect to GimpImage's
* app/core/gimpobject.[ch]: derive it from GObject, not from
GtkObject any more (yeah :-)
* app/core/*.c: #include <glib-object.h> instead of <gtk/gtk.h>,
removed some remaining GtkObject-isms.
(left in a few #include <gtk/gtk.h> where bigger changes are needed
to get rid of the UI dependency).
* app/core/core-types.h: #include <gdk-pixbuf/gdk-pixbuf.h> here
temporarily.
* app/core/gimp.c (gimp_create_display): unref the image after
creating it's first display.
* app/core/gimpbrush.[ch]: disabled the parts of the code which
depend on GimpPaintTool.
* app/core/gimpbrushgenerated.c
* app/core/gimpbrushpipe.c: changed accordingly.
* app/core/gimpcontext.[ch]: evil hack (see above) to manage the
active display without including "gdisplay.h"
* app/core/gimpimage-mask.[ch]: pass a context to
gimage_mask_stroke() and get the current tool's PDB string from
there.
* app/core/gimpedit.c: changed accordingly.
* app/core/gimpimage.c: use gimp_image_update() instead of
gdisplays_update_full().
* app/gui/color-area.c
* app/gui/colormap-dialog.c
* app/gui/dialogs-constructors.c
* app/gui/edit-commands.c
* app/gui/image-commands.c
* app/gui/toolbox.c: changed accordingly (don't use Gtk methods on
GObjects).
* app/gui/menus.c: fix some const warnings by explicit casting.
* app/tools/*.[ch]: ported all tools to GObject, some minor
cleanup while i was on it.
* app/widgets/gimpdialogfactory.[ch]: ported to GObject.
* app/widgets/gimplayerlistview.h: added FOO_GET_CLASS() macro.
* tools/pdbgen/app.pl: added a "widgets_eek" hack like "tools_eek"
which inserts #include "widgets/widgets-types.h" before ordinary
includes.
* tools/pdbgen/pdb/brush_select.pdb
* tools/pdbgen/pdb/edit.pdb
* app/pdb/brush_select_cmds.c
* app/pdb/edit_cmds.c: changed according to the stuff above.
2001-08-11 Michael Natterer <mitch@gimp.org>
* TODO.xml: added a TODO entry about additional image/file info.
* app/file-save.c: #include "core/gimpdocuments.h"
* app/core/gimpcontainer.[ch]: made virtual functions out of some
signals.
* app/core/*.[ch]: more GObject stuff: ported all
gimp_foo_get_type() functions and replaced almost all "destroy"
implementations with either "finalize" or "dispose" functions.
2001-07-24 Michael Natterer <mitch@gimp.org>
Port to glib/gtk+ 2.0 episode I (every segfault has it's beginning)
* configure.in: require glib/gtk+ >= 1.3.7, commented out the
gtkxmhtml stuff.
From now on, you will need glib, pango, atk and gtk+ HEAD from CVS
to hack or use GIMP HEAD.
Beware, it crashes randomly :)
* app/core/Makefile.am
* app/core/gimpmarshal.list: new file plus rules to generate
gimpmarshal.[ch] from it.
* app/core/*
* app/tools/*
* app/widgets/*
* libgimpwidgets/*: started to use the glib object system. All
core/ objects are still gtk objects however. All signals are
created using g_signal_new(). There are many gtk+ artefacts left.
Finally, we will _not_ use the gtk_signal_foo() wrappers and
friends any more.
* app/colormaps.c
* app/devices.[ch]
* app/disp_callbacks.c
* app/errorconsole.c
* app/file-save.[ch]
* app/interface.c
* app/module_db.c
* app/nav_window.c
* app/ops_buttons.c
* app/scroll.c
* app/user_install.c
* app/gui/about-dialog.c
* app/gui/brush-editor.c
* app/gui/brushes-commands.c
* app/gui/color-notebook.c
* app/gui/colormap-dialog.c
* app/gui/dialogs-commands.c
* app/gui/dialogs-constructors.c
* app/gui/file-commands.c
* app/gui/file-dialog-utils.c
* app/gui/file-new-dialog.c
* app/gui/file-open-dialog.[ch]
* app/gui/file-save-dialog.c
* app/gui/gradient-editor.c
* app/gui/gradients-commands.c
* app/gui/image-commands.c
* app/gui/info-dialog.[ch]
* app/gui/layer-select.c
* app/gui/layers-commands.c
* app/gui/menus.c
* app/gui/offset-dialog.c
* app/gui/palette-editor.c
* app/gui/palettes-commands.c
* app/gui/patterns-commands.c
* app/gui/preferences-dialog.c
* app/gui/resize-dialog.[ch]
* app/gui/splash.c
* app/gui/tips-dialog.c
* app/gui/tool-options-dialog.c
* app/gui/toolbox.c
* app/gui/tools-commands.c
* libgimp/gimpbrushmenu.c
* libgimp/gimpmenu.c
* libgimp/gimppatternmenu.c
* libgimp/gimpui.c
* libgimpbase/gimpenv.c: tons and tons of changes like "const
gchar*", switch from GdkDeviceInfo to GdkDevice (very incomplete
and currently disables), lots of s/gtk_signal/g_signal/,
removal/replacement of deprecated stuff,
s/GtkSignalFunc/GCallback/ and lots of small changes and fixes
while I was on it, zillions of warnings left...
* modules/Makefile.am: disabled the water color selector
temporarily (XInput issues).
* plug-ins/Makefile.am
* plug-ins/common/.cvsignore
* plug-ins/common/Makefile.am
* plug-ins/common/plugin-defs.pl: simply excluded all plug-ins
which did not build (including Script-Fu). They are trivial to
fix.
2001-07-08 Michael Natterer <mitch@gimp.org>
* app/disp_callbacks.c: the active_tool may change in the middle
of gdisplay_canvas_events(), so re-get it after using it for
cursor_update.
* app/base/boundary.c: made some global variables local.
* app/core/gimpdrawable.c: don't call gimp_drawable_set_visible()
in gimp_drawable_configure() because we don't want signal
emissions while configuring the drawable.
* app/gui/Makefile.am
* app/gui/brushes-commands.[ch]
* app/gui/data-commands.[ch]
* app/gui/gradients-commands.[ch]
* app/gui/palettes-commands.[ch]
* app/gui/patterns-commands.[ch]: new files for new new item
factories' callbacks.
* app/gui/menus.[ch]: added context menus for brushes, patterns, ...
* app/gui/gradient-editor.c
* app/gui/palette-editor.c: removed the "Save as POV", "Import
Palette" and "Merge Palattes" buttons as they are item factory
callbacks now.
* app/widgets/gimpbrushfactoryview.[ch]
* app/widgets/gimpbufferview.[ch]
* app/widgets/gimpcontainereditor.[ch]
* app/widgets/gimpdatafactoryview.[ch]: pass a
"GimpContainerContextFunc" pointer to all GimpContainerEditor
subclasses' constructors. Use the function to show the context
menu.
* app/widgets/gimpcontainergridview.c: dispatch the previews'
"context" signal.
* app/widgets/gimppreview.[ch]: new signal "context" which is
emitted on right-click.
* app/gui/brush-select.c
* app/gui/dialogs-constructors.c
* app/gui/gradient-select.c
* app/gui/layers-commands.c
* app/gui/palette-select.c
* app/gui/pattern-select.c
* app/gui/test-commands.c: changed accordingly.
2001-07-05 Michael Natterer <mitch@gimp.org>
* app/core/gimp.[ch]: renamed gimp_initialize() to gimp_restore()
because it loads all kinds of data. Added gimp_shutdown() to save
the data. Added the global parasite list.
* app/apptypes.h: removed ParasiteList.
* app/core/core-types.h: added GimpParasiteList.
* app/gimpparasite.[ch]: removed the global parasite list.
* app/parasitelist.[ch]: s/ParasiteList/GimpParasiteList/
s/parasite_list_*/gimp_patasite_list_*/
* app/widgets/gimpdatafactoryview.c: don't save the data in
gimp_data-factory_data_free().
* app/app_procs.c
* app/gimprc.c
* app/undo.c
* app/core/gimpchannel.c
* app/core/gimpdatafactory.c
* app/core/gimpdrawable.[ch]
* app/core/gimpimage-duplicate.c
* app/core/gimpimage.[ch]
* app/core/gimplayer.c
* app/pdb/brushes_cmds.c
* app/pdb/parasite_cmds.c
* app/xcf/xcf-save.c
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/parasite.pdb: changed accordingly.
2001-06-18 Michael Natterer <mitch@gimp.org>
* app/nav_window.[ch]: major cleanup. After being finished, I
decided that it needs to be factored out to a widget (see below),
so like 90% of this file will go away soon.
* app/apptypes.h: added opaque NavigationDialog typedef.
* app/gdisplay.[ch]: Added gdisplay_selection_visibility() which
is called from gdisplays_selection_visibility(). Capitalized the
SelectionControl enum values. Cleaned up the GDisplay struct and
it's initialisation while i was on it.
* app/gimage.c: gimage_size_changed_handler(): removed stuff which
is now done by GimpImage itself.
* app/scale.c
* app/scroll.c: also update the navigation popup, not only the
dialog.
* app/selection.[ch]: major indentation & cleanup attack. Maybe
found the "Selection vanishes" bug (the timeout id was assinged to
a gint, not a _guint_).
* app/undo.c: s/gimp_image_size_changed/gimp_viweable_size_changed/
* app/core/gimpdrawable.c: invalidate the image's preview from our
"invalidate_preview" implementation. This means that the image's
preview is invalidated way too often currently, which cries for
some general freeze/thaw mechanism on the GimpViewable level.
(Note that previews are rendered in the idle loop, so this is not
really a major performance impact, it's just ugly).
* app/core/gimpimage.[ch]: removed the "size_changed" signal...
* app/core/gimpviewable.[ch]: ...and added it here.
* app/core/gimplayer.c: invalidate_preview(): always chain up,
also if it's a floating selection.
* app/gui/info-dialog.[ch]
* app/gui/info-window.c: minor cleanups.
* app/gui/preferences-dialog.c: no need to invalidate the image
after we have invalidated all it's layers.
* app/core/gimpimage-mask.c
* app/gui/commands.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpinktool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c: capitalized the SelectionCommand enum
values.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpnavigationpreview.[ch]: new widget.
* app/widgets/gimppreview.[ch]: added a non-working
non-dot-for-dot mode. Added xres/yres params to the
gimp_preview_calc_size() helper function.
Cache the "size" value which was passed to the simple function
variants (gimp_preview_new() and gimp_preview_set_size()) so we
can re-calculate the preview's extents on the underlying
viewable's "size_changed" signal and on gimp_preview_set_viewable().
* app/widgets/gimpdrawablepreview.c
* app/widgets/gimpimagepreview.c: changed accordingly.
2001-05-24 Michael Natterer <mitch@gimp.org>
* config.guess
* config.sub: new versions from CVS (at least that's what my
debian package says...)
* app/Makefile.am
* app/gimppreviewcache.[ch]: removed.
* app/core/Makefile.am
* app/core/gimppreviewcache.c: added.
* app/core/gimpdrawable.c: reordered #includes
* app/apptypes.h: make ImageMap a proper opaque typedef, not
simply a gpointer.
* app/image_map.[ch]: changed accordingly. cleanup.
* app/tools/color_balance.h
* app/tools/curves.h
* app/tools/gimptool.c
* app/tools/histogram_tool.h
* app/tools/hue_saturation.h
* app/tools/threshold.h: changed here too.
* libgimpbase/gimpbasetypes.h: /*< skip >*/ GIMP_UNIT_PERCENT as
it's a UI convenience thing and no unit.
* plug-ins/script-fu/script-fu-constants.c
* tools/pdbgen/enums.pl: regenerated.
* libgimpwidgets/gimpbutton.c: maybe this change makes GimpButton
behave even more careful when changing GtkButton's private stuff.
2001-05-21 Michael Natterer <mitch@gimp.org>
* Makefile.am
* configure.in
* gimptool-1.4.in: added new directory libgimpbase/
* app/Makefile.am: link against the new lib.
* app/appenums.h: removed the PDB enums which are in
libgimpbase/gimpbasetypes.h now. They are all "Gimp" prefixed.
* app/apptypes.h: #include "libgimpbase/gimpbasetypes.h"
* app/[lots]
* app/core/[of]
* app/gui/[files]
* app/tools/: changed includes and all PDB types.
* app/pdb/*: regenerated.
* libgimp/Makefile.am: don't build libgimpi.a uglyness any more.
* libgimp/gimpenv.[ch]
* libgimp/gimplimits.[hh]
* libgimp/gimpparasite.[ch]
* libgimp/gimpparasiteio.[ch]
* libgimp/gimpprotocol.[ch]
* libgimp/gimpsignal.[ch]
* libgimp/gimpunit.h
* libgimp/gimputils.[ch]
* libgimp/gimpwire.[ch]: removed...
* libgimpbase/*: ...and added here as new library.
* libgimp/gimp.[ch]
* libgimp/gimpdrawable.[ch]
* libgimp/gimpenums.h
* libgimp/gimpimage.[ch]
* libgimp/gimptile.c
* libgimp/gimptypes.h
* libgimp/gimpunit.c: changed accordingly. Added the
gimp_*_add_new_parasite to gimp.[ch], gimpdrawable.[ch] and
gimpimage.[ch].
* libgimpwidgets/gimppatheditor.c
* libgimpwidgets/gimpquerybox.c
* libgimpwidgets/gimpsizeentry.c
* libgimpwidgets/gimpunitmenu.c
* libgimpwidgets/gimpwidgets.c
* libgimpwidgets/gimpwidgetstypes.h: changed includes accordingly.
* plug-ins/*/Makefile.am
* plug-ins/common/mkgen.pl: link against libgimpbase.
* tools/pdbgen/Makefile.am: scan libgimpbase/gimpbasetypes.h, so
the enums are known to pdbgen...
* tools/pdbgen/enumcode.pl: ...but don't write them out to
libgimp/gimpenums.h
* tools/pdbgen/app.pl: include libgimp/gimpbase.h in all *_cmds.c
files. Added GIMP_ to the type names ganerated in app/.
* tools/pdbgen/enums.pl: regenerated.
* tools/pdbgen/pdb.pl
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/procedural_db.pdb
* tools/pdbgen/pdb/unit.pdb: changed includes.