2 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
5 <article id="structure" lang="en">
8 Directory Structure of the <application>GIMP</application> Source Tree
11 <firstname>Sven</firstname>
12 <surname>Neumann</surname>
17 This document outlines the directory structure of the
18 <application>GIMP</application> source tree. It should help
19 people to get started with the <application>GIMP</application> code.
25 The <application>GIMP</application> source tree can be divided
26 into the core application, libraries, plug-ins, data files and
27 some stuff that doesn't fit into these categories. Here is a list
28 of top-level directories:
32 <tgroup cols="2" align="left">
35 <entry><filename>app</filename></entry>
37 The source code of the core GIMP application.
41 <entry><filename>build</filename></entry>
43 This is a virtual CVS module that is only here to assist in
44 building <application>GIMP</application> for Windows.
48 <entry><filename>cursors</filename></entry>
50 Bitmaps that are used to construct cursors used by the various
51 <application>GIMP</application> tools.
55 <entry><filename>data</filename></entry>
57 All sorts of data files like brushes, gradients, patterns as well
58 as the splash image and files to integrate
59 <application>GIMP</application> into the GNOME desktop.
63 <entry><filename>devel-docs</filename></entry>
65 The developers documentation. The file you are looking at (or at
66 least the source that was used to generate it) is located here.
70 <entry><filename>docs</filename></entry>
72 Documentation for users. The man-pages which get installed with
73 the <application>GIMP</application> as well as reference sheets
74 for keybindings and other stuff.
78 <entry><filename>etc</filename></entry>
80 Configuration files that get installed with the
81 <application>GIMP</application>.
85 <entry><filename>libgimp</filename></entry>
87 The main <application>GIMP</application> library. It provides the
88 API to write plug-ins in the C programming
89 language. <application>GIMP</application> itself does not link
94 <entry><filename>libgimpbase</filename></entry>
96 Basic functions that are shared by the
97 <application>GIMP</application> application and its plug-ins.
101 <entry><filename>libgimpcolor</filename></entry>
103 Color-related functionality that is shared by the
104 <application>GIMP</application> application and its plug-ins.
108 <entry><filename>libgimpmath</filename></entry>
110 A basic set of mathematic operations useful for the the
111 <application>GIMP</application> application and its plug-ins.
115 <entry><filename>libgimpmodule</filename></entry>
117 A small library that abstracts dynamic loading of modules. This is
118 used to implement loadable color selectors and display filters.
122 <entry><filename>libgimpwidgets</filename></entry>
124 User interface elements (widgets) and utility functions that are
125 shared by the <application>GIMP</application> application and its
130 <entry><filename>m4macros</filename></entry>
132 m4 macros (well, actually just one) which get installed to help
133 automake to detect a GIMP installation. Useful for plug-in
138 <entry><filename>modules</filename></entry>
140 Color selectors and display filters that can be loaded at
145 <entry><filename>plug-ins</filename></entry>
147 This directory and its sub-directories hold all the
148 <application>GIMP</application> plug-ins that are part of the main
149 <application>GIMP</application> distribution.
153 <entry><filename>po</filename></entry>
155 Translations of strings used in the main
156 <application>GIMP</application> application.
160 <entry><filename>po-libgimp</filename></entry>
162 Translations of strings used in libgimp.
166 <entry><filename>po-plug-ins</filename></entry>
168 Translations of strings used in <application>GIMP</application>
173 <entry><filename>po-script-fu</filename></entry>
175 Translations of strings used in Script-Fu scripts.
179 <entry><filename>regexrepl</filename></entry>
181 Code to handle regular expressions in case your C library does not
182 support them. These files will not be used for most builds since
183 modern libc implementation have offer support for regular
188 <entry><filename>themes</filename></entry>
190 The look of <application>GIMP</application> is themeable to some
191 extent. This directory at the moment only holds the default theme
192 but more themes might be added in the future.
196 <entry><filename>tips</filename></entry>
198 The helpful tips shown at startup are located here together with
203 <entry><filename>tools</filename></entry>
205 The source code for some <application>GIMP</application>-related
206 tools as well as tools used to build the
207 <application>GIMP</application> application.
215 The contents of these directories will be explained in detail in
216 the following sections.
220 <title>The <application>GIMP</application> application</title>
222 The source code of the core <application>GIMP</application>
223 application is found in the <filename>app</filename> directory.
227 <tgroup cols="2" align="left">
230 <entry><filename>app/base</filename></entry>
232 base functionality such as pixel regions, tiles etc.
236 <entry><filename>app/paint-funcs</filename></entry>
238 functions to manipulate pixels, part of the base
243 <entry><filename>app/compose</filename></entry>
245 new pixel compositing routines that supersede the code
246 in <filename>app/paint-funcs</filename>
250 <entry><filename>app/config</filename></entry>
252 handling of config files, provides the GimpConfig
253 interface and the GimpRc object which is used from
254 all over of the application; depends on GObject
258 <entry><filename>app/core</filename></entry>
260 the core of the GIMP core, makes heavy use of GObject
261 but is not GTK+-dependent
265 <entry><filename>app/file</filename></entry>
267 file handling routines, part of the core
271 <entry><filename>app/paint</filename></entry>
273 paint core that provides different ways to paint strokes
277 <entry><filename>app/plug-in</filename></entry>
279 plug-in handling, part of the core
283 <entry><filename>app/pdb</filename></entry>
285 core side of the Procedural Database, exposes internal
286 functionality by means of the PDB
290 <entry><filename>app/text</filename></entry>
292 text handling, part of the core
296 <entry><filename>app/vectors</filename></entry>
298 vectors framework, part of the core
302 <entry><filename>app/xcf</filename></entry>
304 XCF file handling, part of the core
308 <entry><filename>app/display</filename></entry>
310 handles displays (e.g. image windows), part of the GUI
314 <entry><filename>app/tools</filename></entry>
316 user interface part of the tools as found in the toolbox.
317 The actual tool functionality is in the core
321 <entry><filename>app/widgets</filename></entry>
323 a collection of widgets used in the application GUI
327 <entry><filename>app/gui</filename></entry>
329 the code that puts the user interface together