Ell
c6a2a64604
app: add composite mode support to erase mode
2017-01-31 18:16:44 -05:00
Michael Natterer
9397aff96f
app: add GIMP_LAYER_MODE_LUMA_DARKEN_ONLY and _LUMA_DARKEN_ONLY
...
which are perceptual versions of the new LUMINANCE_DARKEN_ONLY and
LUMINANCE_LIGHTEN_ONLY modes. Add the new modes to the UI.
2017-01-30 22:07:51 +01:00
Øyvind Kolås
e9a6d93197
app: add darken only, lighten only that uses luminance
...
These variations on darken only and lighten only have the advantage over the
componentvise versions that they always use the full triplet of either original
or new layer - meaning no new colors/hues will be introduced. This is similar
to how these modes operated/operates in picture publisher and photo-paint.
2017-01-29 22:27:28 +01:00
Michael Natterer
5389e8e417
app, libgimp: rename GIMP_LAYER_MODE_NORMAL to NORMAL_LINEAR
...
and NORMAL_NON_LINEAR to NORMAL, so it's consistent with all other
modes.
2017-01-28 21:38:52 +01:00
Michael Natterer
31241a984e
app, libgimp: remove GIMP_LAYER_MODE_DARKEN,LIGHTEN_ONLY_LINEAR
...
There is no _LINEAR variant, the modes always do the same.
2017-01-25 22:08:06 +01:00
Øyvind Kolås
09af8dbca5
app: slight optimization of sse2 for src_atop
2017-01-25 21:14:14 +01:00
Øyvind Kolås
e1c1a5a9a8
app: implement SSE2 acceleration of src_atop
2017-01-25 12:54:20 +01:00
Michael Natterer
0fcf4ca59d
app: remove gimpblendcomposite.h from Makefile.am, it's gone
2017-01-24 23:54:56 +01:00
Øyvind Kolås
579676cfe4
app: fix grain_extract behavior
...
The blending function of grain merge was being used instead of grain extract.
2017-01-24 19:19:19 +01:00
Øyvind Kolås
6a1d49bc6d
app: fix legacy divide blend mode
...
The porting from 8bit per component scaled some 8bit fractions up to huge
floating point numbers, this works for most values but causes trouble for near
transparent pixel values. This commit copies the inner blend loop from the new
divide layer mode, but keeps the old compositing logic.
2017-01-24 18:36:08 +01:00
Ell
9128f3fc87
app: skip color calculation in the blend funcs if either dest or src ...
...
... is fully transparent, instead of just src.
The blend func results only affect the intersection of dest and src.
Run time is currently dominated by the compositing step for most modes,
so the difference in performance is pretty negligible, but it does make
a difference for the more expensive modes, like the HSV ones.
2017-01-24 11:27:40 -05:00
Øyvind Kolås
59471adfee
app: remove default from gimp_layer_mode_get_blend_fun switch
...
This makes gcc warn when new cases have been added to the layer mode enum,
better than silently failing at runtime.
2017-01-24 02:53:39 +01:00
Øyvind Kolås
d836d94114
app: implement non-legacy blend modes in GimpOperationLayerMode
...
For operations needing to override default behavior sub-classes should still be
used.
This commit also enables pinligh, vividlight and linearlight blend mode modes
2017-01-23 23:47:56 +01:00
Øyvind Kolås
5978def585
app: improve vivid-light formula
2017-01-23 22:40:10 +01:00
Øyvind Kolås
774687dcfe
app: improve formulas of softlight and linear light blending modes
2017-01-23 19:03:44 +01:00
Michael Natterer
d3b8a0d007
app: s/trc/space/ in the property names too
2017-01-22 17:14:44 +01:00
Øyvind Kolås
2537d3d0e9
app: refer to (color) space instead of trc for blend/composite
...
Since CIE Lab is one of the supported color spaces for doing the blending -
this enum is not only about transfer functions/curves or gamma. This finishes
already started cleanups.
2017-01-22 16:04:50 +01:00
Michael Natterer
b10fc58802
app: add a "layer-mode" property to GimpOperationLayerMode
2017-01-22 14:41:21 +01:00
Øyvind Kolås
c9ad09df61
app: add a handful more blending innerloops
...
Adding linear burn, vivid light, linear light, pinlight and exclusion formulas
as described on
http://www.deepskycolors.com/archivo/2010/04/21/formulas-for-Photoshop-blending-modes.html
2017-01-22 13:41:49 +01:00
Michael Natterer
05f3d38acb
app: rename GimpOperationPointLayerMode to GimpOperationLayerMode
...
and formatting cleanup.
2017-01-21 21:35:52 +01:00
Ell
0c35baecca
app: in gimp_composite_blend(), more alloca avoiding
2017-01-21 09:06:08 -05:00
Øyvind Kolås
c993adf91e
app: remove a trampoline in layer/paint mode dispatch
...
Fully removes one trampoline level and passing fewer args through the remaining
trampoline.
2017-01-21 14:10:03 +01:00
Ell
fb3b99553c
app: in gimp_composite_blend(), avoid another alloca when doing in-place output
2017-01-21 07:18:47 -05:00
Ell
4d985d11df
app: in gimp_composite_blend(), avoid an alloca when doing in-place output
2017-01-21 06:36:03 -05:00
Ell
5da89f0daf
app: in gimp_composite_blend(), avoid overwriting input in some cases (again)
...
Revert commit f6436eee96
, which was wrong,
and redo it the right way.
2017-01-19 16:16:44 -05:00
Øyvind Kolås
e9d72ef2a8
app: finish GimpLayerColorSpace rename
2017-01-19 19:22:40 +00:00
Øyvind Kolås
386e18e510
app: rename GimpLayerBlendTRC to GimpLayerColorSpace
...
It is used both for blending and compositing, the repeated use of the word
BLEND in code made the logic involving both blending and compositing hard to
read.
2017-01-19 19:17:24 +00:00
Ell
f6436eee96
app: in gimp_composite_blend(), avoid overwriting input in some cases
...
Note that in some cases the alloca may be unnecessary, but this keeps
the code clean, and we have to be able to *potentially* do the alloca
anyway, so what the hell.
2017-01-19 13:51:48 -05:00
Michael Natterer
a5ee5f28f9
app: cast ops using (gpointer) everywhere instead of 3 different ways
2017-01-19 19:04:49 +01:00
Michael Natterer
268e35a996
app: remove prepare() impls from erase and anti-erase
...
the calling code makes sure the ops have the right linear formats.
2017-01-19 18:49:22 +01:00
Michael Natterer
349cff8c16
app: remove "gboolean linear" from gimp_get_layer_mode_function()
...
and get rid of the two process_pixels() functions in the LCH modes,
they always take linear now.
2017-01-19 18:43:31 +01:00
Ell
417d9553b5
app: in gimpblendcomposite.h, small fix in compfun_dst_atop()
2017-01-19 12:03:39 -05:00
Ell
7df1bb4c0e
app: in gimp_blend_composite(), fix dst_atop and avoid some conversions
...
Also s/comp_alpha/layer_alpha/ for consistency.
2017-01-19 11:55:21 -05:00
Michael Natterer
d656fbab86
app: coding style cleanup in all layer modes, fiddle with includes a bit
2017-01-19 17:48:45 +01:00
Øyvind Kolås
80c947f04f
app: add missing breaks in switches of gimpblendcomposite
2017-01-19 14:25:04 +00:00
Michael Natterer
4e9ce952d9
app: indentation in operations-types.h
2017-01-19 14:47:48 +01:00
Michael Natterer
4683b986f3
app: use the GimpBlendFunc typedef in gimpblendcomposite.h
2017-01-19 14:46:29 +01:00
Øyvind Kolås
f645665324
app: unconditionally set alpha in hardlight/softlight/overlay
2017-01-19 14:44:39 +01:00
Michael Natterer
bfdea93a9c
app: indentation and formatting cleanup in gimpblendcomposite.h
...
Also remove all includes, they should already be there when this
header gets included.
2017-01-19 14:31:40 +01:00
Øyvind Kolås
72cbda11ae
app: composite_blend, fix src_over
2017-01-19 04:57:14 +01:00
Øyvind Kolås
41fff6990e
app: make layer modes more configurable
...
Implement a common utility function gimp_blend_composite that uses utility
functions for implementing layer modes, with separate (possibly SIMD) optimized
loops for blending and compositing, with configured linear TRC, perceptual
gamma TRC or even using CIE Lab as the space.
2017-01-19 01:04:15 +01:00
Michael Natterer
6e72d3eddf
app: add blend-trc and composite-mode properties to GimpOperationPointLayerMode
...
and set them to unused default values.
2017-01-17 15:09:17 +01:00
Michael Natterer
5c4eb75361
app: register the enums in operations-enums.h as GTypes
...
and rename them to GimpLayerBlendTRC and GimpLayerCompositeMode.
2017-01-17 01:19:06 +01:00
Michael Natterer
e267d87963
app: add operations-enums.h with two soon-needed enums
2017-01-16 23:07:50 +01:00
Michael Natterer
69c4644e15
app: rename GimpLayerModeFunction to GimpLayerModeFunc
...
like all other function typedefs and add GimpBlendFunc typedef which
will be needed soon. Also rename get_layer_mode_function() to
gimp_get_layer_mode_function().
2017-01-16 22:44:01 +01:00
Øyvind Kolås
e1b7eb7245
app: divide blend mode, limit high values to 5.0
...
Possibly counteracting inaccuracies in used babl conversions, but with this the
result match legacy as expected.
2017-01-16 02:36:11 +01:00
Øyvind Kolås
60847cce73
app: remove odd ratio scaling, replace with range check for nan
2017-01-15 01:33:40 +01:00
Øyvind Kolås
315ccc7f82
app: remove clamping in multiply mode
2017-01-15 01:33:40 +01:00
Michael Natterer
50669fe6d4
app, libgimp: rename BEHIND enum values to be consistent with others
...
Also update gimplayermodefunctions.c which I forgot before.
2017-01-15 00:01:09 +01:00
Øyvind Kolås
f01374798e
app: remove clamps from addition, subtract and grain blend modes
2017-01-14 21:06:06 +01:00