04-09-2022, 05:57 PM
Hello guys,
Similar to "HSV Hue", "HSV Saturation" and "HSV Value" i want to implement an "Alpha" layer blending mode which replaces the target alpha channel with the one of the input layer.
I'm not big into programming so luckily i can just use one of the aforementioned ones as a base.
The color space transformations aren't required and we don't need to do any math so the code should just be:
operations/layer-modes/gimpoperationlayermode-blend.c (line 538):
operations/layer-modes/gimpoperationlayermode-blend.h (line 85)
operations/layer-modes/gimp-layer-modes(line 584)
However, i can't get Gimp to build. Not that it fails; it's that the problem sits in front of the desk.
The tools don't link up and the libraries don't seem to work. I've already spent way more time into setting this up then coming up with the code seen above.
Personally i don't think it's worth putting more time into trying to make the building work so
Could somebody implement these changes and upload a Windows build? (if it even works that way)
Setting this up as a plug-in would obviously be the better way but i have no idea how to do this, especially since i can't just copy and modify existing functions.
Please let me know if you can help or know a better solution
Similar to "HSV Hue", "HSV Saturation" and "HSV Value" i want to implement an "Alpha" layer blending mode which replaces the target alpha channel with the one of the input layer.
I'm not big into programming so luckily i can just use one of the aforementioned ones as a base.
The color space transformations aren't required and we don't need to do any math so the code should just be:
operations/layer-modes/gimpoperationlayermode-blend.c (line 538):
Code:
void
gimp_operation_layer_mode_blend_alpha (const gfloat *in,
const gfloat *layer,
gfloat *comp,
gint samples)
{
while (samples--)
{
comp[RED] = layer[RED];
comp[GREEN] = layer[GREEN]
comp[BLUE] = layer[BLUE];
comp[ALPHA] = in[ALPHA];
comp += 4;
layer += 4;
in += 4;
}
}
Code:
void gimp_operation_layer_mode_blend_hsv_value (const gfloat *in,
const gfloat *layer,
gfloat *comp,
gint samples);
operations/layer-modes/gimp-layer-modes(line 584)
Code:
{ GIMP_LAYER_MODE_ALPHA,
.op_name = "gimp:layer-mode",
.blend_function = gimp_operation_layer_mode_blend_alpha,
.flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE,
.context = GIMP_LAYER_MODE_CONTEXT_ALL,
.paint_composite_mode = GIMP_LAYER_COMPOSITE_UNION,
.composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP,
.composite_space = GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
.blend_space = GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
},
However, i can't get Gimp to build. Not that it fails; it's that the problem sits in front of the desk.
The tools don't link up and the libraries don't seem to work. I've already spent way more time into setting this up then coming up with the code seen above.
Personally i don't think it's worth putting more time into trying to make the building work so
Could somebody implement these changes and upload a Windows build? (if it even works that way)
Setting this up as a plug-in would obviously be the better way but i have no idea how to do this, especially since i can't just copy and modify existing functions.
Please let me know if you can help or know a better solution