I’m not sure what you mean by source code outside the folder. But when compiling GIMP from git, from source, using the folder structure suggested in my article, all the source code for babl/GEGL/GIMP is in the build folder.
In case it helps, here are some general starting points for anyone wanting to work with GIMP code:
GIMP depends heavily on babl and GEGL:
Babl handles (among other things) bit depth and color space transforms, including conversions between linear sRGB and regular sRGB (that is, encoded using the “almost perceptually uniform” sRGB companding curve), and conversions to and from XYZ/LAB/LCH.
GEGL handles image buffers and many (but not all) image-altering operations, including scaling and other transforms, and most of the filters and color operations in the GIMP menu.
GIMP handles layer blend and composite modes, color management, the user-interface, some filters, plug-in code, display modules, import/export, various operations available in the GIMP menu that aren’t handled by GEGL, and etc.
In a sense babl/GEGL/GIMP become one great big program via these two “include” lines, which are liberally sprinkled throughout GIMP code:
The relevant babl functions that GIMP and GEGL use are fairly well documented by comments in babl/babl.h, in the babl build folder.
babl/GEGL/GIMP are mostly written in c, with a little c++. Information/buffers/etc are passed back and forth between babl/GEGL/GIMP using structures. The code makes heavy use of pointers.
- “main ()” in “app/main.c” is the first code that’s run when you start GIMP.
- main () calls on the function “app_run ()” in app.c.
- “app_run ()” calls on “gimp_gegl_init (gimp)”, which I’m guessing is where all the communication between gimp and gegl starts.
After that, tracking what happens when and where can be done using GDB, if you have a lot of time and patiences, and by using temporary write statements if you have an idea where to start. Probably there are other ways that an actually skilled and knowledgeable programmer would use (I can program, but I’m neither skilled nor knowledgeable).
I don’t have any clue about checking performance, but the topic comes up on the GIMP dev mailing list from time to time.
Here are some useful links:
https://www.gimp.org/irc.html - the best place to interact with the babl/GEGL/GIMP devs
https://www.gimp.org/mail_lists.html - also a place to interact with the devs
GIMP 2.0 API:
GIMP Developer wiki: