app: s/sprintf/g_snprintf/ in xcf_save_image()
[gimp.git] / devel-docs / structure.xml
blob5ebe52408b5517fc1e9c589df30e8c3c0543a0f6
1 <?xml version='1.0'?>
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">
6   <articleinfo>
7     <title>
8       Directory Structure of the <application>GIMP</application> Source Tree
9     </title>
10     <author>
11       <firstname>Sven</firstname>
12       <surname>Neumann</surname>
13     </author>
14     <date>2003</date>
15     <abstract>
16       <para>
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.
20       </para>
21     </abstract>
22   </articleinfo>
23   
24   <para>
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:
29   </para>
30   
31   <informaltable>
32     <tgroup cols="2" align="left">
33       <tbody>
34         <row>
35           <entry><filename>app</filename></entry>
36           <entry>
37             The source code of the core GIMP application.
38           </entry>
39         </row>
40         <row>
41           <entry><filename>build</filename></entry>
42           <entry>
43             This is a virtual CVS module that is only here to assist in
44             building <application>GIMP</application> for Windows.
45           </entry>
46         </row>
47         <row>
48           <entry><filename>cursors</filename></entry>
49           <entry>
50             Bitmaps that are used to construct cursors used by the various
51             <application>GIMP</application> tools.
52           </entry>
53         </row>
54         <row>
55           <entry><filename>data</filename></entry>
56           <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.
60           </entry>
61         </row>
62         <row>
63           <entry><filename>devel-docs</filename></entry>
64           <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.
67           </entry>
68         </row>
69         <row>
70           <entry><filename>docs</filename></entry>
71           <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.
75           </entry>
76         </row>
77         <row>
78           <entry><filename>etc</filename></entry>
79           <entry>
80             Configuration files that get installed with the
81             <application>GIMP</application>.
82           </entry>
83         </row>
84         <row>
85           <entry><filename>libgimp</filename></entry>
86           <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
90             against this library.
91           </entry>
92         </row>
93         <row>
94           <entry><filename>libgimpbase</filename></entry>
95           <entry>
96             Basic functions that are shared by the
97             <application>GIMP</application> application and its plug-ins.
98           </entry>
99         </row>
100         <row>
101           <entry><filename>libgimpcolor</filename></entry>
102           <entry>
103             Color-related functionality that is shared by the
104             <application>GIMP</application> application and its plug-ins.
105           </entry>
106         </row>
107         <row>
108           <entry><filename>libgimpmath</filename></entry>
109           <entry>
110             A basic set of mathematic operations useful for the the
111             <application>GIMP</application> application and its plug-ins.
112           </entry>
113         </row>
114         <row>
115           <entry><filename>libgimpmodule</filename></entry>
116           <entry>
117             A small library that abstracts dynamic loading of modules. This is
118             used to implement loadable color selectors and display filters.
119           </entry>
120         </row>
121         <row>
122           <entry><filename>libgimpwidgets</filename></entry>
123           <entry>
124             User interface elements (widgets) and utility functions that are
125             shared by the <application>GIMP</application> application and its
126             plug-ins.
127           </entry>
128         </row>
129         <row>
130           <entry><filename>m4macros</filename></entry>
131           <entry>
132             m4 macros (well, actually just one) which get installed to help
133             automake to detect a GIMP installation. Useful for plug-in
134             developers.
135           </entry>
136         </row>
137         <row>
138           <entry><filename>modules</filename></entry>
139           <entry>
140             Color selectors and display filters that can be loaded at
141             run-time.
142           </entry>
143         </row>
144         <row>
145           <entry><filename>plug-ins</filename></entry>
146           <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.
150           </entry>
151         </row>
152         <row>
153           <entry><filename>po</filename></entry>
154           <entry>
155             Translations of strings used in the main
156             <application>GIMP</application> application.
157           </entry>
158         </row>
159         <row>
160           <entry><filename>po-libgimp</filename></entry>
161           <entry>
162             Translations of strings used in libgimp.
163           </entry>
164         </row>
165         <row>
166           <entry><filename>po-plug-ins</filename></entry>
167           <entry>
168             Translations of strings used in <application>GIMP</application>
169             plug-ins.
170           </entry>
171         </row>
172         <row>
173           <entry><filename>po-script-fu</filename></entry>
174           <entry>
175             Translations of strings used in Script-Fu scripts.
176           </entry>
177         </row>
178         <row>
179           <entry><filename>regexrepl</filename></entry>
180           <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
184             expressions.
185           </entry>
186         </row>
187         <row>
188           <entry><filename>themes</filename></entry>
189           <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.
193           </entry>
194         </row>
195         <row>
196           <entry><filename>tips</filename></entry>
197           <entry>
198             The helpful tips shown at startup are located here together with
199             their translations.
200           </entry>
201         </row>
202         <row>
203           <entry><filename>tools</filename></entry>
204           <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.
208           </entry>
209         </row>
210       </tbody>
211     </tgroup>
212   </informaltable>
214   <para>  
215     The contents of these directories will be explained in detail in
216     the following sections.
217   </para>
219   <sect1 id="app">
220     <title>The <application>GIMP</application> application</title>
221     <para>
222       The source code of the core <application>GIMP</application>
223       application is found in the <filename>app</filename> directory.
224     </para>
226     <informaltable>
227       <tgroup cols="2" align="left">
228         <tbody>
229           <row>
230             <entry><filename>app/base</filename></entry>
231             <entry>
232               base functionality such as pixel regions, tiles etc.
233             </entry>
234           </row>
235           <row>
236             <entry><filename>app/paint-funcs</filename></entry>
237             <entry>
238               functions to manipulate pixels, part of the base
239               functionality
240             </entry>
241           </row>
242           <row>
243             <entry><filename>app/compose</filename></entry>
244             <entry>
245               new pixel compositing routines that supersede the code
246               in <filename>app/paint-funcs</filename>
247             </entry>
248           </row>
249           <row>
250             <entry><filename>app/config</filename></entry>
251             <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
255             </entry>
256           </row>
257           <row>
258             <entry><filename>app/core</filename></entry>
259             <entry>
260               the core of the GIMP core, makes heavy use of GObject
261               but is not GTK+-dependent
262             </entry>
263           </row>
264           <row>
265             <entry><filename>app/file</filename></entry>
266             <entry>
267               file handling routines, part of the core
268             </entry>
269           </row>
270           <row>
271             <entry><filename>app/paint</filename></entry>
272             <entry>
273               paint core that provides different ways to paint strokes
274             </entry>
275           </row>
276           <row>
277             <entry><filename>app/plug-in</filename></entry>
278             <entry>
279               plug-in handling, part of the core
280             </entry>
281           </row>
282           <row>
283             <entry><filename>app/pdb</filename></entry>
284             <entry>
285               core side of the Procedural Database, exposes internal
286               functionality by means of the PDB
287             </entry>
288           </row>
289           <row>
290             <entry><filename>app/text</filename></entry>
291             <entry>
292               text handling, part of the core
293             </entry>
294           </row>
295           <row>
296             <entry><filename>app/vectors</filename></entry>
297             <entry>
298               vectors framework, part of the core
299             </entry>
300           </row>
301           <row>
302             <entry><filename>app/xcf</filename></entry>
303             <entry>
304               XCF file handling, part of the core
305             </entry>
306           </row>
307           <row>
308             <entry><filename>app/display</filename></entry>
309             <entry>
310               handles displays (e.g. image windows), part of the GUI
311             </entry>
312           </row>
313           <row>
314             <entry><filename>app/tools</filename></entry>
315             <entry>
316               user interface part of the tools as found in the toolbox.
317               The actual tool functionality is in the core
318             </entry>
319           </row>
320           <row>
321             <entry><filename>app/widgets</filename></entry>
322             <entry>
323               a collection of widgets used in the application GUI
324             </entry>
325           </row>
326           <row>
327             <entry><filename>app/gui</filename></entry>
328             <entry>
329               the code that puts the user interface together
330             </entry>
331           </row>
333         </tbody>
334       </tgroup>
335     </informaltable>
337   </sect1>
339   </article>