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 Neary

_______________________________________________ Gimp-developer mailing list [EMAIL PROTECTED] http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer

Reply via email to