Resurrect previous version of the linear light formula and fix it

This commit is contained in:
Alexandre Prokoudine
2017-02-05 01:32:56 +03:00
parent e69924b4eb
commit 1366592f9f

View File

@ -1782,7 +1782,14 @@ blendfun_linear_light (const float *dest,
for (c = 0; c < 3; c++) for (c = 0; c < 3; c++)
{ {
gfloat comp; gfloat comp;
comp = dest[c] + 2.0f * src[c] - 1.0f; if (src[c] <= 0.5f)
{
comp = dest[c] + 2.0 * src[c] - 1.0f;
}
else
{
comp = dest[c] + 2.0 * (src[c] - 0.5f);
}
out[c] = comp; out[c] = comp;
} }
} }
@ -1964,117 +1971,94 @@ static GimpLayerModeInfo gimp_layer_mode_infos[]=
{ GIMP_LAYER_MODE_NORMAL, { GIMP_LAYER_MODE_NORMAL,
"gimp:normal", "gimp:normal",
0, 0,
GIMP_LAYER_COMPOSITE_SRC_OVER,
}, },
{ GIMP_LAYER_MODE_DISSOLVE, { GIMP_LAYER_MODE_DISSOLVE,
"gimp:dissolve", "gimp:dissolve",
GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA, GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
GIMP_LAYER_COMPOSITE_SRC_OVER,
}, },
{ GIMP_LAYER_MODE_BEHIND, { GIMP_LAYER_MODE_BEHIND,
"gimp:behind", "gimp:behind",
0, 0,
GIMP_LAYER_COMPOSITE_DST_ATOP,
}, },
{ GIMP_LAYER_MODE_MULTIPLY_LEGACY, { GIMP_LAYER_MODE_MULTIPLY_LEGACY,
"gimp:multiply-legacy", "gimp:multiply-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_SCREEN_LEGACY, { GIMP_LAYER_MODE_SCREEN_LEGACY,
"gimp:screen-legacy", "gimp:screen-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_OVERLAY_LEGACY, { GIMP_LAYER_MODE_OVERLAY_LEGACY,
"gimp:overlay-legacy", "gimp:overlay-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_DIFFERENCE_LEGACY, { GIMP_LAYER_MODE_DIFFERENCE_LEGACY,
"gimp:difference-legacy", "gimp:difference-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_ADDITION_LEGACY, { GIMP_LAYER_MODE_ADDITION_LEGACY,
"gimp:addition-legacy", "gimp:addition-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_SUBTRACT_LEGACY, { GIMP_LAYER_MODE_SUBTRACT_LEGACY,
"gimp:subtract-legacy", "gimp:subtract-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY, { GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY,
"gimp:darken-only-legacy", "gimp:darken-only-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY, { GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY,
"gimp:lighten-only-legacy", "gimp:lighten-only-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_HSV_HUE_LEGACY, { GIMP_LAYER_MODE_HSV_HUE_LEGACY,
"gimp:hsv-hue-legacy", "gimp:hsv-hue-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_HSV_SATURATION_LEGACY, { GIMP_LAYER_MODE_HSV_SATURATION_LEGACY,
"gimp:hsv-saturation-legacy", "gimp:hsv-saturation-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_HSV_COLOR_LEGACY, { GIMP_LAYER_MODE_HSV_COLOR_LEGACY,
"gimp:hsv-color-legacy", "gimp:hsv-color-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_HSV_VALUE_LEGACY, { GIMP_LAYER_MODE_HSV_VALUE_LEGACY,
"gimp:hsv-value-legacy", "gimp:hsv-value-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_DIVIDE_LEGACY, { GIMP_LAYER_MODE_DIVIDE_LEGACY,
"gimp:divide-legacy", "gimp:divide-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_DODGE_LEGACY, { GIMP_LAYER_MODE_DODGE_LEGACY,
"gimp:dodge-legacy", "gimp:dodge-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_BURN_LEGACY, { GIMP_LAYER_MODE_BURN_LEGACY,
"gimp:burn-legacy", "gimp:burn-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_HARDLIGHT_LEGACY, { GIMP_LAYER_MODE_HARDLIGHT_LEGACY,
"gimp:hardlight-legacy", "gimp:hardlight-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_SOFTLIGHT_LEGACY, { GIMP_LAYER_MODE_SOFTLIGHT_LEGACY,
"gimp:softlight-legacy", "gimp:softlight-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY, { GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY,
"gimp:grain-extract-legacy", "gimp:grain-extract-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY, { GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY,
"gimp:grain-merge-legacy", "gimp:grain-merge-legacy",
GIMP_LAYER_MODE_FLAG_LEGACY, GIMP_LAYER_MODE_FLAG_LEGACY,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_COLOR_ERASE, { GIMP_LAYER_MODE_COLOR_ERASE,
"gimp:color-erase", "gimp:color-erase",
0, 0,
GIMP_LAYER_COMPOSITE_SRC_ATOP,
}, },
{ GIMP_LAYER_MODE_OVERLAY, { GIMP_LAYER_MODE_OVERLAY,
"gimp:layer-mode", "gimp:layer-mode",