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()
|