I want to write some plug-ins in Prolog. I don't want to deal with any C
pointers, while-loops or if-thens. Although the code below doesn't make use of
it, I want to make use of Prolog backtracking in order to find a correct
solution through trial-and-error, such as filling a region with a texture that
melds into all edges with no abrupt color differences. I want to be able to
write code such as this, in Prolog, for the blur function for example
blur(In, Out) :- blur(In, Out, In). %the function needs to access input
pixels more than %once (not just when they are at the head of the input list),
so pass on another copy of the %input as the 3rd argument
blur(, , _). %when there is no more input, there is no more output, so stop
blur( [X-Y-A-R-G-B | Input_Tail], [OX-OY-OA-OR-OG-OB | Output_Tail], Input) :-
%find all the neighbors of current pixel, average them, and unify result
with head of
%the output list
findall( X2-Y2-A2-R2-G2-B2, (
blur(Input_Tail, Output_Tail, Input). %recursion
I want to be able to deal with the input and output in the form of a Prolog
list, one list for each layer. And for multiple layers, a list of lists. The
code above is written for one layer.
Each pixel could come in the form of X-Y-A-R-G-B (integers separated by
hyphens) where X and Y are the location coordinates, A is the alpha channel,
and R-G-B are their respective RGB values.
I understand that processing the data in Prolog would come with performance
drawbacks, but I want to make use of backtracking, and I don't want to be
dealing with for-loops and array pointers when I'm defining the output. If it
needs to be optimized somebody could rewrite it into C.
Is there anyone who has written plug-ins before in the C language that would be
able to help me make a Gimp <-> Prolog interface so that Prolog programs can be
run from a Gimp plug-in. I want to have a new plug-in under Filters->Prolog
that will open up a list of *.pl files in the plug-ins directory (*.pl meaning
Prolog file extension). I can then choose a *.pl file and the plug-in will
then communicate with Prolog. So in other words, instead of compiling a
plug-in for Gimp every time, this single plug-in will be able to run all Prolog
programs in their *.pl form as soon as they are written.
Preferring to work in Prolog I need some help from a C programmer to write this
plug-in. I'd appreciate any help from someone who has written a plug-in before.
Gimp-developer mailing list