On Monday 29 November 2004 22:25, Joseph Heled wrote:
> (I think this has been discussed on the list before, but not sure
> where/when.)
> What is the best way to achieve the following functionality -
>    Given two layers L1 and L2, I want L2 limited by it's distance
> from L1
>        Result  <-  L1 - MIN( MAX(L1 - L2), -20), 20)
> (This expression uses L1/L2 as placeholder for each pixel in all
> RGB channels)
> Options:
> A. Write a plugin
> B. Write it as a script-fu (not sure if script-fu can iterate on
> pixels, and what is the speed implication). And I hate scheme.
> C. Write it in python fu if I can compile it, but even though it is
> probably not as universally available as scrip-fu. Can I iterate
> over an image in python-fu?

This one, or the C plugin. In python fu you can iterate over pixels, 
and still have all the ase of use of the PDB API, and from the python 
language itself. But it's slow to interate over pixels. If you want 
more speed, you either have to go to C, or use a python extension 
called "pyrex"which allows one to declare C langauge objects within 
python syntax, therefore gaining speed.

But it so easy in python that I could write you the plug-in in little  
time -  I just an not sure of what you want to achieve - Your 
"result" would be stored in the Layer 2 pixels? or on a  3 layer (/me 
thinks would be better) 
> D. I know I can do it with 5 layers and overlay modes. write this
> as a script-fu. Not elegant and requires loads of memory for large
> images.
>   Layer   Mode
>   L1     Grain Merge
> 148     Darken Only
> 108     Lighten Only
>   L1     Grain Extract
>   L2     Normal
> (148/108 stand for a layer filled with gray pixels
> (148,148,148)/(108,108,108)

Brrr... But you could also use a pythonfu script to control teh 
creation and placement of these five layers.
> E. Write a generic framework which allows any kind of expression(s)
> between layer(s)  (Only kidding ...)

No kidding - I have this code written down. 
But I did this for old gimp 1.3.14, and never broguthit upt o date, or 
wrote an itnerface for writing or compiling the generic expresion.

I call it ® the custom layer mode", and I actually have plans to bring 
it back from the not-quite-dead.

I will do you a template for the python plugin for now. To compile it 
in posix systems, just add "--enable-python" to your confgure 
directives. Peope on gimp-users have info on building it for windows.


> F. Anything better?

Can't think of anything that surpasses "E". C will do for you, if you 
have patience each time you change yor source layers.

> -Joseph
Gimp-developer mailing list

Reply via email to