Commit Graph

45 Commits

Author SHA1 Message Date
Michael Natterer 23c3cf7249 app: add gimp_gegl_node_get_format()
which is a wrapper around gegl_operation_get_format().
2016-06-08 00:04:50 +02:00
Michael Natterer dac7201ead app: follow GEGL propertiy keys convention change
and clean up the magic a bit.
2014-05-16 03:10:01 +02:00
Michael Muré c2da46d810 app: adapt to the transform ops API change in GEGL 2013-06-06 19:58:48 +02:00
Michael Natterer 5b86b55e2a app: add gimp_gegl_get_op_enum_type() to get the GType of a gegl enum
and use it in convert-precision-dialog.c
2012-09-24 19:04:01 +02:00
Michael Natterer 373a4e7469 app: completely remove TileManager and friends (base/ and paint-funcs/)
And along with it a lot of stuff like the drawable preview cache, the
gegl tile manager backend, temporary gimp_gegl_buffer_foo() stuff, and
the remaining bits of performance.

The projection is in an evil semi-ported state which makes it work
ok-ish for stuff like layer moving, but absolutely unbearable for
painting, there is also an off-by-one rendering glitch at some zoom
levels.
2012-06-20 21:44:09 +02:00
Michael Natterer 1a624d4df4 app: remove many includes of "gegl/gimp-gegl-utils.h" 2012-05-10 23:12:39 +02:00
Michael Natterer 3ad73b3658 libgimpcolor: add GdkPixbuf <-> GeglBuffer utility functions
and update tons of includes in libgimp and app.
2012-05-03 03:37:20 +02:00
Michael Natterer e15702cbe5 app: create gimp-babl-compat.[ch] for gimp_babl_format_get_image_type()
and remove gimp_drawable_type().
2012-05-02 17:51:15 +02:00
Michael Natterer 3af70584d0 app: remove bpp <-> format conversion stuff from gimp-gegl-utils.[ch]
Fix stuff by picking formats as we get data from the "outside", like a
GdkPixbuf, and pass around more proper formats from where we know them.
2012-05-02 17:51:08 +02:00
Michael Natterer ff931e1ded app: move gimp_babl_format_get_base_type() to gimp-babl.[ch]
The GimpImageBaseType enum is going to go away, but a format -> enum
API is going to stay around.
2012-05-02 17:51:08 +02:00
Michael Natterer 685a48d59a app: move gimp_gegl_buffer_get_temp_buf() to gimptempbuf.[ch] 2012-05-02 17:51:02 +02:00
Michael Natterer 42a5f01be3 app: rename TempBuf to GimpTempBuf 2012-05-02 17:51:00 +02:00
Michael Natterer 690a12f2a7 app: move gimp_temp_buf_create_buffer() to temp-buf.[ch]
TempBuf will soon be promoted to be a core/ citizen.
2012-05-02 17:50:59 +02:00
Michael Natterer 7441a1f6f7 app: turn the TempBuf's "bytes" into "format" and port everything to it 2012-05-02 17:50:59 +02:00
Michael Natterer dd103d227b app: add gimp_babl_format_get_image_type,base_type() 2012-05-02 17:50:57 +02:00
Øyvind Kolås 6efd812d08 app: s/GIMP_GEGL_RECT/GEGL_RECTANGLE/
Defining GeglRectangle inline is so useful that it has been added to
GEGL.
2012-05-02 17:50:52 +02:00
Michael Natterer c5c555c834 app: add "take_ownerspip" param to gimp_temp_buf_create_buffer()
and get rid of some more intermediate buffer creation/destruction, and
some redundant temp_buf_free() plus g_object_unref().
2012-05-02 17:50:51 +02:00
Øyvind Kolås 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
Michael Natterer 315881065b app: add gimp_gegl_progress_connect()
which connects to notify::progress of the operation inside a node an
updates a GimpProgress accordingly.
2012-05-02 17:50:37 +02:00
Michael Natterer de0321a82e app: add gimp_gegl_node_set_layer_mode()
and remove all other code that does layer_mode -> node.
2012-05-02 17:46:13 +02:00
Michael Natterer 91c33799e4 app: use utility functions to create a GeglBuffer from a TempBuf
and to get it back from the buffer.
2012-05-02 17:46:11 +02:00
Michael Natterer cab21271fa app: add gimp_gegl_buffer_dup() which creates a TileManager backed dup 2012-05-02 17:46:06 +02:00
Øyvind Kolås 390d48d436 app: add a GIMP_GEGL_RECT utility macro
It is evil, but it is possible to take the address of an inline defined struct
as an argument in C. =)
2012-05-02 17:46:05 +02:00
Øyvind Kolås fe3220ae6f app: remove write property of GeglBuffer backend 2012-05-02 17:46:05 +02:00
Michael Natterer 1a1fd29982 app: add gimp_gegl_buffer_get_tiles() 2012-05-02 17:46:05 +02:00
Michael Natterer f5bfdde30a app: add gimp_gegl_buffer_new() to create a TileManager-backed buffer 2012-05-02 17:46:04 +02:00
Michael Natterer 69c52173fb app: change gimp_gegl_color_set_rgba() to gimp_gegl_color_new()
which saves one line of code in every single use case.
2012-05-02 17:46:03 +02:00
Michael Natterer 5933f222c9 app: add gimp_bpp_to_babl_format_with_alpha() 2012-05-02 17:45:58 +02:00
Michael Natterer 553e65e859 app: add gimp_pixbuf_create_buffer() and use it in GimpBuffer 2012-05-02 17:45:57 +02:00
Michael Natterer d146cc40ea app: require a Babl for all buffers created on top of tiles
Fixes quite some introduced glitches with indexed mode because
the buffers use the right pixel format now.
2012-05-02 17:45:56 +02:00
Michael Natterer 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
Michael Natterer 0ae0dfb52e app: add a flatten meta-op and use it for layers and channels 2012-05-02 17:45:52 +02:00
Michael Natterer 77bbbab5c6 app: make sure TileManagers and the GeglBuffers backed by them are in sync
by adding gegl_buffer_flush() and gegl_tile_source_reinit() in the
drawable's buffer and tiles API, and at some half-ported places that
mix legacy and gegl code.
2012-05-02 17:45:50 +02:00
Michael Natterer b95fc4f8d5 app: rename gimp_drawable_get_buffer() and gimp_tile_manager_get_gegl_buffer()
to foo_create_buffer() because they return new objects.
2012-05-02 17:45:47 +02:00
Michael Natterer 3bd8ee1a63 app: move new get_buffer() functions around; some general cleanup 2012-05-02 17:45:44 +02:00
Michael Natterer 6cdf63cc71 app: add gimp_interpolation_to_gegl_filter() 2010-06-06 17:41:31 +02:00
Michael Natterer 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
Martin Nordholts 488fcb3944 Add a GEGL utility function gimp_buffer_to_tiles()
svn path=/trunk/; revision=28068
2009-02-23 20:43:26 +00:00
Michael Natterer 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
Martin Nordholts 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
Michael Natterer 79463b2065 remove function gimp_bpp_to_babl_format_linear() and add "gboolean linear"
2008-10-13  Michael Natterer  <mitch@gimp.org>

	* app/gegl/gimp-gegl-utils.[ch]: remove function
	gimp_bpp_to_babl_format_linear() and add "gboolean linear"
	parameter to gimp_bpp_to_babl_format().

	* app/gegl/gimpoperationtilesink.c (process)
	* app/gegl/gimpoperationtilesource.c (prepare): simply pass
	self->linear to above changed function instead of selecting
	between the two old functions.


svn path=/trunk/; revision=27275
2008-10-14 09:19:37 +00:00
Michael Natterer 517e58cdeb Address Bug 554983 – Layers Projection using GEGL
2008-10-09  Michael Natterer  <mitch@gimp.org>

	Address Bug 554983 – Layers Projection using GEGL

	* app/gegl/gimp-gegl-utils.[ch]: add (imcomplete) function
	gimp_layer_mode_to_gegl_operation() from bug #554983.

	* app/core/gimpdrawable.[ch]: add gimp_drawable_get_source_node()
	which returns a GimpOperationTileSource for the drawable's
	tiles.

	(gimp_drawable_real_set_tiles)
	(gimp_drawable_configure): set the node's "tiles" property.

	* app/core/gimplayer.[ch]: add gimp_layer_get_node() which returns
	a GeglNode with proxy "input" and "output" pads to be plugged
	into the projection graph. The node has children for opacity,
	mask, layer mode and layer offset.

	(gimp_layer_translate)
	(gimp_layer_add_mask)
	(gimp_layer_apply_mask)
	(gimp_layer_set_opacity)
	(gimp_layer_set_mode): reconfigure the respective nodes.

	* app/core/gimpimage.[ch]: keep a "graph" node around and destroy
	it in finalize(). Not even a stub, just a silly GEGL dependency.


svn path=/trunk/; revision=27204
2008-10-09 20:44:23 +00:00
Sven Neumann cd270aac4c added new function gimp_bpp_to_babl_format_linear().
2007-12-30  Sven Neumann  <sven@gimp.org>

	* app/gegl/gimp-gegl-utils.[ch]: added new function
	gimp_bpp_to_babl_format_linear().

	* app/gegl/gimpoperationtilesink.[ch]
	* app/gegl/gimpoperationtilesource.[ch]: added boolean property 
to
	toggle between linear and gamma-corrected data.

	* app/core/gimpdrawable-invert.c: assume linear data to be 
closer
	to the original definition of the invert operation in GIMP.
	Enable the GEGL code path per default.


svn path=/trunk/; revision=24491
2007-12-30 19:14:27 +00:00
Sven Neumann e77d96641f declare gimp_bpp_to_babl_format() as G_GNUC_CONST.
2007-12-29  Sven Neumann  <sven@gimp.org>

	* app/gegl/gimp-gegl-utils.h: declare gimp_bpp_to_babl_format() 
as
	G_GNUC_CONST.


svn path=/trunk/; revision=24463
2007-12-29 12:31:10 +00:00
Michael Natterer 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