01-10-2024, 07:33 PM
(This post was last modified: 01-10-2024, 07:38 PM by BaconWizard17.)
I've done a bit of experimenting since posting this, but I still don't have a surefire answer. I edited MareroQ's script to send a message with the variable values:
With the preferred settings that I normally use, this is what I got for the output:
One big thing that I noticed was that the value I was entering for grow_shape was a string, but it was expecting an integer for the list index from the input. It also seems that I'm entering the colors incorrectly. Here's my updated script with those changes:
Unfortunately, the errors that I'm getting are the same.
EDIT: After looking at some more documentation for PF_COLOR, I decided to try updating once more. This time I did just a triple for it instead of putting the RGB and the alpha, like so:
And it worked! The drop shadow is now added as intended.
Code:
def gegl_dropshadow(image, layer, shadow_offset_x, shadow_offset_y, shadow_blur, grow_shape, grow_radius, color_s, shadow_opacity):
color_to_gegl=rgb_to_hex(color_s)
if grow_shape==0:
grow_s='square'
if grow_shape==1:
grow_s='circle'
if grow_shape==2:
grow_s='diamond'
# Echo all variables
shadow_offset_x_string = "shadow_offset_x = " + str(shadow_offset_x)
shadow_offset_y_string = "\nshadow_offset_y = " + str(shadow_offset_y)
shadow_blur_string = "\nshadow_blur = " + str(shadow_blur)
grow_shape_string = "\ngrow_shape = " + str(grow_shape)
grow_s_string = "\ngrow_s = " + str(grow_s)
grow_radius_string = "\ngrow_radius = " + str(grow_radius)
color_s_string = "\ncolor_s = " + str(color_s)
color_to_gegl_string = "\ncolor_to_gegl = " + str(color_to_gegl)
shadow_opacity_string = "\nshadow_opacity = " + str(shadow_opacity)
pdb.gimp_message(shadow_offset_x_string + shadow_offset_y_string + shadow_blur_string + grow_shape_string + grow_s_string + grow_radius_string + color_s_string + color_to_gegl_string + shadow_opacity_string)
gegl_graph_string="gegl:dropshadow x=%d y=%d radius=%d grow-shape=%s grow-radius=%d color=%s opacity=%f" % (shadow_offset_x, shadow_offset_y, shadow_blur,grow_s,grow_radius, color_to_gegl, shadow_opacity)
pdb.python_fu_gegl_graph(image, layer, gegl_graph_string)
register(
"python_fu_gegl_dropshadow",
"GEGL to Python. Works on the active layer",
"Creates a dropshadow effect on the input buffer",
"Auto Author",
"Auto Author",
"Auto Generated Dated",
"<Image>/GEGL as Python/gegl-dropshadow...", #Menu path
"*",
[
(PF_SPINNER, "shadow_offset_x", "Shadow Offset X:", 5, (-1000, 1000, 1)),
(PF_SPINNER, "shadow_offset_y", "Shadow Offset Y:", 5, (-1000, 1000, 1)),
(PF_SPINNER, "shadow_blur", "Shadow Blur Radius:", 5, (0, 300, 1)),
(PF_OPTION, "grow_shape", "Grow Shape: ", 0, [" Square "," Circle ", " Diamond "]),
(PF_SPINNER, "grow_radius", "Grow Radius:", 5, (-100, 100, 1)),
(PF_COLOR, "color_s", "Color:", (0, 0, 0)),
(PF_FLOAT, "shadow_opacity", "Shadow Opacity (default:1.5, 0..2):", 1.5) # (0, 2, 0.01)),
],
[],
gegl_dropshadow)
With the preferred settings that I normally use, this is what I got for the output:
Quote:shadow_offset_x = 0.0
shadow_offset_y = 0.0
shadow_blur = 2.0
grow_shape = 1
grow_s = circle
grow_radius = 1.0
color_s = RGB (0.454509803922, 0.787843137255, 0.961176470588, 1.0)
color_to_gegl = #74c9f5
shadow_opacity = 1.25
One big thing that I noticed was that the value I was entering for grow_shape was a string, but it was expecting an integer for the list index from the input. It also seems that I'm entering the colors incorrectly. Here's my updated script with those changes:
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gimpfu import*
def generate_hud_outline(image, layer):
pdb.gimp_image_undo_group_start(image)
pdb.gimp_selection_none(image)
pdb.python_fu_gegl_dropshadow(image, layer, 0.0, 0.0, 2.0, 1, 1.0, RGB (0.454509803922, 0.787843137255, 0.961176470588, 1.0), 1.25)
pdb.gimp_displays_flush()
pdb.gimp_image_undo_group_end(image)
register(
"python_fu_marvelmods_common_generate_hud_outline",
"Generates an outline for a conversation portrait.",
"Generates an outline for a conversation portrait.",
"BaconWizard17",
"BaconWizard17",
"January 2024",
"Generate Conversation Portrait (HUD) Outline",
"*",
[
(PF_IMAGE, "image", "Input image", None),
(PF_DRAWABLE, 'drawable', 'Layer, mask or channel', None)
],
[],
generate_hud_outline,
menu='<Image>/Marvel Mods/Utilities'
)
main()
Unfortunately, the errors that I'm getting are the same.
EDIT: After looking at some more documentation for PF_COLOR, I decided to try updating once more. This time I did just a triple for it instead of putting the RGB and the alpha, like so:
Code:
pdb.python_fu_gegl_dropshadow(image, layer, 0.0, 0.0, 2.0, 1, 1.0, (0.454509803922, 0.787843137255, 0.961176470588), 1.25)
And it worked! The drop shadow is now added as intended.
Modder/Skinner at MarvelMods.com using GIMP to create, edit, and export textures and previews more efficiently.
My GIMP scripts hosted on GitHub
My GIMP scripts hosted on GitHub