All pastes #639385 Raw Edit

clothify.py

public text v1 · immutable
#639385 ·published 2007-07-30 15:10 UTC
rendered paste body
#!/usr/bin/python

#   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 2 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, write to the Free Software
#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

import sys, math
import gimp, plugin, getvals
from gimpenums import *

pdb = gimp.pdb

class clothify(plugin.plugin):
	def query(self):
		gimp.install_procedure(
			"python_clothify",
			"Render the specified text along the perimeter of a circle",
			"Render the specified text along the perimeter of a circle",
			"James Henstridge",
			"James Henstridge",
			"1997",
			"<Image>/Filters/Gimp Python/Alchemy/Clothify",
			"RGB*, GRAY*",
			PROC_PLUG_IN,
			[
				(PARAM_INT32, "run_mode",
					"Interactive, Non-Interactive"),
				(PARAM_IMAGE, "image", "The Image"),
				(PARAM_DRAWABLE, "drawable", "The drawable"),
				(PARAM_INT32, "x_blur", "X Blur"),
				(PARAM_INT32, "y_blur", "Y Blur"),
				(PARAM_INT32, "azimuth", "Azimuth"),
				(PARAM_INT32, "elevation", "elevation"),
				(PARAM_INT32, "depth", "Depth")
			],
			[]
		)
	def python_clothify(self, run_mode, timg, tdrawable, bx=9, by=9,
					azimuth=135, elevation=45, depth=3):
		bx = 9 ; by = 9 ; azimuth = 135 ; elevation = 45 ; depth = 3
		if run_mode == RUN_INTERACTIVE:
			ret = getvals.getvals("Clothify", ("X Blur", "Y Blur",
				"Azimuth", "Elevation", "Depth"),
				(9, 9, 135, 45, 3))
			if ret == ():
				return
			bx, by, azimuth, elevation, depth = ret
		width = tdrawable.width
		height = tdrawable.height
		img = gimp.image(width, height, RGB)
		layer_one = gimp.layer(img, "X Dots", width, height, RGB_IMAGE,
			100, NORMAL_MODE)
		img.disable_undo()
		pdb.gimp_edit_fill(img, layer_one)
		img.add_layer(layer_one, 0)
		pdb.plug_in_noisify(img, layer_one, 0, 0.7, 0.7, 0.7, 0.7)
		layer_two = layer_one.copy()
		layer_two.mode = MULTIPLY_MODE
		layer_two.name = "Y Dots"
		img.add_layer(layer_two, 0)
		pdb.plug_in_gauss_rle(img, layer_one, bx, 1, 0)
		pdb.plug_in_gauss_rle(img, layer_two, by, 0, 1)
		img.flatten()
		bump_layer = img.active_layer
		pdb.plug_in_c_astretch(img, bump_layer)
		pdb.plug_in_noisify(img, bump_layer, 0, 0.2, 0.2, 0.2, 0.2)
		pdb.plug_in_bump_map(img, tdrawable, bump_layer, azimuth,
			elevation, depth, 0, 0, 0, 0, 0)
		gimp.delete(img)
		gimp.displays_flush()

if __name__ == '__main__': clothify().start()