It is currently Sat Jun 22, 2024 10:22 pm


All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 190 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 10  Next
Author Message
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 1:56 am  (#81) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
Okay i compiled for Windows 10 64 but i get a fatal exception when i launch it. Should i remove innerglow.dll, and bevel.dll? Seems like Gimp is trying to call from the new gegleffects.dll and i assume all the other filters are built into the new gegleffects.dll.

Attachment:
2022-09-22_024800.jpg
2022-09-22_024800.jpg [ 332.14 KiB | Viewed 22735 times ]


Am i wrong?

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 2:16 am  (#82) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
Okay after removing inner-glow.dll and bevel.dll i can open the GEGL Effects filter without a fatal error that crashes Gimp.
But, i can not use bevel or innerglow.

Attachment:
RD-2022-09-22_031103.jpg
RD-2022-09-22_031103.jpg [ 304.28 KiB | Viewed 22734 times ]

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 3:27 am  (#83) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
I re-added bevel and innerglow into the gegl plugins folder and it now works. I assume Gimp had to reconfigure the gegleffects.dll file again?

Attachment:
TC-Error-3+RD-2022-09-22_035921.jpg
TC-Error-3+RD-2022-09-22_035921.jpg [ 328.23 KiB | Viewed 22726 times ]


I just cannot seem to get any bevel effect though. Probably me. ;) :bigthup

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 9:37 am  (#84) 
Offline
GimpChat Member
User avatar

Joined: Oct 31, 2020
Posts: 1442
The fatal error is a one time thing that breaks all the presets. I get that too every time I update an enum list. You should not have to remove bevel and innerglow. GEGL Effects still depends on bevel and innerglow and I have no plans to change that. Anyhow Image file overlay will not contain a blend mode as it early in the graph (below gradient, color overlay, and everything else.

I am currently working on giving inner glow and gradient blend modes of there own. If both colors of gradient are set to one then that can be a color-overlay with blend modes.


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 9:45 am  (#85) 
Offline
GimpChat Member
User avatar

Joined: Oct 31, 2020
Posts: 1442
Rod wrote:
Okay after removing inner-glow.dll and bevel.dll i can open the GEGL Effects filter without a fatal error that crashes Gimp.
But, i can not use bevel or innerglow.

Attachment:
RD-2022-09-22_031103.jpg


it looks like it is working correctly. You are just using the grain extract blend mode. Grain Merge and Multiply are unironically the only blend modes that produce good bevels.


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 9:55 am  (#86) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
contrast_ wrote:
Rod wrote:
Okay after removing inner-glow.dll and bevel.dll i can open the GEGL Effects filter without a fatal error that crashes Gimp.
But, i can not use bevel or innerglow.

Attachment:
RD-2022-09-22_031103.jpg


it looks like it is working correctly. You are just using the grain extract blend mode. Grain Merge and Multiply are unironically the only blend modes that produce good bevels.

Okay thx contrast! :bigthup
Excellent update by the way. Figuring out the c file and meson.build file was fun and i learned a lot. Maybe not enough to build new GEGL filters but i'm learning. That was a good first step not including those for Windows builders. ;)

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 10:45 am  (#87) 
Offline
GimpChat Member
User avatar

Joined: Oct 31, 2020
Posts: 1442
Rod wrote:
contrast_ wrote:
Rod wrote:
Okay after removing inner-glow.dll and bevel.dll i can open the GEGL Effects filter without a fatal error that crashes Gimp.
But, i can not use bevel or innerglow.

Attachment:
RD-2022-09-22_031103.jpg


it looks like it is working correctly. You are just using the grain extract blend mode. Grain Merge and Multiply are unironically the only blend modes that produce good bevels.

Okay thx contrast! :bigthup
Excellent update by the way. Figuring out the c file and meson.build file was fun and i learned a lot. Maybe not enough to build new GEGL filters but i'm learning. That was a good first step not including those for Windows builders. ;)


I did that to discourage people from using it. It is not ready yet.


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 12:39 pm  (#88) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
contrast_ wrote:

I did that to discourage people from using it. It is not ready yet.

Testing is always good though. Especially between platforms.
:bigthup

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 1:17 pm  (#89) 
Offline
GimpChat Member
User avatar

Joined: Oct 31, 2020
Posts: 1442
I ran into a really complicated problem when adding multiple blend mode switchers inside one filter. Inner Glow's blend mode does not switch and InnerGlow is always enabled. I don't know what to do but I am working my hardest to solve this. The problem of innerglow not disabling may be a separate issue.


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Thu Sep 22, 2022 1:22 pm  (#90) 
Offline
GimpChat Member
User avatar

Joined: Oct 31, 2020
Posts: 1442
I might make it where gegl:innerglow and gegl:bevel have blend mode switchers built into them that effects can use. And hide them from stand alone as they already have all of Gimp's blend modes. Effects can have a gradient blend mode switcher of its own but it will depend on gegl:bevel and gegl:innerglow for their hidden blend mode switching ability.

The core problem is using more then one blend mode switcher in a filter. So this might be the fix.


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 4:51 am  (#91) 
Offline
GimpChat Member
User avatar

Joined: Oct 31, 2020
Posts: 1442
Bevel and InnerGlow now have blend mode switching abilities. Gradient will soon have them as well. Image file overlay cannot have a blend mode switcher due to its node position. (It won't do anything as it has nothing to blend with) and I am too lazy to rearrange it as that would take some work. However image file overlay will be able to blend with gradients, gradient set to the same color will make it as if it is blending with a single color. Image file overlay will get an opacity slider which will be easy as gegl:layer opacity= is a built in option of it.

Preview of the blend modes switching.
Image

Source code (THIS WILL BREAK ALL LEGACY PRESETS IN GEGL EFFECTS IF COMPILED AND PUT IN GEGL PLUGINS. YOU SHOULD NOT NEED TO REMOVE BEVEL OR INNER GLOW. THE ERROR YOU GET SHOULD ONLY BE A ONE TIME THING. )

REMEMBER, This is a unreleased version. It does not have a gradient blend mode switcher or opacity slider for image file overlay. Once That is done this will be on Github.
/* This file is an image processing operation for GEGL
*
* GEGL is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* GEGL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with GEGL; if not, see <https://www.gnu.org/licenses/>.
*
* Copyright 2006 Øyvind Kolås <pippin@gimp.org>
*2022 Beaver GEGL Effects
* 2022 Liam (for helping give Inner Glow a disable checkbox)
*/

#include "config.h"
#include <glib/gi18n-lib.h>





#ifdef GEGL_PROPERTIES

enum_start (gegl_blend_mode_type_effects)
  enum_value (GEGL_BLEND_MODE_TYPE_MULTIPLY,      "Multiply",
              N_("Multiply"))
  enum_value (GEGL_BLEND_MODE_TYPE_GRAINMERGE,      "Grain Merge",
              N_("Grain Merge"))
  enum_value (GEGL_BLEND_MODE_TYPE_SUBTRACT,      "Subtract",
              N_("Subtract"))
  enum_value (GEGL_BLEND_MODE_TYPE_GRAINEXTRACT,      "Grain Extract",
              N_("Grain Extract"))
enum_end (GeglBlendModeType)


enum_start (gegl_blend_mode_type_effectsig)
  enum_value (GEGL_BLEND_MODE_TYPE_OVER,      "Over",
              N_("Over"))
  enum_value (GEGL_BLEND_MODE_TYPE_GRAINMERGEIG,      "Grain Merge",
              N_("Grain Merge"))
  enum_value (GEGL_BLEND_MODE_TYPE_ADDITION,      "Addition",
              N_("Addition"))
  enum_value (GEGL_BLEND_MODE_TYPE_SOFTLIGHTIG,      "Softlight",
              N_("Softlight"))
  enum_value (GEGL_BLEND_MODE_TYPE_SCREENIG,      "Screen",
              N_("Screen"))
  enum_value (GEGL_BLEND_MODE_TYPE_MULTIPLYIG,      "Multiply",
              N_("Multiply"))
  enum_value (GEGL_BLEND_MODE_TYPE_HSLCOLORIG,      "HSL Color",
              N_("HSL Color"))
  enum_value (GEGL_BLEND_MODE_TYPE_OVERLAYIG,      "Overlay",
              N_("Overlay"))
enum_end (GeglBlendModeTypeig)






enum_start (guichangeenum)
enum_value   (BEAVER_UI_STROKESHADOW, "strokeshadow", N_("Outline and Shadow"))
enum_value   (BEAVER_UI_INNERGLOWBEVEL, "innerglowbevel", N_("Bevel and Inner Glow"))
enum_value   (BEAVER_UI_IMAGEGRADIENT, "imagegradient", N_("Image file upload and Gradient"))
  enum_end (guiend)



property_enum(guichange, _("Part of filter to be displayed"),
    guiend, guichangeenum,
    BEAVER_UI_STROKESHADOW)
  description(_("Change the GUI option"))

property_enum (blendmode, _("Blend Mode of Bevel's emboss'"),
    GeglBlendModeType, gegl_blend_mode_type_effects,
    GEGL_BLEND_MODE_TYPE_MULTIPLY)
  ui_meta ("visible", "guichange {innerglowbevel}")



property_file_path(src, _("Optional image file overlay upload "), "")
    description (_("Source image file path (png, jpg, raw, svg, bmp, tif, ...)"))
ui_meta ("visible", "guichange {imagegradient}")

property_color  (optioncolor, _("Optional Color Overlay"), "#ffffff")
  ui_meta ("visible", "guichange {strokeshadow}")



property_int (depth, _("Bevel Depth --ENABLE BEVEL"), 1)
    description (_("Filter width"))
    value_range (1, 70)
  ui_meta ("visible", "guichange {innerglowbevel}")

property_double (bevel1, _("Rotate Bevel Lighting (90 resets)"), 90.0)
    description (_("Elevation angle (degrees)"))
    value_range (55, 125)
    ui_meta ("unit", "degree")
  ui_meta ("visible", "guichange {innerglowbevel}")


property_double (radius1, _("Radius of Bevel"), 7.0)
  value_range (7, 12.0)
  ui_range (1.0, 12)
  ui_gamma (1.5)
  ui_meta ("visible", "guichange {innerglowbevel}")




property_double (opacitystroke, _("Outline's Opacity --ENABLE OUTLINE"), 0.0)
  value_range   (0.0, 1.0)
  ui_steps      (0.01, 0.10)
  ui_meta ("visible", "guichange {strokeshadow}")


/* Should correspond to GeglMedianBlurNeighborhood in median-blur.c */
enum_start (gegl_stroke_grow_shape)
  enum_value (GEGL_stroke_GROW_SHAPE_SQUARE,  "square",  N_("Square"))
  enum_value (GEGL_stroke_GROW_SHAPE_CIRCLE,  "circle",  N_("Circle"))
  enum_value (GEGL_stroke_GROW_SHAPE_DIAMOND, "diamond", N_("Diamond"))
enum_end (GeglstrokeGrowShape)


property_double (xstroke, _("Outline X Position"), 0.0)
  description   (_("Horizontal shadow offset"))
  ui_range      (-10.0, 10.0)
  ui_steps      (1, 10)
  ui_meta ("visible", "guichange {strokeshadow}")



property_double (ystroke, _("Outline Y Position"), 0.0)
  description   (_("Vertical shadow offset"))
  ui_range      (-10.0, 10.0)
  ui_steps      (1, 10)
  ui_meta ("visible", "guichange {strokeshadow}")





property_enum   (grow_shape, _("Grow shape"),
                 GeglstrokeGrowShape, gegl_stroke_grow_shape,
                 GEGL_stroke_GROW_SHAPE_CIRCLE)
  description   (_("The shape to expand or contract the stroke in"))
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (radiusstroke, _("Outline's Blur radius"), 0.0)
  value_range   (0.0, 2)
  ui_range      (0.0, 300.0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  ui_meta ("visible", "guichange {strokeshadow}")


property_double (grow_radiusstroke, _("Outline's Grow radius"), 12.0)
  value_range   (0.0, 100.0)
  ui_range      (0.0, 50.0)
  ui_digits     (0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  description (_("The distance to expand the stroke before blurring; a negative value will contract the stroke instead"))
  ui_meta ("visible", "guichange {strokeshadow}")




property_color  (colorstroke, _("Outline's Color"), "#k")
    /* TRANSLATORS: the string 'black' should not be translated */
  description   (_("The shadow's color (defaults to 'black')"))
    ui_meta     ("role", "color-primary")
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (opacity, _("Shadow/Glow Opacity --ENABLE SHADOW/GLOW"), 0.0)
  value_range   (0.0, 1.0)
  ui_steps      (0.01, 0.10)
  ui_meta ("visible", "guichange {strokeshadow}")







property_double (x, _("Shadow/Glow X"), 10.0)
  description   (_("Horizontal shadow offset"))
  ui_range      (-40.0, 40.0)
  ui_steps      (1, 10)
  ui_meta       ("unit", "pixel-distance")
  ui_meta       ("axis", "x")
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (y, _("Shadow/Glow Y"), 10.0)
  description   (_("Vertical shadow offset"))
  ui_range      (-40.0, 40.0)
  ui_steps      (1, 10)
  ui_meta       ("unit", "pixel-distance")
  ui_meta       ("axis", "y")
  ui_meta ("visible", "guichange {strokeshadow}")


property_color  (color, _("Shadow/Glow Color"), "black")
    /* TRANSLATORS: the string 'black' should not be translated */
  description   (_("The shadow's color (defaults to 'black')"))
  ui_meta ("visible", "guichange {strokeshadow}")

/* It does make sense to sometimes have opacities > 1 (see GEGL logo
* for example)
*/




property_double (grow_radius, _("Shadow/Glow Grow radius"), 0.0)
  value_range   (0.0, 100.0)
  ui_range      (0.0, 50.0)
  ui_digits     (0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  description (_("The distance to expand the shadow before blurring; a negative value will contract the shadow instead"))
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (radius, _("Shadow/Glow Blur radius"), 12.0)
  value_range   (0.0, G_MAXDOUBLE)
  ui_range      (0.0, 300.0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  ui_meta ("visible", "guichange {strokeshadow}")


property_boolean (innerglow, _("Enable Inner Glow"), FALSE)
  description   (_("Whether to add an inner glow effect, which can be slow"))
  ui_meta ("visible", "guichange {innerglowbevel}")

property_enum (blendmodeig, _("Blend Mode of Inner Glow"),
    GeglBlendModeTypeig, gegl_blend_mode_type_effectsig,
    GEGL_BLEND_MODE_TYPE_OVER)
  ui_meta ("visible", "guichange {innerglowbevel}")


property_double (innergradius, _("Inner Glow's Blur radius"), 13.0)
  value_range   (0.0, 30.0)
  ui_range      (0.0, 30.0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  ui_meta ("visible", "guichange {innerglowbevel}")


property_double (innerggrow_radius, _("Inner Glow's Grow radius"), 5)
  value_range   (1, 30.0)
  ui_range      (1, 30.0)
  ui_digits     (0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  description (_("The distance to expand the shadow before blurring; a negative value will contract the shadow instead"))
  ui_meta ("visible", "guichange {innerglowbevel}")

property_double (innergopacity, _("Inner Glow's opacity"), 1.4)
  value_range   (0.0, 2.0)
  ui_steps      (0.01, 0.10)
  ui_meta ("visible", "guichange {innerglowbevel}")



property_color (innergvalue, _("Inner Glow's Color"), "#ff8f00")
    description (_("The color to paint over the input"))
  ui_meta ("visible", "guichange {innerglowbevel}")


property_double  (fixoutline, _("Fix Inner Glow outline with median blur"), 69)
  value_range (50, 79)
  description (_("Neighborhood alpha percentile"))
  ui_meta ("visible", "guichange {innerglowbevel}")


property_boolean (gradient, _("Enable Gradient"), FALSE)
  description   (_("Whether to add Gradient overlay"))
ui_meta ("visible", "guichange {imagegradient}")


property_double (start_x, _("Gradient X1"), 659.0)
    ui_meta("unit", "pixel-coordinate")
    ui_meta("axis", "x")
ui_meta ("visible", "guichange {imagegradient}")


property_double (start_y, _("Gradient Y1"), 49.0)
    ui_meta("unit", "pixel-coordinate")
    ui_meta("axis", "y")
ui_meta ("visible", "guichange {imagegradient}")

property_double (end_x, _("Gradient X2"), 647.0)
    ui_meta("unit", "pixel-coordinate")
    ui_meta("axis", "x")
ui_meta ("visible", "guichange {imagegradient}")

property_double (end_y, _("Gradient Y2"), 572.0)
    ui_meta ("unit", "pixel-coordinate")
    ui_meta ("axis", "y")
ui_meta ("visible", "guichange {imagegradient}")

property_color (start_color, _("Gradient Start Color"), "#34ebd6")
    description (_("The color at (x1, y1)"))
ui_meta ("visible", "guichange {imagegradient}")


property_color  (end_color, _("Gradient End Color"), "#fe18f2")
    description (_("The color at (x2, y2)"))
ui_meta ("visible", "guichange {imagegradient}")




#else

#define GEGL_OP_META
#define GEGL_OP_NAME     gegleffects
#define GEGL_OP_C_SOURCE gegleffects.c

#include "gegl-op.h"

/* Typedef Structure for Bevel's blend mode switching '*/

typedef struct
{
  GeglNode *input;
  GeglNode *atopi;
  GeglNode *atopg;
  GeglNode *over;
  GeglNode *crop;
  GeglNode *mbd;
  GeglNode *mcol;
  GeglNode *nopig;
  GeglNode *nopm;
  GeglNode *nopb;
  GeglNode *nopg;
  GeglNode *nopimage;
  GeglNode *multiply;
  GeglNode *subtract;
  GeglNode *addition;
  GeglNode *overlayig;
  GeglNode *softlightig;
  GeglNode *hslcolorig;
  GeglNode *screenig;
  GeglNode *multiplyig;
  GeglNode *grainextract;
  GeglNode *grainmerge;
  GeglNode *grainmergeig;
  GeglNode *multiplyb;
  GeglNode *innerglow;
  GeglNode *stroke;
  GeglNode *ds;
  GeglNode *output;
  GeglNode *image;
  GeglNode *gradient;
} State;

static void
update_graph (GeglOperation *operation)
{
  GeglProperties *o = GEGL_PROPERTIES (operation);
  State *state = o->user_data;
  GeglNode *multiplyb;
  GeglNode *over;

  if (!state) return;

  multiplyb = state->multiply; /* the default */
  switch (o->blendmode) {
    case GEGL_BLEND_MODE_TYPE_MULTIPLY: multiplyb = state->multiplyb; break;
    case GEGL_BLEND_MODE_TYPE_GRAINMERGE: multiplyb = state->grainmerge; break;
    case GEGL_BLEND_MODE_TYPE_SUBTRACT: multiplyb = state->subtract; break;
    case GEGL_BLEND_MODE_TYPE_GRAINEXTRACT: multiplyb = state->grainextract; break;
}

  over = state->over; /* the default */
  switch (o->blendmodeig) {
    case GEGL_BLEND_MODE_TYPE_OVER: over = state->over; break;
    case GEGL_BLEND_MODE_TYPE_GRAINMERGEIG: over = state->grainmergeig; break;
    case GEGL_BLEND_MODE_TYPE_ADDITION: over = state->addition; break;
    case GEGL_BLEND_MODE_TYPE_SOFTLIGHTIG: over = state->softlightig; break;
    case GEGL_BLEND_MODE_TYPE_SCREENIG: over = state->screenig; break;
    case GEGL_BLEND_MODE_TYPE_MULTIPLYIG: over = state->multiplyig; break;
    case GEGL_BLEND_MODE_TYPE_HSLCOLORIG: over = state->hslcolorig; break;
    case GEGL_BLEND_MODE_TYPE_OVERLAYIG: over = state->overlayig; break;

  }



  if (o->innerglow)
  {
    if (o->gradient)
    {
      /* both innerglow and gradient */
         gegl_node_link_many (state->input, state->nopimage, state->atopi, state->nopg, state->atopg,  state->crop, state->nopb, multiplyb, state->nopm, state->multiply,  state->nopig, over, state->stroke, state->ds, state->output, NULL);
      gegl_node_link_many (state->nopg, state->gradient, NULL);
      gegl_node_link_many (state->nopimage, state->image, NULL);
      gegl_node_link_many (state->nopig, state->innerglow, NULL);
      gegl_node_link_many (state->nopb, state->mbd, NULL);
      gegl_node_link_many (state->nopm, state->mcol, NULL);
      gegl_node_connect_from (multiplyb, "aux", state->mbd, "output");
      gegl_node_connect_from (state->multiply, "aux", state->mcol, "output");
      gegl_node_connect_from (over, "aux", state->innerglow, "output");
      gegl_node_connect_from (state->atopg, "aux", state->gradient, "output");
      gegl_node_connect_from (state->atopi, "aux", state->image, "output");
    }
    else
    {
      /* innerglow but no gradient */
         gegl_node_link_many (state->input, state->nopimage, state->atopi,  state->crop, state->nopb, multiplyb, state->nopm, state->multiply,  state->nopig, over, state->stroke, state->ds, state->output, NULL);
      gegl_node_link_many (state->nopimage, state->image, NULL);
      gegl_node_link_many (state->nopig, state->innerglow, NULL);
      gegl_node_link_many (state->nopb, state->mbd, NULL);
      gegl_node_link_many (state->nopm, state->mcol, NULL);
      gegl_node_connect_from (multiplyb, "aux", state->mbd, "output");
      gegl_node_connect_from (state->multiply, "aux", state->mcol, "output");
      gegl_node_connect_from (over, "aux", state->innerglow, "output");
      gegl_node_connect_from (state->atopi, "aux", state->image, "output");
    }
  }
  else
  {
    if (o->gradient)
    {
      /* gradient but no innerglow */
         gegl_node_link_many (state->input, state->nopimage, state->atopi, state->nopg, state->atopg,  state->crop, state->nopb, multiplyb, state->nopm, state->multiply, state->stroke, state->ds, state->output, NULL);
      gegl_node_link_many (state->nopg, state->gradient, NULL);
      gegl_node_link_many (state->nopimage, state->image, NULL);
      gegl_node_link_many (state->nopb, state->mbd, NULL);
      gegl_node_link_many (state->nopm, state->mcol, NULL);
      gegl_node_connect_from (multiplyb, "aux", state->mbd, "output");
      gegl_node_connect_from (state->multiply, "aux", state->mcol, "output");
      gegl_node_connect_from (state->atopg, "aux", state->gradient, "output");
      gegl_node_connect_from (state->atopi, "aux", state->image, "output");
    }
    else
    {
      /* neither gradient nor innerglow */
   gegl_node_link_many (state->input, state->nopimage, state->atopi, state->crop, state->nopb, multiplyb, state->nopm, state->multiply, state->stroke, state->ds, state->output, NULL);
      gegl_node_link_many (state->nopimage, state->image, NULL);
      gegl_node_link_many (state->nopb, state->mbd, NULL);
      gegl_node_link_many (state->nopm, state->mcol, NULL);
      gegl_node_connect_from (multiplyb, "aux", state->mbd, "output");
      gegl_node_connect_from (state->multiply, "aux", state->mcol, "output");
      gegl_node_connect_from (state->atopi, "aux", state->image, "output");
    }
  }
}


/* End of Typedef Structure for Bevel's blend mode switching '*/



/*Typedef Structure for InnerGlow and Gradient Checkboxes '*/



static void attach (GeglOperation *operation)
{
  GeglNode *gegl = operation->node;
  GeglProperties *o = GEGL_PROPERTIES (operation);
  GeglNode *input, *output, *image, *mbd, *nopig, *multiplyb, *nopm, *over, *multiply, *grainextract, *hslcolorig, *overlayig, *softlightig, *screenig, *multiplyig, *grainmerge, *grainmergeig, *addition, *subtract,  *nopb, *mcol, *stroke, *innerglow, *gradient, *crop, *ds,  *nopimage, *atopi, *nopg, *atopg;

  input    = gegl_node_get_input_proxy (gegl, "input");
  output   = gegl_node_get_output_proxy (gegl, "output");

  image = gegl_node_new_child (gegl,
                                  "operation", "gegl:layer",
                                  NULL);

  stroke = gegl_node_new_child (gegl,
                                  "operation", "gegl:dropshadow",
                                  NULL);

  ds = gegl_node_new_child (gegl,
                                  "operation", "gegl:dropshadow",
                                  NULL);

  innerglow = gegl_node_new_child (gegl,
                                  "operation", "gegl:innerglow",
                                  NULL);

  /*atopi is the blend mode that will need to be switchable for gegl:layer src=*/


  atopi = gegl_node_new_child (gegl,
                                  "operation", "gegl:src-atop",
                                  NULL);

  /*atopg is the blend mode that will need to be switchable for gegl:linear-gradient*/

  atopg = gegl_node_new_child (gegl,
                                  "operation", "gegl:src-atop",
                                  NULL);

/*When we finally get around to adding an enum list so blend modes can change*/

  /*atopg = gegl_node_new_child (gegl,
                                 "operation", "gimp:layer-mode", "layer-mode", 23,  "composite-mode", 0, NULL);*/


  mbd = gegl_node_new_child (gegl,
                                  "operation", "gegl:bevel",
                                  NULL);



  mcol = gegl_node_new_child (gegl,
                                  "operation", "gegl:color-overlay",
                                  NULL);


  nopm = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);

  nopimage = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);

  nopb = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);

  nopig = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);

  nopg = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);


  /*multiply is the blend mode that will need to be switchable for gegl:color-overlay*/

  multiply = gegl_node_new_child (gegl,
                                  "operation", "gegl:multiply",
                                  NULL);

  /*multiplyb is the blend mode that will need to be switchable for gegl:bevel*/

  multiplyb = gegl_node_new_child (gegl,
                                  "operation", "gegl:multiply",
                                  NULL);

  gradient = gegl_node_new_child (gegl,
                                  "operation", "gegl:linear-gradient",
                                  NULL);

    /* 0 is Gimp blend mode (Normal) */
    /* 47 is Gimp blend mode (Grain Merge) */
    /* 23 is Gimp blend mode (Overlay) */

  /*over = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 0, "composite-mode", 0, NULL);*/

  /*over is the blend mode that will need to be switchable for gegl:innerglow*/

  over = gegl_node_new_child (gegl,
                                  "operation", "gegl:src-atop",
                                  NULL);
  crop = gegl_node_new_child (gegl,
                                  "operation", "gegl:crop",
                                  NULL);

/* grainextract, grainmerge, and subtract are for bevel and cannot be reused*/

grainextract = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 46, "composite-mode", 0, NULL);


grainmerge = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 47, "composite-mode", 0, NULL);

subtract = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 34, "composite-mode", 0, NULL);
/* grainextract, grainmerge, and subtract are for bevel and cannot be reused - ends here */

grainmergeig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 47, "composite-mode", 0, NULL);

addition = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 33, "composite-mode", 0, NULL);

overlayig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 23, "composite-mode", 0, NULL);

multiplyig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 30, "composite-mode", 0, NULL);

screenig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 31, "composite-mode", 0, NULL);

hslcolorig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 39, "composite-mode", 0, NULL);

softlightig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 45, "composite-mode", 0, NULL);


  gegl_node_link_many (input, nopimage, atopi, nopg, atopg, crop, nopb, multiplyb, nopm, multiply, nopig, over, stroke, ds, output, NULL);
  gegl_node_link_many (nopimage, image, NULL);
  gegl_node_link_many (nopg, gradient, NULL);
gegl_node_link_many (nopig, innerglow, NULL);
gegl_node_link_many (nopb, mbd, NULL);
gegl_node_link_many (nopm, mcol, NULL);
  gegl_node_connect_from (multiplyb, "aux", mbd, "output");
  gegl_node_connect_from (multiply, "aux", mcol, "output");
  gegl_node_connect_from (over, "aux", innerglow, "output");
  gegl_node_connect_from (atopi, "aux", image, "output");
  gegl_node_connect_from (atopg, "aux", gradient, "output");

  gegl_operation_meta_redirect (operation, "string", image, "string");
  gegl_operation_meta_redirect (operation, "x", ds, "x");
  gegl_operation_meta_redirect (operation, "y", ds, "y");
  gegl_operation_meta_redirect (operation, "ystroke", stroke, "y");
  gegl_operation_meta_redirect (operation, "xstroke", stroke, "x");
  gegl_operation_meta_redirect (operation, "opacity", ds, "opacity");
  gegl_operation_meta_redirect (operation, "grow_radius", ds, "grow-radius");
  gegl_operation_meta_redirect (operation, "radius", ds, "radius");
  gegl_operation_meta_redirect (operation, "color", ds, "color");
  gegl_operation_meta_redirect (operation, "grow_shape", stroke, "grow-shape");
  gegl_operation_meta_redirect (operation, "opacitystroke", stroke, "opacity");
  gegl_operation_meta_redirect (operation, "radiusstroke", stroke, "radius");
  gegl_operation_meta_redirect (operation, "grow_radiusstroke", stroke, "grow-radius");
  gegl_operation_meta_redirect (operation, "colorstroke", stroke, "color");
  gegl_operation_meta_redirect (operation, "depth", mbd, "bevel2");
  gegl_operation_meta_redirect (operation, "radius1", mbd, "radius1");
  gegl_operation_meta_redirect (operation, "bevel1", mbd, "bevel1");
  gegl_operation_meta_redirect (operation, "optioncolor", mcol, "value");
  gegl_operation_meta_redirect (operation, "src", image, "src");
  gegl_operation_meta_redirect (operation, "innerggrow_radius", innerglow, "grow-radius");
  gegl_operation_meta_redirect (operation, "innergradius", innerglow, "radius");
  gegl_operation_meta_redirect (operation, "innergopacity", innerglow, "opacity");
  gegl_operation_meta_redirect (operation, "innergvalue", innerglow, "value2");
  gegl_operation_meta_redirect (operation, "fixoutline", innerglow, "fixoutline");
  gegl_operation_meta_redirect (operation, "start_x", gradient, "start-x");
  gegl_operation_meta_redirect (operation, "start_y", gradient, "start-y");
  gegl_operation_meta_redirect (operation, "end_x", gradient, "end-x");
  gegl_operation_meta_redirect (operation, "end_y", gradient, "end-y");
  gegl_operation_meta_redirect (operation, "start_color", gradient, "start-color");
  gegl_operation_meta_redirect (operation, "end_color", gradient, "end-color");


  /* Now save points to the various gegl nodes so we can rewire them in
   * update_graph() later
   */
  State *state = g_malloc0 (sizeof (State));
  o->user_data = state;

  state->input = input;
  state->atopi = atopi;
  state->overlayig = overlayig;
  state->screenig = screenig;
  state->multiplyig = multiplyig;
  state->softlightig = softlightig;
  state->hslcolorig = hslcolorig;
  state->atopg = atopg;
  state->multiply = multiply;
  state->multiplyb = multiplyb;
  state->addition = addition;
  state->subtract = subtract;
  state->grainmerge = grainmerge;
  state->grainmergeig = grainmergeig;
  state->grainextract = grainextract;
  state->nopb = nopb;
  state->nopg = nopg;
  state->nopimage = nopimage;
  state->nopm = nopm;
  state->nopig = nopig;
  state->over = over;
  state->crop = crop;
  state->mbd = mbd;
  state->mcol = mcol;
  state->innerglow = innerglow;
  state->stroke = stroke;
  state->ds = ds;
  state->output = output;
  state->image = image;
  state->gradient = gradient;
}



static void
gegl_op_class_init (GeglOpClass *klass)
{
  GeglOperationClass *operation_class;

  operation_class = GEGL_OPERATION_CLASS (klass);
  GeglOperationMetaClass *operation_meta_class = GEGL_OPERATION_META_CLASS (klass);

  operation_class->attach = attach;
  operation_meta_class->update = update_graph;

  gegl_operation_class_set_keys (operation_class,
    "name",        "gegl:effects",
    "title",       _("GEGL Effects"),
    "categories",  "Generic",
    "reference-hash", "45ed565h8500fca01b2ac",
    "description", _("GEGL text stying and speciality image outlining filter. Text recoloring only works if the color is white "
                     ""),
    NULL);
}

#endif


The error is likely triggered because this version of GEGL Effects is heavily modified from the one that is public release. I will make a GEGL Effects legacy for preset compatability but it will be source only as I want people to use the latest version.


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 3:02 pm  (#92) 
Offline
GimpChat Member
User avatar

Joined: Oct 31, 2020
Posts: 1442
All done. Someone needs to do beta test on Windows before I can post it on Github.

Image

Image

Image

Image

Bevel, Inner Glow and Gradient have blend mode switching abilities and Image overlay has GEGL Hue Chroma built into its virtual layer. It appears to work perfect on Linux but someone needs to beta test Windows. If successful this will be a release of the new revamped GEGL Effects.

Here's the code.

/* This file is an image processing operation for GEGL
*
* GEGL is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* GEGL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with GEGL; if not, see <https://www.gnu.org/licenses/>.
*
* Copyright 2006 Øyvind Kolås <pippin@gimp.org>
*2022 Beaver GEGL Effects
* 2022 Liam (for helping give Inner Glow a disable checkbox)
*/

#include "config.h"
#include <glib/gi18n-lib.h>





#ifdef GEGL_PROPERTIES

enum_start (gegl_blend_mode_type_effects)
  enum_value (GEGL_BLEND_MODE_TYPE_MULTIPLY,      "Multiply",
              N_("Multiply"))
  enum_value (GEGL_BLEND_MODE_TYPE_GRAINMERGE,      "Grain Merge",
              N_("Grain Merge"))
  enum_value (GEGL_BLEND_MODE_TYPE_SUBTRACT,      "Subtract",
              N_("Subtract"))
  enum_value (GEGL_BLEND_MODE_TYPE_GRAINEXTRACT,      "Grain Extract",
              N_("Grain Extract"))
enum_end (GeglBlendModeType)


enum_start (gegl_blend_mode_type_effectsig)
  enum_value (GEGL_BLEND_MODE_TYPE_OVER,      "Over",
              N_("Over"))
  enum_value (GEGL_BLEND_MODE_TYPE_GRAINMERGEIG,      "Grain Merge",
              N_("Grain Merge"))
  enum_value (GEGL_BLEND_MODE_TYPE_ADDITION,      "Addition",
              N_("Addition"))
  enum_value (GEGL_BLEND_MODE_TYPE_SOFTLIGHTIG,      "Softlight",
              N_("Softlight"))
  enum_value (GEGL_BLEND_MODE_TYPE_SCREENIG,      "Screen",
              N_("Screen"))
  enum_value (GEGL_BLEND_MODE_TYPE_MULTIPLYIG,      "Multiply",
              N_("Multiply"))
  enum_value (GEGL_BLEND_MODE_TYPE_HSLCOLORIG,      "HSL Color",
              N_("HSL Color"))
  enum_value (GEGL_BLEND_MODE_TYPE_OVERLAYIG,      "Overlay",
              N_("Overlay"))
  enum_value (GEGL_BLEND_MODE_TYPE_LINEARLIGHTIG,      "LinearLight",
              N_("LinearLight"))
enum_end (GeglBlendModeTypeig)

enum_start (gegl_blend_mode_type_effectsg)
  enum_value (GEGL_BLEND_MODE_TYPE_ATOPG,      "Over",
              N_("Over"))
  enum_value (GEGL_BLEND_MODE_TYPE_GRAINMERGEG,      "Grain Merge",
              N_("Grain Merge"))
  enum_value (GEGL_BLEND_MODE_TYPE_ADDITIONG,      "Addition",
              N_("Addition"))
  enum_value (GEGL_BLEND_MODE_TYPE_SOFTLIGHTG,      "Softlight",
              N_("Softlight"))
  enum_value (GEGL_BLEND_MODE_TYPE_SCREENG,      "Screen",
              N_("Screen"))
  enum_value (GEGL_BLEND_MODE_TYPE_MULTIPLYG,      "Multiply",
              N_("Multiply"))
  enum_value (GEGL_BLEND_MODE_TYPE_HSLCOLORG,      "HSL Color",
              N_("HSL Color"))
  enum_value (GEGL_BLEND_MODE_TYPE_OVERLAYG,      "Overlay",
              N_("Overlay"))
  enum_value (GEGL_BLEND_MODE_TYPE_LINEARLIGHTG,      "Linear Light",
              N_("Linear Light"))
  enum_value (GEGL_BLEND_MODE_TYPE_HSVHUEG,      "HSV Hue",
              N_("HSV Hue"))
enum_end (GeglBlendModeTypeg)





enum_start (guichangeenum)
enum_value   (BEAVER_UI_STROKESHADOW, "strokeshadow", N_("Outline and Shadow"))
enum_value   (BEAVER_UI_INNERGLOWBEVEL, "innerglowbevel", N_("Bevel and Inner Glow"))
enum_value   (BEAVER_UI_IMAGEGRADIENT, "imagegradient", N_("Image file upload and Gradient"))
  enum_end (guiend)



property_enum(guichange, _("Part of filter to be displayed"),
    guiend, guichangeenum,
    BEAVER_UI_STROKESHADOW)
  description(_("Change the GUI option"))

property_enum (blendmode, _("Blend Mode of Bevel's emboss'"),
    GeglBlendModeType, gegl_blend_mode_type_effects,
    GEGL_BLEND_MODE_TYPE_MULTIPLY)
  ui_meta ("visible", "guichange {innerglowbevel}")



property_file_path(src, _("Optional image file overlay upload "), "")
    description (_("Source image file path (png, jpg, raw, svg, bmp, tif, ...)"))
ui_meta ("visible", "guichange {imagegradient}")

property_double(layeropacity, _("Opacity of Image File Overlay"), 1.0)
    value_range (0.0, 1.0)
ui_meta ("visible", "guichange {imagegradient}")


property_color  (optioncolor, _("Optional Color Overlay"), "#ffffff")
  ui_meta ("visible", "guichange {strokeshadow}")



property_int (depth, _("Bevel Depth --ENABLE BEVEL"), 1)
    description (_("Filter width"))
    value_range (1, 70)
  ui_meta ("visible", "guichange {innerglowbevel}")

property_double (bevel1, _("Rotate Bevel Lighting (90 resets)"), 90.0)
    description (_("Elevation angle (degrees)"))
    value_range (55, 125)
    ui_meta ("unit", "degree")
  ui_meta ("visible", "guichange {innerglowbevel}")


property_double (radius1, _("Radius of Bevel"), 7.0)
  value_range (7, 12.0)
  ui_range (1.0, 12)
  ui_gamma (1.5)
  ui_meta ("visible", "guichange {innerglowbevel}")




property_double (opacitystroke, _("Outline's Opacity --ENABLE OUTLINE"), 0.0)
  value_range   (0.0, 1.0)
  ui_steps      (0.01, 0.10)
  ui_meta ("visible", "guichange {strokeshadow}")


/* Should correspond to GeglMedianBlurNeighborhood in median-blur.c */
enum_start (gegl_stroke_grow_shapes)
  enum_value (GEGL_stroke_GROW_SHAPE_SQUARE,  "square",  N_("Square"))
  enum_value (GEGL_stroke_GROW_SHAPE_CIRCLE,  "circle",  N_("Circle"))
  enum_value (GEGL_stroke_GROW_SHAPE_DIAMOND, "diamond", N_("Diamond"))
enum_end (GeglstrokeGrowShapes)


property_double (xstroke, _("Outline X Position"), 0.0)
  description   (_("Horizontal shadow offset"))
  ui_range      (-10.0, 10.0)
  ui_steps      (1, 10)
  ui_meta ("visible", "guichange {strokeshadow}")



property_double (ystroke, _("Outline Y Position"), 0.0)
  description   (_("Vertical shadow offset"))
  ui_range      (-10.0, 10.0)
  ui_steps      (1, 10)
  ui_meta ("visible", "guichange {strokeshadow}")





property_enum   (grow_shape, _("Grow shape"),
                 GeglstrokeGrowShapes, gegl_stroke_grow_shapes,
                 GEGL_stroke_GROW_SHAPE_CIRCLE)
  description   (_("The shape to expand or contract the stroke in"))
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (radiusstroke, _("Outline's Blur radius"), 0.0)
  value_range   (0.0, 2)
  ui_range      (0.0, 300.0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  ui_meta ("visible", "guichange {strokeshadow}")


property_double (grow_radiusstroke, _("Outline's Grow radius"), 12.0)
  value_range   (0.0, 100.0)
  ui_range      (0.0, 50.0)
  ui_digits     (0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  description (_("The distance to expand the stroke before blurring; a negative value will contract the stroke instead"))
  ui_meta ("visible", "guichange {strokeshadow}")




property_color  (colorstroke, _("Outline's Color"), "#k")
    /* TRANSLATORS: the string 'black' should not be translated */
  description   (_("The shadow's color (defaults to 'black')"))
    ui_meta     ("role", "color-primary")
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (opacity, _("Shadow/Glow Opacity --ENABLE SHADOW/GLOW"), 0.0)
  value_range   (0.0, 1.0)
  ui_steps      (0.01, 0.10)
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (hue, _("Hue"),  0.0)
   description  (_("Hue adjustment"))
   value_range  (-180.0, 180.0)
ui_meta ("visible", "guichange {imagegradient}")

property_double (chroma, _("Chroma"), 0.0)
   description  (_("Chroma adjustment"))
   value_range  (-100.0, 100.0)
ui_meta ("visible", "guichange {imagegradient}")

property_double (lightness, _("Lightness"), 0.0)
   description  (_("Lightness adjustment"))
   value_range  (-100.0, 100.0)
ui_meta ("visible", "guichange {imagegradient}")



property_double (x, _("Shadow/Glow X"), 10.0)
  description   (_("Horizontal shadow offset"))
  ui_range      (-40.0, 40.0)
  ui_steps      (1, 10)
  ui_meta       ("unit", "pixel-distance")
  ui_meta       ("axis", "x")
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (y, _("Shadow/Glow Y"), 10.0)
  description   (_("Vertical shadow offset"))
  ui_range      (-40.0, 40.0)
  ui_steps      (1, 10)
  ui_meta       ("unit", "pixel-distance")
  ui_meta       ("axis", "y")
  ui_meta ("visible", "guichange {strokeshadow}")


property_color  (color, _("Shadow/Glow Color"), "black")
    /* TRANSLATORS: the string 'black' should not be translated */
  description   (_("The shadow's color (defaults to 'black')"))
  ui_meta ("visible", "guichange {strokeshadow}")

/* It does make sense to sometimes have opacities > 1 (see GEGL logo
* for example)
*/




property_double (grow_radius, _("Shadow/Glow Grow radius"), 0.0)
  value_range   (0.0, 100.0)
  ui_range      (0.0, 50.0)
  ui_digits     (0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  description (_("The distance to expand the shadow before blurring; a negative value will contract the shadow instead"))
  ui_meta ("visible", "guichange {strokeshadow}")

property_double (radius, _("Shadow/Glow Blur radius"), 12.0)
  value_range   (0.0, G_MAXDOUBLE)
  ui_range      (0.0, 300.0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  ui_meta ("visible", "guichange {strokeshadow}")


property_boolean (innerglow, _("Enable Inner Glow"), FALSE)
  description   (_("Whether to add an inner glow effect, which can be slow"))
  ui_meta ("visible", "guichange {innerglowbevel}")

property_enum (blendmodeig, _("Blend Mode of Inner Glow"),
    GeglBlendModeTypeig, gegl_blend_mode_type_effectsig,
    GEGL_BLEND_MODE_TYPE_OVER)
  ui_meta ("visible", "guichange {innerglowbevel}")


property_double (innergradius, _("Inner Glow's Blur radius"), 13.0)
  value_range   (0.0, 30.0)
  ui_range      (0.0, 30.0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  ui_meta ("visible", "guichange {innerglowbevel}")


property_double (innerggrow_radius, _("Inner Glow's Grow radius"), 5)
  value_range   (1, 30.0)
  ui_range      (1, 30.0)
  ui_digits     (0)
  ui_steps      (1, 5)
  ui_gamma      (1.5)
  ui_meta       ("unit", "pixel-distance")
  description (_("The distance to expand the shadow before blurring; a negative value will contract the shadow instead"))
  ui_meta ("visible", "guichange {innerglowbevel}")

property_double (innergopacity, _("Inner Glow's opacity"), 1.4)
  value_range   (0.0, 2.0)
  ui_steps      (0.01, 0.10)
  ui_meta ("visible", "guichange {innerglowbevel}")



property_color (innergvalue, _("Inner Glow's Color"), "#ff8f00")
    description (_("The color to paint over the input"))
  ui_meta ("visible", "guichange {innerglowbevel}")


property_double  (fixoutline, _("Fix Inner Glow outline with median blur"), 69)
  value_range (50, 79)
  description (_("Neighborhood alpha percentile"))
  ui_meta ("visible", "guichange {innerglowbevel}")


property_boolean (gradient, _("Enable Gradient"), FALSE)
  description   (_("Whether to add Gradient overlay"))
ui_meta ("visible", "guichange {imagegradient}")

property_enum (blendmodeg, _("Blend Mode of Gradient"),
    GeglBlendModeTypeg, gegl_blend_mode_type_effectsg,
    GEGL_BLEND_MODE_TYPE_OVER)
  ui_meta ("visible", "guichange {imagegradient}")


property_double (start_x, _("Gradient X1"), 659.0)
    ui_meta("unit", "pixel-coordinate")
    ui_meta("axis", "x")
ui_meta ("visible", "guichange {imagegradient}")


property_double (start_y, _("Gradient Y1"), 49.0)
    ui_meta("unit", "pixel-coordinate")
    ui_meta("axis", "y")
ui_meta ("visible", "guichange {imagegradient}")

property_double (end_x, _("Gradient X2"), 647.0)
    ui_meta("unit", "pixel-coordinate")
    ui_meta("axis", "x")
ui_meta ("visible", "guichange {imagegradient}")

property_double (end_y, _("Gradient Y2"), 572.0)
    ui_meta ("unit", "pixel-coordinate")
    ui_meta ("axis", "y")
ui_meta ("visible", "guichange {imagegradient}")

property_color (start_color, _("Gradient Start Color"), "#34ebd6")
    description (_("The color at (x1, y1)"))
ui_meta ("visible", "guichange {imagegradient}")


property_color  (end_color, _("Gradient End Color"), "#fe18f2")
    description (_("The color at (x2, y2)"))
ui_meta ("visible", "guichange {imagegradient}")




#else

#define GEGL_OP_META
#define GEGL_OP_NAME     gegleffects
#define GEGL_OP_C_SOURCE gegleffects.c

#include "gegl-op.h"

/* Typedef Structure for Bevel's blend mode switching '*/

typedef struct
{
  GeglNode *input;
  GeglNode *atopi;
  GeglNode *atopg;
  GeglNode *over;
  GeglNode *crop;
  GeglNode *mbd;
  GeglNode *mcol;
  GeglNode *nopig;
  GeglNode *nopm;
  GeglNode *nopb;
  GeglNode *nopg;
  GeglNode *linearlightig;
  GeglNode *nopimage;
  GeglNode *multiply;
  GeglNode *subtract;
  GeglNode *addition;
  GeglNode *overlayig;
  GeglNode *softlightig;
  GeglNode *hslcolorig;
  GeglNode *screenig;
  GeglNode *multiplyig;
  GeglNode *grainextract;
  GeglNode *grainmerge;
  GeglNode *grainmergeig;
  GeglNode *multiplyb;
  GeglNode *innerglow;
  GeglNode *stroke;
  GeglNode *ds;
  GeglNode *output;
  GeglNode *image;
  GeglNode *gradient;
  GeglNode *overlayg;
  GeglNode *additiong;
  GeglNode *softlightg;
  GeglNode *hslcolorg;
  GeglNode *screeng;
  GeglNode *multiplyg;
  GeglNode *grainmergeg;
  GeglNode *hsvhueg;
  GeglNode *linearlightg;
  GeglNode *saturation;
} State;

static void
update_graph (GeglOperation *operation)
{
  GeglProperties *o = GEGL_PROPERTIES (operation);
  State *state = o->user_data;
  GeglNode *multiplyb;
  GeglNode *over;
  GeglNode *atopg;

  if (!state) return;

  multiplyb = state->multiply; /* the default */
  switch (o->blendmode) {
    case GEGL_BLEND_MODE_TYPE_MULTIPLY: multiplyb = state->multiplyb; break;
    case GEGL_BLEND_MODE_TYPE_GRAINMERGE: multiplyb = state->grainmerge; break;
    case GEGL_BLEND_MODE_TYPE_SUBTRACT: multiplyb = state->subtract; break;
    case GEGL_BLEND_MODE_TYPE_GRAINEXTRACT: multiplyb = state->grainextract; break;
}

  over = state->over; /* the default */
  switch (o->blendmodeig) {
    case GEGL_BLEND_MODE_TYPE_OVER: over = state->over; break;
    case GEGL_BLEND_MODE_TYPE_GRAINMERGEIG: over = state->grainmergeig; break;
    case GEGL_BLEND_MODE_TYPE_ADDITION: over = state->addition; break;
    case GEGL_BLEND_MODE_TYPE_SOFTLIGHTIG: over = state->softlightig; break;
    case GEGL_BLEND_MODE_TYPE_SCREENIG: over = state->screenig; break;
    case GEGL_BLEND_MODE_TYPE_MULTIPLYIG: over = state->multiplyig; break;
    case GEGL_BLEND_MODE_TYPE_HSLCOLORIG: over = state->hslcolorig; break;
    case GEGL_BLEND_MODE_TYPE_OVERLAYIG: over = state->overlayig; break;
    case GEGL_BLEND_MODE_TYPE_LINEARLIGHTIG: over = state->linearlightig; break;

  }

  atopg = state->atopg; /* the default */
  switch (o->blendmodeg) {
    case GEGL_BLEND_MODE_TYPE_ATOPG: atopg = state->atopg; break;
    case GEGL_BLEND_MODE_TYPE_GRAINMERGEG: atopg = state->grainmergeg; break;
    case GEGL_BLEND_MODE_TYPE_ADDITIONG: atopg = state->additiong; break;
    case GEGL_BLEND_MODE_TYPE_SOFTLIGHTG: atopg = state->softlightg; break;
    case GEGL_BLEND_MODE_TYPE_SCREENG: atopg = state->screeng; break;
    case GEGL_BLEND_MODE_TYPE_MULTIPLYG: atopg = state->multiplyg; break;
    case GEGL_BLEND_MODE_TYPE_HSLCOLORG: atopg = state->hslcolorg; break;
    case GEGL_BLEND_MODE_TYPE_OVERLAYG: atopg = state->overlayg; break;
    case GEGL_BLEND_MODE_TYPE_LINEARLIGHTG: atopg = state->linearlightg; break;
    case GEGL_BLEND_MODE_TYPE_HSVHUEG: atopg = state->hsvhueg; break;

  }


  if (o->innerglow)
  {
    if (o->gradient)
    {
      /* both innerglow and gradient */
         gegl_node_link_many (state->input, state->nopimage, state->atopi, state->nopg, atopg,  state->crop, state->nopb, multiplyb, state->nopm, state->multiply,  state->nopig, over, state->stroke, state->ds, state->output, NULL);
      gegl_node_link_many (state->nopg, state->gradient, NULL);
      gegl_node_link_many (state->nopimage, state->image, state->saturation, NULL);
      gegl_node_link_many (state->nopig, state->innerglow, NULL);
      gegl_node_link_many (state->nopb, state->mbd, NULL);
      gegl_node_link_many (state->nopm, state->mcol, NULL);
      gegl_node_connect_from (multiplyb, "aux", state->mbd, "output");
      gegl_node_connect_from (state->multiply, "aux", state->mcol, "output");
      gegl_node_connect_from (over, "aux", state->innerglow, "output");
      gegl_node_connect_from (atopg, "aux", state->gradient, "output");
      gegl_node_connect_from (state->atopi, "aux", state->saturation, "output");
    }
    else
    {
      /* innerglow but no gradient */
         gegl_node_link_many (state->input, state->nopimage, state->atopi,  state->crop, state->nopb, multiplyb, state->nopm, state->multiply,  state->nopig, over, state->stroke, state->ds, state->output, NULL);
      gegl_node_link_many (state->nopimage, state->image, state->saturation, NULL);
      gegl_node_link_many (state->nopig, state->innerglow, NULL);
      gegl_node_link_many (state->nopb, state->mbd, NULL);
      gegl_node_link_many (state->nopm, state->mcol, NULL);
      gegl_node_connect_from (multiplyb, "aux", state->mbd, "output");
      gegl_node_connect_from (state->multiply, "aux", state->mcol, "output");
      gegl_node_connect_from (over, "aux", state->innerglow, "output");
      gegl_node_connect_from (state->atopi, "aux", state->saturation, "output");
    }
  }
  else
  {
    if (o->gradient)
    {
      /* gradient but no innerglow */
         gegl_node_link_many (state->input, state->nopimage, state->atopi, state->nopg, atopg,  state->crop, state->nopb, multiplyb, state->nopm, state->multiply, state->stroke, state->ds, state->output, NULL);
      gegl_node_link_many (state->nopg, state->gradient, NULL);
      gegl_node_link_many (state->nopimage, state->image, state->saturation, NULL);
      gegl_node_link_many (state->nopb, state->mbd, NULL);
      gegl_node_link_many (state->nopm, state->mcol, NULL);
      gegl_node_connect_from (multiplyb, "aux", state->mbd, "output");
      gegl_node_connect_from (state->multiply, "aux", state->mcol, "output");
      gegl_node_connect_from (atopg, "aux", state->gradient, "output");
      gegl_node_connect_from (state->atopi, "aux", state->saturation, "output");
    }
    else
    {
      /* neither gradient nor innerglow */
   gegl_node_link_many (state->input, state->nopimage, state->atopi, state->crop, state->nopb, multiplyb, state->nopm, state->multiply, state->stroke, state->ds, state->output, NULL);
      gegl_node_link_many (state->nopimage, state->image, state->saturation, NULL);
      gegl_node_link_many (state->nopb, state->mbd, NULL);
      gegl_node_link_many (state->nopm, state->mcol, NULL);
      gegl_node_connect_from (multiplyb, "aux", state->mbd, "output");
      gegl_node_connect_from (state->multiply, "aux", state->mcol, "output");
      gegl_node_connect_from (state->atopi, "aux", state->saturation, "output");
    }
  }
}


/* End of Typedef Structure for Bevel's blend mode switching '*/



/*Typedef Structure for InnerGlow and Gradient Checkboxes '*/



static void attach (GeglOperation *operation)
{
  GeglNode *gegl = operation->node;
  GeglProperties *o = GEGL_PROPERTIES (operation);
  GeglNode *input, *output, *image, *mbd, *nopig, *multiplyb, *nopm, *over, *multiply, *grainextract, *hslcolorig, *overlayig, *softlightig, *screenig, *linearlightig, *multiplyig, *grainmerge, *grainmergeig, *addition, *subtract,  *nopb, *mcol, *stroke, *innerglow, *gradient, *crop, *ds,  *nopimage, *atopi, *nopg, *atopg,  *hslcolorg, *overlayg, *additiong, *softlightg, *screeng, *multiplyg, *hsvhueg, *linearlightg, *grainmergeg, *saturation;

  input    = gegl_node_get_input_proxy (gegl, "input");
  output   = gegl_node_get_output_proxy (gegl, "output");

  saturation = gegl_node_new_child (gegl,
                                  "operation", "gegl:hue-chroma",
                                  NULL);


  image = gegl_node_new_child (gegl,
                                  "operation", "gegl:layer",
                                  NULL);

  stroke = gegl_node_new_child (gegl,
                                  "operation", "gegl:dropshadow",
                                  NULL);

  ds = gegl_node_new_child (gegl,
                                  "operation", "gegl:dropshadow",
                                  NULL);

  innerglow = gegl_node_new_child (gegl,
                                  "operation", "gegl:innerglow",
                                  NULL);

  /*atopi is the blend mode that will need to be switchable for gegl:layer src=*/


  atopi = gegl_node_new_child (gegl,
                                  "operation", "gegl:src-atop",
                                  NULL);

  /*atopg is the blend mode that will need to be switchable for gegl:linear-gradient*/

  atopg = gegl_node_new_child (gegl,
                                  "operation", "gegl:src-atop",
                                  NULL);

/*When we finally get around to adding an enum list so blend modes can change*/

  /*atopg = gegl_node_new_child (gegl,
                                 "operation", "gimp:layer-mode", "layer-mode", 23,  "composite-mode", 0, NULL);*/


  mbd = gegl_node_new_child (gegl,
                                  "operation", "gegl:bevel",
                                  NULL);



  mcol = gegl_node_new_child (gegl,
                                  "operation", "gegl:color-overlay",
                                  NULL);


  nopm = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);

  nopimage = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);

  nopb = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);

  nopig = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);

  nopg = gegl_node_new_child (gegl,
                                  "operation", "gegl:nop",
                                  NULL);


  /*multiply is the blend mode that will need to be switchable for gegl:color-overlay*/

  multiply = gegl_node_new_child (gegl,
                                  "operation", "gegl:multiply",
                                  NULL);

  /*multiplyb is the blend mode that will need to be switchable for gegl:bevel*/

  multiplyb = gegl_node_new_child (gegl,
                                  "operation", "gegl:multiply",
                                  NULL);

  gradient = gegl_node_new_child (gegl,
                                  "operation", "gegl:linear-gradient",
                                  NULL);

    /* 0 is Gimp blend mode (Normal) */
    /* 47 is Gimp blend mode (Grain Merge) */
    /* 23 is Gimp blend mode (Overlay) */

  /*over = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 0, "composite-mode", 0, NULL);*/

  /*over is the blend mode that will need to be switchable for gegl:innerglow*/

  over = gegl_node_new_child (gegl,
                                  "operation", "gegl:src-atop",
                                  NULL);
  crop = gegl_node_new_child (gegl,
                                  "operation", "gegl:crop",
                                  NULL);

/* grainextract, grainmerge, and subtract are for bevel and cannot be reused*/

grainextract = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 46, "composite-mode", 0, NULL);


grainmerge = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 47, "composite-mode", 0, NULL);

subtract = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 34, "composite-mode", 0, NULL);
/* grainextract, grainmerge, and subtract are for bevel and cannot be reused - ends here */

grainmergeig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 47, "composite-mode", 0, NULL);

addition = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 33, "composite-mode", 0, NULL);

overlayig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 23, "composite-mode", 0, NULL);

multiplyig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 30, "composite-mode", 0, NULL);

screenig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 31, "composite-mode", 0, NULL);

hslcolorig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 39, "composite-mode", 0, NULL);

softlightig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 45, "composite-mode", 0, NULL);

linearlightig = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 50, "composite-mode", 0, NULL);

/* Blend modes below are for gradient*/

grainmergeg = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 47, "composite-mode", 0, NULL);

additiong = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 33, "composite-mode", 0, NULL);

overlayg = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 23, "composite-mode", 0, NULL);

multiplyg = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 30, "composite-mode", 0, NULL);

screeng = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 31, "composite-mode", 0, NULL);

hslcolorg = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 39, "composite-mode", 0, NULL);

softlightg = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 45, "composite-mode", 0, NULL);

hsvhueg = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 37, "composite-mode", 0, NULL);

linearlightg = gegl_node_new_child (gegl,
                              "operation", "gimp:layer-mode", "layer-mode", 50, "composite-mode", 0, NULL);



  gegl_node_link_many (input, nopimage, atopi, nopg, atopg, crop, nopb, multiplyb, nopm, multiply, nopig, over, stroke, ds, output, NULL);
  gegl_node_link_many (nopimage, image, NULL);
  gegl_node_link_many (nopg, gradient, NULL);
gegl_node_link_many (nopig, innerglow, NULL);
gegl_node_link_many (nopb, mbd, NULL);
gegl_node_link_many (nopm, mcol, NULL);
  gegl_node_connect_from (multiplyb, "aux", mbd, "output");
  gegl_node_connect_from (multiply, "aux", mcol, "output");
  gegl_node_connect_from (over, "aux", innerglow, "output");
  gegl_node_connect_from (atopi, "aux", image, "output");
  gegl_node_connect_from (atopg, "aux", gradient, "output");

  gegl_operation_meta_redirect (operation, "string", image, "string");
  gegl_operation_meta_redirect (operation, "layeropacity", image, "opacity");
  gegl_operation_meta_redirect (operation, "hue", saturation, "hue");
  gegl_operation_meta_redirect (operation, "chroma", saturation, "chroma");
  gegl_operation_meta_redirect (operation, "lightness", saturation, "lightness");
  gegl_operation_meta_redirect (operation, "x", ds, "x");
  gegl_operation_meta_redirect (operation, "y", ds, "y");
  gegl_operation_meta_redirect (operation, "ystroke", stroke, "y");
  gegl_operation_meta_redirect (operation, "xstroke", stroke, "x");
  gegl_operation_meta_redirect (operation, "opacity", ds, "opacity");
  gegl_operation_meta_redirect (operation, "grow_radius", ds, "grow-radius");
  gegl_operation_meta_redirect (operation, "radius", ds, "radius");
  gegl_operation_meta_redirect (operation, "color", ds, "color");
  gegl_operation_meta_redirect (operation, "grow_shape", stroke, "grow-shape");
  gegl_operation_meta_redirect (operation, "opacitystroke", stroke, "opacity");
  gegl_operation_meta_redirect (operation, "radiusstroke", stroke, "radius");
  gegl_operation_meta_redirect (operation, "grow_radiusstroke", stroke, "grow-radius");
  gegl_operation_meta_redirect (operation, "colorstroke", stroke, "color");
  gegl_operation_meta_redirect (operation, "depth", mbd, "bevel2");
  gegl_operation_meta_redirect (operation, "radius1", mbd, "radius1");
  gegl_operation_meta_redirect (operation, "bevel1", mbd, "bevel1");
  gegl_operation_meta_redirect (operation, "optioncolor", mcol, "value");
  gegl_operation_meta_redirect (operation, "src", image, "src");
  gegl_operation_meta_redirect (operation, "innerggrow_radius", innerglow, "grow-radius");
  gegl_operation_meta_redirect (operation, "innergradius", innerglow, "radius");
  gegl_operation_meta_redirect (operation, "innergopacity", innerglow, "opacity");
  gegl_operation_meta_redirect (operation, "innergvalue", innerglow, "value2");
  gegl_operation_meta_redirect (operation, "fixoutline", innerglow, "fixoutline");
  gegl_operation_meta_redirect (operation, "start_x", gradient, "start-x");
  gegl_operation_meta_redirect (operation, "start_y", gradient, "start-y");
  gegl_operation_meta_redirect (operation, "end_x", gradient, "end-x");
  gegl_operation_meta_redirect (operation, "end_y", gradient, "end-y");
  gegl_operation_meta_redirect (operation, "start_color", gradient, "start-color");
  gegl_operation_meta_redirect (operation, "end_color", gradient, "end-color");


  /* Now save points to the various gegl nodes so we can rewire them in
   * update_graph() later
   */
  State *state = g_malloc0 (sizeof (State));
  o->user_data = state;

  state->input = input;
  state->atopi = atopi;
  state->overlayig = overlayig;
  state->screenig = screenig;
  state->multiplyig = multiplyig;
  state->softlightig = softlightig;
  state->hslcolorig = hslcolorig;
  state->atopg = atopg;
  state->multiply = multiply;
  state->multiplyb = multiplyb;
  state->addition = addition;
  state->subtract = subtract;
  state->grainmerge = grainmerge;
  state->grainmergeig = grainmergeig;
  state->linearlightig = linearlightig;
  state->grainextract = grainextract;
  state->nopb = nopb;
  state->nopg = nopg;
  state->nopimage = nopimage;
  state->nopm = nopm;
  state->nopig = nopig;
  state->over = over;
  state->crop = crop;
  state->mbd = mbd;
  state->mcol = mcol;
  state->innerglow = innerglow;
  state->stroke = stroke;
  state->ds = ds;
  state->output = output;
  state->image = image;
  state->gradient = gradient;
  state->grainmergeg = grainmergeg;
  state->linearlightg = linearlightg;
  state->overlayg = overlayg;
  state->screeng = screeng;
  state->multiplyg = multiplyg;
  state->softlightg = softlightg;
  state->hslcolorg = hslcolorg;
  state->hsvhueg = hsvhueg;
  state->additiong = additiong;
  state->saturation = saturation;
}



static void
gegl_op_class_init (GeglOpClass *klass)
{
  GeglOperationClass *operation_class;

  operation_class = GEGL_OPERATION_CLASS (klass);
  GeglOperationMetaClass *operation_meta_class = GEGL_OPERATION_META_CLASS (klass);

  operation_class->attach = attach;
  operation_meta_class->update = update_graph;

  gegl_operation_class_set_keys (operation_class,
    "name",        "gegl:effects",
    "title",       _("GEGL Effects"),
    "categories",  "Generic",
    "reference-hash", "45ed565h8500fca01b2ac",
    "description", _("GEGL text stying and speciality image outlining filter. Text recoloring only works if the color is white "
                     ""),
    NULL);
}

#endif


It should NOT trigger an error everytime at start up. Only the first time.

The error is because /config/GIMP/2.10/filters GimpGegl-gegl-effects-config.settings is changed so much that is no longer compatible with the previous version. Deleting this file should make the error permanently go away but it will break all GEGL Effects presets. For that reason I will release the last version of GEGL Effects prior to this update as "GEGL Effects (Legacy)" I still hope you guys prefer the new GEGL Effects to the legacy one.


Please @Rod or anyone. The sooner this gets tested the sooner it can go on GitHub. I just need to be sure it doesn't trigger endless errors on Windows. It works fine on Linux.


Last edited by contrast_ on Fri Feb 23, 2024 12:31 am, edited 1 time in total.

Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 3:32 pm  (#93) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
Does it still crash Gimp?

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 3:39 pm  (#94) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
Testing now contrast.

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 3:43 pm  (#95) 
Offline
GimpChat Member
User avatar

Joined: Oct 31, 2020
Posts: 1442
You have to overwrite the old version of effects.dll/so, if not it will crash it. Bevel and InnerGlow can remain untouched.

The reason for a crash is that no GEGL Filter can have the same enum list twice. Now that I know the problem I will do final test myself before uploading to Github.


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 4:24 pm  (#96) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
It seems to work fine contrast. Just the config error.I am a windows user so not sure about the so file.
I just recompiled and restarted my computer and then started Gimp. Seems good.
Attachment:
Blend-Mode-Error_RD-2022-09-23_171206.jpg
Blend-Mode-Error_RD-2022-09-23_171206.jpg [ 359.01 KiB | Viewed 22890 times ]

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 4:27 pm  (#97) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
Split view of outline and shadow.

Attachment:
Split-View_RD-2022-09-23_172359.jpg
Split-View_RD-2022-09-23_172359.jpg [ 359.87 KiB | Viewed 22890 times ]

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Last edited by Rod on Fri Sep 23, 2022 4:39 pm, edited 1 time in total.

Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 4:28 pm  (#98) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
Split view of bevel and innerglow
Attachment:
Split-View-BevAndInnerGlow_RD-2022-09-23_172528.jpg
Split-View-BevAndInnerGlow_RD-2022-09-23_172528.jpg [ 354.53 KiB | Viewed 22890 times ]

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 4:35 pm  (#99) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
Image or gradient.

Attachment:
Image-OR-Gradient_RD-2022-09-23_172952.jpg
Image-OR-Gradient_RD-2022-09-23_172952.jpg [ 359.86 KiB | Viewed 22889 times ]


Seems successful for Windows users. I will not upload the DLL file until you are sure it should be released contrast. :bigthup

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
 Post subject: Re: GEGL Layer Effects and Text Styling filter
PostPosted: Fri Sep 23, 2022 4:38 pm  (#100) 
Offline
GimpChat Member
User avatar

Joined: May 16, 2010
Posts: 14709
Location: USA
Here are my resulting filter selections.

Attachment:
GEGLEffects+RD.png
GEGLEffects+RD.png [ 148.76 KiB | Viewed 22889 times ]

_________________
Image
Edmund Burke nailed it when he said, "The only thing necessary for the triumph of evil is for good men to do nothing."


Top
Post new topic Reply to topic  [ 190 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 10  Next

All times are UTC - 5 hours [ DST ]


   Similar Topics   Replies 
No new posts Attachment(s) GEGL Text Styling effects on individual Gimp layers

11

No new posts Attachment(s) GEGL Effects Experimental plugin (super advance text styling) is back

0

No new posts Attachment(s) GEGL STONE TEXT STYLING FILTER

21

No new posts Attachment(s) New GEGL Glossy Balloon Text styling filter.

23

No new posts Attachment(s) GEGL Neon Border text styling filter.

15



* Login  



Powered by phpBB3 © phpBB Group