gimp r24784 - in trunk: . app/core app/pdb tools/pdbgen/pdb
- From: mitch svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r24784 - in trunk: . app/core app/pdb tools/pdbgen/pdb
- Date: Mon, 4 Feb 2008 11:26:24 +0000 (GMT)
Author: mitch
Date: Mon Feb 4 11:26:23 2008
New Revision: 24784
URL: http://svn.gnome.org/viewvc/gimp?rev=24784&view=rev
Log:
2008-02-04 Michael Natterer <mitch gimp org>
* app/core/Makefile.am
* app/core/gimpdrawable-brightness-contrast.[ch]
* app/core/gimpdrawable-color-balance.[ch]
* app/core/gimpdrawable-colorize.[ch]
* app/core/gimpdrawable-curves.[ch]
* app/core/gimpdrawable-hue-saturation.[ch]
* app/core/gimpdrawable-posterize.[ch]
* app/core/gimpdrawable-threshold.[ch]: new files containing all
the code that was in pdb/color_cmds.c. Cleaned up and GEGL-enabled
everyting.
* tools/pdbgen/pdb/color.pdb: remove almost all code and simply call
the new functions.
* app/pdb/color_cmds.c: regenerated.
Added:
trunk/app/core/gimpdrawable-brightness-contrast.c
trunk/app/core/gimpdrawable-brightness-contrast.h
trunk/app/core/gimpdrawable-color-balance.c
trunk/app/core/gimpdrawable-color-balance.h
trunk/app/core/gimpdrawable-colorize.c
trunk/app/core/gimpdrawable-colorize.h
trunk/app/core/gimpdrawable-curves.c
trunk/app/core/gimpdrawable-curves.h
trunk/app/core/gimpdrawable-hue-saturation.c
trunk/app/core/gimpdrawable-hue-saturation.h
trunk/app/core/gimpdrawable-posterize.c
trunk/app/core/gimpdrawable-posterize.h
trunk/app/core/gimpdrawable-threshold.c
trunk/app/core/gimpdrawable-threshold.h
Modified:
trunk/ChangeLog
trunk/app/core/Makefile.am
trunk/app/pdb/color_cmds.c
trunk/tools/pdbgen/pdb/color.pdb
Modified: trunk/app/core/Makefile.am
==============================================================================
--- trunk/app/core/Makefile.am (original)
+++ trunk/app/core/Makefile.am Mon Feb 4 11:26:23 2008
@@ -18,295 +18,309 @@
noinst_LIBRARIES = libappcore.a
libappcore_a_sources = \
- core-enums.h \
- core-types.h \
- gimp.c \
- gimp.h \
- gimp-contexts.c \
- gimp-contexts.h \
- gimp-documents.c \
- gimp-documents.h \
- gimp-edit.c \
- gimp-edit.h \
- gimp-gradients.c \
- gimp-gradients.h \
- gimp-gui.c \
- gimp-gui.h \
- gimp-modules.c \
- gimp-modules.h \
- gimp-parasites.c \
- gimp-parasites.h \
- gimp-templates.c \
- gimp-templates.h \
- gimp-transform-region.c \
- gimp-transform-region.h \
- gimp-transform-resize.c \
- gimp-transform-resize.h \
- gimp-transform-utils.c \
- gimp-transform-utils.h \
- gimp-units.c \
- gimp-units.h \
- gimp-user-install.c \
- gimp-user-install.h \
- gimp-utils.c \
- gimp-utils.h \
- gimparea.c \
- gimparea.h \
- gimpbrush.c \
- gimpbrush.h \
- gimpbrush-header.h \
- gimpbrush-load.c \
- gimpbrush-load.h \
- gimpbrush-scale.c \
- gimpbrush-scale.h \
- gimpbrushclipboard.c \
- gimpbrushclipboard.h \
- gimpbrushgenerated.c \
- gimpbrushgenerated.h \
- gimpbrushgenerated-load.c \
- gimpbrushgenerated-load.h \
- gimpbrushgenerated-save.c \
- gimpbrushgenerated-save.h \
- gimpbrushpipe.c \
- gimpbrushpipe.h \
- gimpbrushpipe-load.c \
- gimpbrushpipe-load.h \
- gimpbuffer.c \
- gimpbuffer.h \
- gimpchannel.c \
- gimpchannel.h \
- gimpchannel-combine.c \
- gimpchannel-combine.h \
- gimpchannel-select.c \
- gimpchannel-select.h \
- gimpchannelpropundo.c \
- gimpchannelpropundo.h \
- gimpchannelundo.c \
- gimpchannelundo.h \
- gimpcontainer.c \
- gimpcontainer.h \
- gimpcontainer-filter.c \
- gimpcontainer-filter.h \
- gimpcontext.c \
- gimpcontext.h \
- gimpcoords.c \
- gimpcoords.h \
- gimpcurve.c \
- gimpcurve.h \
- gimpcurve-load.c \
- gimpcurve-load.h \
- gimpcurve-save.c \
- gimpcurve-save.h \
- gimpdashpattern.c \
- gimpdashpattern.h \
- gimpdata.c \
- gimpdata.h \
- gimpdatafactory.c \
- gimpdatafactory.h \
- gimpdocumentlist.c \
- gimpdocumentlist.h \
- gimpdrawable.c \
- gimpdrawable.h \
- gimpdrawable-blend.c \
- gimpdrawable-blend.h \
- gimpdrawable-bucket-fill.c \
- gimpdrawable-bucket-fill.h \
- gimpdrawable-combine.c \
- gimpdrawable-combine.h \
- gimpdrawable-convert.c \
- gimpdrawable-convert.h \
- gimpdrawable-desaturate.c \
- gimpdrawable-desaturate.h \
- gimpdrawable-equalize.c \
- gimpdrawable-equalize.h \
- gimpdrawable-foreground-extract.c\
- gimpdrawable-foreground-extract.h\
- gimpdrawable-histogram.c \
- gimpdrawable-histogram.h \
- gimpdrawable-invert.c \
- gimpdrawable-invert.h \
- gimpdrawable-levels.c \
- gimpdrawable-levels.h \
- gimpdrawable-offset.c \
- gimpdrawable-offset.h \
- gimpdrawable-operation.c \
- gimpdrawable-operation.h \
- gimpdrawable-preview.c \
- gimpdrawable-preview.h \
- gimpdrawable-stroke.c \
- gimpdrawable-stroke.h \
- gimpdrawable-transform.c \
- gimpdrawable-transform.h \
- gimpdrawablemodundo.c \
- gimpdrawablemodundo.h \
- gimpdrawableundo.c \
- gimpdrawableundo.h \
- gimpfloatingselundo.c \
- gimpfloatingselundo.h \
- gimpgradient.c \
- gimpgradient.h \
- gimpgradient-load.c \
- gimpgradient-load.h \
- gimpgradient-save.c \
- gimpgradient-save.h \
- gimpgrid.c \
- gimpgrid.h \
- gimpguide.c \
- gimpguide.h \
- gimpguideundo.c \
- gimpguideundo.h \
- gimpimage.c \
- gimpimage.h \
- gimpimage-arrange.c \
- gimpimage-arrange.h \
- gimpimage-colorhash.c \
- gimpimage-colorhash.h \
- gimpimage-colormap.c \
- gimpimage-colormap.h \
- gimpimage-contiguous-region.c \
- gimpimage-contiguous-region.h \
- gimpimage-convert.c \
- gimpimage-convert.h \
- gimpimage-convert-fsdither.h \
- gimpimage-convert-data.h \
- gimpimage-crop.c \
- gimpimage-crop.h \
- gimpimage-duplicate.c \
- gimpimage-duplicate.h \
- gimpimage-flip.c \
- gimpimage-flip.h \
- gimpimage-grid.h \
- gimpimage-grid.c \
- gimpimage-guides.c \
- gimpimage-guides.h \
- gimpimage-item-list.c \
- gimpimage-item-list.h \
- gimpimage-merge.c \
- gimpimage-merge.h \
- gimpimage-new.c \
- gimpimage-new.h \
- gimpimage-pick-color.c \
- gimpimage-pick-color.h \
- gimpimage-preview.c \
- gimpimage-preview.h \
- gimpimage-quick-mask.c \
- gimpimage-quick-mask.h \
- gimpimage-resize.c \
- gimpimage-resize.h \
- gimpimage-rotate.c \
- gimpimage-rotate.h \
- gimpimage-sample-points.c \
- gimpimage-sample-points.h \
- gimpimage-scale.c \
- gimpimage-scale.h \
- gimpimage-snap.c \
- gimpimage-snap.h \
- gimpimage-undo.c \
- gimpimage-undo.h \
- gimpimage-undo-push.c \
- gimpimage-undo-push.h \
- gimpimageundo.c \
- gimpimageundo.h \
- gimpimagefile.c \
- gimpimagefile.h \
- gimpimagemap.c \
- gimpimagemap.h \
- gimpitem.c \
- gimpitem.h \
- gimpitem-linked.c \
- gimpitem-linked.h \
- gimpitem-preview.c \
- gimpitem-preview.h \
- gimpitempropundo.c \
- gimpitempropundo.h \
- gimpitemundo.c \
- gimpitemundo.h \
- gimplayer.c \
- gimplayer.h \
- gimplayer-floating-sel.c \
- gimplayer-floating-sel.h \
- gimplayermask.c \
- gimplayermask.h \
- gimplayermaskpropundo.c \
- gimplayermaskpropundo.h \
- gimplayermaskundo.c \
- gimplayermaskundo.h \
- gimplayerpropundo.c \
- gimplayerpropundo.h \
- gimplayerundo.c \
- gimplayerundo.h \
- gimplist.c \
- gimplist.h \
- gimpmaskundo.c \
- gimpmaskundo.h \
- gimpobject.c \
- gimpobject.h \
- gimppaintinfo.c \
- gimppaintinfo.h \
- gimppattern.c \
- gimppattern.h \
- gimppattern-header.h \
- gimppattern-load.c \
- gimppattern-load.h \
- gimppatternclipboard.c \
- gimppatternclipboard.h \
- gimppalette.c \
- gimppalette.h \
- gimppalette-import.c \
- gimppalette-import.h \
- gimppalette-load.c \
- gimppalette-load.h \
- gimppalette-save.c \
- gimppalette-save.h \
- gimpparamspecs.c \
- gimpparamspecs.h \
- gimpparamspecs-desc.c \
- gimpparamspecs-desc.h \
- gimpparasitelist.c \
- gimpparasitelist.h \
- gimppdbprogress.c \
- gimppdbprogress.h \
- gimppickable.c \
- gimppickable.h \
- gimppreviewcache.c \
- gimppreviewcache.h \
- gimpprogress.c \
- gimpprogress.h \
- gimpprojection.c \
- gimpprojection.h \
- gimpprojection-construct.c \
- gimpprojection-construct.h \
- gimpsamplepoint.c \
- gimpsamplepoint.h \
- gimpsamplepointundo.c \
- gimpsamplepointundo.h \
- gimpscanconvert.c \
- gimpscanconvert.h \
- gimpselection.c \
- gimpselection.h \
- gimpstrokedesc.c \
- gimpstrokedesc.h \
- gimpstrokeoptions.c \
- gimpstrokeoptions.h \
- gimpsubprogress.c \
- gimpsubprogress.h \
- gimptagged.c \
- gimptagged.h \
- gimptemplate.c \
- gimptemplate.h \
- gimptoolinfo.c \
- gimptoolinfo.h \
- gimptooloptions.c \
- gimptooloptions.h \
- gimptoolpresets.c \
- gimptoolpresets.h \
- gimpunit.c \
- gimpunit.h \
- gimpundo.c \
- gimpundo.h \
- gimpundostack.c \
- gimpundostack.h \
- gimpviewable.c \
+ core-enums.h \
+ core-types.h \
+ gimp.c \
+ gimp.h \
+ gimp-contexts.c \
+ gimp-contexts.h \
+ gimp-documents.c \
+ gimp-documents.h \
+ gimp-edit.c \
+ gimp-edit.h \
+ gimp-gradients.c \
+ gimp-gradients.h \
+ gimp-gui.c \
+ gimp-gui.h \
+ gimp-modules.c \
+ gimp-modules.h \
+ gimp-parasites.c \
+ gimp-parasites.h \
+ gimp-templates.c \
+ gimp-templates.h \
+ gimp-transform-region.c \
+ gimp-transform-region.h \
+ gimp-transform-resize.c \
+ gimp-transform-resize.h \
+ gimp-transform-utils.c \
+ gimp-transform-utils.h \
+ gimp-units.c \
+ gimp-units.h \
+ gimp-user-install.c \
+ gimp-user-install.h \
+ gimp-utils.c \
+ gimp-utils.h \
+ gimparea.c \
+ gimparea.h \
+ gimpbrush.c \
+ gimpbrush.h \
+ gimpbrush-header.h \
+ gimpbrush-load.c \
+ gimpbrush-load.h \
+ gimpbrush-scale.c \
+ gimpbrush-scale.h \
+ gimpbrushclipboard.c \
+ gimpbrushclipboard.h \
+ gimpbrushgenerated.c \
+ gimpbrushgenerated.h \
+ gimpbrushgenerated-load.c \
+ gimpbrushgenerated-load.h \
+ gimpbrushgenerated-save.c \
+ gimpbrushgenerated-save.h \
+ gimpbrushpipe.c \
+ gimpbrushpipe.h \
+ gimpbrushpipe-load.c \
+ gimpbrushpipe-load.h \
+ gimpbuffer.c \
+ gimpbuffer.h \
+ gimpchannel.c \
+ gimpchannel.h \
+ gimpchannel-combine.c \
+ gimpchannel-combine.h \
+ gimpchannel-select.c \
+ gimpchannel-select.h \
+ gimpchannelpropundo.c \
+ gimpchannelpropundo.h \
+ gimpchannelundo.c \
+ gimpchannelundo.h \
+ gimpcontainer.c \
+ gimpcontainer.h \
+ gimpcontainer-filter.c \
+ gimpcontainer-filter.h \
+ gimpcontext.c \
+ gimpcontext.h \
+ gimpcoords.c \
+ gimpcoords.h \
+ gimpcurve.c \
+ gimpcurve.h \
+ gimpcurve-load.c \
+ gimpcurve-load.h \
+ gimpcurve-save.c \
+ gimpcurve-save.h \
+ gimpdashpattern.c \
+ gimpdashpattern.h \
+ gimpdata.c \
+ gimpdata.h \
+ gimpdatafactory.c \
+ gimpdatafactory.h \
+ gimpdocumentlist.c \
+ gimpdocumentlist.h \
+ gimpdrawable.c \
+ gimpdrawable.h \
+ gimpdrawable-blend.c \
+ gimpdrawable-blend.h \
+ gimpdrawable-brightness-contrast.c \
+ gimpdrawable-brightness-contrast.h \
+ gimpdrawable-bucket-fill.c \
+ gimpdrawable-bucket-fill.h \
+ gimpdrawable-color-balance.c \
+ gimpdrawable-color-balance.h \
+ gimpdrawable-colorize.c \
+ gimpdrawable-colorize.h \
+ gimpdrawable-combine.c \
+ gimpdrawable-combine.h \
+ gimpdrawable-convert.c \
+ gimpdrawable-convert.h \
+ gimpdrawable-curves.c \
+ gimpdrawable-curves.h \
+ gimpdrawable-desaturate.c \
+ gimpdrawable-desaturate.h \
+ gimpdrawable-equalize.c \
+ gimpdrawable-equalize.h \
+ gimpdrawable-foreground-extract.c \
+ gimpdrawable-foreground-extract.h \
+ gimpdrawable-histogram.c \
+ gimpdrawable-histogram.h \
+ gimpdrawable-hue-saturation.c \
+ gimpdrawable-hue-saturation.h \
+ gimpdrawable-invert.c \
+ gimpdrawable-invert.h \
+ gimpdrawable-levels.c \
+ gimpdrawable-levels.h \
+ gimpdrawable-offset.c \
+ gimpdrawable-offset.h \
+ gimpdrawable-operation.c \
+ gimpdrawable-operation.h \
+ gimpdrawable-posterize.c \
+ gimpdrawable-posterize.h \
+ gimpdrawable-preview.c \
+ gimpdrawable-preview.h \
+ gimpdrawable-stroke.c \
+ gimpdrawable-stroke.h \
+ gimpdrawable-threshold.c \
+ gimpdrawable-threshold.h \
+ gimpdrawable-transform.c \
+ gimpdrawable-transform.h \
+ gimpdrawablemodundo.c \
+ gimpdrawablemodundo.h \
+ gimpdrawableundo.c \
+ gimpdrawableundo.h \
+ gimpfloatingselundo.c \
+ gimpfloatingselundo.h \
+ gimpgradient.c \
+ gimpgradient.h \
+ gimpgradient-load.c \
+ gimpgradient-load.h \
+ gimpgradient-save.c \
+ gimpgradient-save.h \
+ gimpgrid.c \
+ gimpgrid.h \
+ gimpguide.c \
+ gimpguide.h \
+ gimpguideundo.c \
+ gimpguideundo.h \
+ gimpimage.c \
+ gimpimage.h \
+ gimpimage-arrange.c \
+ gimpimage-arrange.h \
+ gimpimage-colorhash.c \
+ gimpimage-colorhash.h \
+ gimpimage-colormap.c \
+ gimpimage-colormap.h \
+ gimpimage-contiguous-region.c \
+ gimpimage-contiguous-region.h \
+ gimpimage-convert.c \
+ gimpimage-convert.h \
+ gimpimage-convert-fsdither.h \
+ gimpimage-convert-data.h \
+ gimpimage-crop.c \
+ gimpimage-crop.h \
+ gimpimage-duplicate.c \
+ gimpimage-duplicate.h \
+ gimpimage-flip.c \
+ gimpimage-flip.h \
+ gimpimage-grid.h \
+ gimpimage-grid.c \
+ gimpimage-guides.c \
+ gimpimage-guides.h \
+ gimpimage-item-list.c \
+ gimpimage-item-list.h \
+ gimpimage-merge.c \
+ gimpimage-merge.h \
+ gimpimage-new.c \
+ gimpimage-new.h \
+ gimpimage-pick-color.c \
+ gimpimage-pick-color.h \
+ gimpimage-preview.c \
+ gimpimage-preview.h \
+ gimpimage-quick-mask.c \
+ gimpimage-quick-mask.h \
+ gimpimage-resize.c \
+ gimpimage-resize.h \
+ gimpimage-rotate.c \
+ gimpimage-rotate.h \
+ gimpimage-sample-points.c \
+ gimpimage-sample-points.h \
+ gimpimage-scale.c \
+ gimpimage-scale.h \
+ gimpimage-snap.c \
+ gimpimage-snap.h \
+ gimpimage-undo.c \
+ gimpimage-undo.h \
+ gimpimage-undo-push.c \
+ gimpimage-undo-push.h \
+ gimpimageundo.c \
+ gimpimageundo.h \
+ gimpimagefile.c \
+ gimpimagefile.h \
+ gimpimagemap.c \
+ gimpimagemap.h \
+ gimpitem.c \
+ gimpitem.h \
+ gimpitem-linked.c \
+ gimpitem-linked.h \
+ gimpitem-preview.c \
+ gimpitem-preview.h \
+ gimpitempropundo.c \
+ gimpitempropundo.h \
+ gimpitemundo.c \
+ gimpitemundo.h \
+ gimplayer.c \
+ gimplayer.h \
+ gimplayer-floating-sel.c \
+ gimplayer-floating-sel.h \
+ gimplayermask.c \
+ gimplayermask.h \
+ gimplayermaskpropundo.c \
+ gimplayermaskpropundo.h \
+ gimplayermaskundo.c \
+ gimplayermaskundo.h \
+ gimplayerpropundo.c \
+ gimplayerpropundo.h \
+ gimplayerundo.c \
+ gimplayerundo.h \
+ gimplist.c \
+ gimplist.h \
+ gimpmaskundo.c \
+ gimpmaskundo.h \
+ gimpobject.c \
+ gimpobject.h \
+ gimppaintinfo.c \
+ gimppaintinfo.h \
+ gimppattern.c \
+ gimppattern.h \
+ gimppattern-header.h \
+ gimppattern-load.c \
+ gimppattern-load.h \
+ gimppatternclipboard.c \
+ gimppatternclipboard.h \
+ gimppalette.c \
+ gimppalette.h \
+ gimppalette-import.c \
+ gimppalette-import.h \
+ gimppalette-load.c \
+ gimppalette-load.h \
+ gimppalette-save.c \
+ gimppalette-save.h \
+ gimpparamspecs.c \
+ gimpparamspecs.h \
+ gimpparamspecs-desc.c \
+ gimpparamspecs-desc.h \
+ gimpparasitelist.c \
+ gimpparasitelist.h \
+ gimppdbprogress.c \
+ gimppdbprogress.h \
+ gimppickable.c \
+ gimppickable.h \
+ gimppreviewcache.c \
+ gimppreviewcache.h \
+ gimpprogress.c \
+ gimpprogress.h \
+ gimpprojection.c \
+ gimpprojection.h \
+ gimpprojection-construct.c \
+ gimpprojection-construct.h \
+ gimpsamplepoint.c \
+ gimpsamplepoint.h \
+ gimpsamplepointundo.c \
+ gimpsamplepointundo.h \
+ gimpscanconvert.c \
+ gimpscanconvert.h \
+ gimpselection.c \
+ gimpselection.h \
+ gimpstrokedesc.c \
+ gimpstrokedesc.h \
+ gimpstrokeoptions.c \
+ gimpstrokeoptions.h \
+ gimpsubprogress.c \
+ gimpsubprogress.h \
+ gimptagged.c \
+ gimptagged.h \
+ gimptemplate.c \
+ gimptemplate.h \
+ gimptoolinfo.c \
+ gimptoolinfo.h \
+ gimptooloptions.c \
+ gimptooloptions.h \
+ gimptoolpresets.c \
+ gimptoolpresets.h \
+ gimpunit.c \
+ gimpunit.h \
+ gimpundo.c \
+ gimpundo.h \
+ gimpundostack.c \
+ gimpundostack.h \
+ gimpviewable.c \
gimpviewable.h
libappcore_a_built_sources = \
Added: trunk/app/core/gimpdrawable-brightness-contrast.c
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-brightness-contrast.c Mon Feb 4 11:26:23 2008
@@ -0,0 +1,108 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+
+#include "core-types.h"
+
+#include "base/gimplut.h"
+#include "base/lut-funcs.h"
+#include "base/pixel-processor.h"
+#include "base/pixel-region.h"
+
+#include "gegl/gimpbrightnesscontrastconfig.h"
+
+/* temp */
+#include "gimp.h"
+#include "gimpimage.h"
+
+#include "gimpdrawable.h"
+#include "gimpdrawable-brightness-contrast.h"
+#include "gimpdrawable-operation.h"
+
+#include "gimp-intl.h"
+
+
+/* public functions */
+
+void
+gimp_drawable_brightness_contrast (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint brightness,
+ gint contrast)
+{
+ GimpBrightnessContrastConfig *config;
+
+ g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
+ g_return_if_fail (! gimp_drawable_is_indexed (drawable));
+ g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
+
+ config = g_object_new (GIMP_TYPE_BRIGHTNESS_CONTRAST_CONFIG,
+ "brightness", brightness / 127.0,
+ "contrast", contrast / 127.0,
+ NULL);
+
+ if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
+ {
+ GeglNode *node;
+
+ node = g_object_new (GEGL_TYPE_NODE,
+ "operation", "brightness-contrast",
+ NULL);
+ gimp_brightness_contrast_config_set_node (config, node);
+
+ gimp_drawable_apply_operation (drawable, node, TRUE,
+ progress, _("Brightness_Contrast"));
+
+ g_object_unref (node);
+ }
+ else
+ {
+ gint x, y, width, height;
+
+ /* The application should occur only within selection bounds */
+ if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
+ {
+ GimpLut *lut;
+ PixelRegion srcPR, destPR;
+
+ lut = brightness_contrast_lut_new (config->brightness / 2.0,
+ config->contrast,
+ gimp_drawable_bytes (drawable));
+
+ pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
+ x, y, width, height, FALSE);
+ pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
+ x, y, width, height, TRUE);
+
+ pixel_regions_process_parallel ((PixelProcessorFunc)
+ gimp_lut_process,
+ lut, 2, &srcPR, &destPR);
+
+ gimp_lut_free (lut);
+
+ gimp_drawable_merge_shadow (drawable, TRUE,
+ _("Brightness-Contrast"));
+ gimp_drawable_update (drawable, x, y, width, height);
+ }
+ }
+
+ g_object_unref (config);
+}
Added: trunk/app/core/gimpdrawable-brightness-contrast.h
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-brightness-contrast.h Mon Feb 4 11:26:23 2008
@@ -0,0 +1,29 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GIMP_DRAWABLE_BRIGHTNESS_CONTRAST_H__
+#define __GIMP_DRAWABLE_BRIGHTNESS_CONTRAST_H__
+
+
+void gimp_drawable_brightness_contrast (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint brightness,
+ gint contrast);
+
+
+#endif /* __GIMP_DRAWABLE_BRIGHTNESS_CONTRAST_H__ */
Added: trunk/app/core/gimpdrawable-color-balance.c
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-color-balance.c Mon Feb 4 11:26:23 2008
@@ -0,0 +1,112 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+
+#include "core-types.h"
+
+#include "base/color-balance.h"
+#include "base/pixel-processor.h"
+#include "base/pixel-region.h"
+
+#include "gegl/gimpcolorbalanceconfig.h"
+
+/* temp */
+#include "gimp.h"
+#include "gimpimage.h"
+
+#include "gimpdrawable.h"
+#include "gimpdrawable-color-balance.h"
+#include "gimpdrawable-operation.h"
+
+#include "gimp-intl.h"
+
+
+/* public functions */
+
+void
+gimp_drawable_color_balance (GimpDrawable *drawable,
+ GimpProgress *progress,
+ GimpTransferMode range,
+ gdouble cyan_red,
+ gdouble magenta_green,
+ gdouble yellow_blue,
+ gboolean preserve_luminosity)
+{
+ GimpColorBalanceConfig *config;
+
+ g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
+ g_return_if_fail (! gimp_drawable_is_indexed (drawable));
+ g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
+
+ config = g_object_new (GIMP_TYPE_COLOR_BALANCE_CONFIG,
+ "range", range,
+ "preserve-luminosity", preserve_luminosity,
+ NULL);
+
+ g_object_set (config,
+ "cyan-red", cyan_red / 100.0,
+ "magenta-green", magenta_green / 100.0,
+ "yellow-blue", yellow_blue / 100.0,
+ NULL);
+
+ if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
+ {
+ GeglNode *node;
+
+ node = g_object_new (GEGL_TYPE_NODE,
+ "operation", "gimp-color-balance",
+ NULL);
+ gegl_node_set (node,
+ "config", config,
+ NULL);
+
+ gimp_drawable_apply_operation (drawable, node, TRUE,
+ progress, _("Color Balance"));
+
+ g_object_unref (node);
+ }
+ else
+ {
+ gint x, y, width, height;
+
+ /* The application should occur only within selection bounds */
+ if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
+ {
+ ColorBalance cruft;
+ PixelRegion srcPR, destPR;
+
+ gimp_color_balance_config_to_cruft (config, &cruft);
+
+ pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
+ x, y, width, height, FALSE);
+ pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
+ x, y, width, height, TRUE);
+
+ pixel_regions_process_parallel ((PixelProcessorFunc) color_balance,
+ &cruft, 2, &srcPR, &destPR);
+
+ gimp_drawable_merge_shadow (drawable, TRUE, _("Color Balance"));
+ gimp_drawable_update (drawable, x, y, width, height);
+ }
+ }
+
+ g_object_unref (config);
+}
Added: trunk/app/core/gimpdrawable-color-balance.h
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-color-balance.h Mon Feb 4 11:26:23 2008
@@ -0,0 +1,32 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GIMP_DRAWABLE_COLOR_BALANCE_H__
+#define __GIMP_DRAWABLE_COLOR_BALANCE_H__
+
+
+void gimp_drawable_color_balance (GimpDrawable *drawable,
+ GimpProgress *progress,
+ GimpTransferMode range,
+ gdouble cyan_red,
+ gdouble magenta_green,
+ gdouble yellow_blue,
+ gboolean preserve_luminosity);
+
+
+#endif /* __GIMP_DRAWABLE_COLOR_BALANCE_H__ */
Added: trunk/app/core/gimpdrawable-colorize.c
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-colorize.c Mon Feb 4 11:26:23 2008
@@ -0,0 +1,105 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+
+#include "core-types.h"
+
+#include "base/colorize.h"
+#include "base/pixel-processor.h"
+#include "base/pixel-region.h"
+
+#include "gegl/gimpcolorizeconfig.h"
+
+/* temp */
+#include "gimp.h"
+#include "gimpimage.h"
+
+#include "gimpdrawable.h"
+#include "gimpdrawable-operation.h"
+#include "gimpdrawable-colorize.h"
+
+#include "gimp-intl.h"
+
+
+/* public functions */
+
+void
+gimp_drawable_colorize (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gdouble hue,
+ gdouble saturation,
+ gdouble lightness)
+{
+ GimpColorizeConfig *config;
+
+ g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
+ g_return_if_fail (! gimp_drawable_is_indexed (drawable));
+ g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
+
+ config = g_object_new (GIMP_TYPE_COLORIZE_CONFIG,
+ "hue", hue / 360.0,
+ "saturation", saturation / 100.0,
+ "lightness", lightness / 100.0,
+ NULL);
+
+ if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
+ {
+ GeglNode *node;
+
+ node = g_object_new (GEGL_TYPE_NODE,
+ "operation", "gimp-colorize",
+ NULL);
+ gegl_node_set (node,
+ "config", config,
+ NULL);
+
+ gimp_drawable_apply_operation (drawable, node, TRUE,
+ progress, _("Colorize"));
+
+ g_object_unref (node);
+ }
+ else
+ {
+ gint x, y, width, height;
+
+ /* The application should occur only within selection bounds */
+ if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
+ {
+ Colorize cruft;
+ PixelRegion srcPR, destPR;
+
+ gimp_colorize_config_to_cruft (config, &cruft);
+
+ pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
+ x, y, width, height, FALSE);
+ pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
+ x, y, width, height, TRUE);
+
+ pixel_regions_process_parallel ((PixelProcessorFunc) colorize,
+ &cruft, 2, &srcPR, &destPR);
+
+ gimp_drawable_merge_shadow (drawable, TRUE, _("Colorize"));
+ gimp_drawable_update (drawable, x, y, width, height);
+ }
+ }
+
+ g_object_unref (config);
+}
Added: trunk/app/core/gimpdrawable-colorize.h
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-colorize.h Mon Feb 4 11:26:23 2008
@@ -0,0 +1,30 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GIMP_DRAWABLE_COLORIZE_H__
+#define __GIMP_DRAWABLE_COLORIZE_H__
+
+
+void gimp_drawable_colorize (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gdouble hue,
+ gdouble saturation,
+ gdouble lightness);
+
+
+#endif /* __GIMP_DRAWABLE_COLORIZE_H__ */
Added: trunk/app/core/gimpdrawable-curves.c
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-curves.c Mon Feb 4 11:26:23 2008
@@ -0,0 +1,200 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+
+#include "core-types.h"
+
+#include "base/curves.h"
+#include "base/gimplut.h"
+#include "base/pixel-processor.h"
+#include "base/pixel-region.h"
+
+#include "gegl/gimpcurvesconfig.h"
+
+/* temp */
+#include "gimp.h"
+#include "gimpimage.h"
+
+#include "gimpcurve.h"
+#include "gimpdrawable.h"
+#include "gimpdrawable-curves.h"
+#include "gimpdrawable-operation.h"
+
+#include "gimp-intl.h"
+
+
+/* local function prototypes */
+
+static void gimp_drawable_curves (GimpDrawable *drawable,
+ GimpProgress *progress,
+ GimpCurvesConfig *config);
+
+
+/* public functions */
+
+void
+gimp_drawable_curves_spline (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint32 channel,
+ const guint8 *points,
+ gint n_points)
+{
+ GimpCurvesConfig *config;
+ GimpCurve *curve;
+ gint i;
+
+ g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
+ g_return_if_fail (! gimp_drawable_is_indexed (drawable));
+ g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
+ g_return_if_fail (channel >= GIMP_HISTOGRAM_VALUE &&
+ channel <= GIMP_HISTOGRAM_ALPHA);
+
+ if (channel == GIMP_HISTOGRAM_ALPHA)
+ g_return_if_fail (gimp_drawable_has_alpha (drawable));
+
+ if (gimp_drawable_is_gray (drawable))
+ g_return_if_fail (channel == GIMP_HISTOGRAM_VALUE ||
+ channel == GIMP_HISTOGRAM_ALPHA);
+
+ config = g_object_new (GIMP_TYPE_CURVES_CONFIG, NULL);
+
+ curve = config->curve[channel];
+
+ gimp_data_freeze (GIMP_DATA (curve));
+
+ /* unset the last point */
+ gimp_curve_set_point (curve, GIMP_CURVE_NUM_POINTS - 1, -1, -1);
+
+ for (i = 0; i < n_points / 2; i++)
+ gimp_curve_set_point (curve, i,
+ points[i * 2],
+ points[i * 2 + 1]);
+
+ gimp_data_thaw (GIMP_DATA (curve));
+
+ gimp_drawable_curves (drawable, progress, config);
+
+ g_object_unref (config);
+}
+
+void
+gimp_drawable_curves_explicit (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint32 channel,
+ const guint8 *points,
+ gint n_points)
+{
+ GimpCurvesConfig *config;
+ GimpCurve *curve;
+ gint i;
+
+ g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
+ g_return_if_fail (! gimp_drawable_is_indexed (drawable));
+ g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
+ g_return_if_fail (channel >= GIMP_HISTOGRAM_VALUE &&
+ channel <= GIMP_HISTOGRAM_ALPHA);
+
+ if (channel == GIMP_HISTOGRAM_ALPHA)
+ g_return_if_fail (gimp_drawable_has_alpha (drawable));
+
+ if (gimp_drawable_is_gray (drawable))
+ g_return_if_fail (channel == GIMP_HISTOGRAM_VALUE ||
+ channel == GIMP_HISTOGRAM_ALPHA);
+
+ config = g_object_new (GIMP_TYPE_CURVES_CONFIG, NULL);
+
+ curve = config->curve[channel];
+
+ gimp_data_freeze (GIMP_DATA (curve));
+
+ gimp_curve_set_curve_type (curve, GIMP_CURVE_SMOOTH);
+
+ for (i = 0; i < 256; i++)
+ gimp_curve_set_curve (curve, i, points[i]);
+
+ gimp_data_thaw (GIMP_DATA (curve));
+
+ gimp_drawable_curves (drawable, progress, config);
+
+ g_object_unref (config);
+}
+
+
+/* private functions */
+
+static void
+gimp_drawable_curves (GimpDrawable *drawable,
+ GimpProgress *progress,
+ GimpCurvesConfig *config)
+{
+ if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
+ {
+ GeglNode *node;
+
+ node = g_object_new (GEGL_TYPE_NODE,
+ "operation", "gimp-curves",
+ NULL);
+ gegl_node_set (node,
+ "config", config,
+ NULL);
+
+ gimp_drawable_apply_operation (drawable, node, TRUE,
+ progress, _("Curves"));
+
+ g_object_unref (node);
+ }
+ else
+ {
+ gint x, y, width, height;
+
+ /* The application should occur only within selection bounds */
+ if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
+ {
+ Curves cruft;
+ PixelRegion srcPR, destPR;
+ GimpLut *lut;
+
+ lut = gimp_lut_new ();
+
+ gimp_curves_config_to_cruft (config, &cruft,
+ gimp_drawable_is_rgb (drawable));
+
+ gimp_lut_setup (lut,
+ (GimpLutFunc) curves_lut_func,
+ &cruft,
+ gimp_drawable_bytes (drawable));
+
+ pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
+ x, y, width, height, FALSE);
+ pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
+ x, y, width, height, TRUE);
+
+ pixel_regions_process_parallel ((PixelProcessorFunc)
+ gimp_lut_process,
+ lut, 2, &srcPR, &destPR);
+
+ gimp_lut_free (lut);
+
+ gimp_drawable_merge_shadow (drawable, TRUE, _("Curves"));
+ gimp_drawable_update (drawable, x, y, width, height);
+ }
+ }
+}
Added: trunk/app/core/gimpdrawable-curves.h
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-curves.h Mon Feb 4 11:26:23 2008
@@ -0,0 +1,35 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GIMP_DRAWABLE_CURVES_H__
+#define __GIMP_DRAWABLE_CURVES_H__
+
+
+void gimp_drawable_curves_spline (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint32 channel,
+ const guint8 *points,
+ gint n_points);
+void gimp_drawable_curves_explicit (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint32 channel,
+ const guint8 *points,
+ gint n_points);
+
+
+#endif /* __GIMP_DRAWABLE_CURVES_H__ */
Added: trunk/app/core/gimpdrawable-hue-saturation.c
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-hue-saturation.c Mon Feb 4 11:26:23 2008
@@ -0,0 +1,110 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+
+#include "core-types.h"
+
+#include "base/hue-saturation.h"
+#include "base/pixel-processor.h"
+#include "base/pixel-region.h"
+
+#include "gegl/gimphuesaturationconfig.h"
+
+/* temp */
+#include "gimp.h"
+#include "gimpimage.h"
+
+#include "gimpdrawable.h"
+#include "gimpdrawable-operation.h"
+#include "gimpdrawable-hue-saturation.h"
+
+#include "gimp-intl.h"
+
+
+/* public functions */
+
+void
+gimp_drawable_hue_saturation (GimpDrawable *drawable,
+ GimpProgress *progress,
+ GimpHueRange range,
+ gdouble hue,
+ gdouble saturation,
+ gdouble lightness)
+{
+ GimpHueSaturationConfig *config;
+
+ g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
+ g_return_if_fail (! gimp_drawable_is_indexed (drawable));
+ g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
+
+ config = g_object_new (GIMP_TYPE_HUE_SATURATION_CONFIG,
+ "range", range,
+ NULL);
+
+ g_object_set (config,
+ "hue", hue / 100.0,
+ "saturation", saturation / 100.0,
+ "lightness", lightness / 100.0,
+ NULL);
+
+ if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
+ {
+ GeglNode *node;
+
+ node = g_object_new (GEGL_TYPE_NODE,
+ "operation", "gimp-hue-saturation",
+ NULL);
+ gegl_node_set (node,
+ "config", config,
+ NULL);
+
+ gimp_drawable_apply_operation (drawable, node, TRUE,
+ progress, _("Hue-Saturation"));
+
+ g_object_unref (node);
+ }
+ else
+ {
+ gint x, y, width, height;
+
+ /* The application should occur only within selection bounds */
+ if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
+ {
+ HueSaturation cruft;
+ PixelRegion srcPR, destPR;
+
+ gimp_hue_saturation_config_to_cruft (config, &cruft);
+
+ pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
+ x, y, width, height, FALSE);
+ pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
+ x, y, width, height, TRUE);
+
+ pixel_regions_process_parallel ((PixelProcessorFunc) hue_saturation,
+ &cruft, 2, &srcPR, &destPR);
+
+ gimp_drawable_merge_shadow (drawable, TRUE, _("Hue_Saturation"));
+ gimp_drawable_update (drawable, x, y, width, height);
+ }
+ }
+
+ g_object_unref (config);
+}
Added: trunk/app/core/gimpdrawable-hue-saturation.h
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-hue-saturation.h Mon Feb 4 11:26:23 2008
@@ -0,0 +1,31 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GIMP_DRAWABLE_HUE_SATURATION_H__
+#define __GIMP_DRAWABLE_HUE_SATURATION_H__
+
+
+void gimp_drawable_hue_saturation (GimpDrawable *drawable,
+ GimpProgress *progress,
+ GimpHueRange range,
+ gdouble hue,
+ gdouble saturation,
+ gdouble lightness);
+
+
+#endif /* __GIMP_DRAWABLE_HUE_SATURATION_H__ */
Added: trunk/app/core/gimpdrawable-posterize.c
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-posterize.c Mon Feb 4 11:26:23 2008
@@ -0,0 +1,105 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+
+#include "core-types.h"
+
+#include "base/gimplut.h"
+#include "base/lut-funcs.h"
+#include "base/pixel-processor.h"
+#include "base/pixel-region.h"
+
+#include "gegl/gimpposterizeconfig.h"
+
+/* temp */
+#include "gimp.h"
+#include "gimpimage.h"
+
+#include "gimpdrawable.h"
+#include "gimpdrawable-operation.h"
+#include "gimpdrawable-posterize.h"
+
+#include "gimp-intl.h"
+
+
+/* public functions */
+
+void
+gimp_drawable_posterize (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint levels)
+{
+ GimpPosterizeConfig *config;
+
+ g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
+ g_return_if_fail (! gimp_drawable_is_indexed (drawable));
+ g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
+
+ config = g_object_new (GIMP_TYPE_POSTERIZE_CONFIG,
+ "levels", levels,
+ NULL);
+
+ if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
+ {
+ GeglNode *node;
+
+ node = g_object_new (GEGL_TYPE_NODE,
+ "operation", "gimp-posterize",
+ NULL);
+ gegl_node_set (node,
+ "config", config,
+ NULL);
+
+ gimp_drawable_apply_operation (drawable, node, TRUE,
+ progress, _("Posterize"));
+
+ g_object_unref (node);
+ }
+ else
+ {
+ gint x, y, width, height;
+
+ /* The application should occur only within selection bounds */
+ if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
+ {
+ GimpLut *lut;
+ PixelRegion srcPR, destPR;
+
+ lut = posterize_lut_new (config->levels,
+ gimp_drawable_bytes (drawable));
+
+ pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
+ x, y, width, height, FALSE);
+ pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
+ x, y, width, height, TRUE);
+
+ pixel_regions_process_parallel ((PixelProcessorFunc) gimp_lut_process,
+ lut, 2, &srcPR, &destPR);
+
+ gimp_lut_free (lut);
+
+ gimp_drawable_merge_shadow (drawable, TRUE, _("Posterize"));
+ gimp_drawable_update (drawable, x, y, width, height);
+ }
+ }
+
+ g_object_unref (config);
+}
Added: trunk/app/core/gimpdrawable-posterize.h
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-posterize.h Mon Feb 4 11:26:23 2008
@@ -0,0 +1,28 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GIMP_DRAWABLE_POSTERIZE_H__
+#define __GIMP_DRAWABLE_POSTERIZE_H__
+
+
+void gimp_drawable_posterize (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint levels);
+
+
+#endif /* __GIMP_DRAWABLE_POSTERIZE_H__ */
Added: trunk/app/core/gimpdrawable-threshold.c
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-threshold.c Mon Feb 4 11:26:23 2008
@@ -0,0 +1,104 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+
+#include "core-types.h"
+
+#include "base/pixel-processor.h"
+#include "base/pixel-region.h"
+#include "base/threshold.h"
+
+#include "gegl/gimpthresholdconfig.h"
+
+/* temp */
+#include "gimp.h"
+#include "gimpimage.h"
+
+#include "gimpdrawable.h"
+#include "gimpdrawable-operation.h"
+#include "gimpdrawable-threshold.h"
+
+#include "gimp-intl.h"
+
+
+/* public functions */
+
+void
+gimp_drawable_threshold (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint low,
+ gint high)
+{
+ GimpThresholdConfig *config;
+
+ g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
+ g_return_if_fail (! gimp_drawable_is_indexed (drawable));
+ g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
+
+ config = g_object_new (GIMP_TYPE_THRESHOLD_CONFIG,
+ "low", low / 255.0,
+ "high", high / 255.0,
+ NULL);
+
+ if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
+ {
+ GeglNode *node;
+
+ node = g_object_new (GEGL_TYPE_NODE,
+ "operation", "gimp-threshold",
+ NULL);
+ gegl_node_set (node,
+ "config", config,
+ NULL);
+
+ gimp_drawable_apply_operation (drawable, node, TRUE,
+ progress, _("Threshold"));
+
+ g_object_unref (node);
+ }
+ else
+ {
+ gint x, y, width, height;
+
+ /* The application should occur only within selection bounds */
+ if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
+ {
+ Threshold cruft;
+ PixelRegion srcPR, destPR;
+
+ gimp_threshold_config_to_cruft (config, &cruft,
+ gimp_drawable_is_rgb (drawable));
+
+ pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
+ x, y, width, height, FALSE);
+ pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
+ x, y, width, height, TRUE);
+
+ pixel_regions_process_parallel ((PixelProcessorFunc) threshold,
+ &cruft, 2, &srcPR, &destPR);
+
+ gimp_drawable_merge_shadow (drawable, TRUE, _("Threshold"));
+ gimp_drawable_update (drawable, x, y, width, height);
+ }
+ }
+
+ g_object_unref (config);
+}
Added: trunk/app/core/gimpdrawable-threshold.h
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawable-threshold.h Mon Feb 4 11:26:23 2008
@@ -0,0 +1,29 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GIMP_DRAWABLE_THRESHOLD_H__
+#define __GIMP_DRAWABLE_THRESHOLD_H__
+
+
+void gimp_drawable_threshold (GimpDrawable *drawable,
+ GimpProgress *progress,
+ gint low,
+ gint high);
+
+
+#endif /* __GIMP_DRAWABLE_THRESHOLD_H__ */
Modified: trunk/app/pdb/color_cmds.c
==============================================================================
--- trunk/app/pdb/color_cmds.c (original)
+++ trunk/app/pdb/color_cmds.c Mon Feb 4 11:26:23 2008
@@ -29,26 +29,20 @@
#include "gimpprocedure.h"
#include "core/gimpparamspecs.h"
-#include "base/color-balance.h"
-#include "base/colorize.h"
-#include "base/curves.h"
#include "base/gimphistogram.h"
-#include "base/gimplut.h"
-#include "base/hue-saturation.h"
-#include "base/lut-funcs.h"
-#include "base/pixel-processor.h"
-#include "base/pixel-region.h"
-#include "base/threshold.h"
-#include "core/gimp.h"
-#include "core/gimpcurve.h"
+#include "core/gimpdrawable-brightness-contrast.h"
+#include "core/gimpdrawable-color-balance.h"
+#include "core/gimpdrawable-colorize.h"
+#include "core/gimpdrawable-curves.h"
#include "core/gimpdrawable-desaturate.h"
#include "core/gimpdrawable-equalize.h"
#include "core/gimpdrawable-histogram.h"
+#include "core/gimpdrawable-hue-saturation.h"
#include "core/gimpdrawable-invert.h"
#include "core/gimpdrawable-levels.h"
-#include "core/gimpdrawable-operation.h"
+#include "core/gimpdrawable-posterize.h"
+#include "core/gimpdrawable-threshold.h"
#include "core/gimpdrawable.h"
-#include "core/gimpimage.h"
#include "gimp-intl.h"
#include "internal_procs.h"
@@ -78,55 +72,8 @@
success = FALSE;
if (success)
- {
- if (gimp_use_gegl (gimp))
- {
- GeglNode *node = g_object_new (GEGL_TYPE_NODE,
- "operation", "brightness-contrast",
- NULL);
-
- gegl_node_set (node,
- "brightness", brightness / 127.0,
- "contrast", (contrast < 0 ?
- (contrast + 127.0) / 127.0 :
- contrast * 4.0 / 127.0 + 1),
- NULL);
-
- gimp_drawable_apply_operation (drawable, node, TRUE,
- progress, _("Brightness-Contrast"));
-
- g_object_unref (node);
- }
- else
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- GimpLut *lut;
- PixelRegion srcPR, destPR;
-
- lut = brightness_contrast_lut_new (brightness / 255.0,
- contrast / 127.0,
- gimp_drawable_bytes (drawable));
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc)
- gimp_lut_process,
- lut, 2, &srcPR, &destPR);
-
- gimp_lut_free (lut);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Brightness-Contrast"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
- }
+ gimp_drawable_brightness_contrast (drawable, progress,
+ brightness, contrast);
}
return gimp_procedure_get_return_values (procedure, success);
@@ -252,50 +199,7 @@
success = FALSE;
if (success)
- {
- if (gimp_use_gegl (gimp))
- {
- GeglNode *node = g_object_new (GEGL_TYPE_NODE,
- "operation", "gimp-posterize",
- NULL);
-
- gegl_node_set (node,
- "levels", levels,
- NULL);
-
- gimp_drawable_apply_operation (drawable, node, TRUE,
- progress, _("Levels"));
-
- g_object_unref (node);
- }
- else
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- GimpLut *lut;
- PixelRegion srcPR, destPR;
-
- lut = posterize_lut_new (levels, gimp_drawable_bytes (drawable));
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc)
- gimp_lut_process,
- lut, 2, &srcPR, &destPR);
-
- gimp_lut_free (lut);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Posterize"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
- }
+ gimp_drawable_posterize (drawable, progress, levels);
}
return gimp_procedure_get_return_values (procedure, success);
@@ -439,65 +343,8 @@
success = FALSE;
if (success)
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- GimpCurve *curve;
- Curves c;
- gint j;
- PixelRegion srcPR, destPR;
- GimpLut *lut;
-
- /* FIXME: hack */
- if (gimp_drawable_is_gray (drawable) &&
- channel == GIMP_HISTOGRAM_ALPHA)
- channel = 1;
-
- lut = gimp_lut_new ();
-
- curves_init (&c);
-
- curve = GIMP_CURVE (gimp_curve_new ("curves_spline"));
-
- gimp_data_freeze (GIMP_DATA (curve));
-
- /* unset the last point */
- gimp_curve_set_point (curve, GIMP_CURVE_NUM_POINTS - 1, -1, -1);
-
- for (j = 0; j < num_points / 2; j++)
- gimp_curve_set_point (curve, j,
- control_pts[j * 2],
- control_pts[j * 2 + 1]);
-
- gimp_data_thaw (GIMP_DATA (curve));
-
- gimp_curve_get_uchar (curve, c.curve[channel]);
-
- g_object_unref (curve);
-
- gimp_lut_setup (lut,
- (GimpLutFunc) curves_lut_func,
- &c,
- gimp_drawable_bytes (drawable));
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc)
- gimp_lut_process,
- lut, 2, &srcPR, &destPR);
-
- gimp_lut_free (lut);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Curves"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
+ gimp_drawable_curves_spline (drawable, progress,
+ channel, control_pts, num_points);
}
return gimp_procedure_get_return_values (procedure, success);
@@ -533,49 +380,8 @@
success = FALSE;
if (success)
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- Curves c;
- gint j;
- PixelRegion srcPR, destPR;
- GimpLut *lut;
-
- /* FIXME: hack */
- if (gimp_drawable_is_gray (drawable) &&
- channel == GIMP_HISTOGRAM_ALPHA)
- channel = 1;
-
- lut = gimp_lut_new ();
-
- curves_init (&c);
-
- for (j = 0; j < 256; j++)
- c.curve[channel][j] = curve[j];
-
- gimp_lut_setup (lut,
- (GimpLutFunc) curves_lut_func,
- &c,
- gimp_drawable_bytes (drawable));
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc)
- gimp_lut_process,
- lut, 2, &srcPR, &destPR);
-
- gimp_lut_free (lut);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Curves"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
+ gimp_drawable_curves_explicit (drawable, progress,
+ channel, curve, num_bytes);
}
return gimp_procedure_get_return_values (procedure, success);
@@ -611,37 +417,10 @@
success = FALSE;
if (success)
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- ColorBalance cb;
- PixelRegion srcPR, destPR;
-
- color_balance_init (&cb);
-
- cb.preserve_luminosity = preserve_lum;
-
- cb.cyan_red[transfer_mode] = cyan_red;
- cb.magenta_green[transfer_mode] = magenta_green;
- cb.yellow_blue[transfer_mode] = yellow_blue;
-
- color_balance_create_lookup_tables (&cb);
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc) color_balance,
- &cb, 2, &srcPR, &destPR);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Color Balance"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
+ gimp_drawable_color_balance (drawable, progress,
+ transfer_mode,
+ cyan_red, magenta_green, yellow_blue,
+ preserve_lum);
}
return gimp_procedure_get_return_values (procedure, success);
@@ -673,55 +452,8 @@
success = FALSE;
if (success)
- {
- if (gimp_use_gegl (gimp))
- {
- GeglNode *node = g_object_new (GEGL_TYPE_NODE,
- "operation", "gimp-colorize",
- NULL);
-
- gegl_node_set (node,
- "hue", hue,
- "saturation", saturation,
- "lightness", lightness,
- NULL);
-
- gimp_drawable_apply_operation (drawable, node, TRUE,
- progress, _("Colorize"));
-
- g_object_unref (node);
- }
- else
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- Colorize colors;
- PixelRegion srcPR, destPR;
-
- colorize_init (&colors);
-
- colors.hue = hue;
- colors.saturation = saturation;
- colors.lightness = lightness;
-
- colorize_calculate (&colors);
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc) colorize,
- &colors, 2, &srcPR, &destPR);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Colorize"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
- }
+ gimp_drawable_colorize (drawable, progress,
+ hue, saturation, lightness);
}
return gimp_procedure_get_return_values (procedure, success);
@@ -827,36 +559,8 @@
success = FALSE;
if (success)
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- HueSaturation hs;
- PixelRegion srcPR, destPR;
-
- hue_saturation_init (&hs);
-
- hs.hue[hue_range] = hue_offset;
- hs.lightness[hue_range] = lightness;
- hs.saturation[hue_range] = saturation;
-
- /* Calculate the transfer arrays */
- hue_saturation_calculate_transfers (&hs);
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc) hue_saturation,
- &hs, 2, &srcPR, &destPR);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Hue-Saturation"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
+ gimp_drawable_hue_saturation (drawable, progress,
+ hue_range, hue_offset, saturation, lightness);
}
return gimp_procedure_get_return_values (procedure, success);
@@ -887,50 +591,8 @@
success = FALSE;
if (success)
- {
- if (gimp_use_gegl (gimp))
- {
- GeglNode *node = g_object_new (GEGL_TYPE_NODE,
- "operation", "gimp-threshold",
- NULL);
-
- gegl_node_set (node,
- "low", low_threshold / 255.0,
- "high", high_threshold / 255.0,
- NULL);
-
- gimp_drawable_apply_operation (drawable, node, TRUE,
- progress, _("Threshold"));
-
- g_object_unref (node);
- }
- else
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- Threshold tr;
- PixelRegion srcPR, destPR;
-
- tr.color = gimp_drawable_is_rgb (drawable);
- tr.low_threshold = low_threshold;
- tr.high_threshold = high_threshold;
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc) threshold,
- &tr, 2, &srcPR, &destPR);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Threshold"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
- }
+ gimp_drawable_threshold (drawable, progress,
+ low_threshold, high_threshold);
}
return gimp_procedure_get_return_values (procedure, success);
Modified: trunk/tools/pdbgen/pdb/color.pdb
==============================================================================
--- trunk/tools/pdbgen/pdb/color.pdb (original)
+++ trunk/tools/pdbgen/pdb/color.pdb Mon Feb 4 11:26:23 2008
@@ -39,6 +39,7 @@
);
%invoke = (
+ headers => [ qw("core/gimpdrawable-brightness-contrast.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -46,55 +47,8 @@
success = FALSE;
if (success)
- {
- if (gimp_use_gegl (gimp))
- {
- GeglNode *node = g_object_new (GEGL_TYPE_NODE,
- "operation", "brightness-contrast",
- NULL);
-
- gegl_node_set (node,
- "brightness", brightness / 127.0,
- "contrast", (contrast < 0 ?
- (contrast + 127.0) / 127.0 :
- contrast * 4.0 / 127.0 + 1),
- NULL);
-
- gimp_drawable_apply_operation (drawable, node, TRUE,
- progress, _("Brightness-Contrast"));
-
- g_object_unref (node);
- }
- else
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- GimpLut *lut;
- PixelRegion srcPR, destPR;
-
- lut = brightness_contrast_lut_new (brightness / 255.0,
- contrast / 127.0,
- gimp_drawable_bytes (drawable));
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc)
- gimp_lut_process,
- lut, 2, &srcPR, &destPR);
-
- gimp_lut_free (lut);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Brightness-Contrast"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
- }
+ gimp_drawable_brightness_contrast (drawable, progress,
+ brightness, contrast);
}
CODE
);
@@ -179,8 +133,7 @@
);
%invoke = (
- headers => [ qw("core/gimpdrawable-histogram.h"
- "core/gimpdrawable-levels.h") ],
+ headers => [ qw("core/gimpdrawable-levels.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -203,8 +156,7 @@
);
%invoke = (
- headers => [ qw("core/gimpdrawable-histogram.h"
- "core/gimpdrawable-levels.h") ],
+ headers => [ qw("core/gimpdrawable-levels.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -237,6 +189,7 @@
);
%invoke = (
+ headers => [ qw("core/gimpdrawable-posterize.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -244,50 +197,7 @@
success = FALSE;
if (success)
- {
- if (gimp_use_gegl (gimp))
- {
- GeglNode *node = g_object_new (GEGL_TYPE_NODE,
- "operation", "gimp-posterize",
- NULL);
-
- gegl_node_set (node,
- "levels", levels,
- NULL);
-
- gimp_drawable_apply_operation (drawable, node, TRUE,
- progress, _("Levels"));
-
- g_object_unref (node);
- }
- else
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- GimpLut *lut;
- PixelRegion srcPR, destPR;
-
- lut = posterize_lut_new (levels, gimp_drawable_bytes (drawable));
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc)
- gimp_lut_process,
- lut, 2, &srcPR, &destPR);
-
- gimp_lut_free (lut);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Posterize"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
- }
+ gimp_drawable_posterize (drawable, progress, levels);
}
CODE
);
@@ -456,7 +366,7 @@
);
%invoke = (
- headers => [ qw("base/curves.h" "core/gimpcurve.h") ],
+ headers => [ qw("core/gimpdrawable-curves.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -468,65 +378,8 @@
success = FALSE;
if (success)
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- GimpCurve *curve;
- Curves c;
- gint j;
- PixelRegion srcPR, destPR;
- GimpLut *lut;
-
- /* FIXME: hack */
- if (gimp_drawable_is_gray (drawable) &&
- channel == GIMP_HISTOGRAM_ALPHA)
- channel = 1;
-
- lut = gimp_lut_new ();
-
- curves_init (&c);
-
- curve = GIMP_CURVE (gimp_curve_new ("curves_spline"));
-
- gimp_data_freeze (GIMP_DATA (curve));
-
- /* unset the last point */
- gimp_curve_set_point (curve, GIMP_CURVE_NUM_POINTS - 1, -1, -1);
-
- for (j = 0; j < num_points / 2; j++)
- gimp_curve_set_point (curve, j,
- control_pts[j * 2],
- control_pts[j * 2 + 1]);
-
- gimp_data_thaw (GIMP_DATA (curve));
-
- gimp_curve_get_uchar (curve, c.curve[channel]);
-
- g_object_unref (curve);
-
- gimp_lut_setup (lut,
- (GimpLutFunc) curves_lut_func,
- &c,
- gimp_drawable_bytes (drawable));
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc)
- gimp_lut_process,
- lut, 2, &srcPR, &destPR);
-
- gimp_lut_free (lut);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Curves"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
+ gimp_drawable_curves_spline (drawable, progress,
+ channel, control_pts, num_points);
}
CODE
);
@@ -559,7 +412,7 @@
);
%invoke = (
- headers => [ qw("base/curves.h") ],
+ headers => [ qw("core/gimpdrawable-curves.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -571,49 +424,8 @@
success = FALSE;
if (success)
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- Curves c;
- gint j;
- PixelRegion srcPR, destPR;
- GimpLut *lut;
-
- /* FIXME: hack */
- if (gimp_drawable_is_gray (drawable) &&
- channel == GIMP_HISTOGRAM_ALPHA)
- channel = 1;
-
- lut = gimp_lut_new ();
-
- curves_init (&c);
-
- for (j = 0; j < 256; j++)
- c.curve[channel][j] = curve[j];
-
- gimp_lut_setup (lut,
- (GimpLutFunc) curves_lut_func,
- &c,
- gimp_drawable_bytes (drawable));
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc)
- gimp_lut_process,
- lut, 2, &srcPR, &destPR);
-
- gimp_lut_free (lut);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Curves"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
+ gimp_drawable_curves_explicit (drawable, progress,
+ channel, curve, num_bytes);
}
CODE
);
@@ -651,7 +463,7 @@
);
%invoke = (
- headers => [ qw("base/color-balance.h") ],
+ headers => [ qw("core/gimpdrawable-color-balance.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -659,37 +471,10 @@
success = FALSE;
if (success)
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- ColorBalance cb;
- PixelRegion srcPR, destPR;
-
- color_balance_init (&cb);
-
- cb.preserve_luminosity = preserve_lum;
-
- cb.cyan_red[transfer_mode] = cyan_red;
- cb.magenta_green[transfer_mode] = magenta_green;
- cb.yellow_blue[transfer_mode] = yellow_blue;
-
- color_balance_create_lookup_tables (&cb);
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc) color_balance,
- &cb, 2, &srcPR, &destPR);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Color Balance"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
+ gimp_drawable_color_balance (drawable, progress,
+ transfer_mode,
+ cyan_red, magenta_green, yellow_blue,
+ preserve_lum);
}
CODE
);
@@ -718,7 +503,7 @@
);
%invoke = (
- headers => [ qw("base/colorize.h") ],
+ headers => [ qw("core/gimpdrawable-colorize.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -726,55 +511,8 @@
success = FALSE;
if (success)
- {
- if (gimp_use_gegl (gimp))
- {
- GeglNode *node = g_object_new (GEGL_TYPE_NODE,
- "operation", "gimp-colorize",
- NULL);
-
- gegl_node_set (node,
- "hue", hue,
- "saturation", saturation,
- "lightness", lightness,
- NULL);
-
- gimp_drawable_apply_operation (drawable, node, TRUE,
- progress, _("Colorize"));
-
- g_object_unref (node);
- }
- else
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- Colorize colors;
- PixelRegion srcPR, destPR;
-
- colorize_init (&colors);
-
- colors.hue = hue;
- colors.saturation = saturation;
- colors.lightness = lightness;
-
- colorize_calculate (&colors);
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc) colorize,
- &colors, 2, &srcPR, &destPR);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Colorize"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
- }
+ gimp_drawable_colorize (drawable, progress,
+ hue, saturation, lightness);
}
CODE
);
@@ -828,7 +566,8 @@
);
%invoke = (
- headers => [ qw("core/gimpdrawable-histogram.h") ],
+ headers => [ qw("base/gimphistogram.h"
+ "core/gimpdrawable-histogram.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -891,7 +630,7 @@
);
%invoke = (
- headers => [ qw("base/hue-saturation.h") ],
+ headers => [ qw("core/gimpdrawable-hue-saturation.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -899,36 +638,8 @@
success = FALSE;
if (success)
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- HueSaturation hs;
- PixelRegion srcPR, destPR;
-
- hue_saturation_init (&hs);
-
- hs.hue[hue_range] = hue_offset;
- hs.lightness[hue_range] = lightness;
- hs.saturation[hue_range] = saturation;
-
- /* Calculate the transfer arrays */
- hue_saturation_calculate_transfers (&hs);
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc) hue_saturation,
- &hs, 2, &srcPR, &destPR);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Hue-Saturation"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
+ gimp_drawable_hue_saturation (drawable, progress,
+ hue_range, hue_offset, saturation, lightness);
}
CODE
);
@@ -956,7 +667,7 @@
);
%invoke = (
- headers => [ qw("base/threshold.h") ],
+ headers => [ qw("core/gimpdrawable-threshold.h") ],
code => <<'CODE'
{
if (! gimp_item_is_attached (GIMP_ITEM (drawable)) ||
@@ -965,50 +676,8 @@
success = FALSE;
if (success)
- {
- if (gimp_use_gegl (gimp))
- {
- GeglNode *node = g_object_new (GEGL_TYPE_NODE,
- "operation", "gimp-threshold",
- NULL);
-
- gegl_node_set (node,
- "low", low_threshold / 255.0,
- "high", high_threshold / 255.0,
- NULL);
-
- gimp_drawable_apply_operation (drawable, node, TRUE,
- progress, _("Threshold"));
-
- g_object_unref (node);
- }
- else
- {
- gint x, y, width, height;
-
- /* The application should occur only within selection bounds */
- if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
- {
- Threshold tr;
- PixelRegion srcPR, destPR;
-
- tr.color = gimp_drawable_is_rgb (drawable);
- tr.low_threshold = low_threshold;
- tr.high_threshold = high_threshold;
-
- pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
- x, y, width, height, FALSE);
- pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
- x, y, width, height, TRUE);
-
- pixel_regions_process_parallel ((PixelProcessorFunc) threshold,
- &tr, 2, &srcPR, &destPR);
-
- gimp_drawable_merge_shadow (drawable, TRUE, _("Threshold"));
- gimp_drawable_update (drawable, x, y, width, height);
- }
- }
- }
+ gimp_drawable_threshold (drawable, progress,
+ low_threshold, high_threshold);
}
CODE
);
@@ -1016,15 +685,7 @@
@headers = qw(<gegl.h>
- "base/gimphistogram.h"
- "base/gimplut.h"
- "base/lut-funcs.h"
- "base/pixel-region.h"
- "base/pixel-processor.h"
- "core/gimp.h"
"core/gimpdrawable.h"
- "core/gimpdrawable-operation.h"
- "core/gimpimage.h"
"gimp-intl.h");
@procs = qw(brightness_contrast
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]