app: fix GimpOperationReplaceMode to not do two things different than legacy

This commit is contained in:
Michael Natterer
2012-05-01 04:11:16 +02:00
parent 64a4ec12d5
commit b9db13e4fc

View File

@ -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;