Hi Robin,
Robin Rowe wrote:
Good technical anwer, thanks.
Apparently I got it wrong.
Anyway - I just improved my understanding with a concrete example.
Let's take gimp_layer_add_alpha() as the example (the function adds an alpha channel to an RGB background layer that doesn't have one yet).
The implementation is in app/core/gimplayer.c.
In app/pdb/layer_cmds.c (still in application space), we have a wrapper function (layer_add_alpha_invoker), and a procedure which we register with the PDB (layer_add_alpha_proc), which registers the _invoker function as the "run" callback.
Finally, in libgimp/gimplayer_pdb.c, we have the wrapper function which is called in plug-ins. This calls gimp_run_procedure on the procedure above, and invoked the core code as a direct result, as with a normal user-defined PDB function.
Core types and enums are wrapped automatically by the perl scripts in tools/pdbgen (although this is somewhat black magic to me).
I'm also wondering from a license standpoint. The code in app is GPL, but libgimp is LGPL.
Given the above, the core code is GPL, the app/pdb code is GPL, and libgimp/* is LGPL, so there are no licence issues.
Hope this clears everything up, Dave.
-- Dave Neary bolsh@xxxxxxxx