[gimp] app: Get rid of config -> display module dependency



commit ed2d178da359fc68f33dbefff1a42c8060747f0b
Author: Martin Nordholts <martinn src gnome org>
Date:   Mon Feb 1 21:55:18 2010 +0100

    app: Get rid of config -> display module dependency
    
    In order to make a clear separation between the core modules and the
    UI modules, move the necessary enums from display-enums.h and
    widgets-enums.h to config-enums.h and the files
    gimpdisplayoptions.[ch] from the display to the config module. This
    removes the config -> display dependency.
    
    This change has three main benefits
     * It lets us remove includes of display files from the config module
     * We don't have to link gimp-console and test-config with a subset of
       object files from the display module
     * It is reflected in devel-docs/gimp-module-dependencies.svg that the
       application is made up of core modules and UI modules and that no
       core module depends on any UI module

 app/Makefile.am                              |    3 -
 app/actions/view-actions.c                   |    2 +-
 app/actions/view-commands.c                  |    2 +-
 app/config/Makefile.am                       |   38 ++-
 app/config/config-enums.c                    |  226 ++++++++++
 app/config/config-enums.h                    |  105 +++++
 app/config/config-types.h                    |    7 +-
 app/config/gimpdisplayconfig.c               |    9 +-
 app/config/gimpdisplayconfig.h               |    2 -
 app/{display => config}/gimpdisplayoptions.c |    5 +-
 app/{display => config}/gimpdisplayoptions.h |    0
 app/config/gimpguiconfig.h                   |    2 -
 app/config/gimppluginconfig.h                |    2 -
 app/core/core-types.h                        |    3 -
 app/display/Makefile.am                      |    2 -
 app/display/display-enums.c                  |  124 -----
 app/display/display-enums.h                  |   49 --
 app/display/gimpdisplayshell-appearance.c    |    3 +-
 app/display/gimpdisplayshell-handlers.c      |    2 +-
 app/display/gimpdisplayshell.c               |    2 +-
 app/widgets/widgets-enums.c                  |   89 ----
 app/widgets/widgets-enums.h                  |   34 --
 devel-docs/gimp-module-dependencies.svg      |  618 +++++++++++++-------------
 po/POTFILES.in                               |    4 +-
 24 files changed, 695 insertions(+), 638 deletions(-)
---
diff --git a/app/Makefile.am b/app/Makefile.am
index 3654e79..dd5ef21 100644
--- a/app/Makefile.am
+++ b/app/Makefile.am
@@ -142,9 +142,6 @@ AM_LDFLAGS = \
 	$(workaround_that_file_depends_on_plug_in)
 
 gimpconsoleldadd = \
-	display/gimpdisplayoptions.o	\
-	display/display-enums.o		\
-	widgets/widgets-enums.o		\
 	xcf/libappxcf.a			\
 	pdb/libappinternal-procs.a	\
 	pdb/libapppdb.a			\
diff --git a/app/actions/view-actions.c b/app/actions/view-actions.c
index d83312b..b245653 100644
--- a/app/actions/view-actions.c
+++ b/app/actions/view-actions.c
@@ -26,6 +26,7 @@
 
 #include "actions-types.h"
 
+#include "config/gimpdisplayoptions.h"
 #include "config/gimpguiconfig.h"
 
 #include "core/gimp.h"
@@ -39,7 +40,6 @@
 #include "widgets/gimpwidgets-utils.h"
 
 #include "display/gimpdisplay.h"
-#include "display/gimpdisplayoptions.h"
 #include "display/gimpdisplayshell.h"
 #include "display/gimpdisplayshell-appearance.h"
 #include "display/gimpdisplayshell-scale.h"
diff --git a/app/actions/view-commands.c b/app/actions/view-commands.c
index cacdd16..ace7806 100644
--- a/app/actions/view-commands.c
+++ b/app/actions/view-commands.c
@@ -25,6 +25,7 @@
 
 #include "actions-types.h"
 
+#include "config/gimpdisplayoptions.h"
 #include "config/gimpguiconfig.h"
 
 #include "core/gimp.h"
@@ -35,7 +36,6 @@
 
 #include "display/gimpdisplay.h"
 #include "display/gimpdisplay-foreach.h"
-#include "display/gimpdisplayoptions.h"
 #include "display/gimpdisplayshell.h"
 #include "display/gimpdisplayshell-appearance.h"
 #include "display/gimpdisplayshell-filter-dialog.h"
diff --git a/app/config/Makefile.am b/app/config/Makefile.am
index c3ad7c5..968c37c 100644
--- a/app/config/Makefile.am
+++ b/app/config/Makefile.am
@@ -21,7 +21,8 @@ INCLUDES = \
 
 noinst_LIBRARIES = libappconfig.a
 
-libappconfig_a_SOURCES = \
+libappconfig_a_sources = \
+	config-enums.h			\
 	config-types.h			\
 	gimpconfig-dump.c		\
 	gimpconfig-dump.h		\
@@ -35,6 +36,8 @@ libappconfig_a_SOURCES = \
 	gimpcoreconfig.h		\
 	gimpdisplayconfig.c		\
 	gimpdisplayconfig.h		\
+	gimpdisplayoptions.c		\
+	gimpdisplayoptions.h		\
 	gimpguiconfig.c			\
 	gimpguiconfig.h			\
 	gimppluginconfig.c		\
@@ -51,6 +54,14 @@ libappconfig_a_SOURCES = \
 	gimpxmlparser.c			\
 	gimpxmlparser.h
 
+libappconfig_a_built_sources = \
+	config-enums.c
+
+libappconfig_a_SOURCES = \
+	$(libappconfig_a_built_sources)	\
+	$(libappconfig_a_sources)
+
+
 EXTRA_PROGRAMS = test-config
 
 EXTRA_DIST = makefile.msc
@@ -77,9 +88,6 @@ test_config_LDFLAGS = \
 	-u $(SYMPREFIX)gimp_image_map_config_get_type
 
 test_config_LDADD = \
-	../display/gimpdisplayoptions.o		\
-	../display/display-enums.o		\
-	../widgets/widgets-enums.o		\
 	../xcf/libappxcf.a			\
 	../pdb/libappinternal-procs.a		\
 	../pdb/libapppdb.a			\
@@ -107,3 +115,25 @@ test_config_LDADD = \
 	$(GLIB_LIBS)
 
 CLEANFILES = $(EXTRA_PROGRAMS) foorc
+
+#
+# rules to generate built sources
+#
+# setup autogeneration dependencies
+gen_sources = xgen-dec
+CLEANFILES += $(gen_sources)
+
+config-enums.c: $(srcdir)/config-enums.h $(GIMP_MKENUMS)
+	$(GIMP_MKENUMS) \
+		--fhead "#include \"config.h\"\n#include <glib-object.h>\n#include \"libgimpbase/gimpbase.h\"\n#include \"config-enums.h\"\n#include\"gimp-intl.h\"" \
+		--fprod "\n/* enumerations from \"@filename \" */" \
+		--vhead "GType\n enum_name@_get_type (void)\n{\n  static const G Type@Value values[] =\n  {" \
+		--vprod "    { @VALUENAME@, \"@VALUENAME \", \"@valuenick \" }," \
+		--vtail "    { 0, NULL, NULL }\n  };\n" \
+		--dhead "  static const Gimp Type@Desc descs[] =\n  {" \
+		--dprod "    { @VALUENAME@, @valuedesc@, @valuehelp@ }," \
+		--dtail "    { 0, NULL, NULL }\n  };\n\n  static GType type = 0;\n\n  if (G_UNLIKELY (! type))\n    {\n      type = g_ type@_register_static (\"@EnumName \", values);\n      gimp_type_set_translation_context (type, \"@enumnick \");\n      gimp_ type@_set_value_descriptions (type, descs);\n    }\n\n  return type;\n}\n" \
+		$(srcdir)/config-enums.h > xgen-dec \
+	&& cp xgen-dec $(@F) \
+	&& rm -f xgen-dec
+
diff --git a/app/config/config-enums.c b/app/config/config-enums.c
new file mode 100644
index 0000000..4844f87
--- /dev/null
+++ b/app/config/config-enums.c
@@ -0,0 +1,226 @@
+
+/* Generated data (by gimp-mkenums) */
+
+#include "config.h"
+#include <glib-object.h>
+#include "libgimpbase/gimpbase.h"
+#include "config-enums.h"
+#include"gimp-intl.h"
+
+/* enumerations from "./config-enums.h" */
+GType
+gimp_cursor_mode_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { GIMP_CURSOR_MODE_TOOL_ICON, "GIMP_CURSOR_MODE_TOOL_ICON", "tool-icon" },
+    { GIMP_CURSOR_MODE_TOOL_CROSSHAIR, "GIMP_CURSOR_MODE_TOOL_CROSSHAIR", "tool-crosshair" },
+    { GIMP_CURSOR_MODE_CROSSHAIR, "GIMP_CURSOR_MODE_CROSSHAIR", "crosshair" },
+    { 0, NULL, NULL }
+  };
+
+  static const GimpEnumDesc descs[] =
+  {
+    { GIMP_CURSOR_MODE_TOOL_ICON, NC_("cursor-mode", "Tool icon"), NULL },
+    { GIMP_CURSOR_MODE_TOOL_CROSSHAIR, NC_("cursor-mode", "Tool icon with crosshair"), NULL },
+    { GIMP_CURSOR_MODE_CROSSHAIR, NC_("cursor-mode", "Crosshair only"), NULL },
+    { 0, NULL, NULL }
+  };
+
+  static GType type = 0;
+
+  if (G_UNLIKELY (! type))
+    {
+      type = g_enum_register_static ("GimpCursorMode", values);
+      gimp_type_set_translation_context (type, "cursor-mode");
+      gimp_enum_set_value_descriptions (type, descs);
+    }
+
+  return type;
+}
+
+GType
+gimp_canvas_padding_mode_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { GIMP_CANVAS_PADDING_MODE_DEFAULT, "GIMP_CANVAS_PADDING_MODE_DEFAULT", "default" },
+    { GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK, "GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK", "light-check" },
+    { GIMP_CANVAS_PADDING_MODE_DARK_CHECK, "GIMP_CANVAS_PADDING_MODE_DARK_CHECK", "dark-check" },
+    { GIMP_CANVAS_PADDING_MODE_CUSTOM, "GIMP_CANVAS_PADDING_MODE_CUSTOM", "custom" },
+    { 0, NULL, NULL }
+  };
+
+  static const GimpEnumDesc descs[] =
+  {
+    { GIMP_CANVAS_PADDING_MODE_DEFAULT, NC_("canvas-padding-mode", "From theme"), NULL },
+    { GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK, NC_("canvas-padding-mode", "Light check color"), NULL },
+    { GIMP_CANVAS_PADDING_MODE_DARK_CHECK, NC_("canvas-padding-mode", "Dark check color"), NULL },
+    { GIMP_CANVAS_PADDING_MODE_CUSTOM, NC_("canvas-padding-mode", "Custom color"), NULL },
+    { 0, NULL, NULL }
+  };
+
+  static GType type = 0;
+
+  if (G_UNLIKELY (! type))
+    {
+      type = g_enum_register_static ("GimpCanvasPaddingMode", values);
+      gimp_type_set_translation_context (type, "canvas-padding-mode");
+      gimp_enum_set_value_descriptions (type, descs);
+    }
+
+  return type;
+}
+
+GType
+gimp_space_bar_action_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { GIMP_SPACE_BAR_ACTION_NONE, "GIMP_SPACE_BAR_ACTION_NONE", "none" },
+    { GIMP_SPACE_BAR_ACTION_PAN, "GIMP_SPACE_BAR_ACTION_PAN", "pan" },
+    { GIMP_SPACE_BAR_ACTION_MOVE, "GIMP_SPACE_BAR_ACTION_MOVE", "move" },
+    { 0, NULL, NULL }
+  };
+
+  static const GimpEnumDesc descs[] =
+  {
+    { GIMP_SPACE_BAR_ACTION_NONE, NC_("space-bar-action", "No action"), NULL },
+    { GIMP_SPACE_BAR_ACTION_PAN, NC_("space-bar-action", "Pan view"), NULL },
+    { GIMP_SPACE_BAR_ACTION_MOVE, NC_("space-bar-action", "Switch to Move tool"), NULL },
+    { 0, NULL, NULL }
+  };
+
+  static GType type = 0;
+
+  if (G_UNLIKELY (! type))
+    {
+      type = g_enum_register_static ("GimpSpaceBarAction", values);
+      gimp_type_set_translation_context (type, "space-bar-action");
+      gimp_enum_set_value_descriptions (type, descs);
+    }
+
+  return type;
+}
+
+GType
+gimp_zoom_quality_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { GIMP_ZOOM_QUALITY_LOW, "GIMP_ZOOM_QUALITY_LOW", "low" },
+    { GIMP_ZOOM_QUALITY_HIGH, "GIMP_ZOOM_QUALITY_HIGH", "high" },
+    { 0, NULL, NULL }
+  };
+
+  static const GimpEnumDesc descs[] =
+  {
+    { GIMP_ZOOM_QUALITY_LOW, NC_("zoom-quality", "Low"), NULL },
+    { GIMP_ZOOM_QUALITY_HIGH, NC_("zoom-quality", "High"), NULL },
+    { 0, NULL, NULL }
+  };
+
+  static GType type = 0;
+
+  if (G_UNLIKELY (! type))
+    {
+      type = g_enum_register_static ("GimpZoomQuality", values);
+      gimp_type_set_translation_context (type, "zoom-quality");
+      gimp_enum_set_value_descriptions (type, descs);
+    }
+
+  return type;
+}
+
+GType
+gimp_help_browser_type_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { GIMP_HELP_BROWSER_GIMP, "GIMP_HELP_BROWSER_GIMP", "gimp" },
+    { GIMP_HELP_BROWSER_WEB_BROWSER, "GIMP_HELP_BROWSER_WEB_BROWSER", "web-browser" },
+    { 0, NULL, NULL }
+  };
+
+  static const GimpEnumDesc descs[] =
+  {
+    { GIMP_HELP_BROWSER_GIMP, NC_("help-browser-type", "GIMP help browser"), NULL },
+    { GIMP_HELP_BROWSER_WEB_BROWSER, NC_("help-browser-type", "Web browser"), NULL },
+    { 0, NULL, NULL }
+  };
+
+  static GType type = 0;
+
+  if (G_UNLIKELY (! type))
+    {
+      type = g_enum_register_static ("GimpHelpBrowserType", values);
+      gimp_type_set_translation_context (type, "help-browser-type");
+      gimp_enum_set_value_descriptions (type, descs);
+    }
+
+  return type;
+}
+
+GType
+gimp_window_hint_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { GIMP_WINDOW_HINT_NORMAL, "GIMP_WINDOW_HINT_NORMAL", "normal" },
+    { GIMP_WINDOW_HINT_UTILITY, "GIMP_WINDOW_HINT_UTILITY", "utility" },
+    { GIMP_WINDOW_HINT_KEEP_ABOVE, "GIMP_WINDOW_HINT_KEEP_ABOVE", "keep-above" },
+    { 0, NULL, NULL }
+  };
+
+  static const GimpEnumDesc descs[] =
+  {
+    { GIMP_WINDOW_HINT_NORMAL, NC_("window-hint", "Normal window"), NULL },
+    { GIMP_WINDOW_HINT_UTILITY, NC_("window-hint", "Utility window"), NULL },
+    { GIMP_WINDOW_HINT_KEEP_ABOVE, NC_("window-hint", "Keep above"), NULL },
+    { 0, NULL, NULL }
+  };
+
+  static GType type = 0;
+
+  if (G_UNLIKELY (! type))
+    {
+      type = g_enum_register_static ("GimpWindowHint", values);
+      gimp_type_set_translation_context (type, "window-hint");
+      gimp_enum_set_value_descriptions (type, descs);
+    }
+
+  return type;
+}
+
+GType
+gimp_cursor_format_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { GIMP_CURSOR_FORMAT_BITMAP, "GIMP_CURSOR_FORMAT_BITMAP", "bitmap" },
+    { GIMP_CURSOR_FORMAT_PIXBUF, "GIMP_CURSOR_FORMAT_PIXBUF", "pixbuf" },
+    { 0, NULL, NULL }
+  };
+
+  static const GimpEnumDesc descs[] =
+  {
+    { GIMP_CURSOR_FORMAT_BITMAP, NC_("cursor-format", "Black & white"), NULL },
+    { GIMP_CURSOR_FORMAT_PIXBUF, NC_("cursor-format", "Fancy"), NULL },
+    { 0, NULL, NULL }
+  };
+
+  static GType type = 0;
+
+  if (G_UNLIKELY (! type))
+    {
+      type = g_enum_register_static ("GimpCursorFormat", values);
+      gimp_type_set_translation_context (type, "cursor-format");
+      gimp_enum_set_value_descriptions (type, descs);
+    }
+
+  return type;
+}
+
+
+/* Generated data ends here */
+
diff --git a/app/config/config-enums.h b/app/config/config-enums.h
new file mode 100644
index 0000000..0bb4778
--- /dev/null
+++ b/app/config/config-enums.h
@@ -0,0 +1,105 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __CONFIG_ENUMS_H__
+#define __CONFIG_ENUMS_H__
+
+
+#define GIMP_TYPE_CURSOR_MODE (gimp_cursor_mode_get_type ())
+
+GType gimp_cursor_mode_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+  GIMP_CURSOR_MODE_TOOL_ICON,       /*< desc="Tool icon"                >*/
+  GIMP_CURSOR_MODE_TOOL_CROSSHAIR,  /*< desc="Tool icon with crosshair" >*/
+  GIMP_CURSOR_MODE_CROSSHAIR        /*< desc="Crosshair only"           >*/
+} GimpCursorMode;
+
+
+#define GIMP_TYPE_CANVAS_PADDING_MODE (gimp_canvas_padding_mode_get_type ())
+
+GType gimp_canvas_padding_mode_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+  GIMP_CANVAS_PADDING_MODE_DEFAULT,      /*< desc="From theme"        >*/
+  GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK,  /*< desc="Light check color" >*/
+  GIMP_CANVAS_PADDING_MODE_DARK_CHECK,   /*< desc="Dark check color"  >*/
+  GIMP_CANVAS_PADDING_MODE_CUSTOM,       /*< desc="Custom color"      >*/
+  GIMP_CANVAS_PADDING_MODE_RESET = -1    /*< skip >*/
+} GimpCanvasPaddingMode;
+
+
+#define GIMP_TYPE_SPACE_BAR_ACTION (gimp_space_bar_action_get_type ())
+
+GType gimp_space_bar_action_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+  GIMP_SPACE_BAR_ACTION_NONE,  /*< desc="No action"           >*/
+  GIMP_SPACE_BAR_ACTION_PAN,   /*< desc="Pan view"            >*/
+  GIMP_SPACE_BAR_ACTION_MOVE   /*< desc="Switch to Move tool" >*/
+} GimpSpaceBarAction;
+
+
+#define GIMP_TYPE_ZOOM_QUALITY (gimp_zoom_quality_get_type ())
+
+GType gimp_zoom_quality_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+  GIMP_ZOOM_QUALITY_LOW,   /*< desc="Low"  >*/
+  GIMP_ZOOM_QUALITY_HIGH   /*< desc="High" >*/
+} GimpZoomQuality;
+
+
+#define GIMP_TYPE_HELP_BROWSER_TYPE (gimp_help_browser_type_get_type ())
+
+GType gimp_help_browser_type_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+  GIMP_HELP_BROWSER_GIMP,        /*< desc="GIMP help browser" >*/
+  GIMP_HELP_BROWSER_WEB_BROWSER  /*< desc="Web browser"       >*/
+} GimpHelpBrowserType;
+
+
+#define GIMP_TYPE_WINDOW_HINT (gimp_window_hint_get_type ())
+
+GType gimp_window_hint_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+  GIMP_WINDOW_HINT_NORMAL,     /*< desc="Normal window"  >*/
+  GIMP_WINDOW_HINT_UTILITY,    /*< desc="Utility window" >*/
+  GIMP_WINDOW_HINT_KEEP_ABOVE  /*< desc="Keep above"     >*/
+} GimpWindowHint;
+
+
+#define GIMP_TYPE_CURSOR_FORMAT (gimp_cursor_format_get_type ())
+
+GType gimp_cursor_format_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+  GIMP_CURSOR_FORMAT_BITMAP, /*< desc="Black & white" >*/
+  GIMP_CURSOR_FORMAT_PIXBUF  /*< desc="Fancy"         >*/
+} GimpCursorFormat;
+
+
+#endif /* __CONFIG_ENUMS_H__ */
diff --git a/app/config/config-types.h b/app/config/config-types.h
index 97fa63c..eed275d 100644
--- a/app/config/config-types.h
+++ b/app/config/config-types.h
@@ -24,6 +24,12 @@
 
 #include "libgimpconfig/gimpconfigtypes.h"
 
+#include "config/config-enums.h"
+
+
+#define GIMP_OPACITY_TRANSPARENT      0.0
+#define GIMP_OPACITY_OPAQUE           1.0
+
 
 typedef struct _GimpBaseConfig       GimpBaseConfig;
 typedef struct _GimpCoreConfig       GimpCoreConfig;
@@ -34,7 +40,6 @@ typedef struct _GimpRc               GimpRc;
 
 typedef struct _GimpXmlParser        GimpXmlParser;
 
-/* should be in display/display-types.h */
 typedef struct _GimpDisplayOptions   GimpDisplayOptions;
 
 /* should be in core/core-types.h */
diff --git a/app/config/gimpdisplayconfig.c b/app/config/gimpdisplayconfig.c
index e2f0697..5ce6399 100644
--- a/app/config/gimpdisplayconfig.c
+++ b/app/config/gimpdisplayconfig.c
@@ -28,16 +28,9 @@
 
 #include "config-types.h"
 
-/* FIXME: If we can get rid of this dependency to the display module,
- * we will greatly improve the module dependencies in the core, see
- * devel-docs/gimp-module-dependencies.svg. In particular, we will get
- * rid of the (transitive) dependency from the core to the UI code
- */
-#include "display/display-enums.h"
-#include "display/gimpdisplayoptions.h"
-
 #include "gimprc-blurbs.h"
 #include "gimpdisplayconfig.h"
+#include "gimpdisplayoptions.h"
 
 #include "gimp-intl.h"
 
diff --git a/app/config/gimpdisplayconfig.h b/app/config/gimpdisplayconfig.h
index ca184f4..cfdbdf2 100644
--- a/app/config/gimpdisplayconfig.h
+++ b/app/config/gimpdisplayconfig.h
@@ -21,8 +21,6 @@
 #ifndef __GIMP_DISPLAY_CONFIG_H__
 #define __GIMP_DISPLAY_CONFIG_H__
 
-#include "display/display-enums.h"
-
 #include "config/gimpcoreconfig.h"
 
 
diff --git a/app/display/gimpdisplayoptions.c b/app/config/gimpdisplayoptions.c
similarity index 99%
rename from app/display/gimpdisplayoptions.c
rename to app/config/gimpdisplayoptions.c
index 5cff716..82eb388 100644
--- a/app/display/gimpdisplayoptions.c
+++ b/app/config/gimpdisplayoptions.c
@@ -27,10 +27,9 @@
 #include "libgimpcolor/gimpcolor.h"
 #include "libgimpconfig/gimpconfig.h"
 
-#include "core/core-types.h"
-#include "display-enums.h"
+#include "config-types.h"
 
-#include "config/gimprc-blurbs.h"
+#include "gimprc-blurbs.h"
 
 #include "gimpdisplayoptions.h"
 
diff --git a/app/display/gimpdisplayoptions.h b/app/config/gimpdisplayoptions.h
similarity index 100%
rename from app/display/gimpdisplayoptions.h
rename to app/config/gimpdisplayoptions.h
diff --git a/app/config/gimpguiconfig.h b/app/config/gimpguiconfig.h
index 6963d74..1e6d7f7 100644
--- a/app/config/gimpguiconfig.h
+++ b/app/config/gimpguiconfig.h
@@ -21,8 +21,6 @@
 #ifndef __GIMP_GUI_CONFIG_H__
 #define __GIMP_GUI_CONFIG_H__
 
-#include "widgets/widgets-enums.h"
-
 #include "config/gimpdisplayconfig.h"
 
 
diff --git a/app/config/gimppluginconfig.h b/app/config/gimppluginconfig.h
index 3f27fd5..bf34fd9 100644
--- a/app/config/gimppluginconfig.h
+++ b/app/config/gimppluginconfig.h
@@ -21,8 +21,6 @@
 #ifndef __GIMP_PLUGIN_CONFIG_H__
 #define __GIMP_PLUGIN_CONFIG_H__
 
-#include "widgets/widgets-enums.h"
-
 #include "config/gimpguiconfig.h"
 
 
diff --git a/app/core/core-types.h b/app/core/core-types.h
index ae01983..eea2ac2 100644
--- a/app/core/core-types.h
+++ b/app/core/core-types.h
@@ -29,9 +29,6 @@
 
 /*  defines  */
 
-#define GIMP_OPACITY_TRANSPARENT      0.0
-#define GIMP_OPACITY_OPAQUE           1.0
-
 #define GIMP_COORDS_MIN_PRESSURE      0.0
 #define GIMP_COORDS_MAX_PRESSURE      1.0
 #define GIMP_COORDS_DEFAULT_PRESSURE  1.0
diff --git a/app/display/Makefile.am b/app/display/Makefile.am
index 031ec42..987c995 100644
--- a/app/display/Makefile.am
+++ b/app/display/Makefile.am
@@ -23,8 +23,6 @@ libappdisplay_a_sources = \
 	gimpcursorview.h			\
 	gimpdisplay.c				\
 	gimpdisplay.h				\
-	gimpdisplayoptions.c			\
-	gimpdisplayoptions.h			\
 	gimpdisplay-foreach.c			\
 	gimpdisplay-foreach.h			\
 	gimpdisplay-handlers.c			\
diff --git a/app/display/display-enums.c b/app/display/display-enums.c
index 7e48a1e..0db113e 100644
--- a/app/display/display-enums.c
+++ b/app/display/display-enums.c
@@ -9,37 +9,6 @@
 
 /* enumerations from "./display-enums.h" */
 GType
-gimp_cursor_mode_get_type (void)
-{
-  static const GEnumValue values[] =
-  {
-    { GIMP_CURSOR_MODE_TOOL_ICON, "GIMP_CURSOR_MODE_TOOL_ICON", "tool-icon" },
-    { GIMP_CURSOR_MODE_TOOL_CROSSHAIR, "GIMP_CURSOR_MODE_TOOL_CROSSHAIR", "tool-crosshair" },
-    { GIMP_CURSOR_MODE_CROSSHAIR, "GIMP_CURSOR_MODE_CROSSHAIR", "crosshair" },
-    { 0, NULL, NULL }
-  };
-
-  static const GimpEnumDesc descs[] =
-  {
-    { GIMP_CURSOR_MODE_TOOL_ICON, NC_("cursor-mode", "Tool icon"), NULL },
-    { GIMP_CURSOR_MODE_TOOL_CROSSHAIR, NC_("cursor-mode", "Tool icon with crosshair"), NULL },
-    { GIMP_CURSOR_MODE_CROSSHAIR, NC_("cursor-mode", "Crosshair only"), NULL },
-    { 0, NULL, NULL }
-  };
-
-  static GType type = 0;
-
-  if (G_UNLIKELY (! type))
-    {
-      type = g_enum_register_static ("GimpCursorMode", values);
-      gimp_type_set_translation_context (type, "cursor-mode");
-      gimp_enum_set_value_descriptions (type, descs);
-    }
-
-  return type;
-}
-
-GType
 gimp_cursor_precision_get_type (void)
 {
   static const GEnumValue values[] =
@@ -71,99 +40,6 @@ gimp_cursor_precision_get_type (void)
 }
 
 GType
-gimp_canvas_padding_mode_get_type (void)
-{
-  static const GEnumValue values[] =
-  {
-    { GIMP_CANVAS_PADDING_MODE_DEFAULT, "GIMP_CANVAS_PADDING_MODE_DEFAULT", "default" },
-    { GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK, "GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK", "light-check" },
-    { GIMP_CANVAS_PADDING_MODE_DARK_CHECK, "GIMP_CANVAS_PADDING_MODE_DARK_CHECK", "dark-check" },
-    { GIMP_CANVAS_PADDING_MODE_CUSTOM, "GIMP_CANVAS_PADDING_MODE_CUSTOM", "custom" },
-    { 0, NULL, NULL }
-  };
-
-  static const GimpEnumDesc descs[] =
-  {
-    { GIMP_CANVAS_PADDING_MODE_DEFAULT, NC_("canvas-padding-mode", "From theme"), NULL },
-    { GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK, NC_("canvas-padding-mode", "Light check color"), NULL },
-    { GIMP_CANVAS_PADDING_MODE_DARK_CHECK, NC_("canvas-padding-mode", "Dark check color"), NULL },
-    { GIMP_CANVAS_PADDING_MODE_CUSTOM, NC_("canvas-padding-mode", "Custom color"), NULL },
-    { 0, NULL, NULL }
-  };
-
-  static GType type = 0;
-
-  if (G_UNLIKELY (! type))
-    {
-      type = g_enum_register_static ("GimpCanvasPaddingMode", values);
-      gimp_type_set_translation_context (type, "canvas-padding-mode");
-      gimp_enum_set_value_descriptions (type, descs);
-    }
-
-  return type;
-}
-
-GType
-gimp_space_bar_action_get_type (void)
-{
-  static const GEnumValue values[] =
-  {
-    { GIMP_SPACE_BAR_ACTION_NONE, "GIMP_SPACE_BAR_ACTION_NONE", "none" },
-    { GIMP_SPACE_BAR_ACTION_PAN, "GIMP_SPACE_BAR_ACTION_PAN", "pan" },
-    { GIMP_SPACE_BAR_ACTION_MOVE, "GIMP_SPACE_BAR_ACTION_MOVE", "move" },
-    { 0, NULL, NULL }
-  };
-
-  static const GimpEnumDesc descs[] =
-  {
-    { GIMP_SPACE_BAR_ACTION_NONE, NC_("space-bar-action", "No action"), NULL },
-    { GIMP_SPACE_BAR_ACTION_PAN, NC_("space-bar-action", "Pan view"), NULL },
-    { GIMP_SPACE_BAR_ACTION_MOVE, NC_("space-bar-action", "Switch to Move tool"), NULL },
-    { 0, NULL, NULL }
-  };
-
-  static GType type = 0;
-
-  if (G_UNLIKELY (! type))
-    {
-      type = g_enum_register_static ("GimpSpaceBarAction", values);
-      gimp_type_set_translation_context (type, "space-bar-action");
-      gimp_enum_set_value_descriptions (type, descs);
-    }
-
-  return type;
-}
-
-GType
-gimp_zoom_quality_get_type (void)
-{
-  static const GEnumValue values[] =
-  {
-    { GIMP_ZOOM_QUALITY_LOW, "GIMP_ZOOM_QUALITY_LOW", "low" },
-    { GIMP_ZOOM_QUALITY_HIGH, "GIMP_ZOOM_QUALITY_HIGH", "high" },
-    { 0, NULL, NULL }
-  };
-
-  static const GimpEnumDesc descs[] =
-  {
-    { GIMP_ZOOM_QUALITY_LOW, NC_("zoom-quality", "Low"), NULL },
-    { GIMP_ZOOM_QUALITY_HIGH, NC_("zoom-quality", "High"), NULL },
-    { 0, NULL, NULL }
-  };
-
-  static GType type = 0;
-
-  if (G_UNLIKELY (! type))
-    {
-      type = g_enum_register_static ("GimpZoomQuality", values);
-      gimp_type_set_translation_context (type, "zoom-quality");
-      gimp_enum_set_value_descriptions (type, descs);
-    }
-
-  return type;
-}
-
-GType
 gimp_zoom_focus_get_type (void)
 {
   static const GEnumValue values[] =
diff --git a/app/display/display-enums.h b/app/display/display-enums.h
index 9455ace..28a1ae1 100644
--- a/app/display/display-enums.h
+++ b/app/display/display-enums.h
@@ -19,18 +19,6 @@
 #define __DISPLAY_ENUMS_H__
 
 
-#define GIMP_TYPE_CURSOR_MODE (gimp_cursor_mode_get_type ())
-
-GType gimp_cursor_mode_get_type (void) G_GNUC_CONST;
-
-typedef enum
-{
-  GIMP_CURSOR_MODE_TOOL_ICON,       /*< desc="Tool icon"                >*/
-  GIMP_CURSOR_MODE_TOOL_CROSSHAIR,  /*< desc="Tool icon with crosshair" >*/
-  GIMP_CURSOR_MODE_CROSSHAIR        /*< desc="Crosshair only"           >*/
-} GimpCursorMode;
-
-
 #define GIMP_TYPE_CURSOR_PRECISION (gimp_cursor_precision_get_type ())
 
 GType gimp_cursor_precision_get_type (void) G_GNUC_CONST;
@@ -43,43 +31,6 @@ typedef enum
 } GimpCursorPrecision;
 
 
-#define GIMP_TYPE_CANVAS_PADDING_MODE (gimp_canvas_padding_mode_get_type ())
-
-GType gimp_canvas_padding_mode_get_type (void) G_GNUC_CONST;
-
-typedef enum
-{
-  GIMP_CANVAS_PADDING_MODE_DEFAULT,      /*< desc="From theme"        >*/
-  GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK,  /*< desc="Light check color" >*/
-  GIMP_CANVAS_PADDING_MODE_DARK_CHECK,   /*< desc="Dark check color"  >*/
-  GIMP_CANVAS_PADDING_MODE_CUSTOM,       /*< desc="Custom color"      >*/
-  GIMP_CANVAS_PADDING_MODE_RESET = -1    /*< skip >*/
-} GimpCanvasPaddingMode;
-
-
-#define GIMP_TYPE_SPACE_BAR_ACTION (gimp_space_bar_action_get_type ())
-
-GType gimp_space_bar_action_get_type (void) G_GNUC_CONST;
-
-typedef enum
-{
-  GIMP_SPACE_BAR_ACTION_NONE,  /*< desc="No action"           >*/
-  GIMP_SPACE_BAR_ACTION_PAN,   /*< desc="Pan view"            >*/
-  GIMP_SPACE_BAR_ACTION_MOVE   /*< desc="Switch to Move tool" >*/
-} GimpSpaceBarAction;
-
-
-#define GIMP_TYPE_ZOOM_QUALITY (gimp_zoom_quality_get_type ())
-
-GType gimp_zoom_quality_get_type (void) G_GNUC_CONST;
-
-typedef enum
-{
-  GIMP_ZOOM_QUALITY_LOW,   /*< desc="Low"  >*/
-  GIMP_ZOOM_QUALITY_HIGH   /*< desc="High" >*/
-} GimpZoomQuality;
-
-
 #define GIMP_TYPE_ZOOM_FOCUS (gimp_zoom_focus_get_type ())
 
 GType gimp_zoom_focus_get_type (void) G_GNUC_CONST;
diff --git a/app/display/gimpdisplayshell-appearance.c b/app/display/gimpdisplayshell-appearance.c
index 3bc5bbd..269d3d9 100644
--- a/app/display/gimpdisplayshell-appearance.c
+++ b/app/display/gimpdisplayshell-appearance.c
@@ -25,6 +25,8 @@
 
 #include "display-types.h"
 
+#include "config/gimpdisplayoptions.h"
+
 #include "core/gimp.h"
 #include "core/gimpcontext.h"
 #include "core/gimpimage.h"
@@ -39,7 +41,6 @@
 
 #include "gimpcanvas.h"
 #include "gimpdisplay.h"
-#include "gimpdisplayoptions.h"
 #include "gimpdisplayshell.h"
 #include "gimpdisplayshell-appearance.h"
 #include "gimpdisplayshell-expose.h"
diff --git a/app/display/gimpdisplayshell-handlers.c b/app/display/gimpdisplayshell-handlers.c
index 79e77d4..58b8cb8 100644
--- a/app/display/gimpdisplayshell-handlers.c
+++ b/app/display/gimpdisplayshell-handlers.c
@@ -27,6 +27,7 @@
 #include "display-types.h"
 
 #include "config/gimpdisplayconfig.h"
+#include "config/gimpdisplayoptions.h"
 
 #include "core/gimp.h"
 #include "core/gimpcontainer.h"
@@ -39,7 +40,6 @@
 #include "widgets/gimpwidgets-utils.h"
 
 #include "gimpdisplay.h"
-#include "gimpdisplayoptions.h"
 #include "gimpdisplayshell.h"
 #include "gimpdisplayshell-appearance.h"
 #include "gimpdisplayshell-callbacks.h"
diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c
index dddca53..e6c9d31 100644
--- a/app/display/gimpdisplayshell.c
+++ b/app/display/gimpdisplayshell.c
@@ -33,6 +33,7 @@
 
 #include "config/gimpcoreconfig.h"
 #include "config/gimpdisplayconfig.h"
+#include "config/gimpdisplayoptions.h"
 
 #include "core/gimp.h"
 #include "core/gimpchannel.h"
@@ -53,7 +54,6 @@
 
 #include "gimpcanvas.h"
 #include "gimpdisplay.h"
-#include "gimpdisplayoptions.h"
 #include "gimpdisplayshell.h"
 #include "gimpdisplayshell-appearance.h"
 #include "gimpdisplayshell-callbacks.h"
diff --git a/app/widgets/widgets-enums.c b/app/widgets/widgets-enums.c
index e56215b..826edb1 100644
--- a/app/widgets/widgets-enums.c
+++ b/app/widgets/widgets-enums.c
@@ -164,64 +164,6 @@ gimp_color_pick_state_get_type (void)
 }
 
 GType
-gimp_cursor_format_get_type (void)
-{
-  static const GEnumValue values[] =
-  {
-    { GIMP_CURSOR_FORMAT_BITMAP, "GIMP_CURSOR_FORMAT_BITMAP", "bitmap" },
-    { GIMP_CURSOR_FORMAT_PIXBUF, "GIMP_CURSOR_FORMAT_PIXBUF", "pixbuf" },
-    { 0, NULL, NULL }
-  };
-
-  static const GimpEnumDesc descs[] =
-  {
-    { GIMP_CURSOR_FORMAT_BITMAP, NC_("cursor-format", "Black & white"), NULL },
-    { GIMP_CURSOR_FORMAT_PIXBUF, NC_("cursor-format", "Fancy"), NULL },
-    { 0, NULL, NULL }
-  };
-
-  static GType type = 0;
-
-  if (G_UNLIKELY (! type))
-    {
-      type = g_enum_register_static ("GimpCursorFormat", values);
-      gimp_type_set_translation_context (type, "cursor-format");
-      gimp_enum_set_value_descriptions (type, descs);
-    }
-
-  return type;
-}
-
-GType
-gimp_help_browser_type_get_type (void)
-{
-  static const GEnumValue values[] =
-  {
-    { GIMP_HELP_BROWSER_GIMP, "GIMP_HELP_BROWSER_GIMP", "gimp" },
-    { GIMP_HELP_BROWSER_WEB_BROWSER, "GIMP_HELP_BROWSER_WEB_BROWSER", "web-browser" },
-    { 0, NULL, NULL }
-  };
-
-  static const GimpEnumDesc descs[] =
-  {
-    { GIMP_HELP_BROWSER_GIMP, NC_("help-browser-type", "GIMP help browser"), NULL },
-    { GIMP_HELP_BROWSER_WEB_BROWSER, NC_("help-browser-type", "Web browser"), NULL },
-    { 0, NULL, NULL }
-  };
-
-  static GType type = 0;
-
-  if (G_UNLIKELY (! type))
-    {
-      type = g_enum_register_static ("GimpHelpBrowserType", values);
-      gimp_type_set_translation_context (type, "help-browser-type");
-      gimp_enum_set_value_descriptions (type, descs);
-    }
-
-  return type;
-}
-
-GType
 gimp_histogram_scale_get_type (void)
 {
   static const GEnumValue values[] =
@@ -320,37 +262,6 @@ gimp_tag_entry_mode_get_type (void)
   return type;
 }
 
-GType
-gimp_window_hint_get_type (void)
-{
-  static const GEnumValue values[] =
-  {
-    { GIMP_WINDOW_HINT_NORMAL, "GIMP_WINDOW_HINT_NORMAL", "normal" },
-    { GIMP_WINDOW_HINT_UTILITY, "GIMP_WINDOW_HINT_UTILITY", "utility" },
-    { GIMP_WINDOW_HINT_KEEP_ABOVE, "GIMP_WINDOW_HINT_KEEP_ABOVE", "keep-above" },
-    { 0, NULL, NULL }
-  };
-
-  static const GimpEnumDesc descs[] =
-  {
-    { GIMP_WINDOW_HINT_NORMAL, NC_("window-hint", "Normal window"), NULL },
-    { GIMP_WINDOW_HINT_UTILITY, NC_("window-hint", "Utility window"), NULL },
-    { GIMP_WINDOW_HINT_KEEP_ABOVE, NC_("window-hint", "Keep above"), NULL },
-    { 0, NULL, NULL }
-  };
-
-  static GType type = 0;
-
-  if (G_UNLIKELY (! type))
-    {
-      type = g_enum_register_static ("GimpWindowHint", values);
-      gimp_type_set_translation_context (type, "window-hint");
-      gimp_enum_set_value_descriptions (type, descs);
-    }
-
-  return type;
-}
-
 
 /* Generated data ends here */
 
diff --git a/app/widgets/widgets-enums.h b/app/widgets/widgets-enums.h
index 13df471..8404478 100644
--- a/app/widgets/widgets-enums.h
+++ b/app/widgets/widgets-enums.h
@@ -83,28 +83,6 @@ typedef enum
 } GimpColorPickState;
 
 
-#define GIMP_TYPE_CURSOR_FORMAT (gimp_cursor_format_get_type ())
-
-GType gimp_cursor_format_get_type (void) G_GNUC_CONST;
-
-typedef enum
-{
-  GIMP_CURSOR_FORMAT_BITMAP, /*< desc="Black & white" >*/
-  GIMP_CURSOR_FORMAT_PIXBUF  /*< desc="Fancy"         >*/
-} GimpCursorFormat;
-
-
-#define GIMP_TYPE_HELP_BROWSER_TYPE (gimp_help_browser_type_get_type ())
-
-GType gimp_help_browser_type_get_type (void) G_GNUC_CONST;
-
-typedef enum
-{
-  GIMP_HELP_BROWSER_GIMP,        /*< desc="GIMP help browser" >*/
-  GIMP_HELP_BROWSER_WEB_BROWSER  /*< desc="Web browser"       >*/
-} GimpHelpBrowserType;
-
-
 #define GIMP_TYPE_HISTOGRAM_SCALE (gimp_histogram_scale_get_type ())
 
 GType gimp_histogram_scale_get_type (void) G_GNUC_CONST;
@@ -144,18 +122,6 @@ typedef enum
 } GimpTagEntryMode;
 
 
-#define GIMP_TYPE_WINDOW_HINT (gimp_window_hint_get_type ())
-
-GType gimp_window_hint_get_type (void) G_GNUC_CONST;
-
-typedef enum
-{
-  GIMP_WINDOW_HINT_NORMAL,     /*< desc="Normal window"  >*/
-  GIMP_WINDOW_HINT_UTILITY,    /*< desc="Utility window" >*/
-  GIMP_WINDOW_HINT_KEEP_ABOVE  /*< desc="Keep above"     >*/
-} GimpWindowHint;
-
-
 /*
  * non-registered enums; register them if needed
  */
diff --git a/devel-docs/gimp-module-dependencies.svg b/devel-docs/gimp-module-dependencies.svg
index 9778ed8..f0a36e1 100644
--- a/devel-docs/gimp-module-dependencies.svg
+++ b/devel-docs/gimp-module-dependencies.svg
@@ -1,385 +1,393 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"; [
- <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink";>
-]>
-<!-- Generated by Graphviz version 2.20.2 (Wed Dec 30 22:01:07 UTC 2009)
-     For user: (martin) Martin Nordholts,,, -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
 <!-- Title: _anonymous_0 Pages: 1 -->
-<svg width="738pt" height="1628pt"
- viewBox="0.00 0.00 738.00 1628.00" xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";>
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1624)">
+<svg width="862pt" height="1008pt"
+ viewBox="0.00 0.00 862.00 1008.00" xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";>
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 1004)">
 <title>_anonymous_0</title>
-<polygon style="fill:white;stroke:white;" points="-4,4 -4,-1624 734,-1624 734,4 -4,4"/>
-<!-- app/tests -->
-<g id="node1" class="node"><title>app/tests</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="125" cy="-1602" rx="54.8957" ry="18"/>
-<text text-anchor="middle" x="125" y="-1597.9" style="font-family:Times New Roman;font-size:14.00;">app/tests</text>
-</g>
-<!-- app/vectors -->
-<g id="node2" class="node"><title>app/vectors</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="125" cy="-1530" rx="66.2071" ry="18"/>
-<text text-anchor="middle" x="125" y="-1525.9" style="font-family:Times New Roman;font-size:14.00;">app/vectors</text>
+<polygon fill="white" stroke="white" points="-4,5 -4,-1004 859,-1004 859,5 -4,5"/>
+<!-- app/plug&#45;in -->
+<g id="node1" class="node"><title>app/plug&#45;in</title>
+<ellipse fill="lawngreen" stroke="black" cx="128" cy="-981" rx="55.8614" ry="19.0919"/>
+<text text-anchor="middle" x="128" y="-977.9" font-family="Times Roman,serif" font-size="14.00">app/plug&#45;in</text>
 </g>
-<!-- app/tests&#45;&gt;app/vectors -->
-<g id="edge2" class="edge"><title>app/tests&#45;&gt;app/vectors</title>
-<path style="fill:none;stroke:black;" d="M125,-1584C125,-1576 125,-1567 125,-1558"/>
-<polygon style="fill:black;stroke:black;" points="128.5,-1558 125,-1548 121.5,-1558 128.5,-1558"/>
+<!-- app/composite -->
+<g id="node2" class="node"><title>app/composite</title>
+<ellipse fill="lawngreen" stroke="black" cx="176" cy="-907" rx="67.8823" ry="19.0919"/>
+<text text-anchor="middle" x="176" y="-903.9" font-family="Times Roman,serif" font-size="14.00">app/composite</text>
 </g>
-<!-- app/core -->
-<g id="node4" class="node"><title>app/core</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="176" cy="-1458" rx="52.1162" ry="18"/>
-<text text-anchor="middle" x="176" y="-1453.9" style="font-family:Times New Roman;font-size:14.00;">app/core</text>
+<!-- app/plug&#45;in&#45;&gt;app/composite -->
+<g id="edge2" class="edge"><title>app/plug&#45;in&#45;&gt;app/composite</title>
+<path fill="none" stroke="black" d="M140.112,-962.327C145.585,-953.891 152.16,-943.754 158.178,-934.475"/>
+<polygon fill="black" stroke="black" points="161.219,-936.219 163.724,-925.925 155.346,-932.41 161.219,-936.219"/>
 </g>
-<!-- app/vectors&#45;&gt;app/core -->
-<g id="edge4" class="edge"><title>app/vectors&#45;&gt;app/core</title>
-<path style="fill:none;stroke:black;" d="M138,-1512C144,-1504 151,-1493 158,-1484"/>
-<polygon style="fill:black;stroke:black;" points="160.8,-1486.1 164,-1476 155.2,-1481.9 160.8,-1486.1"/>
+<!-- app/base -->
+<g id="node4" class="node"><title>app/base</title>
+<ellipse fill="lawngreen" stroke="black" cx="285" cy="-833" rx="44.7575" ry="19.0919"/>
+<text text-anchor="middle" x="285" y="-829.9" font-family="Times Roman,serif" font-size="14.00">app/base</text>
 </g>
-<!-- app/xcf -->
-<g id="node6" class="node"><title>app/xcf</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="328" cy="-1386" rx="45.1673" ry="18"/>
-<text text-anchor="middle" x="328" y="-1381.9" style="font-family:Times New Roman;font-size:14.00;">app/xcf</text>
+<!-- app/composite&#45;&gt;app/base -->
+<g id="edge4" class="edge"><title>app/composite&#45;&gt;app/base</title>
+<path fill="none" stroke="black" d="M202.108,-889.275C217.2,-879.029 236.322,-866.047 252.396,-855.135"/>
+<polygon fill="black" stroke="black" points="254.66,-857.828 260.968,-849.315 250.728,-852.037 254.66,-857.828"/>
 </g>
-<!-- app/core&#45;&gt;app/xcf -->
-<g id="edge6" class="edge"><title>app/core&#45;&gt;app/xcf</title>
-<path style="fill:none;stroke:black;" d="M207,-1443C231,-1431 264,-1416 290,-1404"/>
-<polygon style="fill:black;stroke:black;" points="291.283,-1407.26 299,-1400 288.44,-1400.86 291.283,-1407.26"/>
+<!-- app/config -->
+<g id="node11" class="node"><title>app/config</title>
+<ellipse fill="lawngreen" stroke="black" cx="311" cy="-759" rx="51.8276" ry="19.0919"/>
+<text text-anchor="middle" x="311" y="-755.9" font-family="Times Roman,serif" font-size="14.00">app/config</text>
 </g>
-<!-- Cairo -->
-<g id="node8" class="node"><title>Cairo</title>
-<ellipse style="fill:lightblue;stroke:black;" cx="198" cy="-1386" rx="36.1339" ry="18"/>
-<text text-anchor="middle" x="198" y="-1381.9" style="font-family:Times New Roman;font-size:14.00;">Cairo</text>
+<!-- app/base&#45;&gt;app/config -->
+<g id="edge10" class="edge"><title>app/base&#45;&gt;app/config</title>
+<path fill="none" stroke="black" d="M291.696,-813.943C294.516,-805.916 297.859,-796.402 300.964,-787.565"/>
+<polygon fill="black" stroke="black" points="304.314,-788.587 304.327,-777.992 297.71,-786.267 304.314,-788.587"/>
 </g>
-<!-- app/core&#45;&gt;Cairo -->
-<g id="edge8" class="edge"><title>app/core&#45;&gt;Cairo</title>
-<path style="fill:none;stroke:black;" d="M182,-1440C184,-1432 187,-1422 190,-1414"/>
-<polygon style="fill:black;stroke:black;" points="193.479,-1414.58 193,-1404 186.774,-1412.57 193.479,-1414.58"/>
+<!-- libgimpcolor -->
+<g id="node6" class="node"><title>libgimpcolor</title>
+<ellipse fill="#ff7256" stroke="black" cx="418" cy="-167" rx="61.0181" ry="19.0919"/>
+<text text-anchor="middle" x="418" y="-163.9" font-family="Times Roman,serif" font-size="14.00">libgimpcolor</text>
 </g>
-<!-- app/plug&#45;in -->
-<g id="node17" class="node"><title>app/plug&#45;in</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="359" cy="-1314" rx="64.1231" ry="18"/>
-<text text-anchor="middle" x="359" y="-1309.9" style="font-family:Times New Roman;font-size:14.00;">app/plug&#45;in</text>
+<!-- libgimpmath -->
+<g id="node7" class="node"><title>libgimpmath</title>
+<ellipse fill="#ff7256" stroke="black" cx="418" cy="-93" rx="61.0181" ry="19.0919"/>
+<text text-anchor="middle" x="418" y="-89.9" font-family="Times Roman,serif" font-size="14.00">libgimpmath</text>
 </g>
-<!-- app/xcf&#45;&gt;app/plug&#45;in -->
-<g id="edge20" class="edge"><title>app/xcf&#45;&gt;app/plug&#45;in</title>
-<path style="fill:none;stroke:black;" d="M336,-1368C340,-1360 344,-1350 347,-1342"/>
-<polygon style="fill:black;stroke:black;" points="350.536,-1342.58 351,-1332 344.036,-1339.98 350.536,-1342.58"/>
+<!-- libgimpcolor&#45;&gt;libgimpmath -->
+<g id="edge6" class="edge"><title>libgimpcolor&#45;&gt;libgimpmath</title>
+<path fill="none" stroke="black" d="M418,-147.943C418,-140.149 418,-130.954 418,-122.338"/>
+<polygon fill="black" stroke="black" points="421.5,-122.249 418,-112.249 414.5,-122.249 421.5,-122.249"/>
 </g>
-<!-- app/widgets -->
-<g id="node10" class="node"><title>app/widgets</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="516" cy="-738" rx="68.7933" ry="18"/>
-<text text-anchor="middle" x="516" y="-733.9" style="font-family:Times New Roman;font-size:14.00;">app/widgets</text>
+<!-- GLib -->
+<g id="node9" class="node"><title>GLib</title>
+<ellipse fill="lightblue" stroke="black" cx="418" cy="-19" rx="31.8198" ry="19.0919"/>
+<text text-anchor="middle" x="418" y="-15.9" font-family="Times Roman,serif" font-size="14.00">GLib</text>
 </g>
-<!-- app/dialogs -->
-<g id="node11" class="node"><title>app/dialogs</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="516" cy="-666" rx="64.1231" ry="18"/>
-<text text-anchor="middle" x="516" y="-661.9" style="font-family:Times New Roman;font-size:14.00;">app/dialogs</text>
+<!-- libgimpmath&#45;&gt;GLib -->
+<g id="edge8" class="edge"><title>libgimpmath&#45;&gt;GLib</title>
+<path fill="none" stroke="black" d="M418,-73.9432C418,-66.1493 418,-56.9538 418,-48.3381"/>
+<polygon fill="black" stroke="black" points="421.5,-48.2494 418,-38.2495 414.5,-48.2495 421.5,-48.2494"/>
 </g>
-<!-- app/widgets&#45;&gt;app/dialogs -->
-<g id="edge10" class="edge"><title>app/widgets&#45;&gt;app/dialogs</title>
-<path style="fill:none;stroke:black;" d="M516,-720C516,-712 516,-703 516,-694"/>
-<polygon style="fill:black;stroke:black;" points="519.5,-694 516,-684 512.5,-694 519.5,-694"/>
+<!-- app/core -->
+<g id="node14" class="node"><title>app/core</title>
+<ellipse fill="lawngreen" stroke="black" cx="336" cy="-685" rx="44.0472" ry="19.0919"/>
+<text text-anchor="middle" x="336" y="-681.9" font-family="Times Roman,serif" font-size="14.00">app/core</text>
 </g>
-<!-- libgimpmodule -->
-<g id="node13" class="node"><title>libgimpmodule</title>
-<ellipse style="fill:#ff7256;stroke:black;" cx="580" cy="-378" rx="79.9115" ry="18"/>
-<text text-anchor="middle" x="580" y="-373.9" style="font-family:Times New Roman;font-size:14.00;">libgimpmodule</text>
+<!-- app/config&#45;&gt;app/core -->
+<g id="edge26" class="edge"><title>app/config&#45;&gt;app/core</title>
+<path fill="none" stroke="black" d="M317.438,-739.943C320.15,-731.916 323.364,-722.402 326.35,-713.565"/>
+<polygon fill="black" stroke="black" points="329.699,-714.586 329.584,-703.992 323.067,-712.346 329.699,-714.586"/>
 </g>
-<!-- app/dialogs&#45;&gt;libgimpmodule -->
-<g id="edge12" class="edge"><title>app/dialogs&#45;&gt;libgimpmodule</title>
-<path style="fill:none;stroke:black;" d="M527,-648C533,-638 540,-624 544,-612 567,-540 576,-451 578,-406"/>
-<polygon style="fill:black;stroke:black;" points="581.488,-406.299 579,-396 574.522,-405.602 581.488,-406.299"/>
+<!-- GEGL -->
+<g id="node13" class="node"><title>GEGL</title>
+<ellipse fill="lightblue" stroke="black" cx="339" cy="-315" rx="36.977" ry="19.0919"/>
+<text text-anchor="middle" x="339" y="-311.9" font-family="Times Roman,serif" font-size="14.00">GEGL</text>
 </g>
-<!-- app/gui -->
-<g id="node15" class="node"><title>app/gui</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="489" cy="-594" rx="45.8622" ry="18"/>
-<text text-anchor="middle" x="489" y="-589.9" style="font-family:Times New Roman;font-size:14.00;">app/gui</text>
+<!-- app/pdb -->
+<g id="node15" class="node"><title>app/pdb</title>
+<ellipse fill="lawngreen" stroke="black" cx="232" cy="-611" rx="41.9273" ry="19.0919"/>
+<text text-anchor="middle" x="232" y="-607.9" font-family="Times Roman,serif" font-size="14.00">app/pdb</text>
 </g>
-<!-- app/dialogs&#45;&gt;app/gui -->
-<g id="edge14" class="edge"><title>app/dialogs&#45;&gt;app/gui</title>
-<path style="fill:none;stroke:black;" d="M509,-648C506,-640 503,-630 499,-622"/>
-<polygon style="fill:black;stroke:black;" points="502.226,-620.573 496,-612 495.521,-622.584 502.226,-620.573"/>
+<!-- app/core&#45;&gt;app/pdb -->
+<g id="edge12" class="edge"><title>app/core&#45;&gt;app/pdb</title>
+<path fill="none" stroke="black" d="M312.919,-668.577C298.276,-658.158 279.148,-644.548 263.166,-633.176"/>
+<polygon fill="black" stroke="black" points="264.836,-630.068 254.659,-627.122 260.777,-635.772 264.836,-630.068"/>
 </g>
-<!-- libgimpbase -->
-<g id="node28" class="node"><title>libgimpbase</title>
-<ellipse style="fill:#ff7256;stroke:black;" cx="472" cy="-234" rx="66.2071" ry="18"/>
-<text text-anchor="middle" x="472" y="-229.9" style="font-family:Times New Roman;font-size:14.00;">libgimpbase</text>
+<!-- app/gegl -->
+<g id="node17" class="node"><title>app/gegl</title>
+<ellipse fill="lawngreen" stroke="black" cx="336" cy="-611" rx="44.0472" ry="19.0919"/>
+<text text-anchor="middle" x="336" y="-607.9" font-family="Times Roman,serif" font-size="14.00">app/gegl</text>
 </g>
-<!-- libgimpmodule&#45;&gt;libgimpbase -->
-<g id="edge28" class="edge"><title>libgimpmodule&#45;&gt;libgimpbase</title>
-<path style="fill:none;stroke:black;" d="M567,-360C548,-335 513,-289 491,-260"/>
-<polygon style="fill:black;stroke:black;" points="493.8,-257.9 485,-252 488.2,-262.1 493.8,-257.9"/>
+<!-- app/core&#45;&gt;app/gegl -->
+<g id="edge14" class="edge"><title>app/core&#45;&gt;app/gegl</title>
+<path fill="none" stroke="black" d="M330.012,-665.943C329.288,-658.088 329.08,-648.81 329.387,-640.136"/>
+<polygon fill="black" stroke="black" points="332.891,-640.19 330.018,-629.992 325.904,-639.756 332.891,-640.19"/>
 </g>
-<!-- app/actions -->
-<g id="node34" class="node"><title>app/actions</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="477" cy="-522" rx="64.8203" ry="18"/>
-<text text-anchor="middle" x="477" y="-517.9" style="font-family:Times New Roman;font-size:14.00;">app/actions</text>
+<!-- app/xcf -->
+<g id="node19" class="node"><title>app/xcf</title>
+<ellipse fill="lawngreen" stroke="black" cx="438" cy="-611" rx="39.8075" ry="19.0919"/>
+<text text-anchor="middle" x="438" y="-607.9" font-family="Times Roman,serif" font-size="14.00">app/xcf</text>
 </g>
-<!-- app/gui&#45;&gt;app/actions -->
-<g id="edge30" class="edge"><title>app/gui&#45;&gt;app/actions</title>
-<path style="fill:none;stroke:black;" d="M486,-576C485,-568 483,-559 482,-550"/>
-<polygon style="fill:black;stroke:black;" points="485.393,-549.119 480,-540 478.529,-550.492 485.393,-549.119"/>
+<!-- app/core&#45;&gt;app/xcf -->
+<g id="edge16" class="edge"><title>app/core&#45;&gt;app/xcf</title>
+<path fill="none" stroke="black" d="M358.637,-668.577C372.998,-658.158 391.759,-644.548 407.434,-633.176"/>
+<polygon fill="black" stroke="black" points="409.738,-635.828 415.777,-627.122 405.628,-630.162 409.738,-635.828"/>
 </g>
 <!-- app/file -->
-<g id="node18" class="node"><title>app/file</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="359" cy="-1242" rx="45.8622" ry="18"/>
-<text text-anchor="middle" x="359" y="-1237.9" style="font-family:Times New Roman;font-size:14.00;">app/file</text>
+<g id="node21" class="node"><title>app/file</title>
+<ellipse fill="lawngreen" stroke="black" cx="80" cy="-537" rx="41.0122" ry="19.0919"/>
+<text text-anchor="middle" x="80" y="-533.9" font-family="Times Roman,serif" font-size="14.00">app/file</text>
 </g>
-<!-- app/plug&#45;in&#45;&gt;app/file -->
-<g id="edge16" class="edge"><title>app/plug&#45;in&#45;&gt;app/file</title>
-<path style="fill:none;stroke:black;" d="M359,-1296C359,-1288 359,-1279 359,-1270"/>
-<polygon style="fill:black;stroke:black;" points="362.5,-1270 359,-1260 355.5,-1270 362.5,-1270"/>
+<!-- app/pdb&#45;&gt;app/file -->
+<g id="edge18" class="edge"><title>app/pdb&#45;&gt;app/file</title>
+<path fill="none" stroke="black" d="M203.41,-597.081C179.101,-585.246 144.017,-568.166 117.466,-555.24"/>
+<polygon fill="black" stroke="black" points="118.985,-552.087 108.462,-550.856 115.921,-558.381 118.985,-552.087"/>
 </g>
-<!-- app/pdb -->
-<g id="node20" class="node"><title>app/pdb</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="359" cy="-1170" rx="48.1403" ry="18"/>
-<text text-anchor="middle" x="359" y="-1165.9" style="font-family:Times New Roman;font-size:14.00;">app/pdb</text>
-</g>
-<!-- app/file&#45;&gt;app/pdb -->
-<g id="edge18" class="edge"><title>app/file&#45;&gt;app/pdb</title>
-<path style="fill:none;stroke:black;" d="M359,-1224C359,-1216 359,-1207 359,-1198"/>
-<polygon style="fill:black;stroke:black;" points="362.5,-1198 359,-1188 355.5,-1198 362.5,-1198"/>
-</g>
-<!-- app/paint -->
-<g id="node25" class="node"><title>app/paint</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="359" cy="-1098" rx="55.7874" ry="18"/>
-<text text-anchor="middle" x="359" y="-1093.9" style="font-family:Times New Roman;font-size:14.00;">app/paint</text>
-</g>
-<!-- app/pdb&#45;&gt;app/paint -->
-<g id="edge22" class="edge"><title>app/pdb&#45;&gt;app/paint</title>
-<path style="fill:none;stroke:black;" d="M359,-1152C359,-1144 359,-1135 359,-1126"/>
-<polygon style="fill:black;stroke:black;" points="362.5,-1126 359,-1116 355.5,-1126 362.5,-1126"/>
+<!-- libgimpmodule -->
+<g id="node23" class="node"><title>libgimpmodule</title>
+<ellipse fill="#ff7256" stroke="black" cx="413" cy="-537" rx="70.9184" ry="19.0919"/>
+<text text-anchor="middle" x="413" y="-533.9" font-family="Times Roman,serif" font-size="14.00">libgimpmodule</text>
 </g>
-<!-- GTK+ -->
-<g id="node23" class="node"><title>GTK+</title>
-<ellipse style="fill:lightblue;stroke:black;" cx="241" cy="-306" rx="39.1069" ry="18"/>
-<text text-anchor="middle" x="241" y="-301.9" style="font-family:Times New Roman;font-size:14.00;">GTK+</text>
+<!-- app/pdb&#45;&gt;libgimpmodule -->
+<g id="edge20" class="edge"><title>app/pdb&#45;&gt;libgimpmodule</title>
+<path fill="none" stroke="black" d="M263.528,-598.11C291.34,-586.739 332.313,-569.988 364.331,-556.898"/>
+<polygon fill="black" stroke="black" points="366.024,-559.987 373.955,-552.963 363.375,-553.508 366.024,-559.987"/>
 </g>
-<!-- GEGL -->
-<g id="node24" class="node"><title>GEGL</title>
-<ellipse style="fill:lightblue;stroke:black;" cx="145" cy="-306" rx="38.9134" ry="18"/>
-<text text-anchor="middle" x="145" y="-301.9" style="font-family:Times New Roman;font-size:14.00;">GEGL</text>
+<!-- app/gegl&#45;&gt;app/core -->
+<g id="edge22" class="edge"><title>app/gegl&#45;&gt;app/core</title>
+<path fill="none" stroke="black" d="M341.982,-629.992C342.709,-637.839 342.92,-647.115 342.615,-655.792"/>
+<polygon fill="black" stroke="black" points="339.111,-655.746 341.988,-665.943 346.098,-656.178 339.111,-655.746"/>
 </g>
-<!-- app/paint&#45;funcs -->
-<g id="node38" class="node"><title>app/paint&#45;funcs</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="359" cy="-1026" rx="84.7756" ry="18"/>
-<text text-anchor="middle" x="359" y="-1021.9" style="font-family:Times New Roman;font-size:14.00;">app/paint&#45;funcs</text>
+<!-- app/text -->
+<g id="node26" class="node"><title>app/text</title>
+<ellipse fill="lawngreen" stroke="black" cx="282" cy="-537" rx="41.9273" ry="19.0919"/>
+<text text-anchor="middle" x="282" y="-533.9" font-family="Times Roman,serif" font-size="14.00">app/text</text>
 </g>
-<!-- app/paint&#45;&gt;app/paint&#45;funcs -->
-<g id="edge34" class="edge"><title>app/paint&#45;&gt;app/paint&#45;funcs</title>
-<path style="fill:none;stroke:black;" d="M359,-1080C359,-1072 359,-1063 359,-1054"/>
-<polygon style="fill:black;stroke:black;" points="362.5,-1054 359,-1044 355.5,-1054 362.5,-1054"/>
+<!-- app/xcf&#45;&gt;app/text -->
+<g id="edge24" class="edge"><title>app/xcf&#45;&gt;app/text</title>
+<path fill="none" stroke="black" d="M409.387,-597.427C384.444,-585.595 348.056,-568.334 320.55,-555.287"/>
+<polygon fill="black" stroke="black" points="321.76,-551.987 311.225,-550.863 318.76,-558.311 321.76,-551.987"/>
 </g>
-<!-- GLib -->
-<g id="node27" class="node"><title>GLib</title>
-<ellipse style="fill:lightblue;stroke:black;" cx="472" cy="-18" rx="32.8565" ry="18"/>
-<text text-anchor="middle" x="472" y="-13.9" style="font-family:Times New Roman;font-size:14.00;">GLib</text>
+<!-- app/file&#45;&gt;app/plug&#45;in -->
+<g id="edge32" class="edge"><title>app/file&#45;&gt;app/plug&#45;in</title>
+<path fill="none" stroke="black" d="M80,-556.158C80,-584.37 80,-638.75 80,-685 80,-833 80,-833 80,-833 80,-875.187 84.7969,-886.276 99,-926 102.309,-935.256 106.934,-944.886 111.519,-953.453"/>
+<polygon fill="black" stroke="black" points="108.498,-955.223 116.415,-962.264 114.617,-951.823 108.498,-955.223"/>
 </g>
-<!-- libgimpcolor -->
-<g id="node29" class="node"><title>libgimpcolor</title>
-<ellipse style="fill:#ff7256;stroke:black;" cx="472" cy="-162" rx="68.0985" ry="18"/>
-<text text-anchor="middle" x="472" y="-157.9" style="font-family:Times New Roman;font-size:14.00;">libgimpcolor</text>
+<!-- libgimpthumb -->
+<g id="node34" class="node"><title>libgimpthumb</title>
+<ellipse fill="#ff7256" stroke="black" cx="67" cy="-389" rx="67.1751" ry="19.0919"/>
+<text text-anchor="middle" x="67" y="-385.9" font-family="Times Roman,serif" font-size="14.00">libgimpthumb</text>
 </g>
-<!-- libgimpbase&#45;&gt;libgimpcolor -->
-<g id="edge24" class="edge"><title>libgimpbase&#45;&gt;libgimpcolor</title>
-<path style="fill:none;stroke:black;" d="M472,-216C472,-208 472,-199 472,-190"/>
-<polygon style="fill:black;stroke:black;" points="475.5,-190 472,-180 468.5,-190 475.5,-190"/>
+<!-- app/file&#45;&gt;libgimpthumb -->
+<g id="edge34" class="edge"><title>app/file&#45;&gt;libgimpthumb</title>
+<path fill="none" stroke="black" d="M78.3271,-517.955C76.1162,-492.784 72.1982,-448.18 69.5998,-418.598"/>
+<polygon fill="black" stroke="black" points="73.0694,-418.098 68.7078,-408.442 66.0963,-418.71 73.0694,-418.098"/>
 </g>
-<!-- libgimpmath -->
-<g id="node31" class="node"><title>libgimpmath</title>
-<ellipse style="fill:#ff7256;stroke:black;" cx="472" cy="-90" rx="70.1831" ry="18"/>
-<text text-anchor="middle" x="472" y="-85.9" style="font-family:Times New Roman;font-size:14.00;">libgimpmath</text>
+<!-- libgimpbase -->
+<g id="node29" class="node"><title>libgimpbase</title>
+<ellipse fill="#ff7256" stroke="black" cx="418" cy="-241" rx="58.1882" ry="19.0919"/>
+<text text-anchor="middle" x="418" y="-237.9" font-family="Times Roman,serif" font-size="14.00">libgimpbase</text>
 </g>
-<!-- libgimpcolor&#45;&gt;libgimpmath -->
-<g id="edge26" class="edge"><title>libgimpcolor&#45;&gt;libgimpmath</title>
-<path style="fill:none;stroke:black;" d="M472,-144C472,-136 472,-127 472,-118"/>
-<polygon style="fill:black;stroke:black;" points="475.5,-118 472,-108 468.5,-118 475.5,-118"/>
+<!-- libgimpmodule&#45;&gt;libgimpbase -->
+<g id="edge36" class="edge"><title>libgimpmodule&#45;&gt;libgimpbase</title>
+<path fill="none" stroke="black" d="M413.328,-517.579C414.183,-466.967 416.483,-330.777 417.503,-270.452"/>
+<polygon fill="black" stroke="black" points="421.008,-270.166 417.677,-260.108 414.009,-270.048 421.008,-270.166"/>
 </g>
-<!-- libgimpmath&#45;&gt;GLib -->
-<g id="edge48" class="edge"><title>libgimpmath&#45;&gt;GLib</title>
-<path style="fill:none;stroke:black;" d="M472,-72C472,-64 472,-55 472,-46"/>
-<polygon style="fill:black;stroke:black;" points="475.5,-46 472,-36 468.5,-46 475.5,-46"/>
+<!-- app/vectors -->
+<g id="node56" class="node"><title>app/vectors</title>
+<ellipse fill="lawngreen" stroke="black" cx="334" cy="-463" rx="55.8614" ry="19.0919"/>
+<text text-anchor="middle" x="334" y="-459.9" font-family="Times Roman,serif" font-size="14.00">app/vectors</text>
 </g>
-<!-- libgimpthumb -->
-<g id="node55" class="node"><title>libgimpthumb</title>
-<ellipse style="fill:#ff7256;stroke:black;" cx="472" cy="-450" rx="75.9375" ry="18"/>
-<text text-anchor="middle" x="472" y="-445.9" style="font-family:Times New Roman;font-size:14.00;">libgimpthumb</text>
+<!-- app/text&#45;&gt;app/vectors -->
+<g id="edge76" class="edge"><title>app/text&#45;&gt;app/vectors</title>
+<path fill="none" stroke="black" d="M294.854,-518.708C300.933,-510.057 308.313,-499.554 315.02,-490.01"/>
+<polygon fill="black" stroke="black" points="318.047,-491.79 320.933,-481.596 312.32,-487.765 318.047,-491.79"/>
 </g>
-<!-- app/actions&#45;&gt;libgimpthumb -->
-<g id="edge54" class="edge"><title>app/actions&#45;&gt;libgimpthumb</title>
-<path style="fill:none;stroke:black;" d="M476,-504C475,-496 475,-487 474,-478"/>
-<polygon style="fill:black;stroke:black;" points="477.478,-477.602 473,-468 470.512,-478.299 477.478,-477.602"/>
+<!-- Pango -->
+<g id="node70" class="node"><title>Pango</title>
+<ellipse fill="lightblue" stroke="black" cx="225" cy="-463" rx="34.8574" ry="19.0919"/>
+<text text-anchor="middle" x="225" y="-459.9" font-family="Times Roman,serif" font-size="14.00">Pango</text>
 </g>
-<!-- app/menus -->
-<g id="node57" class="node"><title>app/menus</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="667" cy="-450" rx="63.2343" ry="18"/>
-<text text-anchor="middle" x="667" y="-445.9" style="font-family:Times New Roman;font-size:14.00;">app/menus</text>
+<!-- app/text&#45;&gt;Pango -->
+<g id="edge78" class="edge"><title>app/text&#45;&gt;Pango</title>
+<path fill="none" stroke="black" d="M267.91,-518.708C260.905,-509.613 252.323,-498.471 244.679,-488.549"/>
+<polygon fill="black" stroke="black" points="247.41,-486.359 238.535,-480.572 241.865,-490.63 247.41,-486.359"/>
 </g>
-<!-- app/actions&#45;&gt;app/menus -->
-<g id="edge56" class="edge"><title>app/actions&#45;&gt;app/menus</title>
-<path style="fill:none;stroke:black;" d="M515,-507C545,-496 587,-480 619,-468"/>
-<polygon style="fill:black;stroke:black;" points="621.015,-470.964 629,-464 618.415,-464.464 621.015,-470.964"/>
+<!-- libgimpbase&#45;&gt;libgimpcolor -->
+<g id="edge28" class="edge"><title>libgimpbase&#45;&gt;libgimpcolor</title>
+<path fill="none" stroke="black" d="M418,-221.943C418,-214.149 418,-204.954 418,-196.338"/>
+<polygon fill="black" stroke="black" points="421.5,-196.249 418,-186.249 414.5,-196.249 421.5,-196.249"/>
 </g>
-<!-- app/tools -->
-<g id="node59" class="node"><title>app/tools</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="216" cy="-450" rx="54.2008" ry="18"/>
-<text text-anchor="middle" x="216" y="-445.9" style="font-family:Times New Roman;font-size:14.00;">app/tools</text>
+<!-- libgimpconfig -->
+<g id="node31" class="node"><title>libgimpconfig</title>
+<ellipse fill="#ff7256" stroke="black" cx="512" cy="-315" rx="65.9683" ry="19.0919"/>
+<text text-anchor="middle" x="512" y="-311.9" font-family="Times Roman,serif" font-size="14.00">libgimpconfig</text>
 </g>
-<!-- app/actions&#45;&gt;app/tools -->
-<g id="edge58" class="edge"><title>app/actions&#45;&gt;app/tools</title>
-<path style="fill:none;stroke:black;" d="M431,-509C390,-498 331,-482 279,-468 275,-467 271,-466 267,-465"/>
-<polygon style="fill:black;stroke:black;" points="267.584,-461.521 257,-462 265.573,-468.226 267.584,-461.521"/>
+<!-- libgimpconfig&#45;&gt;libgimpbase -->
+<g id="edge30" class="edge"><title>libgimpconfig&#45;&gt;libgimpbase</title>
+<path fill="none" stroke="black" d="M489.245,-297.087C477.006,-287.452 461.747,-275.439 448.493,-265.005"/>
+<polygon fill="black" stroke="black" points="450.568,-262.184 440.545,-258.748 446.238,-267.684 450.568,-262.184"/>
 </g>
-<!-- app/display -->
-<g id="node36" class="node"><title>app/display</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="516" cy="-810" rx="64.1231" ry="18"/>
-<text text-anchor="middle" x="516" y="-805.9" style="font-family:Times New Roman;font-size:14.00;">app/display</text>
+<!-- libgimpthumb&#45;&gt;libgimpbase -->
+<g id="edge38" class="edge"><title>libgimpthumb&#45;&gt;libgimpbase</title>
+<path fill="none" stroke="black" d="M72.6671,-369.993C80.1177,-348.474 95.3615,-314.069 121,-296 157.281,-270.43 275.454,-254.627 351.346,-246.855"/>
+<polygon fill="black" stroke="black" points="352.16,-250.291 361.761,-245.811 351.462,-243.326 352.16,-250.291"/>
 </g>
-<!-- app/display&#45;&gt;app/widgets -->
-<g id="edge32" class="edge"><title>app/display&#45;&gt;app/widgets</title>
-<path style="fill:none;stroke:black;" d="M516,-792C516,-784 516,-775 516,-766"/>
-<polygon style="fill:black;stroke:black;" points="519.5,-766 516,-756 512.5,-766 519.5,-766"/>
+<!-- Cairo -->
+<g id="node38" class="node"><title>Cairo</title>
+<ellipse fill="lightblue" stroke="black" cx="241" cy="-389" rx="33.234" ry="19.0919"/>
+<text text-anchor="middle" x="241" y="-385.9" font-family="Times Roman,serif" font-size="14.00">Cairo</text>
 </g>
-<!-- app/base -->
-<g id="node40" class="node"><title>app/base</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="359" cy="-954" rx="53.0059" ry="18"/>
-<text text-anchor="middle" x="359" y="-949.9" style="font-family:Times New Roman;font-size:14.00;">app/base</text>
+<!-- app/actions -->
+<g id="node39" class="node"><title>app/actions</title>
+<ellipse fill="lawngreen" stroke="black" cx="799" cy="-315" rx="55.1543" ry="19.0919"/>
+<text text-anchor="middle" x="799" y="-311.9" font-family="Times Roman,serif" font-size="14.00">app/actions</text>
 </g>
-<!-- app/paint&#45;funcs&#45;&gt;app/base -->
-<g id="edge36" class="edge"><title>app/paint&#45;funcs&#45;&gt;app/base</title>
-<path style="fill:none;stroke:black;" d="M359,-1008C359,-1000 359,-991 359,-982"/>
-<polygon style="fill:black;stroke:black;" points="362.5,-982 359,-972 355.5,-982 362.5,-982"/>
+<!-- app/dialogs -->
+<g id="node40" class="node"><title>app/dialogs</title>
+<ellipse fill="lawngreen" stroke="black" cx="756" cy="-685" rx="55.8614" ry="19.0919"/>
+<text text-anchor="middle" x="756" y="-681.9" font-family="Times Roman,serif" font-size="14.00">app/dialogs</text>
 </g>
-<!-- app/config -->
-<g id="node42" class="node"><title>app/config</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="516" cy="-882" rx="59.7599" ry="18"/>
-<text text-anchor="middle" x="516" y="-877.9" style="font-family:Times New Roman;font-size:14.00;">app/config</text>
+<!-- app/actions&#45;&gt;app/dialogs -->
+<g id="edge40" class="edge"><title>app/actions&#45;&gt;app/dialogs</title>
+<path fill="none" stroke="black" d="M807.896,-334.161C819.955,-361.932 840,-415.275 840,-463 840,-537 840,-537 840,-537 840,-581.164 827.852,-592.208 805,-630 798.654,-640.495 790.185,-650.846 782.075,-659.688"/>
+<polygon fill="black" stroke="black" points="779.448,-657.372 775.103,-667.035 784.526,-662.19 779.448,-657.372"/>
 </g>
-<!-- app/base&#45;&gt;app/config -->
-<g id="edge38" class="edge"><title>app/base&#45;&gt;app/config</title>
-<path style="fill:none;stroke:black;" d="M391,-939C415,-928 448,-913 474,-901"/>
-<polygon style="fill:black;stroke:black;" points="475.283,-904.26 483,-897 472.44,-897.863 475.283,-904.26"/>
+<!-- app/gui -->
+<g id="node42" class="node"><title>app/gui</title>
+<ellipse fill="lawngreen" stroke="black" cx="756" cy="-611" rx="39.8075" ry="19.0919"/>
+<text text-anchor="middle" x="756" y="-607.9" font-family="Times Roman,serif" font-size="14.00">app/gui</text>
 </g>
-<!-- app/composite -->
-<g id="node44" class="node"><title>app/composite</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="359" cy="-882" rx="79.2166" ry="18"/>
-<text text-anchor="middle" x="359" y="-877.9" style="font-family:Times New Roman;font-size:14.00;">app/composite</text>
+<!-- app/dialogs&#45;&gt;app/gui -->
+<g id="edge42" class="edge"><title>app/dialogs&#45;&gt;app/gui</title>
+<path fill="none" stroke="black" d="M756,-665.943C756,-658.149 756,-648.954 756,-640.338"/>
+<polygon fill="black" stroke="black" points="759.5,-640.249 756,-630.249 752.5,-640.249 759.5,-640.249"/>
 </g>
-<!-- app/base&#45;&gt;app/composite -->
-<g id="edge40" class="edge"><title>app/base&#45;&gt;app/composite</title>
-<path style="fill:none;stroke:black;" d="M353,-936C352,-928 352,-919 352,-910"/>
-<polygon style="fill:black;stroke:black;" points="355.488,-910.299 353,-900 348.522,-909.602 355.488,-910.299"/>
+<!-- app/display -->
+<g id="node44" class="node"><title>app/display</title>
+<ellipse fill="lawngreen" stroke="black" cx="756" cy="-537" rx="55.8614" ry="19.0919"/>
+<text text-anchor="middle" x="756" y="-533.9" font-family="Times Roman,serif" font-size="14.00">app/display</text>
 </g>
-<!-- app/config&#45;&gt;app/display -->
-<g id="edge42" class="edge"><title>app/config&#45;&gt;app/display</title>
-<path style="fill:none;stroke:black;" d="M516,-864C516,-856 516,-847 516,-838"/>
-<polygon style="fill:black;stroke:black;" points="519.5,-838 516,-828 512.5,-838 519.5,-838"/>
+<!-- app/gui&#45;&gt;app/display -->
+<g id="edge44" class="edge"><title>app/gui&#45;&gt;app/display</title>
+<path fill="none" stroke="black" d="M756,-591.943C756,-584.149 756,-574.954 756,-566.338"/>
+<polygon fill="black" stroke="black" points="759.5,-566.249 756,-556.249 752.5,-566.249 759.5,-566.249"/>
 </g>
-<!-- app/composite&#45;&gt;app/base -->
-<g id="edge44" class="edge"><title>app/composite&#45;&gt;app/base</title>
-<path style="fill:none;stroke:black;" d="M365,-900C366,-908 366,-917 366,-926"/>
-<polygon style="fill:black;stroke:black;" points="362.512,-925.701 365,-936 369.478,-926.398 362.512,-925.701"/>
+<!-- app/widgets -->
+<g id="node50" class="node"><title>app/widgets</title>
+<ellipse fill="lawngreen" stroke="black" cx="754" cy="-463" rx="57.9828" ry="19.0919"/>
+<text text-anchor="middle" x="754" y="-459.9" font-family="Times Roman,serif" font-size="14.00">app/widgets</text>
 </g>
-<!-- libgimpconfig -->
-<g id="node48" class="node"><title>libgimpconfig</title>
-<ellipse style="fill:#ff7256;stroke:black;" cx="371" cy="-306" rx="72.9626" ry="18"/>
-<text text-anchor="middle" x="371" y="-301.9" style="font-family:Times New Roman;font-size:14.00;">libgimpconfig</text>
+<!-- app/display&#45;&gt;app/widgets -->
+<g id="edge50" class="edge"><title>app/display&#45;&gt;app/widgets</title>
+<path fill="none" stroke="black" d="M755.485,-517.943C755.274,-510.149 755.026,-500.954 754.793,-492.338"/>
+<polygon fill="black" stroke="black" points="758.289,-492.151 754.52,-482.249 751.292,-492.34 758.289,-492.151"/>
 </g>
-<!-- libgimpconfig&#45;&gt;libgimpbase -->
-<g id="edge46" class="edge"><title>libgimpconfig&#45;&gt;libgimpbase</title>
-<path style="fill:none;stroke:black;" d="M395,-289C408,-280 425,-268 440,-257"/>
-<polygon style="fill:black;stroke:black;" points="442.1,-259.8 448,-251 437.9,-254.2 442.1,-259.8"/>
+<!-- libgimpwidgets -->
+<g id="node46" class="node"><title>libgimpwidgets</title>
+<ellipse fill="#ff7256" stroke="black" cx="573" cy="-537" rx="70.9184" ry="19.0919"/>
+<text text-anchor="middle" x="573" y="-533.9" font-family="Times Roman,serif" font-size="14.00">libgimpwidgets</text>
 </g>
-<!-- app/text -->
-<g id="node51" class="node"><title>app/text</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="51" cy="-378" rx="50.9221" ry="18"/>
-<text text-anchor="middle" x="51" y="-373.9" style="font-family:Times New Roman;font-size:14.00;">app/text</text>
+<!-- libgimpwidgets&#45;&gt;libgimpconfig -->
+<g id="edge46" class="edge"><title>libgimpwidgets&#45;&gt;libgimpconfig</title>
+<path fill="none" stroke="black" d="M554.592,-518.249C545.949,-508.295 536.384,-495.374 531,-482 512.661,-436.447 510.223,-378.617 510.704,-344.337"/>
+<polygon fill="black" stroke="black" points="514.209,-344.16 510.947,-334.08 507.211,-343.994 514.209,-344.16"/>
 </g>
-<!-- app/text&#45;&gt;app/vectors -->
-<g id="edge50" class="edge"><title>app/text&#45;&gt;app/vectors</title>
-<path style="fill:none;stroke:black;" d="M56,-396C63,-423 75,-476 75,-522 75,-1386 75,-1386 75,-1386 75,-1428 95,-1474 109,-1503"/>
-<polygon style="fill:black;stroke:black;" points="106.084,-1504.96 114,-1512 112.203,-1501.56 106.084,-1504.96"/>
+<!-- GTK+ -->
+<g id="node48" class="node"><title>GTK+</title>
+<ellipse fill="lightblue" stroke="black" cx="577" cy="-463" rx="36.977" ry="19.0919"/>
+<text text-anchor="middle" x="577" y="-459.9" font-family="Times Roman,serif" font-size="14.00">GTK+</text>
 </g>
-<!-- Pango -->
-<g id="node53" class="node"><title>Pango</title>
-<ellipse style="fill:lightblue;stroke:black;" cx="48" cy="-306" rx="39.8056" ry="18"/>
-<text text-anchor="middle" x="48" y="-301.9" style="font-family:Times New Roman;font-size:14.00;">Pango</text>
+<!-- libgimpwidgets&#45;&gt;GTK+ -->
+<g id="edge48" class="edge"><title>libgimpwidgets&#45;&gt;GTK+</title>
+<path fill="none" stroke="black" d="M574.03,-517.943C574.451,-510.149 574.948,-500.954 575.414,-492.338"/>
+<polygon fill="black" stroke="black" points="578.915,-492.424 575.959,-482.249 571.925,-492.046 578.915,-492.424"/>
 </g>
-<!-- app/text&#45;&gt;Pango -->
-<g id="edge52" class="edge"><title>app/text&#45;&gt;Pango</title>
-<path style="fill:none;stroke:black;" d="M50,-360C49,-352 49,-343 49,-334"/>
-<polygon style="fill:black;stroke:black;" points="52.5001,-334 49,-324 45.5001,-334 52.5001,-334"/>
+<!-- app/menus -->
+<g id="node52" class="node"><title>app/menus</title>
+<ellipse fill="lawngreen" stroke="black" cx="756" cy="-389" rx="53.2379" ry="19.0919"/>
+<text text-anchor="middle" x="756" y="-385.9" font-family="Times Roman,serif" font-size="14.00">app/menus</text>
 </g>
-<!-- libgimpthumb&#45;&gt;libgimpbase -->
-<g id="edge60" class="edge"><title>libgimpthumb&#45;&gt;libgimpbase</title>
-<path style="fill:none;stroke:black;" d="M472,-432C472,-394 472,-307 472,-262"/>
-<polygon style="fill:black;stroke:black;" points="475.5,-262 472,-252 468.5,-262 475.5,-262"/>
+<!-- app/widgets&#45;&gt;app/menus -->
+<g id="edge52" class="edge"><title>app/widgets&#45;&gt;app/menus</title>
+<path fill="none" stroke="black" d="M754.515,-443.943C754.726,-436.149 754.974,-426.954 755.207,-418.338"/>
+<polygon fill="black" stroke="black" points="758.708,-418.34 755.48,-408.249 751.711,-418.151 758.708,-418.34"/>
 </g>
-<!-- app/menus&#45;&gt;app/plug&#45;in -->
-<g id="edge62" class="edge"><title>app/menus&#45;&gt;app/plug&#45;in</title>
-<path style="fill:none;stroke:black;" d="M661,-468C653,-495 640,-548 640,-594 640,-1170 640,-1170 640,-1170 640,-1263 514,-1296 431,-1308"/>
-<polygon style="fill:black;stroke:black;" points="430.602,-1304.52 421,-1309 431.299,-1311.49 430.602,-1304.52"/>
+<!-- app/tools -->
+<g id="node54" class="node"><title>app/tools</title>
+<ellipse fill="lawngreen" stroke="black" cx="641" cy="-759" rx="46.1672" ry="19.0919"/>
+<text text-anchor="middle" x="641" y="-755.9" font-family="Times Roman,serif" font-size="14.00">app/tools</text>
+</g>
+<!-- app/widgets&#45;&gt;app/tools -->
+<g id="edge54" class="edge"><title>app/widgets&#45;&gt;app/tools</title>
+<path fill="none" stroke="black" d="M727.313,-480.099C714.423,-489.715 699.864,-502.832 691,-518 651.098,-586.285 642.758,-681.803 641.199,-729.484"/>
+<polygon fill="black" stroke="black" points="637.694,-729.637 640.946,-739.72 644.692,-729.81 637.694,-729.637"/>
+</g>
+<!-- app/menus&#45;&gt;app/actions -->
+<g id="edge66" class="edge"><title>app/menus&#45;&gt;app/actions</title>
+<path fill="none" stroke="black" d="M766.851,-370.327C771.74,-361.913 777.611,-351.809 782.991,-342.55"/>
+<polygon fill="black" stroke="black" points="786.155,-344.072 788.153,-333.667 780.102,-340.555 786.155,-344.072"/>
+</g>
+<!-- app/tools&#45;&gt;app/core -->
+<g id="edge68" class="edge"><title>app/tools&#45;&gt;app/core</title>
+<path fill="none" stroke="black" d="M601.127,-749.326C545.412,-735.808 444.384,-711.296 384.418,-696.747"/>
+<polygon fill="black" stroke="black" points="384.983,-693.283 374.44,-694.326 383.333,-700.086 384.983,-693.283"/>
+</g>
+<!-- app/tools&#45;&gt;app/dialogs -->
+<g id="edge70" class="edge"><title>app/tools&#45;&gt;app/dialogs</title>
+<path fill="none" stroke="black" d="M665.953,-742.943C682.076,-732.569 703.289,-718.918 721.076,-707.473"/>
+<polygon fill="black" stroke="black" points="722.979,-710.41 729.495,-702.055 719.191,-704.524 722.979,-710.41"/>
 </g>
-<!-- app/tools&#45;&gt;app/text -->
-<g id="edge64" class="edge"><title>app/tools&#45;&gt;app/text</title>
-<path style="fill:none;stroke:black;" d="M183,-436C157,-424 120,-409 92,-396"/>
-<polygon style="fill:black;stroke:black;" points="93.5596,-392.863 83,-392 90.7166,-399.26 93.5596,-392.863"/>
+<!-- app/tools&#45;&gt;libgimpwidgets -->
+<g id="edge72" class="edge"><title>app/tools&#45;&gt;libgimpwidgets</title>
+<path fill="none" stroke="black" d="M638.418,-739.973C633.758,-708.448 622.562,-643.73 603,-592 599.525,-582.81 594.767,-573.258 590.065,-564.744"/>
+<polygon fill="black" stroke="black" points="593.052,-562.918 585.047,-555.978 586.977,-566.395 593.052,-562.918"/>
 </g>
-<!-- app/gegl -->
-<g id="node64" class="node"><title>app/gegl</title>
-<ellipse style="fill:lawngreen;stroke:black;" cx="171" cy="-378" rx="50.9221" ry="18"/>
-<text text-anchor="middle" x="171" y="-373.9" style="font-family:Times New Roman;font-size:14.00;">app/gegl</text>
+<!-- app/vectors&#45;&gt;Cairo -->
+<g id="edge56" class="edge"><title>app/vectors&#45;&gt;Cairo</title>
+<path fill="none" stroke="black" d="M311.96,-445.463C298.849,-435.031 282.111,-421.712 268.184,-410.63"/>
+<polygon fill="black" stroke="black" points="270.362,-407.891 260.358,-404.403 266.004,-413.368 270.362,-407.891"/>
 </g>
-<!-- app/tools&#45;&gt;app/gegl -->
-<g id="edge66" class="edge"><title>app/tools&#45;&gt;app/gegl</title>
-<path style="fill:none;stroke:black;" d="M205,-432C200,-424 193,-414 187,-404"/>
-<polygon style="fill:black;stroke:black;" points="190.268,-402.625 182,-396 184.332,-406.335 190.268,-402.625"/>
+<!-- app/paint -->
+<g id="node58" class="node"><title>app/paint</title>
+<ellipse fill="lawngreen" stroke="black" cx="339" cy="-389" rx="46.8775" ry="19.0919"/>
+<text text-anchor="middle" x="339" y="-385.9" font-family="Times Roman,serif" font-size="14.00">app/paint</text>
 </g>
-<!-- libgimpwidgets -->
-<g id="node66" class="node"><title>libgimpwidgets</title>
-<ellipse style="fill:#ff7256;stroke:black;" cx="329" cy="-378" rx="82.1898" ry="18"/>
-<text text-anchor="middle" x="329" y="-373.9" style="font-family:Times New Roman;font-size:14.00;">libgimpwidgets</text>
+<!-- app/vectors&#45;&gt;app/paint -->
+<g id="edge58" class="edge"><title>app/vectors&#45;&gt;app/paint</title>
+<path fill="none" stroke="black" d="M335.288,-443.943C335.814,-436.149 336.436,-426.954 337.018,-418.338"/>
+<polygon fill="black" stroke="black" points="340.517,-418.463 337.699,-408.249 333.533,-417.991 340.517,-418.463"/>
 </g>
-<!-- app/tools&#45;&gt;libgimpwidgets -->
-<g id="edge68" class="edge"><title>app/tools&#45;&gt;libgimpwidgets</title>
-<path style="fill:none;stroke:black;" d="M241,-434C256,-425 276,-412 293,-401"/>
-<polygon style="fill:black;stroke:black;" points="295.621,-403.459 302,-395 291.738,-397.635 295.621,-403.459"/>
+<!-- app/paint&#45;&gt;GEGL -->
+<g id="edge60" class="edge"><title>app/paint&#45;&gt;GEGL</title>
+<path fill="none" stroke="black" d="M339,-369.943C339,-362.149 339,-352.954 339,-344.338"/>
+<polygon fill="black" stroke="black" points="342.5,-344.249 339,-334.249 335.5,-344.249 342.5,-344.249"/>
 </g>
-<!-- app/gegl&#45;&gt;app/core -->
-<g id="edge70" class="edge"><title>app/gegl&#45;&gt;app/core</title>
-<path style="fill:none;stroke:black;" d="M163,-396C152,-423 134,-475 134,-522 134,-1314 134,-1314 134,-1314 134,-1356 151,-1402 163,-1431"/>
-<polygon style="fill:black;stroke:black;" points="159.74,-1432.28 167,-1440 166.137,-1429.44 159.74,-1432.28"/>
+<!-- app/paint&#45;&gt;libgimpconfig -->
+<g id="edge62" class="edge"><title>app/paint&#45;&gt;libgimpconfig</title>
+<path fill="none" stroke="black" d="M371.54,-375.081C398.124,-363.71 436.03,-347.496 465.765,-334.777"/>
+<polygon fill="black" stroke="black" points="467.29,-337.931 475.108,-330.781 464.537,-331.495 467.29,-337.931"/>
 </g>
-<!-- app/gegl&#45;&gt;GEGL -->
-<g id="edge72" class="edge"><title>app/gegl&#45;&gt;GEGL</title>
-<path style="fill:none;stroke:black;" d="M164,-360C161,-352 158,-343 155,-334"/>
-<polygon style="fill:black;stroke:black;" points="158.226,-332.573 152,-324 151.521,-334.584 158.226,-332.573"/>
+<!-- app/paint&#45;funcs -->
+<g id="node62" class="node"><title>app/paint&#45;funcs</title>
+<ellipse fill="lawngreen" stroke="black" cx="201" cy="-315" rx="70.9184" ry="19.0919"/>
+<text text-anchor="middle" x="201" y="-311.9" font-family="Times Roman,serif" font-size="14.00">app/paint&#45;funcs</text>
 </g>
-<!-- libgimpwidgets&#45;&gt;GTK+ -->
-<g id="edge74" class="edge"><title>libgimpwidgets&#45;&gt;GTK+</title>
-<path style="fill:none;stroke:black;" d="M308,-361C296,-351 281,-338 268,-328"/>
-<polygon style="fill:black;stroke:black;" points="270.1,-325.2 260,-322 265.9,-330.8 270.1,-325.2"/>
+<!-- app/paint&#45;&gt;app/paint&#45;funcs -->
+<g id="edge64" class="edge"><title>app/paint&#45;&gt;app/paint&#45;funcs</title>
+<path fill="none" stroke="black" d="M310.406,-373.667C290.562,-363.026 263.832,-348.692 241.761,-336.857"/>
+<polygon fill="black" stroke="black" points="243.401,-333.765 232.934,-332.124 240.092,-339.934 243.401,-333.765"/>
 </g>
-<!-- libgimpwidgets&#45;&gt;libgimpconfig -->
-<g id="edge76" class="edge"><title>libgimpwidgets&#45;&gt;libgimpconfig</title>
-<path style="fill:none;stroke:black;" d="M340,-360C344,-352 350,-342 356,-333"/>
-<polygon style="fill:black;stroke:black;" points="359.203,-334.441 361,-324 353.084,-331.042 359.203,-334.441"/>
+<!-- app/paint&#45;funcs&#45;&gt;app/composite -->
+<g id="edge74" class="edge"><title>app/paint&#45;funcs&#45;&gt;app/composite</title>
+<path fill="none" stroke="black" d="M192.538,-334.205C181.067,-362.03 162,-415.437 162,-463 162,-759 162,-759 162,-759 162,-800.375 167.49,-847.969 171.594,-877.768"/>
+<polygon fill="black" stroke="black" points="168.161,-878.487 173.031,-887.896 175.092,-877.504 168.161,-878.487"/>
 </g>
 <!-- libgimp -->
 <g id="node72" class="node"><title>libgimp</title>
-<ellipse style="fill:#ff7256;stroke:black;" cx="333" cy="-450" rx="45.1673" ry="18"/>
-<text text-anchor="middle" x="333" y="-445.9" style="font-family:Times New Roman;font-size:14.00;">libgimp</text>
+<ellipse fill="#ff7256" stroke="black" cx="553" cy="-611" rx="41.2167" ry="19.0919"/>
+<text text-anchor="middle" x="553" y="-607.9" font-family="Times Roman,serif" font-size="14.00">libgimp</text>
 </g>
 <!-- libgimp&#45;&gt;libgimpmodule -->
-<g id="edge78" class="edge"><title>libgimp&#45;&gt;libgimpmodule</title>
-<path style="fill:none;stroke:black;" d="M367,-438C374,-436 381,-434 387,-432 430,-418 479,-404 517,-395"/>
-<polygon style="fill:black;stroke:black;" points="518.427,-398.226 527,-392 516.416,-391.521 518.427,-398.226"/>
+<g id="edge80" class="edge"><title>libgimp&#45;&gt;libgimpmodule</title>
+<path fill="none" stroke="black" d="M525.674,-596.556C505.302,-585.788 477.131,-570.898 454.054,-558.7"/>
+<polygon fill="black" stroke="black" points="455.641,-555.58 445.164,-554.001 452.369,-561.768 455.641,-555.58"/>
 </g>
 <!-- libgimp&#45;&gt;libgimpwidgets -->
-<g id="edge80" class="edge"><title>libgimp&#45;&gt;libgimpwidgets</title>
-<path style="fill:none;stroke:black;" d="M332,-432C331,-424 331,-415 331,-406"/>
-<polygon style="fill:black;stroke:black;" points="334.478,-405.602 330,-396 327.512,-406.299 334.478,-405.602"/>
+<g id="edge82" class="edge"><title>libgimp&#45;&gt;libgimpwidgets</title>
+<path fill="none" stroke="black" d="M558.15,-591.943C560.297,-584.002 562.836,-574.606 565.203,-565.851"/>
+<polygon fill="black" stroke="black" points="568.637,-566.559 567.867,-555.992 561.879,-564.733 568.637,-566.559"/>
+</g>
+<!-- app/tests -->
+<g id="node75" class="node"><title>app/tests</title>
+<ellipse fill="lawngreen" stroke="black" cx="756" cy="-759" rx="44.7575" ry="19.0919"/>
+<text text-anchor="middle" x="756" y="-755.9" font-family="Times Roman,serif" font-size="14.00">app/tests</text>
+</g>
+<!-- app/tests&#45;&gt;app/dialogs -->
+<g id="edge84" class="edge"><title>app/tests&#45;&gt;app/dialogs</title>
+<path fill="none" stroke="black" d="M756,-739.943C756,-732.149 756,-722.954 756,-714.338"/>
+<polygon fill="black" stroke="black" points="759.5,-714.249 756,-704.249 752.5,-714.249 759.5,-714.249"/>
 </g>
 </g>
 </svg>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 17a3f01..9e856a3 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -81,7 +81,9 @@ app/actions/windows-actions.c
 app/base/base-enums.c
 app/base/tile-swap.c
 
+app/config/config-enums.c
 app/config/gimpconfig-file.c
+app/config/gimpdisplayoptions.c
 app/config/gimprc.c
 app/config/gimprc-blurbs.h
 app/config/gimprc-deserialize.c
@@ -204,11 +206,9 @@ app/dialogs/vectors-export-dialog.c
 app/dialogs/vectors-import-dialog.c
 app/dialogs/vectors-options-dialog.c
 
-app/display/display-enums.c
 app/display/gimpcursorview.c
 app/display/gimpdisplay.c
 app/display/gimpdisplay-handlers.c
-app/display/gimpdisplayoptions.c
 app/display/gimpdisplayshell.c
 app/display/gimpdisplayshell-callbacks.c
 app/display/gimpdisplayshell-close.c



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]