Directory Structure of the <application>GIMP</application> Source Tree Sven Neumann 2003 This document outlines the directory structure of the GIMP source tree. It should help people to get started with the GIMP code. The GIMP source tree can be divided into the core application, libraries, plug-ins, data files and some stuff that doesn't fit into these categories. Here is a list of top-level directories: app The source code of the core GIMP application. build This is a virtual CVS module that is only here to assist in building GIMP for Windows. cursors Bitmaps that are used to construct cursors used by the various GIMP tools. data All sorts of data files like brushes, gradients, patterns as well as the splash image and files to integrate GIMP into the GNOME desktop. devel-docs The developers documentation. The file you are looking at (or at least the source that was used to generate it) is located here. docs Documentation for users. The man-pages which get installed with the GIMP as well as reference sheets for keybindings and other stuff. etc Configuration files that get installed with the GIMP. libgimp The main GIMP library. It provides the API to write plug-ins in the C programming language. GIMP itself does not link against this library. libgimpbase Basic functions that are shared by the GIMP application and its plug-ins. libgimpcolor Color-related functionality that is shared by the GIMP application and its plug-ins. libgimpmath A basic set of mathematic operations useful for the the GIMP application and its plug-ins. libgimpmodule A small library that abstracts dynamic loading of modules. This is used to implement loadable color selectors and display filters. libgimpwidgets User interface elements (widgets) and utility functions that are shared by the GIMP application and its plug-ins. m4macros m4 macros (well, actually just one) which get installed to help automake to detect a GIMP installation. Useful for plug-in developers. modules Color selectors and display filters that can be loaded at run-time. plug-ins This directory and its sub-directories hold all the GIMP plug-ins that are part of the main GIMP distribution. po Translations of strings used in the main GIMP application. po-libgimp Translations of strings used in libgimp. po-plug-ins Translations of strings used in GIMP plug-ins. po-script-fu Translations of strings used in Script-Fu scripts. regexrepl Code to handle regular expressions in case your C library does not suport them. These files will not be used for most builds since modern libc implementation have offer support for regular expressions. themes The look of GIMP is themeable to some extent. This directory at the moment only holds the default theme but more themes might be added in the future. tips The helpful tips shown at startup are located here together with their translations. tools The source code for some GIMP-related tools as well as tools used to build the GIMP application. The contents of these directories will be explained in detail in the following sections. The <application>GIMP</application> application The source code of the core GIMP application is found in the app directory. app/base base functionality such as pixel regions, tiles etc. app/paint-funcs functions to manipulate pixels, part of the base functionality app/compose new pixel compositing routines that supersede the code in app/paint-funcs app/config handling of config files, provides the GimpConfig interface and the GimpRc object which is used from all over of the application; depends on GObject app/core the core of the GIMP core, makes heavy use of GObject but is not GTK+-dependent app/file file handling routines, part of the core app/paint paint core that provides different ways to paint strokes app/plug-in plug-in handling, part of the core app/pdb core side of the Procedural Database, exposes internal functionality by means of the PDB app/text text handling, part of the core app/vectors vectors framework, part of the core app/xcf XCF file handling, part of the core app/display handles displays (e.g. image windows), part of the GUI app/tools user interface part of the tools as found in the toolbox. The actual tool functionality is in the core app/widgets a collection of widgets used in the application GUI app/gui the code that puts the user interface together