2 * Copyright (C) 2006 John Ellis
3 * Copyright (C) 2008 - 2022 The Geeqie Team
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24 * @brief Diagrams to be included in the Doxygen output
26 * The contents are diagrams to be included in the Doxygen output.
27 * The .c file extension is so that Doxygen will process it.
31 * @page diagrams Diagrams
32 * @section options_overview Options Overview
34 * #_ConfOptions #_LayoutOptions
41 * options.h : ConfOptions
43 * options.h : Options applicable to **all** Layout Windows
44 * options.h : These are in the <global> section of geeqierc.xml
45 * options.h : Available to all modules via the global variable **options**
46 * typedefs.h : LayoutOptions
48 * typedefs.h : Options applicable to **each** Layout Window
49 * typedefs.h : These are in the <layout> section of geeqierc.xml
50 * typedefs.h : There is one <layout> section for each Layout Window displayed
51 * typedefs.h : Available via **<layout_window>->options**
57 * @page diagrams Diagrams
58 * @section options_diagrams_main Options - New Window From Main
61 * #layout_new_from_default
62 * #load_config_from_file
64 * #setup_default_options
70 * : **init_options()**
72 * Set **options** = ConfOptions from hard-coded init values;
76 * : **setup_default_options()**
78 * set hard-coded ConfOptions:
88 * shell path and options
95 * --new-instance) then (yes)
97 * : **load_options()**
101 * : GQ_SYSTEM_WIDE_DIR
108 * /.geeqie/geeqierc.xml;
112 * : **load_config_from_file()**
114 * set **options** from file
115 * and all <layout window>->options in file;
120 * if (broken config. file
122 * or no layout section loaded
123 * (i.e. session not saved)) then (yes)
125 * : **layout_new_from_default()**;
126 * if (default.xml exists) then (yes)
128 * layout_window default options
129 * from default.xml file;
132 * layout_window default options;
138 * : Send --new-window request to remote
139 * No return to this point
140 * This instance terminates;
144 * : Enter gtk main loop;
151 * @page diagrams Diagrams
152 * @section options_diagrams_remote Options - New Window From Remote
153 * #layout_new_from_default
159 * : **layout_new_from_default()**;
160 * if (default.xml exists) then (yes)
162 * layout_window default options
163 * from default.xml file;
166 * layout_window default options;
169 * : set path from PWD;
174 * @page diagrams Diagrams
175 * @section options_diagrams_menu Options - New Window From Menu
176 * #layout_menu_new_window_cb
177 * #layout_menu_window_from_current_cb
178 * #layout_new_from_default
181 * group layout_util.c
187 * : **layout_new_from_default()**;
188 * if (default.xml exists) then (yes)
190 * layout_window default options
191 * from default.xml file;
194 * layout_window default options;
201 * **layout_menu_window_from_current_cb()**
202 * copy layout_window options
203 * from current window;
208 * **layout_menu_new_window_cb()**
209 * load layout_window options
210 * from saved xml file list;
218 * @ref options_overview "Options Overview"
222 * @page diagrams Diagrams
223 * @section image_load_overview Image Load Overview
225 * object image_change
226 * object image_change_complete
227 * object image_load_begin
228 * object image_loader_start
229 * object image_loader_start_thread
230 * object image_loader_start_idle
231 * object image_loader_setup_source
232 * object image_loader_thread_run
233 * object image_loader_begin
234 * object image_loader_setuploader
235 * circle "il->memory_mapped"
236 * object exif_get_preview_
237 * object exif_get_preview
238 * object libraw_get_preview
240 * image_change : image.c
241 * image_change_complete : image.c
242 * image_load_begin : image.c
243 * image_loader_start : image_load.c
244 * image_loader_start_thread : image_load.c
245 * image_loader_start_idle : image_load.c
246 * image_loader_thread_run : image_load.c
247 * image_loader_begin : image_load.c
248 * image_loader_setuploader : image_load.c
249 * image_loader_setuploader : -
250 * image_loader_setuploader : Select backend using magic
251 * image_loader_setup_source : image_load.c
252 * exif_get_preview : exiv2.cc
253 * exif_get_preview : EXIV2_TEST_VERSION(0,17,90)
254 * exif_get_preview_ : exif.c
255 * exif_get_preview_ : -
256 * exif_get_preview_ : If exiv2 not installed
257 * libraw_get_preview : image_load_libraw.c
259 * image_change --> image_change_complete
260 * image_change_complete --> image_load_begin
261 * image_load_begin --> image_loader_start
262 * image_loader_start --> image_loader_start_thread
263 * image_loader_start --> image_loader_start_idle : Obsolete - no threads version
264 * image_loader_start_thread --> image_loader_thread_run
265 * image_loader_start_thread --> image_loader_setup_source
266 * image_loader_setup_source --> exif_get_preview_
267 * image_loader_setup_source --> exif_get_preview
268 * image_loader_setup_source --> libraw_get_preview : Try libraw if exiv2 fails
269 * exif_get_preview_ ..> "il->memory_mapped"
270 * exif_get_preview ..> "il->memory_mapped"
271 * libraw_get_preview ..> "il->memory_mapped"
272 * image_loader_thread_run --> image_loader_begin
273 * image_loader_begin --> image_loader_setuploader
274 * "il->memory_mapped" ..> image_loader_setuploader
275 * note left of "il->memory_mapped" : Points to first byte of embedded jpeg (#FFD8)\n if preview found, otherwise to first byte of file
280 * @ref image_load_overview "Image Load Overview"