Commit Graph

45 Commits

Author SHA1 Message Date
925f49c489 app: gegl-config babl-tolerance
Lower the precision further, we're still doing it at higher precision than
8bit but since GIMP itself is still only dealing with 8bit data we can permit
these shortcuts for adding and removing gamma without affecting the fidelity
of the produced results.
2012-05-02 17:50:50 +02:00
1b64710e66 app: specify a lower tolerance for babl
Permitting the use of LUT based functions for gamma conversions in float32.
2012-05-02 17:50:49 +02:00
e540444b56 app: fix registration of babl formats 2012-05-02 17:50:38 +02:00
69cd6d033a app: fix registration of babl_format("A u8") 2012-05-02 17:50:38 +02:00
ee97c1f4ff app: correct usage of babl formats
GIMP was doing evil hacks lying to GEGL about it's pixels being in a linear
color space when they are not. This causes incorrect rendering, makes gaussian
blur misbehave etc.

The legacy projection modes should be implemented using the same 2.2 gamma
formats that are correct to specify for sRGB data. (for proper color
management in higher bitdepths; icc backend babl formats should be used.)

For the old image modes correct babl formats are:

R'G'B'A u8  -  8 bit RGB with 2.2 gamma (sRGB) with linear alpha component
R'G'B' u8   -  8 bit RGB with 2.2 gamma (sRGB)
Y'A u8      -  8 bit Grayscale with 2.2 gamma with linear alpha component
Y' u8       -  8 bit Grayscale with 2.2 gamma

Y u8        -  8 bit linear data, used for masks/channels
A u8        -  8 bit linear alpha

-----------------------------------------------

RGBA float  -     32bit floating point linear light RGB
RaGaBaA float  -  32bit floating point linear light RGB, premultiplied alpha
                  to be used for processing that needs to scale by the alpha,
                  (blurs, resampling etc)
R'G'B'A float  -  32bit floating point sRGB with gamma, to be used where
                  the result depends on being closer to perceptual when
                  processing, can be used a cheaper alternative to CIE Lab
                  based modes.

-----------------------------------------------

The legacy layer modes should use the formats with gamma 2.2 only for loading
and rendering legacy XCF files correctly, in the brave new world compositing
should most likely be done in linear light with "RGBA float" and even better
"RaGaBaA float" like GEGL does for porter duff and other compositing modes.

The ability to chose the legacy layer modes should probably be hidden from the
user unless an old .xcf has been opened.
2012-05-02 17:50:38 +02:00
865b925598 app: add GimpOperationShapeburst to calculate the distance map for blend 2012-05-02 17:50:36 +02:00
b08ba684cf app: replace border_region() by GimpOperationBorder 2012-05-02 17:46:14 +02:00
8fc7c17d39 app: replace fatten_region() by GimpOperationGrow 2012-05-02 17:46:14 +02:00
cbb2766f07 app: add GimpOperationShrink which does "shrink selection"
but it's horribly slow, so keep the old code around for now and make
the new one depend on use_gegl.
2012-05-02 17:46:13 +02:00
cf86aeceb3 app: add GimpOperationEqualize and port equalize to it 2012-05-02 17:46:13 +02:00
72cd3c0fc8 app: add our own GimpOperationNormalMode so we can opt out of premultiply 2012-05-02 17:46:12 +02:00
5b644f1037 app: add GimpOperationSetAlpha which sets the alpha channel to a value 2012-05-02 17:45:56 +02:00
5d1474c17e app: use GEGL to extract an image's component into a channel
Add gimp_image_get_component_format() for that purpose.
2012-05-02 17:45:53 +02:00
a898491b3f app: allow to "cast" a buffer's pixel format to another one
as long as it has the same number of bytes. Add
gimp_tile_manager_create_buffer_with_format() for that purpose,
register a format that contains's only a u8 alpha byte, and use that
to extract alpha from drawables.
2012-05-02 17:45:52 +02:00
ca85d2c906 app: remove GimpOperationTileSink 2012-05-02 17:45:47 +02:00
0fdf01de02 app: remove GimpOperationTileSource
GIMP has a GeglBuffer backend for it's tiles now.
2012-05-02 17:45:47 +02:00
b262c93048 app: create an own GimpOperationBrightnessContrast
and use it instead of gegl:brightness-contrast because the GEGL op is
giving different reaults.
2012-03-13 15:02:17 +01:00
220d06324d Bug 648265 - tile cache size larger than 2G causes...
limit gegl cache-size to its maximum value
otherwise modulo arithmetic causes Warnings or
small values
2011-07-26 18:44:16 +02:00
d7492cb528 app: remove forward transform preview from cage tool, reverse is actually faster 2010-10-07 00:41:40 +03:00
9b3dbf9f3e renaming of GimpOperationCage to GimpOperationCagePreview + cleaning 2010-08-12 14:34:19 +02:00
69cf476387 add a gegl op that compute the reverse transformation of a cage deform. still wip. 2010-08-08 13:27:31 +02:00
973aeee9d4 register gimpoperationcagecoefcalc 2010-08-08 13:26:12 +02:00
509d329f15 Cage transform gegl op: now correctly iterate and fill with a color 2010-08-08 13:20:47 +02:00
9f6827be7c app: add back individual operation classes for the layer modes
They are derived from GimpOperationPointLayerMode and are completely
empty and unused, but can be filled with code and enabled one-by-one
now.
2009-12-30 15:22:35 +01:00
cb3b8608ce Rename gegl-types.h to gimp-gegl-types.h
Rename gegl-types.h to gimp-gegl-types.h as gegl-types.h invades on
the GEGL namespace

svn path=/trunk/; revision=28056
2009-02-21 15:06:49 +00:00
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

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

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

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


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
f2a9ffdd30 app/app.c set the GEGL cache size as large as the GIMP tile-cache.
2008-11-16  Sven Neumann  <sven@gimp.org>

	* app/app.c
	* app/gegl/gimp-gegl.[ch] (gimp_gegl_init): set the GEGL cache 
size
	as large as the GIMP tile-cache.


svn path=/trunk/; revision=27669
2008-11-16 10:30:49 +00:00
67c80e1574 Rename to
* app/gegl/gimpoperationlayermode.[ch]: Rename to

* app/gegl/gimpoperationpointlayermode.[ch]: so that we can later
create a common GimpOperationLayerMode class/interface for
non-point layer modes like GimpOperationDissolveLayerMode.

* app/gegl/Makefile.am
* app/gegl/gimp-gegl.c
* app/gegl/gegl-types.h: Adjust accordingly.

svn path=/trunk/; revision=27401
2008-10-25 14:16:22 +00:00
1a19f7315a Instead of having one GEGL operation per layer mode, make
GimpOperationLayerMode instantiable and add a GimpLayerModeEffects
property to it that we check in ::process() to blend pixels
together.

* app/gegl/gimpoperationlayermode.[ch]: Do the change described
above. Currently only Normal and Addition are implemented. Normal
so that we don't need a special case for the gegl:normal op. Also,
the Dissolve layer mode is not a point op and needs to be
implemented elsewhere.

* app/gegl/gimpoperation*mode.c: Removed.

* app/gegl/gimp-gegl-utils.[ch]: Removed
gimp_layer_mode_to_gegl_operation().

* app/core/gimplayer.c

* app/gegl/Makefile.am
* app/gegl/gimp-gegl.c: Adapt.

svn path=/trunk/; revision=27400
2008-10-25 13:29:55 +00:00
414cc45abf add an empty abstract GeglOperationPointComposer subclass which can be
2008-10-11  Michael Natterer  <mitch@gimp.org>

	* app/gegl/gimpoperationpointcomposer.[ch]: add an empty abstract
	GeglOperationPointComposer subclass which can be used to hook in
	common debug or test or whatever code for below layer modes.

	* app/gegl/gimpoperation*mode.[ch]: add empty stubs of layer mode
	operations which do nothing but copying input to output.

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h: add them here and reordered things a bit.

	* app/gegl/gimp-gegl.c (gimp_gegl_init): register the new
	operations.

	* app/gegl/gimp-gegl-utils.c (gimp_layer_mode_to_gegl_operation):
	return the new operations.


svn path=/trunk/; revision=27239
2008-10-11 17:20:20 +00:00
74a17aa216 updated GEGL version and also mention babl.
2008-06-04  Sven Neumann  <sven@gimp.org>

	* INSTALL: updated GEGL version and also mention babl.

	* app/gegl/gimp-gegl.c (gimp_gegl_init): configure the GEGL tile
	size to match the GIMP tile size.

svn path=/trunk/; revision=25887
2008-06-04 12:49:18 +00:00
c12e89a032 app/app.c reverted change from 2008-01-31. Use the GEGL option group again
2008-04-25  Sven Neumann  <sven@gimp.org>

	* app/app.c
	* app/gegl/gimp-gegl.c: reverted change from 2008-01-31. Use the
	GEGL option group again now that GEGL provides some commmand-line
	options.

svn path=/trunk/; revision=25524
2008-04-25 11:44:00 +00:00
8ebbad1b55 Delay GEGL initialisation until after the command-line parsing so that we
2008-01-31  Sven Neumann  <sven@gimp.org>

	Delay GEGL initialisation until after the command-line parsing 
so
	that we can detect an already running GIMP instance and delegate
	to that without going through the GEGL and babl initialisation.
	
	* app/app.c (app_libs_init): don't add the GEGL options group
	here.  GEGL doesn't add any command-line options and it doesn't
	look as if it would do that anytime soon.

	* app/gegl/gimp-gegl.c (gimp_gegl_init): initialize GEGL here.


svn path=/trunk/; revision=24762
2008-01-31 19:08:53 +00:00
8990062156 app/gegl/Makefile.am app/gegl/gegl-types.h app/gegl/gimpcurvesconfig.[ch]
2008-01-23  Michael Natterer  <mitch@gimp.org>

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h
	* app/gegl/gimpcurvesconfig.[ch]
	* app/gegl/gimpoperationcurves.[ch]: add curves operation and its
	config object. Hack around badly to be able to use GimpCurve from
	app/core.

	* app/gegl/gimp-gegl.c: register the curves operation.

	* app/tools/gimpcurvestool.[ch]: added get_operation() implemenetation
	and use the new config object instead of keeping around 5 curves.


svn path=/trunk/; revision=24683
2008-01-23 09:28:16 +00:00
7b8fa4c34c Fix gegl types and includes so we can include operations from app/gegl in
2008-01-16  Michael Natterer  <mitch@gimp.org>

	Fix gegl types and includes so we can include operations from
	app/gegl in other gimp files (needed soon):

	* app/gegl/gegl/gegl-types.h: not copied from gegl any longer.
	Now contains only two typedefs needed by the copied operation
	headers.

	* app/gegl/gegl-types.h: include above types file.

	* app/gegl/gimp-gegl.c
	* app/gegl/gimpoperationcolorbalance.c
	* app/gegl/gimpoperationcolorize.c
	* app/gegl/gimpoperationdesaturate.c
	* app/gegl/gimpoperationhuesaturation.c
	* app/gegl/gimpoperationlevels.c
	* app/gegl/gimpoperationposterize.c
	* app/gegl/gimpoperationthreshold.c
	* app/gegl/gimpoperationtilesink.c
	* app/gegl/gimpoperationtilesource.c: include only <gegl.h> and
	"gegl-types.h" from this directory, which is much more gimpish
	now. Include "gegl/buffer/gegl-buffer.h" in the source and sink
	operations.

	* app/tools/gimpimagemaptool.h: warn about inclusion of <gegl.h>
	only if it hasn't been included before, so it only warns in the
	files where we still have to address this issue.


svn path=/trunk/; revision=24625
2008-01-16 15:52:02 +00:00
f8808d8afc app/gegl/Makefile.am app/gegl/gegl-types.h new operation.
2008-01-14  Michael Natterer  <mitch@gimp.org>

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h
	* app/gegl/gimpoperationhuesaturation.[ch]: new operation.

	* app/gegl/gimp-gegl.c: register it.

	* app/tools/gimphuesaturationtool.c: use it.


svn path=/trunk/; revision=24608
2008-01-14 20:44:01 +00:00
91788fe393 app/gegl/Makefile.am app/gegl/gegl-types.h new operator.
2008-01-10  Michael Natterer  <mitch@gimp.org>

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h
	* app/gegl/gimpoperationcolorbalance.[ch]: new operator.

	* app/gegl/gimp-gegl.c: register it.

	* app/tools/gimpcolorbalancetool.c: use it.


svn path=/trunk/; revision=24587
2008-01-10 12:52:19 +00:00
1c804c8d43 app/gegl/Makefile.am app/gegl/gegl-types.h new operator.
2008-01-07  Michael Natterer  <mitch@gimp.org>

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h
	* app/gegl/gimpoperationlevels.[ch]: new operator.

	* app/gegl/gimp-gegl.c: register it.

	* app/tools/gimplevelstool.c: use it,


svn path=/trunk/; revision=24565
2008-01-07 20:37:25 +00:00
d1719638db app/gegl/Makefile.am app/gegl/gegl-types.h
2008-01-04  Michael Natterer  <mitch@gimp.org>

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h
	* app/gegl/gimpoperationcolorize.[ch]
	* app/gegl/gimpoperationposterize.[ch]: new operators which still
	use a lot of gimp stuff they shouldn't use, but at least the
	infrastructure for improving them is there now.

	* app/gegl/gimp-gegl.c: register them.

	* app/tools/gimpcolorizetool.c
	* app/tools/gimpposterizetool.c: use them.


svn path=/trunk/; revision=24528
2008-01-04 15:16:32 +00:00
bd938d40a0 app/gegl/Makefile.am app/gegl/gegl-types.h gimpish threshold operator
2008-01-03  Michael Natterer  <mitch@gimp.org>

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h
	* app/gegl/gimpoperationthreshold.[ch]: gimpish threshold operator
	which has "low" and "high" properties.

	* app/gegl/gimp-gegl.c: register it.

	* app/gegl/gimpoperationdesaturate.[ch]: fix copyright.

	* app/tools/gimpthresholdtool.[ch]: use the new operator.


svn path=/trunk/; revision=24515
2008-01-03 19:23:35 +00:00
697cc82af7 Some more gegl code to have some playground for experimenting.
2008-01-03  Michael Natterer  <mitch@gimp.org>

	Some more gegl code to have some playground for experimenting.

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h
	* app/gegl/gimpoperationdesaturate.[ch]: ported desaturate.

	* app/gegl/gimp-gegl.c: register it.

	* app/gegl/gimpoperationtilesink.h: fix name of parent class member.

	* app/core/gimpdrawable-desaturate.c: use the new operator, but
	keep the old code around (prepared for runtime switching).

	* app/core/gimpdrawable-invert.c: prepare for runtime switching
	here too.


svn path=/trunk/; revision=24514
2008-01-03 18:54:58 +00:00
3377d0423b app/gegl/gimp-gegl.c app/gegl/gimpoperationtilesource.c fixup includes a
2007-12-29  Michael Natterer  <mitch@gimp.org>

	* app/gegl/gimp-gegl.c
	* app/gegl/gimpoperationtilesource.c
	* app/gegl/gimpoperationtilesink.c: fixup includes a bit.


svn path=/trunk/; revision=24467
2007-12-29 15:25:40 +00:00
2236d9faf0 added. added from GEGL trunk. .. updated copy from GEGL trunk.
* app/gegl/gegl/buffer/: added.
* app/gegl/gegl/buffer/gegl-buffer-types.h: added from GEGL trunk.
* app/gegl/gegl/gegl-operation.h: ..
* app/gegl/gegl/gegl-types.h: updated copy from GEGL trunk.
* app/gegl/gimp-gegl.c: 
* app/gegl/gimpoperationtilesink.c:
* app/gegl/gimpoperationtilesource.c: Modified to build with direct
copies of GEGL headers.

svn path=/trunk/; revision=24466
2007-12-29 14:47:05 +00:00
70f07cd509 new files containing gimp_bpp_to_babl_format().
2007-12-29  Michael Natterer  <mitch@gimp.org>

	* app/gegl/gimp-gegl-utils.c: new files containing
	gimp_bpp_to_babl_format().

	* app/gegl/gimpoptilesink.[ch]
	* app/gegl/gimpoptilesource.[ch]: renamed..

	* app/gegl/gimpoperationtilesink.[ch]
	* app/gegl/gimpoperationtilesource.[ch]: ...to these. Cleaned them
	up quite a bit more.

	* app/gegl/Makefile.am
	* app/gegl/gimp-gegl.c: changed accordingly.


svn path=/trunk/; revision=24460
2007-12-29 02:19:23 +00:00
479a649898 Some cleanup...
2007-12-29  Michael Natterer  <mitch@gimp.org>

	Some cleanup...

	* app/Makefile.am: change linking order.

	* app/main.c: move gegl initialization from here...

	* app/app.c: ...to here.

	* app/gegl/gimpops.c: removed.

	* app/gegl/gimp-gegl.[ch]
	* app/gegl/gegl-types.h: added.

	* app/gegl/Makefile.am: changed accordingly.

	* app/gegl/gimpoptilesink.[ch]
	* app/gegl/gimpoptilesource.[ch]: made more gimpish.


svn path=/trunk/; revision=24459
2007-12-29 01:35:04 +00:00