Commit Graph

10 Commits

Author SHA1 Message Date
Martin Nordholts f9502d5abd Remove braces in formulas, makes everything look cleaner.
* app/gegl/gimpoperationpointlayermode.c: Remove braces in
formulas, makes everything look cleaner.

svn path=/trunk/; revision=27422
2008-10-26 19:39:07 +00:00
Martin Nordholts 5bb194a21d Clamp Addition and Subtract so that we acheieve consistent blending
* app/gegl/gimpoperationpointlayermode.c: Clamp Addition and
Subtract so that we acheieve consistent blending results. Also,
our Addition is fine, it is the formula for 'plus' in the SVG 1.2
draft that is wrong as far as I can see.

svn path=/trunk/; revision=27421
2008-10-26 19:28:47 +00:00
Martin Nordholts 65714a8ceb Continue the quest of overviewable and readable blend formulas. The macro
* app/gegl/gimpoperationpointlayermode.c: Continue the quest of
overviewable and readable blend formulas. The macro now expands to
entire case-statements.

svn path=/trunk/; revision=27420
2008-10-26 17:43:46 +00:00
Martin Nordholts 21fce4e9b4 Increase readability by introducing short aliases.
* app/gegl/gimpoperationpointlayermode.c: Increase readability by
introducing short aliases.

svn path=/trunk/; revision=27413
2008-10-26 14:39:08 +00:00
Martin Nordholts 7e6f2fc304 For blend modes with conditions, fix so that the conditions are per color
* app/gegl/gimpoperationpointlayermode.c: For blend modes with
conditions, fix so that the conditions are per color
channel. Acheived by introducing a nice little preprocessor macro.

svn path=/trunk/; revision=27412
2008-10-26 14:19:38 +00:00
Martin Nordholts adc118ec9c Enable the [0..1] clamping of the output for Dodge and Burn. Without the
* app/gegl/gimpoperationpointlayermode.c: Enable the [0..1]
clamping of the output for Dodge and Burn. Without the clamping
one gets inconsistent results when blending together identical
layers but with different opacities. Maybe we should make the
clamping configurable and introduce a HDR compositing mode or
something?

svn path=/trunk/; revision=27411
2008-10-26 13:48:19 +00:00
Martin Nordholts a25fefff04 Implemented Grain Extract and Grain Merge. Also corrected the formula for
* app/gegl/gimpoperationpointlayermode.c: Implemented Grain
Extract and Grain Merge. Also corrected the formula for Divide.

Works the same for 100% opaque layers:
 o Grain Extract
 o Grain Merge

svn path=/trunk/; revision=27410
2008-10-26 08:39:41 +00:00
Martin Nordholts cdb3f70184 Implement a bunch of layer modes. Use the exact SVG 1.2 formula for layer
* app/gegl/gimpoperationpointlayermode.c: Implement a bunch of
layer modes. Use the exact SVG 1.2 formula for layer modes that
have a counterpart in SVG 1.2. Don't clamp the result to [0..1]
for Dodge and Burn though as we don't need to. Maybe we *should*
clamp from a compositing point of view, I'm not sure. Also
reformat the code a bit for readability.

Keep in mind that we now treat the opacity of all layers the same
indepentant of the layer mode. That is why most of the new
implementations doesn't work the same as the legacy ones when
transparency is involved, only when the layers are completely
opaque. Another important property for all layer modes implemented
below is that compositing onto complete transparency gives the
same result as if the layer would have been in Normal blending
mode.

The status of the new layer mode implementations compared to the
legacy implementations is as follows:

Completely works the same:
 o Behind

Works the same for 100% opaque layers:
 o Multiply
 o Screen
 o Difference
 o Darken
 o Lighten
 o Dodge
 o Burn
 o Hard Light
 o Subtract
 o Divide

Works different but similar:
 o Overlay

Work in progress:
 o Soft Light

svn path=/trunk/; revision=27409
2008-10-25 22:44:19 +00:00
Martin Nordholts 1f7b2c257e Completed the rename with gimp:layer-mode -> gimp:point-layer-mode and
* app/gegl/gimpoperationpointlayermode.c: Completed the rename
with gimp:layer-mode -> gimp:point-layer-mode and also did some
formating.

* app/core/gimplayer.c: Changed accordingly.

svn path=/trunk/; revision=27408
2008-10-25 21:02:46 +00:00
Martin Nordholts 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