1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 1997 James Henstridge <james@daa.com.au>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
from gimpfu import *
gettext.install("gimp20-python", gimp.locale_directory, unicode=True)
def shadow_bevel(img, drawable, blur, bevel, do_shadow, drop_x, drop_y):
# disable undo for the image
img.undo_group_start()
# copy the layer
shadow = drawable.copy(True)
img.insert_layer(shadow, position=img.layers.index(drawable) + 1)
shadow.name = drawable.name + " shadow"
shadow.lock_alpha = False
# threshold the shadow layer to all white
pdb.gimp_threshold(shadow, 0, 255)
# blur the shadow layer
pdb.plug_in_gauss_iir(img, shadow, blur, True, True)
# do the bevel thing ...
if bevel:
pdb.plug_in_bump_map(img, drawable, shadow, 135, 45, 3,
0, 0, 0, 0, True, False, 0)
# make the shadow layer black now ...
pdb.gimp_drawable_invert(shadow, False)
# translate the drop shadow
shadow.translate(drop_x, drop_y)
if not do_shadow:
# delete shadow ...
gimp.delete(shadow)
# enable undo again
img.undo_group_end()
register(
"python-fu-shadow-bevel",
N_("Add a drop shadow to a layer, and optionally bevel it"),
"Add a drop shadow to a layer, and optionally bevel it",
"James Henstridge",
"James Henstridge",
"1999",
N_("_Drop Shadow and Bevel..."),
"RGBA, GRAYA",
[
(PF_IMAGE, "image", "Input image", None),
(PF_DRAWABLE, "drawable", "Input drawable", None),
(PF_SLIDER, "blur", _("_Shadow blur"), 6, (1, 30, 1)),
(PF_BOOL, "bevel", _("_Bevel"), True),
(PF_BOOL, "shadow", _("_Drop shadow"), True),
(PF_INT, "drop-x", _("Drop shadow _X displacement"), 3),
(PF_INT, "drop-y", _("Drop shadow _Y displacement"), 6)
],
[],
shadow_bevel,
menu="<Image>/Filters/Light and Shadow/Shadow",
domain=("gimp20-python", gimp.locale_directory)
)
main()
|