Directory Structure of the GIMP 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 catagories. 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 GIMP 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+-dependant
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