Orientation is now handled by core code, just next to profile conversion
handling.
One of the first consequence is that we don't need to have a non-GUI
version gimp_image_metadata_load_finish_batch() in libgimp, next to a
GUI version of the gimp_image_metadata_load_finish() function in
libgimpui. This makes for simpler API.
Also a plug-in which wishes to get access to the rotation dialog
provided by GIMP without loading ligimpui/GTK+ (for whatever reason)
will still have the feature.
The main advantage is that the "Don't ask me again" feature is now
handled by a settings in `Preferences > Image Import & Export` as the
"Metadata rotation policy". Until now it was saved as a global parasite,
which made it virtually non-editable once you checked it once (no easy
way to edit parasites except by scripts). So say you refused the
rotation once while checking "Don't ask again", and GIMP will forever
discard the rotation metadata without giving you a sane way to change
your mind. Of course, I could have passed the settings to plug-ins
through the PDB, but I find it a lot better to simply handle such
settings core-side.
The dialog code is basically the same as an app/dialogs/ as it was in
libgimp, with the minor improvement that it now takes the scale ratio
into account (basically the maximum thumbnail size will be bigger on
higher density displays).
Only downside of the move to the core is that this rotation dialog is
raised only when you open an image from the core, not as a PDB call. So
a plug-in which makes say a "file-jpeg-load" PDB call, even in
INTERACTIVE run mode, won't have rotation processed. Note that this was
already the same for embedded color profile conversion. This can be
wanted or not. Anyway some additional libgimp calls might be of interest
to explicitly call the core dialogs.
Add a new Offset filter tool, as a front-end to gimp:offset. The
tool replaces, and provides the same interface as, the drawable-
offset dialog, while also providing live preview and on-canvas
interaction.
Note that we don't simply use a custom propgui constructor for
gimp:offset, since we need a little more control.
This commit completely removes the "Edit -> Fade..." feature,
because...
- The main reason is that "fade" requires us to keep two buffers,
instead of one, for each fadeable undo step, doubling (or worse,
since the extra buffer might have higher precision than the
drawable) the space consumed by these steps. This has notable
impact when editing large images. This overhead is incurred even
when not actually using "fade", and since it seems to be very
rarely used, this is too wasteful.
- "Fade" is broken in 2.10: when comitting a filter, we copy the
cached parts of the result into the apply buffer. However, the
result cache sits after the mode node, while the apply buffer
should contain the result of the filter *before* the mode node,
which can lead to wrong results in the general case.
- The same behavior can be trivially achieved "manually", by
duplicating the layer, editing the duplicate, and changing its
opacity/mode.
- If we really want this feature, now that most filters are GEGL
ops, it makes more sense to just add opacity/mode options to the
filter tool, instead of having this be a separate step.
This is using GTK+3 widgets, so I make sure to keep it well separated
from core code. The gimp-2-10 version will have to rework the GUI, but
the GtkListBox and GtkSwitch are nice and make things easier, so it is
worth using them here).
Introduce item-options-dialog.[ch] which abstracts this away and use
it from the layer, channel, vectors options dialogs. This is all
pretty ugly but better than duplicating that code three times. The
vector-options-dialog is now completely pointless but I kept it anyway
for now, let's see what unique path options we come up with.
which are essentially a copy of the stroking GUI. We now can fill the
exact shape outlined by stroking selections and paths. Suggestions for
the menu item labels are welcome.
Add gimp_image_import_color_profile(), a GUI vtable entry
query_profile_policy() and a new dialog which returns the profile
policy and the profile to convert to. Get rid of the wrapper that
calls the lcms plug-in for that dialog, the plug-in is now completely
unused.
This commit doesn't add any new features, it's just the former lcms
plug-in dialog implemented in app/ (except the little fix that it is
now aware of linear vs. gamma images).
Uncomment and implement the menu items and actions to invoke the
dialog. This new code also does the (alomst) right thing to linear
images, unlike the lcms plug-in.
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-05-21 Sven Neumann <sven@gimp.org>
Add Desaturate as an image-map tool with live preview (bug #533808):
* app/gegl/Makefile.am
* app/gegl/gegl-types.h
* app/gegl/gimpdesaturateconfig.[ch]: added config object for the
desaturate point filter.
* app/gegl/gimpoperationdesaturate.[ch]: derive from
GimpOperationPointFilter. Unrolled the inner loop.
* app/core/gimpdrawable-desaturate.c: changed accordingly.
* app/tools/Makefile.am
* app/tools/gimpdesaturatetool.[ch]: added desaturate as an
imagemap tool. So far only the GEGL code path is implemented.
* app/tools/gimp-tools.c: register the new tool.
* app/dialogs/dialogs.c: register the new tool dialog.
* app/dialogs/Makefile.am
* app/dialogs/desaturate-dialog.[ch]: removed the desaturate dialog.
* app/actions/drawable-actions.c
* app/actions/drawable-commands.[ch]: removed action
"drawable-desaturate".
* app/widgets/gimphelp-ids.h: changed help IDs accordingly.
* menus/image-menu.xml.in: replaced "drawable-desaturate" with
"tools-desaturate".
* libgimpwidgets/gimpstock.h: added a define for
GIMP_STOCK_TOOL_DESATURATE.
svn path=/trunk/; revision=25726
2007-06-25 Sven Neumann <sven@gimp.org>
* configure.in: removed extra check for gthread and fold it into
the GLIB and GTK checks.
* */Makefile.am: changed accordingly.
* app/main.c (main): always call g_thread_init().
svn path=/trunk/; revision=22832
2007-06-07 Sven Neumann <sven@gimp.org>
* app/dialogs/Makefile.am
* menus/Makefile.am: when calling xsltproc, use the stylesheet from
$(srcdir). From the patch attached to bug #444960.
svn path=/trunk/; revision=22733
2007-06-07 Sven Neumann <sven@gimp.org>
* app/dialogs/Makefile.am: bail out with an error if xsltproc is
missing and authors.h needs to be regenerated.
* libgimpwidgets/Makefile.am: let gimpwidgets-private.lo, not the
C file, depend on gimp-wilber-pixbufs.h. From the patch attached to
bug #444960.
svn path=/trunk/; revision=22732
2007-02-20 Sven Neumann <sven@gimp.org>
* app/dialogs/Makefile.am: let authors.h depend on authors.xsl.
* app/dialogs/authors.h: removed from repository, it's
generated.
* app/dialogs/authors.xsl: only include contributors that have
contributed to GIMP 2.x. We might want to limit this even
further.
svn path=/trunk/; revision=21956
2006-10-21 Michael Natterer <mitch@gimp.org>
Added "Edit -> Fade" which allows to modify the paint mode and
opacity of the last drawable operation (fill, plugins etc.).
Started from a patch by Bill Skaggs. Fixes bug #170707.
* app/base/base-enums.[ch] (enum GimpLayerModeEffects): register
the values REPLACE_MODE, ERASE_MODE and ANTI_ERASE_MODE with
the type system.
* app/widgets/gimppropwidgets.[ch]
* app/widgets/gimpwidgets-constructors.[ch]: added "gboolean
with_replace_modes" to the paint mode menu constructors.
* app/tools/gimppaintoptions-gui.c
* app/widgets/gimpbrushselect.c
* app/widgets/gimplayertreeview.c: pass with_replace_modes = FALSE.
* app/core/gimpdrawableundo.[ch]: added members which keep tiles,
paint mode and opacity of the pasted pixels.
* app/core/gimpimage-undo.[ch] (gimp_image_undo_get_fadeable):
returns a GimpUndo suitable for a fade operation, or NULL.
* app/core/gimp-edit.[ch] (gimp_edit_fade): implements the actual
fade by undoing the last operation and then re-applying the pixels
with different paint mode and opacity.
* app/core/gimpdrawable-combine.c: store the pasted pixels in
the GimpDrawableUndo.
* app/actions/edit-actions.c
* app/actions/edit-commands.[ch]: action and callback for fade.
* app/dialogs/Makefile.am
* app/dialogs/fade-dialog.[ch]: the fade dialog.
* app/widgets/gimphelp-ids.h: the fade help ID.
* menus/image-menu.xml.in: added a menu entry in "Edit".
2006-03-31 Sven Neumann <sven@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/dialogs-types.h
* app/dialogs/dialogs.c
* app/dialogs/info-dialog.[ch]: good bye InfoDialog.
* app/tools/gimpperspectivetool.[ch]
* app/tools/gimprotatetool.[ch]
* app/tools/gimpsheartool.[ch]
* app/tools/gimptransformtool.[ch]: use GimpToolDialog instead of
InfoDialog and add the widgets manually.
* app/tools/gimpscaletool.c: commented out use of InfoDialog. This
tools still needs to be ported to GimpToolDialog.
2005-09-30 Sven Neumann <sven@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/keyboard-shortcuts-dialog.[ch]
* app/dialogs/preferences-dialog.c
* app/widgets/gimphelp-ids.h: moved Keyboard Shortcuts dialog into
it's own file.
2005-04-16 Sven Neumann <sven@gimp.org>
Applied a patch (with minor modifications) from Karine Delvare
that makes it possible to choose between various ways to remove
color from a drawable (bug #155507):
* libgimpbase/gimpbaseenums.h: added new enum GimpDesaturateMode.
* libgimpbase/gimpbaseenums.c
* libgimp/gimpenums.c.tail
* plug-ins/pygimp/gimpenums.py
* tools/pdbgen/enums.pl: regenerated.
* app/core/gimpdrawable-desaturate.[ch]: implement other formulas
to remove colors from a drawable.
* tools/pdbgen/pdb/color.pdb: let gimp_desaturate() call
gimp_drawable_desaturate() with GIMP_DESATURATE_LIGHTNESS so that
it behaves like it always did.
* app/pdb/color_cmds.c: regenerated.
* app/dialogs/Makefile.am
* app/dialogs/desaturate-dialog.[ch]: new files that define a simple
dialog to choose a mode for desaturation.
* app/actions/drawable-actions.[ch]: use the new dialog.
2005-04-05 Michael Natterer <mitch@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/info-window.[ch]: removed.
* app/actions/view-actions.c
* app/actions/view-commands.[ch]
* menus/image-menu.xml.in: removed its action and menu stuff.
* app/display/gimpdisplayshell-cursor.c
* app/display/gimpdisplayshell-title.c
* app/display/gimpdisplayshell.[ch]: removed info window stuff.
This was the last display -> dialogs dependency.
* app/dialogs/dialogs.c: added ugly hack that references
info_dialog. Otherwise the still existing tools -> dialogs
dependency breaks the build.
2005-04-05 Michael Natterer <mitch@gimp.org>
More unfinished replacement for the info window:
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpimagepropview.[ch]: new widget showing an image's
size, resolution, mode, memsize etc.
* app/dialogs/Makefile.am
* app/dialogs/image-properties-dialog.[ch]: a dialog keeping the
widget.
* app/widgets/gimphelp-ids.h: a help ID for the dialog.
* app/actions/image-actions.c
* app/actions/image-commands.[ch]
* menus/image-menu.xml.in: action and menu entry for the dialog.
2004-12-11 Sven Neumann <sven@gimp.org>
* configure.in: set version to 2.2.0.
* tools/Makefile.am
* tools/authorsgen/Makefile.am
* tools/authorsgen/authorsgen.pl
* tools/authorsgen/contributors: removed authorsgen, a perl script
that used to be used to create AUTHORS and authors.h.
* Makefile.am
* authors.dtd
* authors.xml: added a simple XML file that lists authors and
contributors and a DTD to validate it.
* authors.xsl: a stylesheet to generate AUTHORS from authors.xml.
* app/dialogs/Makefile.am
* app/dialogs/authors.xsl: a stylesheet to generate authors.h from
authors.xml.
* app/dialogs/authors.h: regenerated.
* app/dialogs/about-dialog.c: added a const modifier.
2004-09-21 Hans Breuer <hans@breuer.org>
* app/dialogs/makefile.msc : [new file]
app/dialogs/Makefile.am : added to EXTRA_DIST
* **/makefile.msc app/gimpcore.def : updated
* app/gimp.rc : let wilber be first
* app/widgets/gimppropwidgets.c : msvc6 can't cast uint64 either
* libgimpbase/gimpwin32-io.h : make up recent loss of ftruncate in GLib
* libgimpthumbnail/gimpthumbnail.c : <process.h> for getpid() on win32
* plug-ins/helpbrowser/dialog.c : include gimpwin32-io.h
* plug-ins/script-fu/siodwrapper.c plug-ins/script-fu/scrip-fu.c : there
is no script-fu-server on win32
2004-11-13 Sven Neumann <sven@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/print-size-dialog.[ch]: new files for the Print Size
dialog that is still missing. Still work in progress...
* app/actions/image-actions.c
* app/actions/image-commands.[ch]
* app/widgets/gimphelp-ids.h
* menus/image-menu.xml.in: integrate the new dialog.
2004-10-27 Sven Neumann <sven@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/image-scale-dialog.[ch]: a wrapper around the scale
dialog that takes care verifying the user input and optionally
asking for confirmation. Most of this moved out of image-commands.c.
* app/actions/image-commands.c: use the new image scale dialog
even though it doesn't allow to edit the resolution yet. That's a
temporary regression that will get fixed soon.
* app/actions/layers-commands.c: cosmetics.
* app/dialogs/scale-dialog.c (scale_dialog_reset): also reset the
resolution.
* app/widgets/gimpsizebox.c: fixed cut'n'paste error.
2004-10-24 Michael Natterer <mitch@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/vectors-export-dialog.[ch]
* app/dialogs/vectors-import-dialog.[ch]: new files.
* app/actions/vectors-commands.c: use the new dialogs and remember
their last values.
2004-10-23 Michael Natterer <mitch@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/image-merge-layers-dialog.[ch]: one more dialog split
out of actions/.
* app/actions/image-commands.c: removed it here. Some cleanup.
2004-10-23 Michael Natterer <mitch@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/layer-add-mask-dialog.[ch]: one more dialog split
out of actions/.
* app/actions/layers-commands.c: removed it here. Some cleanup.
2004-10-23 Michael Natterer <mitch@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/layer-options-dialog.[ch]: the new/edit layer dialog.
* app/actions/layers-commands.c: use it here.
2004-10-22 Michael Natterer <mitch@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/template-options-dialog.[ch]: the new/edit template
dialog.
* app/actions/templates-commands.c: removed the code here and use
template_options_dialog_new(). Removed utility functions. Some
cleanup.
2004-10-19 Michael Natterer <mitch@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/vectors-options-dialog.[ch]: one more dialog split
out of actions/.
* app/actions/vectors-commands.c: removed it here. Merged more
utility functions into their only callers.
* app/actions/dockable-commands.c
* app/actions/edit-commands.c
* app/actions/file-commands.c
* app/actions/palettes-commands.c
* app/actions/tool-options-commands.c
* app/actions/view-commands.c: renamed "qbox" and "query_box"
variables to "dialog".
2004-10-19 Michael Natterer <mitch@gimp.org>
* app/dialogs/Makefile.am
* app/dialogs/channel-options-dialog.[ch]: new files implementing
the channel options dialog with a horrid number of 13 construction
parameters. Still better than having the same code twice, only
differing in strings used...
* app/actions/channels-commands.c
* app/actions/qmask-commands.c: removed the dialog code here and
use channel_options_dialog_new().
2004-10-12 Sven Neumann <sven@gimp.org>
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpsizebox.[ch]: added new widget GimpSizeBox.
* app/widgets/gimppropwidgets.c: the order of setting the X and Y
properties does matter.
* app/dialogs/Makefile.am
* app/dialogs/scale-dialog.[ch]: added first version of a new
Scale dialog in an attempt to address bug #151022.
* app/actions/layers-commands.c: use the new scale dialog.