app: fix GimpOperationReplaceMode to not do two things different than legacy
This commit is contained in:
@ -174,23 +174,24 @@ gimp_operation_replace_mode_process (GeglOperation *operation,
|
||||
gfloat *mask = aux2_buf;
|
||||
gfloat *out = out_buf;
|
||||
|
||||
|
||||
while (samples--)
|
||||
{
|
||||
gint b;
|
||||
gfloat new_alpha;
|
||||
|
||||
if (mask)
|
||||
new_alpha = (layer[ALPHA] - in[ALPHA]) * (*mask) * opacity + in[ALPHA];
|
||||
else
|
||||
new_alpha = (layer[ALPHA] - in[ALPHA]) * opacity + in[ALPHA];
|
||||
|
||||
if (new_alpha)
|
||||
{
|
||||
gfloat ratio;
|
||||
|
||||
if (mask)
|
||||
{
|
||||
new_alpha = (layer[ALPHA] - in[ALPHA]) * (*mask) * opacity + in[ALPHA];
|
||||
ratio = *mask * opacity / layer[ALPHA] / new_alpha;
|
||||
}
|
||||
ratio = *mask * opacity * layer[ALPHA] / new_alpha;
|
||||
else
|
||||
{
|
||||
new_alpha = (layer[ALPHA] - in[ALPHA]) * opacity + in[ALPHA];
|
||||
ratio = opacity / layer[ALPHA] / new_alpha;
|
||||
}
|
||||
ratio = opacity * layer[ALPHA] / new_alpha;
|
||||
|
||||
for (b = RED; b < ALPHA; b++)
|
||||
{
|
||||
@ -207,6 +208,12 @@ gimp_operation_replace_mode_process (GeglOperation *operation,
|
||||
out[b] = in[b] - t;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (b = RED; b < ALPHA; b++)
|
||||
out[b] = in[b];
|
||||
}
|
||||
|
||||
out[ALPHA] = new_alpha;
|
||||
|
||||
|
Reference in New Issue
Block a user