Gimp <-> prolog interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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, (
                                                 neighbor(X-Y, X2-Y2),
                                                 member(X2-Y2-A2-R2-G2-B2, Input),
             Neighbors),
   average_pixels(Neighbors, OX-OY-OA-OR-OG-OB),  
   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.

Ryan
_______________________________________________
Gimp-developer mailing list
Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux