diff --git a/Implementation/GUI/.qmake.stash b/Implementation/GUI/.qmake.stash
new file mode 100644
index 0000000000000000000000000000000000000000..d389915acb98d261840ba745205a3ef0a236c55b
--- /dev/null
+++ b/Implementation/GUI/.qmake.stash
@@ -0,0 +1,21 @@
+QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
+QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 9
+QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 2
+QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
+QMAKE_CXX.COMPILER_MACROS = \
+    QT_COMPILER_STDCXX \
+    QMAKE_GCC_MAJOR_VERSION \
+    QMAKE_GCC_MINOR_VERSION \
+    QMAKE_GCC_PATCH_VERSION
+QMAKE_CXX.INCDIRS = \
+    /usr/include/c++/9.2.0 \
+    /usr/include/c++/9.2.0/x86_64-pc-linux-gnu \
+    /usr/include/c++/9.2.0/backward \
+    /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include \
+    /usr/local/include \
+    /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed \
+    /usr/include
+QMAKE_CXX.LIBDIRS = \
+    /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0 \
+    /usr/lib \
+    /lib
diff --git a/Implementation/GUI/ColorDock.o b/Implementation/GUI/ColorDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..ab40f11eb6c5e6e8f55a63ccfac3825fcc04cf17
Binary files /dev/null and b/Implementation/GUI/ColorDock.o differ
diff --git a/Implementation/GUI/DrawDock.o b/Implementation/GUI/DrawDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..4f7f8529a2ab0038b53c280ea0064548720ba9ad
Binary files /dev/null and b/Implementation/GUI/DrawDock.o differ
diff --git a/Implementation/GUI/InteractionTool.o b/Implementation/GUI/InteractionTool.o
new file mode 100644
index 0000000000000000000000000000000000000000..9aa47848e458a2bf8e83e9f11bc7a000a3894e02
Binary files /dev/null and b/Implementation/GUI/InteractionTool.o differ
diff --git a/Implementation/GUI/LayerDock.o b/Implementation/GUI/LayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..0b18837570b7c18b8767037bc93c13f9c471d5f9
Binary files /dev/null and b/Implementation/GUI/LayerDock.o differ
diff --git a/Implementation/GUI/Makefile b/Implementation/GUI/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..456563b6080eb18ed21f39c54072d7a5c1073dfe
--- /dev/null
+++ b/Implementation/GUI/Makefile
@@ -0,0 +1,794 @@
+#############################################################################
+# Makefile for building: imageviewer
+# Generated by qmake (3.1) (Qt 5.13.2)
+# Project:  imageviewer.pro
+# Template: app
+# Command: /usr/bin/qmake -o Makefile imageviewer.pro
+#############################################################################
+
+MAKEFILE      = Makefile
+
+EQ            = =
+
+####### Compiler, tools and options
+
+CC            = gcc
+CXX           = g++
+DEFINES       = -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
+CFLAGS        = -pipe -O2 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -Wall -W -D_REENTRANT -fPIC $(DEFINES)
+CXXFLAGS      = -pipe -O2 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -Wall -W -D_REENTRANT -fPIC $(DEFINES)
+INCPATH       = -I. -isystem /usr/include/qt -isystem /usr/include/qt/QtPrintSupport -isystem /usr/include/qt/QtWidgets -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++
+QMAKE         = /usr/bin/qmake
+DEL_FILE      = rm -f
+CHK_DIR_EXISTS= test -d
+MKDIR         = mkdir -p
+COPY          = cp -f
+COPY_FILE     = cp -f
+COPY_DIR      = cp -f -R
+INSTALL_FILE  = install -m 644 -p
+INSTALL_PROGRAM = install -m 755 -p
+INSTALL_DIR   = cp -f -R
+QINSTALL      = /usr/bin/qmake -install qinstall
+QINSTALL_PROGRAM = /usr/bin/qmake -install qinstall -exe
+DEL_FILE      = rm -f
+SYMLINK       = ln -f -s
+DEL_DIR       = rmdir
+MOVE          = mv -f
+TAR           = tar -cf
+COMPRESS      = gzip -9f
+DISTNAME      = imageviewer1.0.0
+DISTDIR = /home/pascal/git/software-engineer/Implementation/GUI/.tmp/imageviewer1.0.0
+LINK          = g++
+LFLAGS        = -Wl,-O1 -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
+LIBS          = $(SUBLIBS) /usr/lib/libQt5PrintSupport.so /usr/lib/libQt5Widgets.so /usr/lib/libQt5Gui.so /usr/lib/libQt5Core.so /usr/lib/libGL.so -lpthread   
+AR            = ar cqs
+RANLIB        = 
+SED           = sed
+STRIP         = strip
+
+####### Output directory
+
+OBJECTS_DIR   = ./
+
+####### Files
+
+SOURCES       = imageviewer.cpp \
+		ColorDock.cpp \
+		DrawDock.cpp \
+		InteractionTool.cpp \
+		LayerDock.cpp \
+		ManipulationTool.cpp \
+		NewLayerDock.cpp \
+		Picture.cpp \
+		TranslationDock.cpp \
+		main.cpp \
+		tools/drawTool.cpp \
+		tools/floydSteinberg.cpp \
+		tools/merge.cpp \
+		tools/movetool.cpp \
+		tools/newLayer.cpp \
+		tools/polygon.cpp \
+		tools/translationTool.cpp moc_imageviewer.cpp \
+		moc_ColorDock.cpp \
+		moc_DrawDock.cpp \
+		moc_LayerDock.cpp \
+		moc_NewLayerDock.cpp \
+		moc_TranslationDock.cpp
+OBJECTS       = imageviewer.o \
+		ColorDock.o \
+		DrawDock.o \
+		InteractionTool.o \
+		LayerDock.o \
+		ManipulationTool.o \
+		NewLayerDock.o \
+		Picture.o \
+		TranslationDock.o \
+		main.o \
+		drawTool.o \
+		floydSteinberg.o \
+		merge.o \
+		movetool.o \
+		newLayer.o \
+		polygon.o \
+		translationTool.o \
+		moc_imageviewer.o \
+		moc_ColorDock.o \
+		moc_DrawDock.o \
+		moc_LayerDock.o \
+		moc_NewLayerDock.o \
+		moc_TranslationDock.o
+DIST          = /usr/lib/qt/mkspecs/features/spec_pre.prf \
+		/usr/lib/qt/mkspecs/common/unix.conf \
+		/usr/lib/qt/mkspecs/common/linux.conf \
+		/usr/lib/qt/mkspecs/common/sanitize.conf \
+		/usr/lib/qt/mkspecs/common/gcc-base.conf \
+		/usr/lib/qt/mkspecs/common/gcc-base-unix.conf \
+		/usr/lib/qt/mkspecs/common/g++-base.conf \
+		/usr/lib/qt/mkspecs/common/g++-unix.conf \
+		/usr/lib/qt/mkspecs/qconfig.pri \
+		/usr/lib/qt/mkspecs/modules/qt_KSyntaxHighlighting.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_accessibility_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_core.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_designer.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_edid_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_egl_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_fb_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_glx_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_gui.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_help.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_input_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_kms_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_location.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_network.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_packetprotocol_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qml.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qmldebug_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quick.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickshapes_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_script.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_service_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_sql.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_svg.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_theme_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_vulkan_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webengine.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webengine_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_xml.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri \
+		/usr/lib/qt/mkspecs/features/qt_functions.prf \
+		/usr/lib/qt/mkspecs/features/qt_config.prf \
+		/usr/lib/qt/mkspecs/linux-g++/qmake.conf \
+		/usr/lib/qt/mkspecs/features/spec_post.prf \
+		/usr/lib/qt/mkspecs/features/exclusive_builds.prf \
+		/usr/lib/qt/mkspecs/features/toolchain.prf \
+		/usr/lib/qt/mkspecs/features/default_pre.prf \
+		/usr/lib/qt/mkspecs/features/resolve_config.prf \
+		/usr/lib/qt/mkspecs/features/default_post.prf \
+		/usr/lib/qt/mkspecs/features/warn_on.prf \
+		/usr/lib/qt/mkspecs/features/qt.prf \
+		/usr/lib/qt/mkspecs/features/resources.prf \
+		/usr/lib/qt/mkspecs/features/moc.prf \
+		/usr/lib/qt/mkspecs/features/unix/opengl.prf \
+		/usr/lib/qt/mkspecs/features/uic.prf \
+		/usr/lib/qt/mkspecs/features/unix/thread.prf \
+		/usr/lib/qt/mkspecs/features/qmake_use.prf \
+		/usr/lib/qt/mkspecs/features/file_copies.prf \
+		/usr/lib/qt/mkspecs/features/testcase_targets.prf \
+		/usr/lib/qt/mkspecs/features/exceptions.prf \
+		/usr/lib/qt/mkspecs/features/yacc.prf \
+		/usr/lib/qt/mkspecs/features/lex.prf \
+		imageviewer.pro imageviewer.h \
+		ColorDock.h \
+		DrawDock.h \
+		InteractionTool.h \
+		LayerDock.h \
+		ManipulationTool.h \
+		NewLayerDock.h \
+		Picture.h \
+		Tool.h \
+		TranslationDock.h \
+		tools/drawTool.h \
+		tools/floydSteinberg.h \
+		tools/merge.h \
+		tools/movetool.h \
+		tools/newLayer.h \
+		tools/polygon.h \
+		tools/translationTool.h imageviewer.cpp \
+		ColorDock.cpp \
+		DrawDock.cpp \
+		InteractionTool.cpp \
+		LayerDock.cpp \
+		ManipulationTool.cpp \
+		NewLayerDock.cpp \
+		Picture.cpp \
+		TranslationDock.cpp \
+		main.cpp \
+		tools/drawTool.cpp \
+		tools/floydSteinberg.cpp \
+		tools/merge.cpp \
+		tools/movetool.cpp \
+		tools/newLayer.cpp \
+		tools/polygon.cpp \
+		tools/translationTool.cpp
+QMAKE_TARGET  = imageviewer
+DESTDIR       = 
+TARGET        = imageviewer
+
+
+first: all
+####### Build rules
+
+imageviewer:  $(OBJECTS)  
+	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
+
+Makefile: imageviewer.pro /usr/lib/qt/mkspecs/linux-g++/qmake.conf /usr/lib/qt/mkspecs/features/spec_pre.prf \
+		/usr/lib/qt/mkspecs/common/unix.conf \
+		/usr/lib/qt/mkspecs/common/linux.conf \
+		/usr/lib/qt/mkspecs/common/sanitize.conf \
+		/usr/lib/qt/mkspecs/common/gcc-base.conf \
+		/usr/lib/qt/mkspecs/common/gcc-base-unix.conf \
+		/usr/lib/qt/mkspecs/common/g++-base.conf \
+		/usr/lib/qt/mkspecs/common/g++-unix.conf \
+		/usr/lib/qt/mkspecs/qconfig.pri \
+		/usr/lib/qt/mkspecs/modules/qt_KSyntaxHighlighting.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_accessibility_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_core.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_designer.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_edid_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_egl_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_fb_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_glx_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_gui.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_help.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_input_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_kms_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_location.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_network.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_packetprotocol_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qml.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qmldebug_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quick.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickshapes_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_script.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_service_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_sql.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_svg.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_theme_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_vulkan_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webengine.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webengine_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_xml.pri \
+		/usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri \
+		/usr/lib/qt/mkspecs/features/qt_functions.prf \
+		/usr/lib/qt/mkspecs/features/qt_config.prf \
+		/usr/lib/qt/mkspecs/linux-g++/qmake.conf \
+		/usr/lib/qt/mkspecs/features/spec_post.prf \
+		/usr/lib/qt/mkspecs/features/exclusive_builds.prf \
+		/usr/lib/qt/mkspecs/features/toolchain.prf \
+		/usr/lib/qt/mkspecs/features/default_pre.prf \
+		/usr/lib/qt/mkspecs/features/resolve_config.prf \
+		/usr/lib/qt/mkspecs/features/default_post.prf \
+		/usr/lib/qt/mkspecs/features/warn_on.prf \
+		/usr/lib/qt/mkspecs/features/qt.prf \
+		/usr/lib/qt/mkspecs/features/resources.prf \
+		/usr/lib/qt/mkspecs/features/moc.prf \
+		/usr/lib/qt/mkspecs/features/unix/opengl.prf \
+		/usr/lib/qt/mkspecs/features/uic.prf \
+		/usr/lib/qt/mkspecs/features/unix/thread.prf \
+		/usr/lib/qt/mkspecs/features/qmake_use.prf \
+		/usr/lib/qt/mkspecs/features/file_copies.prf \
+		/usr/lib/qt/mkspecs/features/testcase_targets.prf \
+		/usr/lib/qt/mkspecs/features/exceptions.prf \
+		/usr/lib/qt/mkspecs/features/yacc.prf \
+		/usr/lib/qt/mkspecs/features/lex.prf \
+		imageviewer.pro
+	$(QMAKE) -o Makefile imageviewer.pro
+/usr/lib/qt/mkspecs/features/spec_pre.prf:
+/usr/lib/qt/mkspecs/common/unix.conf:
+/usr/lib/qt/mkspecs/common/linux.conf:
+/usr/lib/qt/mkspecs/common/sanitize.conf:
+/usr/lib/qt/mkspecs/common/gcc-base.conf:
+/usr/lib/qt/mkspecs/common/gcc-base-unix.conf:
+/usr/lib/qt/mkspecs/common/g++-base.conf:
+/usr/lib/qt/mkspecs/common/g++-unix.conf:
+/usr/lib/qt/mkspecs/qconfig.pri:
+/usr/lib/qt/mkspecs/modules/qt_KSyntaxHighlighting.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_accessibility_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_core.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_designer.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_edid_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_egl_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_fb_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_glx_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_gui.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_help.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_input_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_kms_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_location.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_network.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_packetprotocol_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_qml.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_qmldebug_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quick.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quickshapes_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_script.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_service_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_sql.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_svg.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_theme_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_vulkan_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webengine.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webengine_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_xkbcommon_support_private.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_xml.pri:
+/usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri:
+/usr/lib/qt/mkspecs/features/qt_functions.prf:
+/usr/lib/qt/mkspecs/features/qt_config.prf:
+/usr/lib/qt/mkspecs/linux-g++/qmake.conf:
+/usr/lib/qt/mkspecs/features/spec_post.prf:
+/usr/lib/qt/mkspecs/features/exclusive_builds.prf:
+/usr/lib/qt/mkspecs/features/toolchain.prf:
+/usr/lib/qt/mkspecs/features/default_pre.prf:
+/usr/lib/qt/mkspecs/features/resolve_config.prf:
+/usr/lib/qt/mkspecs/features/default_post.prf:
+/usr/lib/qt/mkspecs/features/warn_on.prf:
+/usr/lib/qt/mkspecs/features/qt.prf:
+/usr/lib/qt/mkspecs/features/resources.prf:
+/usr/lib/qt/mkspecs/features/moc.prf:
+/usr/lib/qt/mkspecs/features/unix/opengl.prf:
+/usr/lib/qt/mkspecs/features/uic.prf:
+/usr/lib/qt/mkspecs/features/unix/thread.prf:
+/usr/lib/qt/mkspecs/features/qmake_use.prf:
+/usr/lib/qt/mkspecs/features/file_copies.prf:
+/usr/lib/qt/mkspecs/features/testcase_targets.prf:
+/usr/lib/qt/mkspecs/features/exceptions.prf:
+/usr/lib/qt/mkspecs/features/yacc.prf:
+/usr/lib/qt/mkspecs/features/lex.prf:
+imageviewer.pro:
+qmake: FORCE
+	@$(QMAKE) -o Makefile imageviewer.pro
+
+qmake_all: FORCE
+
+
+all: Makefile imageviewer
+
+dist: distdir FORCE
+	(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
+
+distdir: FORCE
+	@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
+	$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
+	$(COPY_FILE) --parents /usr/lib/qt/mkspecs/features/data/dummy.cpp $(DISTDIR)/
+	$(COPY_FILE) --parents imageviewer.h ColorDock.h DrawDock.h InteractionTool.h LayerDock.h ManipulationTool.h NewLayerDock.h Picture.h Tool.h TranslationDock.h tools/drawTool.h tools/floydSteinberg.h tools/merge.h tools/movetool.h tools/newLayer.h tools/polygon.h tools/translationTool.h $(DISTDIR)/
+	$(COPY_FILE) --parents imageviewer.cpp ColorDock.cpp DrawDock.cpp InteractionTool.cpp LayerDock.cpp ManipulationTool.cpp NewLayerDock.cpp Picture.cpp TranslationDock.cpp main.cpp tools/drawTool.cpp tools/floydSteinberg.cpp tools/merge.cpp tools/movetool.cpp tools/newLayer.cpp tools/polygon.cpp tools/translationTool.cpp $(DISTDIR)/
+
+
+clean: compiler_clean 
+	-$(DEL_FILE) $(OBJECTS)
+	-$(DEL_FILE) *~ core *.core
+
+
+distclean: clean 
+	-$(DEL_FILE) $(TARGET) 
+	-$(DEL_FILE) .qmake.stash
+	-$(DEL_FILE) Makefile
+
+
+####### Sub-libraries
+
+mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean
+
+mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all
+
+check: first
+
+benchmark: first
+
+compiler_rcc_make_all:
+compiler_rcc_clean:
+compiler_moc_predefs_make_all: moc_predefs.h
+compiler_moc_predefs_clean:
+	-$(DEL_FILE) moc_predefs.h
+moc_predefs.h: /usr/lib/qt/mkspecs/features/data/dummy.cpp
+	g++ -pipe -O2 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -Wall -W -dM -E -o moc_predefs.h /usr/lib/qt/mkspecs/features/data/dummy.cpp
+
+compiler_moc_header_make_all: moc_imageviewer.cpp moc_ColorDock.cpp moc_DrawDock.cpp moc_LayerDock.cpp moc_NewLayerDock.cpp moc_TranslationDock.cpp
+compiler_moc_header_clean:
+	-$(DEL_FILE) moc_imageviewer.cpp moc_ColorDock.cpp moc_DrawDock.cpp moc_LayerDock.cpp moc_NewLayerDock.cpp moc_TranslationDock.cpp
+moc_imageviewer.cpp: imageviewer.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h \
+		TranslationDock.h \
+		NewLayerDock.h \
+		DrawDock.h \
+		LayerDock.h \
+		ColorDock.h \
+		moc_predefs.h \
+		/usr/bin/moc
+	/usr/bin/moc $(DEFINES) --include /home/pascal/git/software-engineer/Implementation/GUI/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/pascal/git/software-engineer/Implementation/GUI -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I/usr/include/c++/9.2.0 -I/usr/include/c++/9.2.0/x86_64-pc-linux-gnu -I/usr/include/c++/9.2.0/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed -I/usr/include imageviewer.h -o moc_imageviewer.cpp
+
+moc_ColorDock.cpp: ColorDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h \
+		moc_predefs.h \
+		/usr/bin/moc
+	/usr/bin/moc $(DEFINES) --include /home/pascal/git/software-engineer/Implementation/GUI/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/pascal/git/software-engineer/Implementation/GUI -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I/usr/include/c++/9.2.0 -I/usr/include/c++/9.2.0/x86_64-pc-linux-gnu -I/usr/include/c++/9.2.0/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed -I/usr/include ColorDock.h -o moc_ColorDock.cpp
+
+moc_DrawDock.cpp: DrawDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h \
+		moc_predefs.h \
+		/usr/bin/moc
+	/usr/bin/moc $(DEFINES) --include /home/pascal/git/software-engineer/Implementation/GUI/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/pascal/git/software-engineer/Implementation/GUI -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I/usr/include/c++/9.2.0 -I/usr/include/c++/9.2.0/x86_64-pc-linux-gnu -I/usr/include/c++/9.2.0/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed -I/usr/include DrawDock.h -o moc_DrawDock.cpp
+
+moc_LayerDock.cpp: LayerDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h \
+		moc_predefs.h \
+		/usr/bin/moc
+	/usr/bin/moc $(DEFINES) --include /home/pascal/git/software-engineer/Implementation/GUI/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/pascal/git/software-engineer/Implementation/GUI -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I/usr/include/c++/9.2.0 -I/usr/include/c++/9.2.0/x86_64-pc-linux-gnu -I/usr/include/c++/9.2.0/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed -I/usr/include LayerDock.h -o moc_LayerDock.cpp
+
+moc_NewLayerDock.cpp: NewLayerDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h \
+		moc_predefs.h \
+		/usr/bin/moc
+	/usr/bin/moc $(DEFINES) --include /home/pascal/git/software-engineer/Implementation/GUI/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/pascal/git/software-engineer/Implementation/GUI -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I/usr/include/c++/9.2.0 -I/usr/include/c++/9.2.0/x86_64-pc-linux-gnu -I/usr/include/c++/9.2.0/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed -I/usr/include NewLayerDock.h -o moc_NewLayerDock.cpp
+
+moc_TranslationDock.cpp: TranslationDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h \
+		moc_predefs.h \
+		/usr/bin/moc
+	/usr/bin/moc $(DEFINES) --include /home/pascal/git/software-engineer/Implementation/GUI/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/pascal/git/software-engineer/Implementation/GUI -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I/usr/include/c++/9.2.0 -I/usr/include/c++/9.2.0/x86_64-pc-linux-gnu -I/usr/include/c++/9.2.0/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed -I/usr/include TranslationDock.h -o moc_TranslationDock.cpp
+
+compiler_moc_objc_header_make_all:
+compiler_moc_objc_header_clean:
+compiler_moc_source_make_all:
+compiler_moc_source_clean:
+compiler_uic_make_all:
+compiler_uic_clean:
+compiler_yacc_decl_make_all:
+compiler_yacc_decl_clean:
+compiler_yacc_impl_make_all:
+compiler_yacc_impl_clean:
+compiler_lex_make_all:
+compiler_lex_clean:
+compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean 
+
+####### Compile
+
+imageviewer.o: imageviewer.cpp imageviewer.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h \
+		TranslationDock.h \
+		NewLayerDock.h \
+		DrawDock.h \
+		LayerDock.h \
+		ColorDock.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o imageviewer.o imageviewer.cpp
+
+ColorDock.o: ColorDock.cpp ColorDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ColorDock.o ColorDock.cpp
+
+DrawDock.o: DrawDock.cpp DrawDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DrawDock.o DrawDock.cpp
+
+InteractionTool.o: InteractionTool.cpp InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o InteractionTool.o InteractionTool.cpp
+
+LayerDock.o: LayerDock.cpp LayerDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o LayerDock.o LayerDock.cpp
+
+ManipulationTool.o: ManipulationTool.cpp ManipulationTool.h \
+		Tool.h \
+		Picture.h \
+		tools/newLayer.h \
+		tools/drawTool.h \
+		tools/translationTool.h \
+		tools/merge.h \
+		tools/polygon.h \
+		tools/movetool.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ManipulationTool.o ManipulationTool.cpp
+
+NewLayerDock.o: NewLayerDock.cpp NewLayerDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o NewLayerDock.o NewLayerDock.cpp
+
+Picture.o: Picture.cpp Picture.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o Picture.o Picture.cpp
+
+TranslationDock.o: TranslationDock.cpp TranslationDock.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o TranslationDock.o TranslationDock.cpp
+
+main.o: main.cpp imageviewer.h \
+		InteractionTool.h \
+		Picture.h \
+		ManipulationTool.h \
+		Tool.h \
+		TranslationDock.h \
+		NewLayerDock.h \
+		DrawDock.h \
+		LayerDock.h \
+		ColorDock.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
+
+drawTool.o: tools/drawTool.cpp tools/drawTool.h \
+		Tool.h \
+		Picture.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o drawTool.o tools/drawTool.cpp
+
+floydSteinberg.o: tools/floydSteinberg.cpp tools/floydSteinberg.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o floydSteinberg.o tools/floydSteinberg.cpp
+
+merge.o: tools/merge.cpp tools/merge.h \
+		Tool.h \
+		Picture.h \
+		tools/floydSteinberg.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o merge.o tools/merge.cpp
+
+movetool.o: tools/movetool.cpp tools/movetool.h \
+		Tool.h \
+		Picture.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o movetool.o tools/movetool.cpp
+
+newLayer.o: tools/newLayer.cpp tools/newLayer.h \
+		Tool.h \
+		Picture.h \
+		tools/floydSteinberg.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o newLayer.o tools/newLayer.cpp
+
+polygon.o: tools/polygon.cpp tools/polygon.h \
+		Tool.h \
+		Picture.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o polygon.o tools/polygon.cpp
+
+translationTool.o: tools/translationTool.cpp tools/translationTool.h \
+		Tool.h \
+		Picture.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o translationTool.o tools/translationTool.cpp
+
+moc_imageviewer.o: moc_imageviewer.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_imageviewer.o moc_imageviewer.cpp
+
+moc_ColorDock.o: moc_ColorDock.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_ColorDock.o moc_ColorDock.cpp
+
+moc_DrawDock.o: moc_DrawDock.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_DrawDock.o moc_DrawDock.cpp
+
+moc_LayerDock.o: moc_LayerDock.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_LayerDock.o moc_LayerDock.cpp
+
+moc_NewLayerDock.o: moc_NewLayerDock.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_NewLayerDock.o moc_NewLayerDock.cpp
+
+moc_TranslationDock.o: moc_TranslationDock.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_TranslationDock.o moc_TranslationDock.cpp
+
+####### Install
+
+install_target: first FORCE
+	@test -d $(INSTALL_ROOT)/usr/share/doc/qt/examples/widgets/widgets/imageviewer || mkdir -p $(INSTALL_ROOT)/usr/share/doc/qt/examples/widgets/widgets/imageviewer
+	-$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/usr/share/doc/qt/examples/widgets/widgets/imageviewer/$(QMAKE_TARGET)
+	-$(STRIP) $(INSTALL_ROOT)/usr/share/doc/qt/examples/widgets/widgets/imageviewer/$(QMAKE_TARGET)
+
+uninstall_target: FORCE
+	-$(DEL_FILE) $(INSTALL_ROOT)/usr/share/doc/qt/examples/widgets/widgets/imageviewer/$(QMAKE_TARGET)
+	-$(DEL_DIR) $(INSTALL_ROOT)/usr/share/doc/qt/examples/widgets/widgets/imageviewer/ 
+
+
+install: install_target  FORCE
+
+uninstall: uninstall_target  FORCE
+
+FORCE:
+
diff --git a/Implementation/GUI/ManipulationTool.o b/Implementation/GUI/ManipulationTool.o
new file mode 100644
index 0000000000000000000000000000000000000000..a988349495425f6a308c473c9288709df4c1a978
Binary files /dev/null and b/Implementation/GUI/ManipulationTool.o differ
diff --git a/Implementation/GUI/NewLayerDock.o b/Implementation/GUI/NewLayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..cde74c1d7937193e236c968396d5a528201a7993
Binary files /dev/null and b/Implementation/GUI/NewLayerDock.o differ
diff --git a/Implementation/GUI/Picture.o b/Implementation/GUI/Picture.o
new file mode 100644
index 0000000000000000000000000000000000000000..e6c591e8c58da66ec5800726c27095eef0f8a328
Binary files /dev/null and b/Implementation/GUI/Picture.o differ
diff --git a/Implementation/GUI/TranslationDock.o b/Implementation/GUI/TranslationDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..d98231be9401ea5f0dd570b52250b7c77a62478c
Binary files /dev/null and b/Implementation/GUI/TranslationDock.o differ
diff --git a/Implementation/GUI/drawTool.o b/Implementation/GUI/drawTool.o
new file mode 100644
index 0000000000000000000000000000000000000000..cae3cc6f0f4e8bac606ccba261a04bfdde63ca97
Binary files /dev/null and b/Implementation/GUI/drawTool.o differ
diff --git a/Implementation/GUI/floydSteinberg.o b/Implementation/GUI/floydSteinberg.o
new file mode 100644
index 0000000000000000000000000000000000000000..4baa0774b1e28e8fdbe9a9a1bfbfb128b6757bcc
Binary files /dev/null and b/Implementation/GUI/floydSteinberg.o differ
diff --git a/Implementation/GUI/gpl b/Implementation/GUI/gpl
new file mode 100644
index 0000000000000000000000000000000000000000..783acb5b0e8b529e16201a17c5a9676a64804650
--- /dev/null
+++ b/Implementation/GUI/gpl
@@ -0,0 +1 @@
+plot "times" using 1:2 with lines, "times" using 1:3 with lines, "times" using 1:4 with lines, "times" using 1:5 with lines, "times" using 1:6 with lines, "times" using 1:7 with lines, "times" using 1:8 with lines, "times" using 1:9 with lines, "times" using 1:10 with lines, "times" using 1:11 with lines
diff --git a/Implementation/GUI/imageviewer b/Implementation/GUI/imageviewer
new file mode 100755
index 0000000000000000000000000000000000000000..cdb22d09dd0d2fe6ad59a0f33f3f916f4aaab581
Binary files /dev/null and b/Implementation/GUI/imageviewer differ
diff --git a/Implementation/GUI/imageviewer.o b/Implementation/GUI/imageviewer.o
new file mode 100644
index 0000000000000000000000000000000000000000..cdf29f15856b24145ef774fd23d874c2d79527df
Binary files /dev/null and b/Implementation/GUI/imageviewer.o differ
diff --git a/Implementation/GUI/main.o b/Implementation/GUI/main.o
new file mode 100644
index 0000000000000000000000000000000000000000..9a8e233f0cec29356884b82328b600a7886debc7
Binary files /dev/null and b/Implementation/GUI/main.o differ
diff --git a/Implementation/GUI/merge.o b/Implementation/GUI/merge.o
new file mode 100644
index 0000000000000000000000000000000000000000..610aa492ac01ec6b0bdd519de1003cb5f637bc29
Binary files /dev/null and b/Implementation/GUI/merge.o differ
diff --git a/Implementation/GUI/moc_ColorDock.cpp b/Implementation/GUI/moc_ColorDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..53417a441f7e6093c0cce2ac0528576092f0525e
--- /dev/null
+++ b/Implementation/GUI/moc_ColorDock.cpp
@@ -0,0 +1,181 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'ColorDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "ColorDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#include <QtCore/QVector>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'ColorDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_ColorDock_t {
+    QByteArrayData data[8];
+    char stringdata0[90];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_ColorDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_ColorDock_t qt_meta_stringdata_ColorDock = {
+    {
+QT_MOC_LITERAL(0, 0, 9), // "ColorDock"
+QT_MOC_LITERAL(1, 10, 13), // "updateVisible"
+QT_MOC_LITERAL(2, 24, 0), // ""
+QT_MOC_LITERAL(3, 25, 12), // "updateLayers"
+QT_MOC_LITERAL(4, 38, 15), // "updateColorVect"
+QT_MOC_LITERAL(5, 54, 13), // "QVector<QRgb>"
+QT_MOC_LITERAL(6, 68, 9), // "colorVect"
+QT_MOC_LITERAL(7, 78, 11) // "changeColor"
+
+    },
+    "ColorDock\0updateVisible\0\0updateLayers\0"
+    "updateColorVect\0QVector<QRgb>\0colorVect\0"
+    "changeColor"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_ColorDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       4,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       3,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   34,    2, 0x06 /* Public */,
+       3,    0,   35,    2, 0x06 /* Public */,
+       4,    1,   36,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       7,    0,   39,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 5,    6,
+
+ // slots: parameters
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void ColorDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<ColorDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateVisible(); break;
+        case 1: _t->updateLayers(); break;
+        case 2: _t->updateColorVect((*reinterpret_cast< QVector<QRgb>(*)>(_a[1]))); break;
+        case 3: _t->changeColor(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (ColorDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateVisible)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (ColorDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateLayers)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (ColorDock::*)(QVector<QRgb> );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateColorVect)) {
+                *result = 2;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject ColorDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_ColorDock.data,
+    qt_meta_data_ColorDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *ColorDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *ColorDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_ColorDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int ColorDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 4)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 4;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 4)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 4;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void ColorDock::updateVisible()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void ColorDock::updateLayers()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void ColorDock::updateColorVect(QVector<QRgb> _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/GUI/moc_ColorDock.o b/Implementation/GUI/moc_ColorDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..8f9e1d0e0dcc96d8669f013a19b4379f701e9b33
Binary files /dev/null and b/Implementation/GUI/moc_ColorDock.o differ
diff --git a/Implementation/GUI/moc_DrawDock.cpp b/Implementation/GUI/moc_DrawDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..029ef48c3602fa5a4d2e7444167ab98712cd2242
--- /dev/null
+++ b/Implementation/GUI/moc_DrawDock.cpp
@@ -0,0 +1,224 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'DrawDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "DrawDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'DrawDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_DrawDock_t {
+    QByteArrayData data[16];
+    char stringdata0[141];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_DrawDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_DrawDock_t qt_meta_stringdata_DrawDock = {
+    {
+QT_MOC_LITERAL(0, 0, 8), // "DrawDock"
+QT_MOC_LITERAL(1, 9, 11), // "updateLayer"
+QT_MOC_LITERAL(2, 21, 0), // ""
+QT_MOC_LITERAL(3, 22, 13), // "updateVisible"
+QT_MOC_LITERAL(4, 36, 9), // "drawShowI"
+QT_MOC_LITERAL(5, 46, 5), // "para1"
+QT_MOC_LITERAL(6, 52, 10), // "drawShowII"
+QT_MOC_LITERAL(7, 63, 5), // "para2"
+QT_MOC_LITERAL(8, 69, 6), // "pencil"
+QT_MOC_LITERAL(9, 76, 9), // "startDraw"
+QT_MOC_LITERAL(10, 86, 5), // "lines"
+QT_MOC_LITERAL(11, 92, 13), // "notFilledRect"
+QT_MOC_LITERAL(12, 106, 10), // "filledRect"
+QT_MOC_LITERAL(13, 117, 12), // "setDrawColor"
+QT_MOC_LITERAL(14, 130, 8), // "setWidth"
+QT_MOC_LITERAL(15, 139, 1) // "w"
+
+    },
+    "DrawDock\0updateLayer\0\0updateVisible\0"
+    "drawShowI\0para1\0drawShowII\0para2\0"
+    "pencil\0startDraw\0lines\0notFilledRect\0"
+    "filledRect\0setDrawColor\0setWidth\0w"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_DrawDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+      11,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       4,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   69,    2, 0x06 /* Public */,
+       3,    0,   70,    2, 0x06 /* Public */,
+       4,    1,   71,    2, 0x06 /* Public */,
+       6,    1,   74,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   77,    2, 0x08 /* Private */,
+       9,    0,   78,    2, 0x08 /* Private */,
+      10,    0,   79,    2, 0x08 /* Private */,
+      11,    0,   80,    2, 0x08 /* Private */,
+      12,    0,   81,    2, 0x08 /* Private */,
+      13,    0,   82,    2, 0x08 /* Private */,
+      14,    1,   83,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 5,    2,
+    QMetaType::Void, 0x80000000 | 7,    2,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, QMetaType::Int,   15,
+
+       0        // eod
+};
+
+void DrawDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<DrawDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateLayer(); break;
+        case 1: _t->updateVisible(); break;
+        case 2: _t->drawShowI((*reinterpret_cast< para1(*)>(_a[1]))); break;
+        case 3: _t->drawShowII((*reinterpret_cast< para2(*)>(_a[1]))); break;
+        case 4: _t->pencil(); break;
+        case 5: _t->startDraw(); break;
+        case 6: _t->lines(); break;
+        case 7: _t->notFilledRect(); break;
+        case 8: _t->filledRect(); break;
+        case 9: _t->setDrawColor(); break;
+        case 10: _t->setWidth((*reinterpret_cast< int(*)>(_a[1]))); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (DrawDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::updateLayer)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::updateVisible)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)(para1 );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::drawShowI)) {
+                *result = 2;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)(para2 );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::drawShowII)) {
+                *result = 3;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject DrawDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_DrawDock.data,
+    qt_meta_data_DrawDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *DrawDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *DrawDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_DrawDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int DrawDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 11)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 11;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 11)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 11;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void DrawDock::updateLayer()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void DrawDock::updateVisible()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void DrawDock::drawShowI(para1 _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+
+// SIGNAL 3
+void DrawDock::drawShowII(para2 _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 3, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/GUI/moc_DrawDock.o b/Implementation/GUI/moc_DrawDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..aa11770730bd1e53f322bed7e7aeb721db1f5a6d
Binary files /dev/null and b/Implementation/GUI/moc_DrawDock.o differ
diff --git a/Implementation/GUI/moc_LayerDock.cpp b/Implementation/GUI/moc_LayerDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b4197a71c9f8114cd59750eca1cf18ab59aa00f1
--- /dev/null
+++ b/Implementation/GUI/moc_LayerDock.cpp
@@ -0,0 +1,201 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'LayerDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "LayerDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'LayerDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_LayerDock_t {
+    QByteArrayData data[10];
+    char stringdata0[110];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_LayerDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_LayerDock_t qt_meta_stringdata_LayerDock = {
+    {
+QT_MOC_LITERAL(0, 0, 9), // "LayerDock"
+QT_MOC_LITERAL(1, 10, 15), // "updateLayerDock"
+QT_MOC_LITERAL(2, 26, 0), // ""
+QT_MOC_LITERAL(3, 27, 8), // "newLayer"
+QT_MOC_LITERAL(4, 36, 6), // "update"
+QT_MOC_LITERAL(5, 43, 9), // "getParams"
+QT_MOC_LITERAL(6, 53, 17), // "toolParameters_t*"
+QT_MOC_LITERAL(7, 71, 5), // "param"
+QT_MOC_LITERAL(8, 77, 18), // "changeCurrentLayer"
+QT_MOC_LITERAL(9, 96, 13) // "updateVisible"
+
+    },
+    "LayerDock\0updateLayerDock\0\0newLayer\0"
+    "update\0getParams\0toolParameters_t*\0"
+    "param\0changeCurrentLayer\0updateVisible"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_LayerDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       6,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       4,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   44,    2, 0x06 /* Public */,
+       3,    0,   45,    2, 0x06 /* Public */,
+       4,    0,   46,    2, 0x06 /* Public */,
+       5,    1,   47,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   50,    2, 0x08 /* Private */,
+       9,    0,   51,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 6,    7,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void LayerDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<LayerDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateLayerDock(); break;
+        case 1: _t->newLayer(); break;
+        case 2: _t->update(); break;
+        case 3: _t->getParams((*reinterpret_cast< toolParameters_t*(*)>(_a[1]))); break;
+        case 4: _t->changeCurrentLayer(); break;
+        case 5: _t->updateVisible(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::updateLayerDock)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::newLayer)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::update)) {
+                *result = 2;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)(toolParameters_t * );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::getParams)) {
+                *result = 3;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject LayerDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_LayerDock.data,
+    qt_meta_data_LayerDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *LayerDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *LayerDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_LayerDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int LayerDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 6)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 6;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 6)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 6;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void LayerDock::updateLayerDock()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void LayerDock::newLayer()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void LayerDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 2, nullptr);
+}
+
+// SIGNAL 3
+void LayerDock::getParams(toolParameters_t * _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 3, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/GUI/moc_LayerDock.o b/Implementation/GUI/moc_LayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..a40835e4635e163341d9b08a16418fd1fe9838df
Binary files /dev/null and b/Implementation/GUI/moc_LayerDock.o differ
diff --git a/Implementation/GUI/moc_NewLayerDock.cpp b/Implementation/GUI/moc_NewLayerDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b277bb07d473a3d792c9888e10821d25338b4abe
--- /dev/null
+++ b/Implementation/GUI/moc_NewLayerDock.cpp
@@ -0,0 +1,228 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'NewLayerDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "NewLayerDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#include <QtCore/QVector>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'NewLayerDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_NewLayerDock_t {
+    QByteArrayData data[20];
+    char stringdata0[235];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_NewLayerDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_NewLayerDock_t qt_meta_stringdata_NewLayerDock = {
+    {
+QT_MOC_LITERAL(0, 0, 12), // "NewLayerDock"
+QT_MOC_LITERAL(1, 13, 14), // "updateHasLayer"
+QT_MOC_LITERAL(2, 28, 0), // ""
+QT_MOC_LITERAL(3, 29, 1), // "b"
+QT_MOC_LITERAL(4, 31, 6), // "update"
+QT_MOC_LITERAL(5, 38, 15), // "setNewColorVect"
+QT_MOC_LITERAL(6, 54, 13), // "QVector<QRgb>"
+QT_MOC_LITERAL(7, 68, 9), // "colorVect"
+QT_MOC_LITERAL(8, 78, 13), // "existingColor"
+QT_MOC_LITERAL(9, 92, 8), // "newColor"
+QT_MOC_LITERAL(10, 101, 15), // "actualColorVect"
+QT_MOC_LITERAL(11, 117, 17), // "standartColorVect"
+QT_MOC_LITERAL(12, 135, 14), // "smallColorVect"
+QT_MOC_LITERAL(13, 150, 15), // "customColorVect"
+QT_MOC_LITERAL(14, 166, 11), // "addNewLayer"
+QT_MOC_LITERAL(15, 178, 11), // "setNewColor"
+QT_MOC_LITERAL(16, 190, 12), // "setNewLayerX"
+QT_MOC_LITERAL(17, 203, 1), // "w"
+QT_MOC_LITERAL(18, 205, 12), // "setNewLayerY"
+QT_MOC_LITERAL(19, 218, 16) // "setNewLayerColor"
+
+    },
+    "NewLayerDock\0updateHasLayer\0\0b\0update\0"
+    "setNewColorVect\0QVector<QRgb>\0colorVect\0"
+    "existingColor\0newColor\0actualColorVect\0"
+    "standartColorVect\0smallColorVect\0"
+    "customColorVect\0addNewLayer\0setNewColor\0"
+    "setNewLayerX\0w\0setNewLayerY\0"
+    "setNewLayerColor"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_NewLayerDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+      14,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       3,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    1,   84,    2, 0x06 /* Public */,
+       4,    0,   87,    2, 0x06 /* Public */,
+       5,    1,   88,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   91,    2, 0x08 /* Private */,
+       9,    0,   92,    2, 0x08 /* Private */,
+      10,    0,   93,    2, 0x08 /* Private */,
+      11,    0,   94,    2, 0x08 /* Private */,
+      12,    0,   95,    2, 0x08 /* Private */,
+      13,    0,   96,    2, 0x08 /* Private */,
+      14,    0,   97,    2, 0x08 /* Private */,
+      15,    0,   98,    2, 0x08 /* Private */,
+      16,    1,   99,    2, 0x08 /* Private */,
+      18,    1,  102,    2, 0x08 /* Private */,
+      19,    0,  105,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void, QMetaType::Bool,    3,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 6,    7,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, QMetaType::Int,   17,
+    QMetaType::Void, QMetaType::Int,   17,
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void NewLayerDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<NewLayerDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateHasLayer((*reinterpret_cast< bool(*)>(_a[1]))); break;
+        case 1: _t->update(); break;
+        case 2: _t->setNewColorVect((*reinterpret_cast< QVector<QRgb>(*)>(_a[1]))); break;
+        case 3: _t->existingColor(); break;
+        case 4: _t->newColor(); break;
+        case 5: _t->actualColorVect(); break;
+        case 6: _t->standartColorVect(); break;
+        case 7: _t->smallColorVect(); break;
+        case 8: _t->customColorVect(); break;
+        case 9: _t->addNewLayer(); break;
+        case 10: _t->setNewColor(); break;
+        case 11: _t->setNewLayerX((*reinterpret_cast< int(*)>(_a[1]))); break;
+        case 12: _t->setNewLayerY((*reinterpret_cast< int(*)>(_a[1]))); break;
+        case 13: _t->setNewLayerColor(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (NewLayerDock::*)(bool );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::updateHasLayer)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (NewLayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::update)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (NewLayerDock::*)(QVector<QRgb> );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::setNewColorVect)) {
+                *result = 2;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject NewLayerDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_NewLayerDock.data,
+    qt_meta_data_NewLayerDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *NewLayerDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *NewLayerDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_NewLayerDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int NewLayerDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 14)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 14;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 14)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 14;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void NewLayerDock::updateHasLayer(bool _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 0, _a);
+}
+
+// SIGNAL 1
+void NewLayerDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void NewLayerDock::setNewColorVect(QVector<QRgb> _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/GUI/moc_NewLayerDock.o b/Implementation/GUI/moc_NewLayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..e573f0406b33b128c902706c7357633849d86851
Binary files /dev/null and b/Implementation/GUI/moc_NewLayerDock.o differ
diff --git a/Implementation/GUI/moc_TranslationDock.cpp b/Implementation/GUI/moc_TranslationDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..80c42352d725abcbaffe219587004710f63292e8
--- /dev/null
+++ b/Implementation/GUI/moc_TranslationDock.cpp
@@ -0,0 +1,162 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'TranslationDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "TranslationDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'TranslationDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_TranslationDock_t {
+    QByteArrayData data[7];
+    char stringdata0[73];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_TranslationDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_TranslationDock_t qt_meta_stringdata_TranslationDock = {
+    {
+QT_MOC_LITERAL(0, 0, 15), // "TranslationDock"
+QT_MOC_LITERAL(1, 16, 9), // "getParams"
+QT_MOC_LITERAL(2, 26, 0), // ""
+QT_MOC_LITERAL(3, 27, 17), // "toolParameters_t*"
+QT_MOC_LITERAL(4, 45, 5), // "param"
+QT_MOC_LITERAL(5, 51, 6), // "update"
+QT_MOC_LITERAL(6, 58, 14) // "doTranslationI"
+
+    },
+    "TranslationDock\0getParams\0\0toolParameters_t*\0"
+    "param\0update\0doTranslationI"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_TranslationDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       3,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       2,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    1,   29,    2, 0x06 /* Public */,
+       5,    0,   32,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       6,    0,   33,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void, 0x80000000 | 3,    4,
+    QMetaType::Void,
+
+ // slots: parameters
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void TranslationDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<TranslationDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->getParams((*reinterpret_cast< toolParameters_t*(*)>(_a[1]))); break;
+        case 1: _t->update(); break;
+        case 2: _t->doTranslationI(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (TranslationDock::*)(toolParameters_t * );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TranslationDock::getParams)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (TranslationDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TranslationDock::update)) {
+                *result = 1;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject TranslationDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_TranslationDock.data,
+    qt_meta_data_TranslationDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *TranslationDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *TranslationDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_TranslationDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int TranslationDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 3)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 3;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 3)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 3;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void TranslationDock::getParams(toolParameters_t * _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 0, _a);
+}
+
+// SIGNAL 1
+void TranslationDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/GUI/moc_TranslationDock.o b/Implementation/GUI/moc_TranslationDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..f23b2e2d9044dcd4596f905a7c6614a44e84f975
Binary files /dev/null and b/Implementation/GUI/moc_TranslationDock.o differ
diff --git a/Implementation/GUI/moc_imageviewer.cpp b/Implementation/GUI/moc_imageviewer.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6a90d9492b0ecb7f500079f1aef7e6f50fd875a1
--- /dev/null
+++ b/Implementation/GUI/moc_imageviewer.cpp
@@ -0,0 +1,220 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'imageviewer.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "imageviewer.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#include <QtCore/QVector>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'imageviewer.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_ImageViewer_t {
+    QByteArrayData data[32];
+    char stringdata0[338];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_ImageViewer_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_ImageViewer_t qt_meta_stringdata_ImageViewer = {
+    {
+QT_MOC_LITERAL(0, 0, 11), // "ImageViewer"
+QT_MOC_LITERAL(1, 12, 4), // "open"
+QT_MOC_LITERAL(2, 17, 0), // ""
+QT_MOC_LITERAL(3, 18, 6), // "saveAs"
+QT_MOC_LITERAL(4, 25, 6), // "zoomIn"
+QT_MOC_LITERAL(5, 32, 7), // "zoomOut"
+QT_MOC_LITERAL(6, 40, 10), // "normalSize"
+QT_MOC_LITERAL(7, 51, 11), // "fitToWindow"
+QT_MOC_LITERAL(8, 63, 5), // "about"
+QT_MOC_LITERAL(9, 69, 4), // "draw"
+QT_MOC_LITERAL(10, 74, 9), // "translate"
+QT_MOC_LITERAL(11, 84, 20), // "setTranslationParams"
+QT_MOC_LITERAL(12, 105, 17), // "toolParameters_t*"
+QT_MOC_LITERAL(13, 123, 5), // "param"
+QT_MOC_LITERAL(14, 129, 14), // "setMergeParams"
+QT_MOC_LITERAL(15, 144, 14), // "updateHasLayer"
+QT_MOC_LITERAL(16, 159, 1), // "b"
+QT_MOC_LITERAL(17, 161, 9), // "updateall"
+QT_MOC_LITERAL(18, 171, 18), // "updateWithoutLayer"
+QT_MOC_LITERAL(19, 190, 13), // "updateVisible"
+QT_MOC_LITERAL(20, 204, 10), // "makeShaped"
+QT_MOC_LITERAL(21, 215, 8), // "newLayer"
+QT_MOC_LITERAL(22, 224, 9), // "drawShowI"
+QT_MOC_LITERAL(23, 234, 5), // "para1"
+QT_MOC_LITERAL(24, 240, 1), // "p"
+QT_MOC_LITERAL(25, 242, 10), // "drawShowII"
+QT_MOC_LITERAL(26, 253, 5), // "para2"
+QT_MOC_LITERAL(27, 259, 15), // "updateLayerDock"
+QT_MOC_LITERAL(28, 275, 17), // "updateColorVector"
+QT_MOC_LITERAL(29, 293, 13), // "QVector<QRgb>"
+QT_MOC_LITERAL(30, 307, 9), // "colorVect"
+QT_MOC_LITERAL(31, 317, 20) // "updateNewColorVector"
+
+    },
+    "ImageViewer\0open\0\0saveAs\0zoomIn\0zoomOut\0"
+    "normalSize\0fitToWindow\0about\0draw\0"
+    "translate\0setTranslationParams\0"
+    "toolParameters_t*\0param\0setMergeParams\0"
+    "updateHasLayer\0b\0updateall\0"
+    "updateWithoutLayer\0updateVisible\0"
+    "makeShaped\0newLayer\0drawShowI\0para1\0"
+    "p\0drawShowII\0para2\0updateLayerDock\0"
+    "updateColorVector\0QVector<QRgb>\0"
+    "colorVect\0updateNewColorVector"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_ImageViewer[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+      22,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       0,       // signalCount
+
+ // slots: name, argc, parameters, tag, flags
+       1,    0,  124,    2, 0x08 /* Private */,
+       3,    0,  125,    2, 0x08 /* Private */,
+       4,    0,  126,    2, 0x08 /* Private */,
+       5,    0,  127,    2, 0x08 /* Private */,
+       6,    0,  128,    2, 0x08 /* Private */,
+       7,    0,  129,    2, 0x08 /* Private */,
+       8,    0,  130,    2, 0x08 /* Private */,
+       9,    0,  131,    2, 0x08 /* Private */,
+      10,    0,  132,    2, 0x08 /* Private */,
+      11,    1,  133,    2, 0x08 /* Private */,
+      14,    1,  136,    2, 0x08 /* Private */,
+      15,    1,  139,    2, 0x08 /* Private */,
+      17,    0,  142,    2, 0x08 /* Private */,
+      18,    0,  143,    2, 0x08 /* Private */,
+      19,    0,  144,    2, 0x08 /* Private */,
+      20,    0,  145,    2, 0x08 /* Private */,
+      21,    0,  146,    2, 0x08 /* Private */,
+      22,    1,  147,    2, 0x08 /* Private */,
+      25,    1,  150,    2, 0x08 /* Private */,
+      27,    0,  153,    2, 0x08 /* Private */,
+      28,    1,  154,    2, 0x08 /* Private */,
+      31,    1,  157,    2, 0x08 /* Private */,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 12,   13,
+    QMetaType::Void, 0x80000000 | 12,   13,
+    QMetaType::Void, QMetaType::Bool,   16,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 23,   24,
+    QMetaType::Void, 0x80000000 | 26,   24,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 29,   30,
+    QMetaType::Void, 0x80000000 | 29,   30,
+
+       0        // eod
+};
+
+void ImageViewer::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<ImageViewer *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->open(); break;
+        case 1: _t->saveAs(); break;
+        case 2: _t->zoomIn(); break;
+        case 3: _t->zoomOut(); break;
+        case 4: _t->normalSize(); break;
+        case 5: _t->fitToWindow(); break;
+        case 6: _t->about(); break;
+        case 7: _t->draw(); break;
+        case 8: _t->translate(); break;
+        case 9: _t->setTranslationParams((*reinterpret_cast< toolParameters_t*(*)>(_a[1]))); break;
+        case 10: _t->setMergeParams((*reinterpret_cast< toolParameters_t*(*)>(_a[1]))); break;
+        case 11: _t->updateHasLayer((*reinterpret_cast< bool(*)>(_a[1]))); break;
+        case 12: _t->updateall(); break;
+        case 13: _t->updateWithoutLayer(); break;
+        case 14: _t->updateVisible(); break;
+        case 15: _t->makeShaped(); break;
+        case 16: _t->newLayer(); break;
+        case 17: _t->drawShowI((*reinterpret_cast< para1(*)>(_a[1]))); break;
+        case 18: _t->drawShowII((*reinterpret_cast< para2(*)>(_a[1]))); break;
+        case 19: _t->updateLayerDock(); break;
+        case 20: _t->updateColorVector((*reinterpret_cast< QVector<QRgb>(*)>(_a[1]))); break;
+        case 21: _t->updateNewColorVector((*reinterpret_cast< QVector<QRgb>(*)>(_a[1]))); break;
+        default: ;
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject ImageViewer::staticMetaObject = { {
+    &QMainWindow::staticMetaObject,
+    qt_meta_stringdata_ImageViewer.data,
+    qt_meta_data_ImageViewer,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *ImageViewer::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *ImageViewer::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_ImageViewer.stringdata0))
+        return static_cast<void*>(this);
+    return QMainWindow::qt_metacast(_clname);
+}
+
+int ImageViewer::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QMainWindow::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 22)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 22;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 22)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 22;
+    }
+    return _id;
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/GUI/moc_imageviewer.o b/Implementation/GUI/moc_imageviewer.o
new file mode 100644
index 0000000000000000000000000000000000000000..37f7c8b6112ffbae2f58f16446f530982b273839
Binary files /dev/null and b/Implementation/GUI/moc_imageviewer.o differ
diff --git a/Implementation/GUI/moc_predefs.h b/Implementation/GUI/moc_predefs.h
new file mode 100644
index 0000000000000000000000000000000000000000..6a8b12dade04074cedbc7e6a5a42021642d053b8
--- /dev/null
+++ b/Implementation/GUI/moc_predefs.h
@@ -0,0 +1,389 @@
+#define __SSP_STRONG__ 3
+#define __DBL_MIN_EXP__ (-1021)
+#define __FLT32X_MAX_EXP__ 1024
+#define __cpp_attributes 200809
+#define __UINT_LEAST16_MAX__ 0xffff
+#define __ATOMIC_ACQUIRE 2
+#define __FLT128_MAX_10_EXP__ 4932
+#define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F
+#define __GCC_IEC_559_COMPLEX 2
+#define __cpp_aggregate_nsdmi 201304
+#define __UINT_LEAST8_TYPE__ unsigned char
+#define __SIZEOF_FLOAT80__ 16
+#define __INTMAX_C(c) c ## L
+#define __CHAR_BIT__ 8
+#define __UINT8_MAX__ 0xff
+#define __WINT_MAX__ 0xffffffffU
+#define __FLT32_MIN_EXP__ (-125)
+#define __cpp_static_assert 200410
+#define __ORDER_LITTLE_ENDIAN__ 1234
+#define __SIZE_MAX__ 0xffffffffffffffffUL
+#define __WCHAR_MAX__ 0x7fffffff
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+#define __DBL_DENORM_MIN__ double(4.94065645841246544176568792868221372e-324L)
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
+#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
+#define __GCC_IEC_559 2
+#define __FLT32X_DECIMAL_DIG__ 17
+#define __FLT_EVAL_METHOD__ 0
+#define __unix__ 1
+#define __cpp_binary_literals 201304
+#define __FLT64_DECIMAL_DIG__ 17
+#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
+#define __x86_64 1
+#define __cpp_variadic_templates 200704
+#define __UINT_FAST64_MAX__ 0xffffffffffffffffUL
+#define __SIG_ATOMIC_TYPE__ int
+#define __DBL_MIN_10_EXP__ (-307)
+#define __FINITE_MATH_ONLY__ 0
+#define __cpp_variable_templates 201304
+#define __GNUC_PATCHLEVEL__ 0
+#define __FLT32_HAS_DENORM__ 1
+#define __UINT_FAST8_MAX__ 0xff
+#define __cpp_rvalue_reference 200610
+#define __has_include(STR) __has_include__(STR)
+#define __DEC64_MAX_EXP__ 385
+#define __INT8_C(c) c
+#define __INT_LEAST8_WIDTH__ 8
+#define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL
+#define __SHRT_MAX__ 0x7fff
+#define __LDBL_MAX__ 1.18973149535723176502126385303097021e+4932L
+#define __FLT64X_MAX_10_EXP__ 4932
+#define __UINT_LEAST8_MAX__ 0xff
+#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
+#define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128
+#define __UINTMAX_TYPE__ long unsigned int
+#define __linux 1
+#define __DEC32_EPSILON__ 1E-6DF
+#define __FLT_EVAL_METHOD_TS_18661_3__ 0
+#define __OPTIMIZE__ 1
+#define __unix 1
+#define __UINT32_MAX__ 0xffffffffU
+#define __GXX_EXPERIMENTAL_CXX0X__ 1
+#define __LDBL_MAX_EXP__ 16384
+#define __FLT128_MIN_EXP__ (-16381)
+#define __WINT_MIN__ 0U
+#define __linux__ 1
+#define __FLT128_MIN_10_EXP__ (-4931)
+#define __INT_LEAST16_WIDTH__ 16
+#define __SCHAR_MAX__ 0x7f
+#define __FLT128_MANT_DIG__ 113
+#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
+#define __INT64_C(c) c ## L
+#define __DBL_DIG__ 15
+#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
+#define __FLT64X_MANT_DIG__ 64
+#define __SIZEOF_INT__ 4
+#define __SIZEOF_POINTER__ 8
+#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
+#define __USER_LABEL_PREFIX__ 
+#define __FLT64X_EPSILON__ 1.08420217248550443400745280086994171e-19F64x
+#define __STDC_HOSTED__ 1
+#define __LDBL_HAS_INFINITY__ 1
+#define __FLT32_DIG__ 6
+#define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F
+#define __GXX_WEAK__ 1
+#define __SHRT_WIDTH__ 16
+#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
+#define __DEC32_MAX__ 9.999999E96DF
+#define __cpp_threadsafe_static_init 200806
+#define __FLT64X_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951F64x
+#define __FLT32X_HAS_INFINITY__ 1
+#define __INT32_MAX__ 0x7fffffff
+#define __INT_WIDTH__ 32
+#define __SIZEOF_LONG__ 8
+#define __STDC_IEC_559__ 1
+#define __STDC_ISO_10646__ 201706L
+#define __UINT16_C(c) c
+#define __PTRDIFF_WIDTH__ 64
+#define __DECIMAL_DIG__ 21
+#define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64
+#define __gnu_linux__ 1
+#define __INTMAX_WIDTH__ 64
+#define __FLT64_MIN_EXP__ (-1021)
+#define __has_include_next(STR) __has_include_next__(STR)
+#define __FLT64X_MIN_10_EXP__ (-4931)
+#define __LDBL_HAS_QUIET_NAN__ 1
+#define __FLT64_MANT_DIG__ 53
+#define __GNUC__ 9
+#define __GXX_RTTI 1
+#define __pie__ 2
+#define __MMX__ 1
+#define __cpp_delegating_constructors 200604
+#define __FLT_HAS_DENORM__ 1
+#define __SIZEOF_LONG_DOUBLE__ 16
+#define __BIGGEST_ALIGNMENT__ 16
+#define __STDC_UTF_16__ 1
+#define __FLT64_MAX_10_EXP__ 308
+#define __FLT32_HAS_INFINITY__ 1
+#define __DBL_MAX__ double(1.79769313486231570814527423731704357e+308L)
+#define __cpp_raw_strings 200710
+#define __INT_FAST32_MAX__ 0x7fffffffffffffffL
+#define __DBL_HAS_INFINITY__ 1
+#define __HAVE_SPECULATION_SAFE_VALUE 1
+#define __DEC32_MIN_EXP__ (-94)
+#define __INTPTR_WIDTH__ 64
+#define __FLT32X_HAS_DENORM__ 1
+#define __INT_FAST16_TYPE__ long int
+#define __LDBL_HAS_DENORM__ 1
+#define __cplusplus 201402L
+#define __cpp_ref_qualifiers 200710
+#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+#define __INT_LEAST32_MAX__ 0x7fffffff
+#define __DEC32_MIN__ 1E-95DF
+#define __DEPRECATED 1
+#define __cpp_rvalue_references 200610
+#define __DBL_MAX_EXP__ 1024
+#define __WCHAR_WIDTH__ 32
+#define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32
+#define __DEC128_EPSILON__ 1E-33DL
+#define __SSE2_MATH__ 1
+#define __ATOMIC_HLE_RELEASE 131072
+#define __PTRDIFF_MAX__ 0x7fffffffffffffffL
+#define __amd64 1
+#define __ATOMIC_HLE_ACQUIRE 65536
+#define __FLT32_HAS_QUIET_NAN__ 1
+#define __GNUG__ 9
+#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
+#define __SIZEOF_SIZE_T__ 8
+#define __cpp_nsdmi 200809
+#define __FLT64X_MIN_EXP__ (-16381)
+#define __SIZEOF_WINT_T__ 4
+#define __LONG_LONG_WIDTH__ 64
+#define __cpp_initializer_lists 200806
+#define __FLT32_MAX_EXP__ 128
+#define __cpp_hex_float 201603
+#define __GCC_HAVE_DWARF2_CFI_ASM 1
+#define __GXX_ABI_VERSION 1013
+#define __FLT128_HAS_INFINITY__ 1
+#define __FLT_MIN_EXP__ (-125)
+#define __cpp_lambdas 200907
+#define __FLT64X_HAS_QUIET_NAN__ 1
+#define __INT_FAST64_TYPE__ long int
+#define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64
+#define __DBL_MIN__ double(2.22507385850720138309023271733240406e-308L)
+#define __PIE__ 2
+#define __LP64__ 1
+#define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x
+#define __DECIMAL_BID_FORMAT__ 1
+#define __FLT64_MIN_10_EXP__ (-307)
+#define __FLT64X_DECIMAL_DIG__ 21
+#define __DEC128_MIN__ 1E-6143DL
+#define __REGISTER_PREFIX__ 
+#define __UINT16_MAX__ 0xffff
+#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
+#define __UINT8_TYPE__ unsigned char
+#define __FLT_MANT_DIG__ 24
+#define __LDBL_DECIMAL_DIG__ 21
+#define __VERSION__ "9.2.0"
+#define __UINT64_C(c) c ## UL
+#define __cpp_unicode_characters 200704
+#define _STDC_PREDEF_H 1
+#define __cpp_decltype_auto 201304
+#define __GCC_ATOMIC_INT_LOCK_FREE 2
+#define __FLT128_MAX_EXP__ 16384
+#define __FLT32_MANT_DIG__ 24
+#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
+#define __STDC_IEC_559_COMPLEX__ 1
+#define __FLT128_HAS_DENORM__ 1
+#define __FLT128_DIG__ 33
+#define __SCHAR_WIDTH__ 8
+#define __INT32_C(c) c
+#define __DEC64_EPSILON__ 1E-15DD
+#define __ORDER_PDP_ENDIAN__ 3412
+#define __DEC128_MIN_EXP__ (-6142)
+#define __FLT32_MAX_10_EXP__ 38
+#define __INT_FAST32_TYPE__ long int
+#define __UINT_LEAST16_TYPE__ short unsigned int
+#define __FLT64X_HAS_INFINITY__ 1
+#define unix 1
+#define __DBL_HAS_DENORM__ 1
+#define __INT16_MAX__ 0x7fff
+#define __cpp_rtti 199711
+#define __SIZE_TYPE__ long unsigned int
+#define __UINT64_MAX__ 0xffffffffffffffffUL
+#define __FLT64X_DIG__ 18
+#define __INT8_TYPE__ signed char
+#define __cpp_digit_separators 201309
+#define __ELF__ 1
+#define __GCC_ASM_FLAG_OUTPUTS__ 1
+#define __FLT_RADIX__ 2
+#define __INT_LEAST16_TYPE__ short int
+#define __LDBL_EPSILON__ 1.08420217248550443400745280086994171e-19L
+#define __UINTMAX_C(c) c ## UL
+#define __GLIBCXX_BITSIZE_INT_N_0 128
+#define __k8 1
+#define __SIG_ATOMIC_MAX__ 0x7fffffff
+#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
+#define __SIZEOF_PTRDIFF_T__ 8
+#define __FLT32X_MANT_DIG__ 53
+#define __x86_64__ 1
+#define __FLT32X_MIN_EXP__ (-1021)
+#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
+#define __INT_FAST16_MAX__ 0x7fffffffffffffffL
+#define __FLT64_DIG__ 15
+#define __UINT_FAST32_MAX__ 0xffffffffffffffffUL
+#define __UINT_LEAST64_TYPE__ long unsigned int
+#define __FLT_HAS_QUIET_NAN__ 1
+#define __FLT_MAX_10_EXP__ 38
+#define __LONG_MAX__ 0x7fffffffffffffffL
+#define __FLT64X_HAS_DENORM__ 1
+#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
+#define __FLT_HAS_INFINITY__ 1
+#define __cpp_unicode_literals 200710
+#define __UINT_FAST16_TYPE__ long unsigned int
+#define __DEC64_MAX__ 9.999999999999999E384DD
+#define __INT_FAST32_WIDTH__ 64
+#define __CHAR16_TYPE__ short unsigned int
+#define __PRAGMA_REDEFINE_EXTNAME 1
+#define __SIZE_WIDTH__ 64
+#define __SEG_FS 1
+#define __INT_LEAST16_MAX__ 0x7fff
+#define __DEC64_MANT_DIG__ 16
+#define __INT64_MAX__ 0x7fffffffffffffffL
+#define __UINT_LEAST32_MAX__ 0xffffffffU
+#define __SEG_GS 1
+#define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32
+#define __GCC_ATOMIC_LONG_LOCK_FREE 2
+#define __SIG_ATOMIC_WIDTH__ 32
+#define __INT_LEAST64_TYPE__ long int
+#define __INT16_TYPE__ short int
+#define __INT_LEAST8_TYPE__ signed char
+#define __DEC32_MAX_EXP__ 97
+#define __INT_FAST8_MAX__ 0x7f
+#define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128
+#define __INTPTR_MAX__ 0x7fffffffffffffffL
+#define __cpp_sized_deallocation 201309
+#define linux 1
+#define __cpp_range_based_for 200907
+#define __FLT64_HAS_QUIET_NAN__ 1
+#define __FLT32_MIN_10_EXP__ (-37)
+#define __SSE2__ 1
+#define __EXCEPTIONS 1
+#define __LDBL_MANT_DIG__ 64
+#define __DBL_HAS_QUIET_NAN__ 1
+#define __FLT64_HAS_INFINITY__ 1
+#define __FLT64X_MAX__ 1.18973149535723176502126385303097021e+4932F64x
+#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+#define __code_model_small__ 1
+#define __cpp_return_type_deduction 201304
+#define __k8__ 1
+#define __INTPTR_TYPE__ long int
+#define __UINT16_TYPE__ short unsigned int
+#define __WCHAR_TYPE__ int
+#define __SIZEOF_FLOAT__ 4
+#define __pic__ 2
+#define __UINTPTR_MAX__ 0xffffffffffffffffUL
+#define __INT_FAST64_WIDTH__ 64
+#define __DEC64_MIN_EXP__ (-382)
+#define __cpp_decltype 200707
+#define __FLT32_DECIMAL_DIG__ 9
+#define __INT_FAST64_MAX__ 0x7fffffffffffffffL
+#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
+#define __FLT_DIG__ 6
+#define __FLT64X_MAX_EXP__ 16384
+#define __UINT_FAST64_TYPE__ long unsigned int
+#define __INT_MAX__ 0x7fffffff
+#define __amd64__ 1
+#define __INT64_TYPE__ long int
+#define __FLT_MAX_EXP__ 128
+#define __ORDER_BIG_ENDIAN__ 4321
+#define __DBL_MANT_DIG__ 53
+#define __cpp_inheriting_constructors 201511
+#define __SIZEOF_FLOAT128__ 16
+#define __INT_LEAST64_MAX__ 0x7fffffffffffffffL
+#define __DEC64_MIN__ 1E-383DD
+#define __WINT_TYPE__ unsigned int
+#define __UINT_LEAST32_TYPE__ unsigned int
+#define __SIZEOF_SHORT__ 2
+#define __SSE__ 1
+#define __LDBL_MIN_EXP__ (-16381)
+#define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64
+#define __WINT_WIDTH__ 32
+#define __INT_LEAST8_MAX__ 0x7f
+#define __FLT32X_MAX_10_EXP__ 308
+#define __SIZEOF_INT128__ 16
+#define __LDBL_MAX_10_EXP__ 4932
+#define __ATOMIC_RELAXED 0
+#define __DBL_EPSILON__ double(2.22044604925031308084726333618164062e-16L)
+#define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128
+#define _LP64 1
+#define __UINT8_C(c) c
+#define __FLT64_MAX_EXP__ 1024
+#define __INT_LEAST32_TYPE__ int
+#define __SIZEOF_WCHAR_T__ 4
+#define __FLT128_HAS_QUIET_NAN__ 1
+#define __INT_FAST8_TYPE__ signed char
+#define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x
+#define __GNUC_STDC_INLINE__ 1
+#define __FLT64_HAS_DENORM__ 1
+#define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32
+#define __DBL_DECIMAL_DIG__ 17
+#define __STDC_UTF_32__ 1
+#define __INT_FAST8_WIDTH__ 8
+#define __FXSR__ 1
+#define __DEC_EVAL_METHOD__ 2
+#define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x
+#define __cpp_runtime_arrays 198712
+#define __UINT64_TYPE__ long unsigned int
+#define __UINT32_C(c) c ## U
+#define __INTMAX_MAX__ 0x7fffffffffffffffL
+#define __cpp_alias_templates 200704
+#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
+#define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F
+#define __INT8_MAX__ 0x7f
+#define __LONG_WIDTH__ 64
+#define __PIC__ 2
+#define __UINT_FAST32_TYPE__ long unsigned int
+#define __CHAR32_TYPE__ unsigned int
+#define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F
+#define __cpp_constexpr 201304
+#define __INT32_TYPE__ int
+#define __SIZEOF_DOUBLE__ 8
+#define __cpp_exceptions 199711
+#define __FLT_MIN_10_EXP__ (-37)
+#define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64
+#define __INT_LEAST32_WIDTH__ 32
+#define __INTMAX_TYPE__ long int
+#define __DEC128_MAX_EXP__ 6145
+#define __FLT32X_HAS_QUIET_NAN__ 1
+#define __ATOMIC_CONSUME 1
+#define __GNUC_MINOR__ 2
+#define __GLIBCXX_TYPE_INT_N_0 __int128
+#define __INT_FAST16_WIDTH__ 64
+#define __UINTMAX_MAX__ 0xffffffffffffffffUL
+#define __DEC32_MANT_DIG__ 7
+#define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x
+#define __DBL_MAX_10_EXP__ 308
+#define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L
+#define __INT16_C(c) c
+#define __cpp_generic_lambdas 201304
+#define __STDC__ 1
+#define __FLT32X_DIG__ 15
+#define __PTRDIFF_TYPE__ long int
+#define __ATOMIC_SEQ_CST 5
+#define __UINT32_TYPE__ unsigned int
+#define __FLT32X_MIN_10_EXP__ (-307)
+#define __UINTPTR_TYPE__ long unsigned int
+#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
+#define __DEC128_MANT_DIG__ 34
+#define __LDBL_MIN_10_EXP__ (-4931)
+#define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128
+#define __SSE_MATH__ 1
+#define __SIZEOF_LONG_LONG__ 8
+#define __cpp_user_defined_literals 200809
+#define __FLT128_DECIMAL_DIG__ 36
+#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
+#define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x
+#define __LDBL_DIG__ 18
+#define __FLT_DECIMAL_DIG__ 9
+#define __UINT_FAST16_MAX__ 0xffffffffffffffffUL
+#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
+#define __INT_LEAST64_WIDTH__ 64
+#define __UINT_FAST8_TYPE__ unsigned char
+#define _GNU_SOURCE 1
+#define __cpp_init_captures 201304
+#define __ATOMIC_ACQ_REL 4
+#define __ATOMIC_RELEASE 3
diff --git a/Implementation/GUI/movetool.o b/Implementation/GUI/movetool.o
new file mode 100644
index 0000000000000000000000000000000000000000..89d70b2c8cf41aecd76edf5b2533fe46e00d5ce0
Binary files /dev/null and b/Implementation/GUI/movetool.o differ
diff --git a/Implementation/GUI/newLayer.o b/Implementation/GUI/newLayer.o
new file mode 100644
index 0000000000000000000000000000000000000000..85168ed731df95ae7de421950e0cb07c4f0c8957
Binary files /dev/null and b/Implementation/GUI/newLayer.o differ
diff --git a/Implementation/GUI/polygon.o b/Implementation/GUI/polygon.o
new file mode 100644
index 0000000000000000000000000000000000000000..68e4fc954de0a0c3e660bddc1245426156aa53dd
Binary files /dev/null and b/Implementation/GUI/polygon.o differ
diff --git a/Implementation/GUI/translationTool.o b/Implementation/GUI/translationTool.o
new file mode 100644
index 0000000000000000000000000000000000000000..22e3af40aa95d690a90a4ae4056113d71200c58a
Binary files /dev/null and b/Implementation/GUI/translationTool.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/ColorDock.o b/Implementation/build-imageviewer-Desktop-Debug/ColorDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..3c3d2a56bbe8b8585ccd5eaa0a7615819dd251db
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/ColorDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/DrawDock.o b/Implementation/build-imageviewer-Desktop-Debug/DrawDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..739fd53a701f1237a29353a1754760d374e222e4
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/DrawDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/LayerDock.o b/Implementation/build-imageviewer-Desktop-Debug/LayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..cb584300355aae1db10570dc83dd9bb7ef1604e7
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/LayerDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/NewLayerDock.o b/Implementation/build-imageviewer-Desktop-Debug/NewLayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..2995786fb0929dc6089176ee95167b25884b332f
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/NewLayerDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_ColorDock.cpp b/Implementation/build-imageviewer-Desktop-Debug/moc_ColorDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3d305c08e47b5c0f4441d73f7592d31b9aa87c41
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Debug/moc_ColorDock.cpp
@@ -0,0 +1,181 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'ColorDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/ColorDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#include <QtCore/QVector>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'ColorDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_ColorDock_t {
+    QByteArrayData data[8];
+    char stringdata0[90];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_ColorDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_ColorDock_t qt_meta_stringdata_ColorDock = {
+    {
+QT_MOC_LITERAL(0, 0, 9), // "ColorDock"
+QT_MOC_LITERAL(1, 10, 13), // "updateVisible"
+QT_MOC_LITERAL(2, 24, 0), // ""
+QT_MOC_LITERAL(3, 25, 12), // "updateLayers"
+QT_MOC_LITERAL(4, 38, 15), // "updateColorVect"
+QT_MOC_LITERAL(5, 54, 13), // "QVector<QRgb>"
+QT_MOC_LITERAL(6, 68, 9), // "colorVect"
+QT_MOC_LITERAL(7, 78, 11) // "changeColor"
+
+    },
+    "ColorDock\0updateVisible\0\0updateLayers\0"
+    "updateColorVect\0QVector<QRgb>\0colorVect\0"
+    "changeColor"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_ColorDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       4,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       3,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   34,    2, 0x06 /* Public */,
+       3,    0,   35,    2, 0x06 /* Public */,
+       4,    1,   36,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       7,    0,   39,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 5,    6,
+
+ // slots: parameters
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void ColorDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<ColorDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateVisible(); break;
+        case 1: _t->updateLayers(); break;
+        case 2: _t->updateColorVect((*reinterpret_cast< QVector<QRgb>(*)>(_a[1]))); break;
+        case 3: _t->changeColor(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (ColorDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateVisible)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (ColorDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateLayers)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (ColorDock::*)(QVector<QRgb> );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateColorVect)) {
+                *result = 2;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject ColorDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_ColorDock.data,
+    qt_meta_data_ColorDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *ColorDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *ColorDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_ColorDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int ColorDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 4)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 4;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 4)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 4;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void ColorDock::updateVisible()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void ColorDock::updateLayers()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void ColorDock::updateColorVect(QVector<QRgb> _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_ColorDock.o b/Implementation/build-imageviewer-Desktop-Debug/moc_ColorDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..49875910e8c907dc323a41f70e85361a4b3023fa
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/moc_ColorDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_DrawDock.cpp b/Implementation/build-imageviewer-Desktop-Debug/moc_DrawDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..67c2cad199bac4a56960beff85ec352cb52c624c
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Debug/moc_DrawDock.cpp
@@ -0,0 +1,224 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'DrawDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/DrawDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'DrawDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_DrawDock_t {
+    QByteArrayData data[16];
+    char stringdata0[141];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_DrawDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_DrawDock_t qt_meta_stringdata_DrawDock = {
+    {
+QT_MOC_LITERAL(0, 0, 8), // "DrawDock"
+QT_MOC_LITERAL(1, 9, 11), // "updateLayer"
+QT_MOC_LITERAL(2, 21, 0), // ""
+QT_MOC_LITERAL(3, 22, 13), // "updateVisible"
+QT_MOC_LITERAL(4, 36, 9), // "drawShowI"
+QT_MOC_LITERAL(5, 46, 5), // "para1"
+QT_MOC_LITERAL(6, 52, 10), // "drawShowII"
+QT_MOC_LITERAL(7, 63, 5), // "para2"
+QT_MOC_LITERAL(8, 69, 6), // "pencil"
+QT_MOC_LITERAL(9, 76, 9), // "startDraw"
+QT_MOC_LITERAL(10, 86, 5), // "lines"
+QT_MOC_LITERAL(11, 92, 13), // "notFilledRect"
+QT_MOC_LITERAL(12, 106, 10), // "filledRect"
+QT_MOC_LITERAL(13, 117, 12), // "setDrawColor"
+QT_MOC_LITERAL(14, 130, 8), // "setWidth"
+QT_MOC_LITERAL(15, 139, 1) // "w"
+
+    },
+    "DrawDock\0updateLayer\0\0updateVisible\0"
+    "drawShowI\0para1\0drawShowII\0para2\0"
+    "pencil\0startDraw\0lines\0notFilledRect\0"
+    "filledRect\0setDrawColor\0setWidth\0w"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_DrawDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+      11,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       4,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   69,    2, 0x06 /* Public */,
+       3,    0,   70,    2, 0x06 /* Public */,
+       4,    1,   71,    2, 0x06 /* Public */,
+       6,    1,   74,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   77,    2, 0x08 /* Private */,
+       9,    0,   78,    2, 0x08 /* Private */,
+      10,    0,   79,    2, 0x08 /* Private */,
+      11,    0,   80,    2, 0x08 /* Private */,
+      12,    0,   81,    2, 0x08 /* Private */,
+      13,    0,   82,    2, 0x08 /* Private */,
+      14,    1,   83,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 5,    2,
+    QMetaType::Void, 0x80000000 | 7,    2,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, QMetaType::Int,   15,
+
+       0        // eod
+};
+
+void DrawDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<DrawDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateLayer(); break;
+        case 1: _t->updateVisible(); break;
+        case 2: _t->drawShowI((*reinterpret_cast< para1(*)>(_a[1]))); break;
+        case 3: _t->drawShowII((*reinterpret_cast< para2(*)>(_a[1]))); break;
+        case 4: _t->pencil(); break;
+        case 5: _t->startDraw(); break;
+        case 6: _t->lines(); break;
+        case 7: _t->notFilledRect(); break;
+        case 8: _t->filledRect(); break;
+        case 9: _t->setDrawColor(); break;
+        case 10: _t->setWidth((*reinterpret_cast< int(*)>(_a[1]))); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (DrawDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::updateLayer)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::updateVisible)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)(para1 );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::drawShowI)) {
+                *result = 2;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)(para2 );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::drawShowII)) {
+                *result = 3;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject DrawDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_DrawDock.data,
+    qt_meta_data_DrawDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *DrawDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *DrawDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_DrawDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int DrawDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 11)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 11;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 11)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 11;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void DrawDock::updateLayer()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void DrawDock::updateVisible()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void DrawDock::drawShowI(para1 _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+
+// SIGNAL 3
+void DrawDock::drawShowII(para2 _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 3, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_DrawDock.o b/Implementation/build-imageviewer-Desktop-Debug/moc_DrawDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..753c3a583807b63f8f14a1a1cfb3e43056fab926
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/moc_DrawDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_LayerDock.cpp b/Implementation/build-imageviewer-Desktop-Debug/moc_LayerDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..58d0752981e93b810e180671f3709f0d29876a0c
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Debug/moc_LayerDock.cpp
@@ -0,0 +1,201 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'LayerDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/LayerDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'LayerDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_LayerDock_t {
+    QByteArrayData data[10];
+    char stringdata0[110];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_LayerDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_LayerDock_t qt_meta_stringdata_LayerDock = {
+    {
+QT_MOC_LITERAL(0, 0, 9), // "LayerDock"
+QT_MOC_LITERAL(1, 10, 15), // "updateLayerDock"
+QT_MOC_LITERAL(2, 26, 0), // ""
+QT_MOC_LITERAL(3, 27, 8), // "newLayer"
+QT_MOC_LITERAL(4, 36, 6), // "update"
+QT_MOC_LITERAL(5, 43, 9), // "getParams"
+QT_MOC_LITERAL(6, 53, 17), // "toolParameters_t*"
+QT_MOC_LITERAL(7, 71, 5), // "param"
+QT_MOC_LITERAL(8, 77, 18), // "changeCurrentLayer"
+QT_MOC_LITERAL(9, 96, 13) // "updateVisible"
+
+    },
+    "LayerDock\0updateLayerDock\0\0newLayer\0"
+    "update\0getParams\0toolParameters_t*\0"
+    "param\0changeCurrentLayer\0updateVisible"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_LayerDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       6,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       4,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   44,    2, 0x06 /* Public */,
+       3,    0,   45,    2, 0x06 /* Public */,
+       4,    0,   46,    2, 0x06 /* Public */,
+       5,    1,   47,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   50,    2, 0x08 /* Private */,
+       9,    0,   51,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 6,    7,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void LayerDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<LayerDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateLayerDock(); break;
+        case 1: _t->newLayer(); break;
+        case 2: _t->update(); break;
+        case 3: _t->getParams((*reinterpret_cast< toolParameters_t*(*)>(_a[1]))); break;
+        case 4: _t->changeCurrentLayer(); break;
+        case 5: _t->updateVisible(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::updateLayerDock)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::newLayer)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::update)) {
+                *result = 2;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)(toolParameters_t * );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::getParams)) {
+                *result = 3;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject LayerDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_LayerDock.data,
+    qt_meta_data_LayerDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *LayerDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *LayerDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_LayerDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int LayerDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 6)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 6;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 6)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 6;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void LayerDock::updateLayerDock()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void LayerDock::newLayer()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void LayerDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 2, nullptr);
+}
+
+// SIGNAL 3
+void LayerDock::getParams(toolParameters_t * _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 3, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_LayerDock.o b/Implementation/build-imageviewer-Desktop-Debug/moc_LayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..f4da1503bc859239ab247eac049b89fa9c1c7df0
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/moc_LayerDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_NewLayerDock.cpp b/Implementation/build-imageviewer-Desktop-Debug/moc_NewLayerDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9914682fe58aae23a9d3152e06154ec5ad6887ec
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Debug/moc_NewLayerDock.cpp
@@ -0,0 +1,228 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'NewLayerDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/NewLayerDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#include <QtCore/QVector>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'NewLayerDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_NewLayerDock_t {
+    QByteArrayData data[20];
+    char stringdata0[235];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_NewLayerDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_NewLayerDock_t qt_meta_stringdata_NewLayerDock = {
+    {
+QT_MOC_LITERAL(0, 0, 12), // "NewLayerDock"
+QT_MOC_LITERAL(1, 13, 14), // "updateHasLayer"
+QT_MOC_LITERAL(2, 28, 0), // ""
+QT_MOC_LITERAL(3, 29, 1), // "b"
+QT_MOC_LITERAL(4, 31, 6), // "update"
+QT_MOC_LITERAL(5, 38, 15), // "setNewColorVect"
+QT_MOC_LITERAL(6, 54, 13), // "QVector<QRgb>"
+QT_MOC_LITERAL(7, 68, 9), // "colorVect"
+QT_MOC_LITERAL(8, 78, 13), // "existingColor"
+QT_MOC_LITERAL(9, 92, 8), // "newColor"
+QT_MOC_LITERAL(10, 101, 15), // "actualColorVect"
+QT_MOC_LITERAL(11, 117, 17), // "standartColorVect"
+QT_MOC_LITERAL(12, 135, 14), // "smallColorVect"
+QT_MOC_LITERAL(13, 150, 15), // "customColorVect"
+QT_MOC_LITERAL(14, 166, 11), // "addNewLayer"
+QT_MOC_LITERAL(15, 178, 11), // "setNewColor"
+QT_MOC_LITERAL(16, 190, 12), // "setNewLayerX"
+QT_MOC_LITERAL(17, 203, 1), // "w"
+QT_MOC_LITERAL(18, 205, 12), // "setNewLayerY"
+QT_MOC_LITERAL(19, 218, 16) // "setNewLayerColor"
+
+    },
+    "NewLayerDock\0updateHasLayer\0\0b\0update\0"
+    "setNewColorVect\0QVector<QRgb>\0colorVect\0"
+    "existingColor\0newColor\0actualColorVect\0"
+    "standartColorVect\0smallColorVect\0"
+    "customColorVect\0addNewLayer\0setNewColor\0"
+    "setNewLayerX\0w\0setNewLayerY\0"
+    "setNewLayerColor"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_NewLayerDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+      14,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       3,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    1,   84,    2, 0x06 /* Public */,
+       4,    0,   87,    2, 0x06 /* Public */,
+       5,    1,   88,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   91,    2, 0x08 /* Private */,
+       9,    0,   92,    2, 0x08 /* Private */,
+      10,    0,   93,    2, 0x08 /* Private */,
+      11,    0,   94,    2, 0x08 /* Private */,
+      12,    0,   95,    2, 0x08 /* Private */,
+      13,    0,   96,    2, 0x08 /* Private */,
+      14,    0,   97,    2, 0x08 /* Private */,
+      15,    0,   98,    2, 0x08 /* Private */,
+      16,    1,   99,    2, 0x08 /* Private */,
+      18,    1,  102,    2, 0x08 /* Private */,
+      19,    0,  105,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void, QMetaType::Bool,    3,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 6,    7,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, QMetaType::Int,   17,
+    QMetaType::Void, QMetaType::Int,   17,
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void NewLayerDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<NewLayerDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateHasLayer((*reinterpret_cast< bool(*)>(_a[1]))); break;
+        case 1: _t->update(); break;
+        case 2: _t->setNewColorVect((*reinterpret_cast< QVector<QRgb>(*)>(_a[1]))); break;
+        case 3: _t->existingColor(); break;
+        case 4: _t->newColor(); break;
+        case 5: _t->actualColorVect(); break;
+        case 6: _t->standartColorVect(); break;
+        case 7: _t->smallColorVect(); break;
+        case 8: _t->customColorVect(); break;
+        case 9: _t->addNewLayer(); break;
+        case 10: _t->setNewColor(); break;
+        case 11: _t->setNewLayerX((*reinterpret_cast< int(*)>(_a[1]))); break;
+        case 12: _t->setNewLayerY((*reinterpret_cast< int(*)>(_a[1]))); break;
+        case 13: _t->setNewLayerColor(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (NewLayerDock::*)(bool );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::updateHasLayer)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (NewLayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::update)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (NewLayerDock::*)(QVector<QRgb> );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::setNewColorVect)) {
+                *result = 2;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject NewLayerDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_NewLayerDock.data,
+    qt_meta_data_NewLayerDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *NewLayerDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *NewLayerDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_NewLayerDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int NewLayerDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 14)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 14;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 14)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 14;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void NewLayerDock::updateHasLayer(bool _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 0, _a);
+}
+
+// SIGNAL 1
+void NewLayerDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void NewLayerDock::setNewColorVect(QVector<QRgb> _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_NewLayerDock.o b/Implementation/build-imageviewer-Desktop-Debug/moc_NewLayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..28ca25c779633c2f76a52ea42592df0ad4413231
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/moc_NewLayerDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_TranslationDock.cpp b/Implementation/build-imageviewer-Desktop-Debug/moc_TranslationDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..41ebfbc6fce1e7fd115d2d4bdd1dc1f5088a6f10
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Debug/moc_TranslationDock.cpp
@@ -0,0 +1,162 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'TranslationDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/TranslationDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'TranslationDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_TranslationDock_t {
+    QByteArrayData data[7];
+    char stringdata0[73];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_TranslationDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_TranslationDock_t qt_meta_stringdata_TranslationDock = {
+    {
+QT_MOC_LITERAL(0, 0, 15), // "TranslationDock"
+QT_MOC_LITERAL(1, 16, 9), // "getParams"
+QT_MOC_LITERAL(2, 26, 0), // ""
+QT_MOC_LITERAL(3, 27, 17), // "toolParameters_t*"
+QT_MOC_LITERAL(4, 45, 5), // "param"
+QT_MOC_LITERAL(5, 51, 6), // "update"
+QT_MOC_LITERAL(6, 58, 14) // "doTranslationI"
+
+    },
+    "TranslationDock\0getParams\0\0toolParameters_t*\0"
+    "param\0update\0doTranslationI"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_TranslationDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       3,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       2,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    1,   29,    2, 0x06 /* Public */,
+       5,    0,   32,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       6,    0,   33,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void, 0x80000000 | 3,    4,
+    QMetaType::Void,
+
+ // slots: parameters
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void TranslationDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<TranslationDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->getParams((*reinterpret_cast< toolParameters_t*(*)>(_a[1]))); break;
+        case 1: _t->update(); break;
+        case 2: _t->doTranslationI(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (TranslationDock::*)(toolParameters_t * );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TranslationDock::getParams)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (TranslationDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TranslationDock::update)) {
+                *result = 1;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject TranslationDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_TranslationDock.data,
+    qt_meta_data_TranslationDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *TranslationDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *TranslationDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_TranslationDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int TranslationDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 3)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 3;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 3)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 3;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void TranslationDock::getParams(toolParameters_t * _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 0, _a);
+}
+
+// SIGNAL 1
+void TranslationDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Debug/moc_TranslationDock.o b/Implementation/build-imageviewer-Desktop-Debug/moc_TranslationDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..41ca5c072f0c4f8692ffd8f5bb0fdf0e1e5fe450
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Debug/moc_TranslationDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/ColorDock.o b/Implementation/build-imageviewer-Desktop-Release/ColorDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..ab40f11eb6c5e6e8f55a63ccfac3825fcc04cf17
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/ColorDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/DrawDock.o b/Implementation/build-imageviewer-Desktop-Release/DrawDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..4f7f8529a2ab0038b53c280ea0064548720ba9ad
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/DrawDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/LayerDock.o b/Implementation/build-imageviewer-Desktop-Release/LayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..0b18837570b7c18b8767037bc93c13f9c471d5f9
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/LayerDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/NewLayerDock.o b/Implementation/build-imageviewer-Desktop-Release/NewLayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..cde74c1d7937193e236c968396d5a528201a7993
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/NewLayerDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/imageviewer b/Implementation/build-imageviewer-Desktop-Release/imageviewer
new file mode 100755
index 0000000000000000000000000000000000000000..cdb22d09dd0d2fe6ad59a0f33f3f916f4aaab581
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/imageviewer differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_ColorDock.cpp b/Implementation/build-imageviewer-Desktop-Release/moc_ColorDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3d305c08e47b5c0f4441d73f7592d31b9aa87c41
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Release/moc_ColorDock.cpp
@@ -0,0 +1,181 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'ColorDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/ColorDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#include <QtCore/QVector>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'ColorDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_ColorDock_t {
+    QByteArrayData data[8];
+    char stringdata0[90];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_ColorDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_ColorDock_t qt_meta_stringdata_ColorDock = {
+    {
+QT_MOC_LITERAL(0, 0, 9), // "ColorDock"
+QT_MOC_LITERAL(1, 10, 13), // "updateVisible"
+QT_MOC_LITERAL(2, 24, 0), // ""
+QT_MOC_LITERAL(3, 25, 12), // "updateLayers"
+QT_MOC_LITERAL(4, 38, 15), // "updateColorVect"
+QT_MOC_LITERAL(5, 54, 13), // "QVector<QRgb>"
+QT_MOC_LITERAL(6, 68, 9), // "colorVect"
+QT_MOC_LITERAL(7, 78, 11) // "changeColor"
+
+    },
+    "ColorDock\0updateVisible\0\0updateLayers\0"
+    "updateColorVect\0QVector<QRgb>\0colorVect\0"
+    "changeColor"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_ColorDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       4,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       3,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   34,    2, 0x06 /* Public */,
+       3,    0,   35,    2, 0x06 /* Public */,
+       4,    1,   36,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       7,    0,   39,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 5,    6,
+
+ // slots: parameters
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void ColorDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<ColorDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateVisible(); break;
+        case 1: _t->updateLayers(); break;
+        case 2: _t->updateColorVect((*reinterpret_cast< QVector<QRgb>(*)>(_a[1]))); break;
+        case 3: _t->changeColor(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (ColorDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateVisible)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (ColorDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateLayers)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (ColorDock::*)(QVector<QRgb> );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ColorDock::updateColorVect)) {
+                *result = 2;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject ColorDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_ColorDock.data,
+    qt_meta_data_ColorDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *ColorDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *ColorDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_ColorDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int ColorDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 4)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 4;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 4)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 4;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void ColorDock::updateVisible()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void ColorDock::updateLayers()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void ColorDock::updateColorVect(QVector<QRgb> _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_ColorDock.o b/Implementation/build-imageviewer-Desktop-Release/moc_ColorDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..8f9e1d0e0dcc96d8669f013a19b4379f701e9b33
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/moc_ColorDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_DrawDock.cpp b/Implementation/build-imageviewer-Desktop-Release/moc_DrawDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..67c2cad199bac4a56960beff85ec352cb52c624c
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Release/moc_DrawDock.cpp
@@ -0,0 +1,224 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'DrawDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/DrawDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'DrawDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_DrawDock_t {
+    QByteArrayData data[16];
+    char stringdata0[141];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_DrawDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_DrawDock_t qt_meta_stringdata_DrawDock = {
+    {
+QT_MOC_LITERAL(0, 0, 8), // "DrawDock"
+QT_MOC_LITERAL(1, 9, 11), // "updateLayer"
+QT_MOC_LITERAL(2, 21, 0), // ""
+QT_MOC_LITERAL(3, 22, 13), // "updateVisible"
+QT_MOC_LITERAL(4, 36, 9), // "drawShowI"
+QT_MOC_LITERAL(5, 46, 5), // "para1"
+QT_MOC_LITERAL(6, 52, 10), // "drawShowII"
+QT_MOC_LITERAL(7, 63, 5), // "para2"
+QT_MOC_LITERAL(8, 69, 6), // "pencil"
+QT_MOC_LITERAL(9, 76, 9), // "startDraw"
+QT_MOC_LITERAL(10, 86, 5), // "lines"
+QT_MOC_LITERAL(11, 92, 13), // "notFilledRect"
+QT_MOC_LITERAL(12, 106, 10), // "filledRect"
+QT_MOC_LITERAL(13, 117, 12), // "setDrawColor"
+QT_MOC_LITERAL(14, 130, 8), // "setWidth"
+QT_MOC_LITERAL(15, 139, 1) // "w"
+
+    },
+    "DrawDock\0updateLayer\0\0updateVisible\0"
+    "drawShowI\0para1\0drawShowII\0para2\0"
+    "pencil\0startDraw\0lines\0notFilledRect\0"
+    "filledRect\0setDrawColor\0setWidth\0w"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_DrawDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+      11,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       4,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   69,    2, 0x06 /* Public */,
+       3,    0,   70,    2, 0x06 /* Public */,
+       4,    1,   71,    2, 0x06 /* Public */,
+       6,    1,   74,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   77,    2, 0x08 /* Private */,
+       9,    0,   78,    2, 0x08 /* Private */,
+      10,    0,   79,    2, 0x08 /* Private */,
+      11,    0,   80,    2, 0x08 /* Private */,
+      12,    0,   81,    2, 0x08 /* Private */,
+      13,    0,   82,    2, 0x08 /* Private */,
+      14,    1,   83,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 5,    2,
+    QMetaType::Void, 0x80000000 | 7,    2,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, QMetaType::Int,   15,
+
+       0        // eod
+};
+
+void DrawDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<DrawDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateLayer(); break;
+        case 1: _t->updateVisible(); break;
+        case 2: _t->drawShowI((*reinterpret_cast< para1(*)>(_a[1]))); break;
+        case 3: _t->drawShowII((*reinterpret_cast< para2(*)>(_a[1]))); break;
+        case 4: _t->pencil(); break;
+        case 5: _t->startDraw(); break;
+        case 6: _t->lines(); break;
+        case 7: _t->notFilledRect(); break;
+        case 8: _t->filledRect(); break;
+        case 9: _t->setDrawColor(); break;
+        case 10: _t->setWidth((*reinterpret_cast< int(*)>(_a[1]))); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (DrawDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::updateLayer)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::updateVisible)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)(para1 );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::drawShowI)) {
+                *result = 2;
+                return;
+            }
+        }
+        {
+            using _t = void (DrawDock::*)(para2 );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DrawDock::drawShowII)) {
+                *result = 3;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject DrawDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_DrawDock.data,
+    qt_meta_data_DrawDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *DrawDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *DrawDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_DrawDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int DrawDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 11)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 11;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 11)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 11;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void DrawDock::updateLayer()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void DrawDock::updateVisible()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void DrawDock::drawShowI(para1 _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+
+// SIGNAL 3
+void DrawDock::drawShowII(para2 _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 3, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_DrawDock.o b/Implementation/build-imageviewer-Desktop-Release/moc_DrawDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..aa11770730bd1e53f322bed7e7aeb721db1f5a6d
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/moc_DrawDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_LayerDock.cpp b/Implementation/build-imageviewer-Desktop-Release/moc_LayerDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..58d0752981e93b810e180671f3709f0d29876a0c
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Release/moc_LayerDock.cpp
@@ -0,0 +1,201 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'LayerDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/LayerDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'LayerDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_LayerDock_t {
+    QByteArrayData data[10];
+    char stringdata0[110];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_LayerDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_LayerDock_t qt_meta_stringdata_LayerDock = {
+    {
+QT_MOC_LITERAL(0, 0, 9), // "LayerDock"
+QT_MOC_LITERAL(1, 10, 15), // "updateLayerDock"
+QT_MOC_LITERAL(2, 26, 0), // ""
+QT_MOC_LITERAL(3, 27, 8), // "newLayer"
+QT_MOC_LITERAL(4, 36, 6), // "update"
+QT_MOC_LITERAL(5, 43, 9), // "getParams"
+QT_MOC_LITERAL(6, 53, 17), // "toolParameters_t*"
+QT_MOC_LITERAL(7, 71, 5), // "param"
+QT_MOC_LITERAL(8, 77, 18), // "changeCurrentLayer"
+QT_MOC_LITERAL(9, 96, 13) // "updateVisible"
+
+    },
+    "LayerDock\0updateLayerDock\0\0newLayer\0"
+    "update\0getParams\0toolParameters_t*\0"
+    "param\0changeCurrentLayer\0updateVisible"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_LayerDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       6,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       4,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    0,   44,    2, 0x06 /* Public */,
+       3,    0,   45,    2, 0x06 /* Public */,
+       4,    0,   46,    2, 0x06 /* Public */,
+       5,    1,   47,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   50,    2, 0x08 /* Private */,
+       9,    0,   51,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 6,    7,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void LayerDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<LayerDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateLayerDock(); break;
+        case 1: _t->newLayer(); break;
+        case 2: _t->update(); break;
+        case 3: _t->getParams((*reinterpret_cast< toolParameters_t*(*)>(_a[1]))); break;
+        case 4: _t->changeCurrentLayer(); break;
+        case 5: _t->updateVisible(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::updateLayerDock)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::newLayer)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::update)) {
+                *result = 2;
+                return;
+            }
+        }
+        {
+            using _t = void (LayerDock::*)(toolParameters_t * );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&LayerDock::getParams)) {
+                *result = 3;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject LayerDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_LayerDock.data,
+    qt_meta_data_LayerDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *LayerDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *LayerDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_LayerDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int LayerDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 6)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 6;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 6)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 6;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void LayerDock::updateLayerDock()
+{
+    QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
+}
+
+// SIGNAL 1
+void LayerDock::newLayer()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void LayerDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 2, nullptr);
+}
+
+// SIGNAL 3
+void LayerDock::getParams(toolParameters_t * _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 3, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_LayerDock.o b/Implementation/build-imageviewer-Desktop-Release/moc_LayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..a40835e4635e163341d9b08a16418fd1fe9838df
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/moc_LayerDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_NewLayerDock.cpp b/Implementation/build-imageviewer-Desktop-Release/moc_NewLayerDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9914682fe58aae23a9d3152e06154ec5ad6887ec
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Release/moc_NewLayerDock.cpp
@@ -0,0 +1,228 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'NewLayerDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/NewLayerDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#include <QtCore/QVector>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'NewLayerDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_NewLayerDock_t {
+    QByteArrayData data[20];
+    char stringdata0[235];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_NewLayerDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_NewLayerDock_t qt_meta_stringdata_NewLayerDock = {
+    {
+QT_MOC_LITERAL(0, 0, 12), // "NewLayerDock"
+QT_MOC_LITERAL(1, 13, 14), // "updateHasLayer"
+QT_MOC_LITERAL(2, 28, 0), // ""
+QT_MOC_LITERAL(3, 29, 1), // "b"
+QT_MOC_LITERAL(4, 31, 6), // "update"
+QT_MOC_LITERAL(5, 38, 15), // "setNewColorVect"
+QT_MOC_LITERAL(6, 54, 13), // "QVector<QRgb>"
+QT_MOC_LITERAL(7, 68, 9), // "colorVect"
+QT_MOC_LITERAL(8, 78, 13), // "existingColor"
+QT_MOC_LITERAL(9, 92, 8), // "newColor"
+QT_MOC_LITERAL(10, 101, 15), // "actualColorVect"
+QT_MOC_LITERAL(11, 117, 17), // "standartColorVect"
+QT_MOC_LITERAL(12, 135, 14), // "smallColorVect"
+QT_MOC_LITERAL(13, 150, 15), // "customColorVect"
+QT_MOC_LITERAL(14, 166, 11), // "addNewLayer"
+QT_MOC_LITERAL(15, 178, 11), // "setNewColor"
+QT_MOC_LITERAL(16, 190, 12), // "setNewLayerX"
+QT_MOC_LITERAL(17, 203, 1), // "w"
+QT_MOC_LITERAL(18, 205, 12), // "setNewLayerY"
+QT_MOC_LITERAL(19, 218, 16) // "setNewLayerColor"
+
+    },
+    "NewLayerDock\0updateHasLayer\0\0b\0update\0"
+    "setNewColorVect\0QVector<QRgb>\0colorVect\0"
+    "existingColor\0newColor\0actualColorVect\0"
+    "standartColorVect\0smallColorVect\0"
+    "customColorVect\0addNewLayer\0setNewColor\0"
+    "setNewLayerX\0w\0setNewLayerY\0"
+    "setNewLayerColor"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_NewLayerDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+      14,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       3,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    1,   84,    2, 0x06 /* Public */,
+       4,    0,   87,    2, 0x06 /* Public */,
+       5,    1,   88,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       8,    0,   91,    2, 0x08 /* Private */,
+       9,    0,   92,    2, 0x08 /* Private */,
+      10,    0,   93,    2, 0x08 /* Private */,
+      11,    0,   94,    2, 0x08 /* Private */,
+      12,    0,   95,    2, 0x08 /* Private */,
+      13,    0,   96,    2, 0x08 /* Private */,
+      14,    0,   97,    2, 0x08 /* Private */,
+      15,    0,   98,    2, 0x08 /* Private */,
+      16,    1,   99,    2, 0x08 /* Private */,
+      18,    1,  102,    2, 0x08 /* Private */,
+      19,    0,  105,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void, QMetaType::Bool,    3,
+    QMetaType::Void,
+    QMetaType::Void, 0x80000000 | 6,    7,
+
+ // slots: parameters
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void,
+    QMetaType::Void, QMetaType::Int,   17,
+    QMetaType::Void, QMetaType::Int,   17,
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void NewLayerDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<NewLayerDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->updateHasLayer((*reinterpret_cast< bool(*)>(_a[1]))); break;
+        case 1: _t->update(); break;
+        case 2: _t->setNewColorVect((*reinterpret_cast< QVector<QRgb>(*)>(_a[1]))); break;
+        case 3: _t->existingColor(); break;
+        case 4: _t->newColor(); break;
+        case 5: _t->actualColorVect(); break;
+        case 6: _t->standartColorVect(); break;
+        case 7: _t->smallColorVect(); break;
+        case 8: _t->customColorVect(); break;
+        case 9: _t->addNewLayer(); break;
+        case 10: _t->setNewColor(); break;
+        case 11: _t->setNewLayerX((*reinterpret_cast< int(*)>(_a[1]))); break;
+        case 12: _t->setNewLayerY((*reinterpret_cast< int(*)>(_a[1]))); break;
+        case 13: _t->setNewLayerColor(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (NewLayerDock::*)(bool );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::updateHasLayer)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (NewLayerDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::update)) {
+                *result = 1;
+                return;
+            }
+        }
+        {
+            using _t = void (NewLayerDock::*)(QVector<QRgb> );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&NewLayerDock::setNewColorVect)) {
+                *result = 2;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject NewLayerDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_NewLayerDock.data,
+    qt_meta_data_NewLayerDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *NewLayerDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *NewLayerDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_NewLayerDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int NewLayerDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 14)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 14;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 14)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 14;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void NewLayerDock::updateHasLayer(bool _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 0, _a);
+}
+
+// SIGNAL 1
+void NewLayerDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+
+// SIGNAL 2
+void NewLayerDock::setNewColorVect(QVector<QRgb> _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_NewLayerDock.o b/Implementation/build-imageviewer-Desktop-Release/moc_NewLayerDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..e573f0406b33b128c902706c7357633849d86851
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/moc_NewLayerDock.o differ
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_TranslationDock.cpp b/Implementation/build-imageviewer-Desktop-Release/moc_TranslationDock.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..41ebfbc6fce1e7fd115d2d4bdd1dc1f5088a6f10
--- /dev/null
+++ b/Implementation/build-imageviewer-Desktop-Release/moc_TranslationDock.cpp
@@ -0,0 +1,162 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'TranslationDock.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <memory>
+#include "../GUI/TranslationDock.h"
+#include <QtCore/qbytearray.h>
+#include <QtCore/qmetatype.h>
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'TranslationDock.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.13.2. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+struct qt_meta_stringdata_TranslationDock_t {
+    QByteArrayData data[7];
+    char stringdata0[73];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+    Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+    qptrdiff(offsetof(qt_meta_stringdata_TranslationDock_t, stringdata0) + ofs \
+        - idx * sizeof(QByteArrayData)) \
+    )
+static const qt_meta_stringdata_TranslationDock_t qt_meta_stringdata_TranslationDock = {
+    {
+QT_MOC_LITERAL(0, 0, 15), // "TranslationDock"
+QT_MOC_LITERAL(1, 16, 9), // "getParams"
+QT_MOC_LITERAL(2, 26, 0), // ""
+QT_MOC_LITERAL(3, 27, 17), // "toolParameters_t*"
+QT_MOC_LITERAL(4, 45, 5), // "param"
+QT_MOC_LITERAL(5, 51, 6), // "update"
+QT_MOC_LITERAL(6, 58, 14) // "doTranslationI"
+
+    },
+    "TranslationDock\0getParams\0\0toolParameters_t*\0"
+    "param\0update\0doTranslationI"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_TranslationDock[] = {
+
+ // content:
+       8,       // revision
+       0,       // classname
+       0,    0, // classinfo
+       3,   14, // methods
+       0,    0, // properties
+       0,    0, // enums/sets
+       0,    0, // constructors
+       0,       // flags
+       2,       // signalCount
+
+ // signals: name, argc, parameters, tag, flags
+       1,    1,   29,    2, 0x06 /* Public */,
+       5,    0,   32,    2, 0x06 /* Public */,
+
+ // slots: name, argc, parameters, tag, flags
+       6,    0,   33,    2, 0x08 /* Private */,
+
+ // signals: parameters
+    QMetaType::Void, 0x80000000 | 3,    4,
+    QMetaType::Void,
+
+ // slots: parameters
+    QMetaType::Void,
+
+       0        // eod
+};
+
+void TranslationDock::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        auto *_t = static_cast<TranslationDock *>(_o);
+        Q_UNUSED(_t)
+        switch (_id) {
+        case 0: _t->getParams((*reinterpret_cast< toolParameters_t*(*)>(_a[1]))); break;
+        case 1: _t->update(); break;
+        case 2: _t->doTranslationI(); break;
+        default: ;
+        }
+    } else if (_c == QMetaObject::IndexOfMethod) {
+        int *result = reinterpret_cast<int *>(_a[0]);
+        {
+            using _t = void (TranslationDock::*)(toolParameters_t * );
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TranslationDock::getParams)) {
+                *result = 0;
+                return;
+            }
+        }
+        {
+            using _t = void (TranslationDock::*)();
+            if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TranslationDock::update)) {
+                *result = 1;
+                return;
+            }
+        }
+    }
+}
+
+QT_INIT_METAOBJECT const QMetaObject TranslationDock::staticMetaObject = { {
+    &QObject::staticMetaObject,
+    qt_meta_stringdata_TranslationDock.data,
+    qt_meta_data_TranslationDock,
+    qt_static_metacall,
+    nullptr,
+    nullptr
+} };
+
+
+const QMetaObject *TranslationDock::metaObject() const
+{
+    return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *TranslationDock::qt_metacast(const char *_clname)
+{
+    if (!_clname) return nullptr;
+    if (!strcmp(_clname, qt_meta_stringdata_TranslationDock.stringdata0))
+        return static_cast<void*>(this);
+    return QObject::qt_metacast(_clname);
+}
+
+int TranslationDock::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+    _id = QObject::qt_metacall(_c, _id, _a);
+    if (_id < 0)
+        return _id;
+    if (_c == QMetaObject::InvokeMetaMethod) {
+        if (_id < 3)
+            qt_static_metacall(this, _c, _id, _a);
+        _id -= 3;
+    } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+        if (_id < 3)
+            *reinterpret_cast<int*>(_a[0]) = -1;
+        _id -= 3;
+    }
+    return _id;
+}
+
+// SIGNAL 0
+void TranslationDock::getParams(toolParameters_t * _t1)
+{
+    void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
+    QMetaObject::activate(this, &staticMetaObject, 0, _a);
+}
+
+// SIGNAL 1
+void TranslationDock::update()
+{
+    QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
+}
+QT_WARNING_POP
+QT_END_MOC_NAMESPACE
diff --git a/Implementation/build-imageviewer-Desktop-Release/moc_TranslationDock.o b/Implementation/build-imageviewer-Desktop-Release/moc_TranslationDock.o
new file mode 100644
index 0000000000000000000000000000000000000000..f23b2e2d9044dcd4596f905a7c6614a44e84f975
Binary files /dev/null and b/Implementation/build-imageviewer-Desktop-Release/moc_TranslationDock.o differ
diff --git a/SE_Gr3.zip b/SE_Gr3.zip
new file mode 100644
index 0000000000000000000000000000000000000000..91198e0cb5a11d4a64e60d36fa507055aed84e3c
Binary files /dev/null and b/SE_Gr3.zip differ
diff --git a/SE_Gr3/.zip b/SE_Gr3/.zip
new file mode 100644
index 0000000000000000000000000000000000000000..91198e0cb5a11d4a64e60d36fa507055aed84e3c
Binary files /dev/null and b/SE_Gr3/.zip differ
diff --git a/SE_Gr3/documentation/DrawDockZD.svg b/SE_Gr3/documentation/DrawDockZD.svg
new file mode 100755
index 0000000000000000000000000000000000000000..ca0925c105bedcbe7da9213151dfcc1029eb9019
--- /dev/null
+++ b/SE_Gr3/documentation/DrawDockZD.svg
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg height="556" version="1.1" width="732" xmlns="http://www.w3.org/2000/svg">
+<rect fill="#00ff" height="528" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="704" x="14" y="14"/>
+<rect fill="#ffffff" height="528" rx="16" ry="16" stroke="#000000" stroke-width="1" width="704" x="14" y="14"/>
+<rect fill="#ffffff" height="526" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="702" x="15" y="15"/>
+<text font-family="Dialog" font-size="12" x="335" y="27">
+DrawDock</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="14" x2="717" y1="37" y2="37"/>
+<ellipse cx="190" cy="78" fill="#000000" rx="8.0" ry="8.0" stroke="#000000" stroke-width="1"/>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="70" x="294" y="134"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="70" x="294" y="134"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="68" x="295" y="135"/>
+<text font-family="Dialog" font-size="12" x="310" y="147">
+Pencil</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="294" x2="363" y1="157" y2="157"/>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="72" x="406" y="246"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="72" x="406" y="246"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="70" x="407" y="247"/>
+<text font-family="Dialog" font-size="12" x="426" y="259">
+Lines</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="406" x2="477" y1="269" y2="269"/>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="113" x="118" y="246"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="113" x="118" y="246"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="111" x="119" y="247"/>
+<text font-family="Dialog" font-size="12" x="150" y="259">
+Polygon</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="118" x2="230" y1="269" y2="269"/>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="110" x="286" y="382"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="110" x="286" y="382"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="108" x="287" y="383"/>
+<text font-family="Dialog" font-size="12" x="292" y="395">
+Inverse Polygon</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="286" x2="395" y1="405" y2="405"/>
+<polyline fill="none" points="197,81 294,134" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="280" x2="294" y1="134" y2="134"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="286" x2="294" y1="122" y2="134"/>
+<text font-family="Dialog" font-size="12" x="212" y="83">
+open DrawDock</text>
+<polyline fill="none" points="310,177 310,382" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="303" x2="310" y1="370" y2="382"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="317" x2="310" y1="370" y2="382"/>
+<text font-family="Dialog" font-size="12" x="250" y="211">
+inversePolygon</text>
+<polyline fill="none" points="342,382 342,177" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="349" x2="342" y1="189" y2="177"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="335" x2="342" y1="189" y2="177"/>
+<text font-family="Dialog" font-size="12" x="344" y="350">
+pencil</text>
+<polyline fill="none" points="230,262 406,262" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="394" x2="406" y1="269" y2="262"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="394" x2="406" y1="255" y2="262"/>
+<text font-family="Dialog" font-size="12" x="245" y="257">
+lines</text>
+<polyline fill="none" points="406,278 230,278" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="242" x2="230" y1="271" y2="278"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="242" x2="230" y1="285" y2="278"/>
+<text font-family="Dialog" font-size="12" x="348" y="294">
+polygon</text>
+<polyline fill="none" points="222,246 222,174 294,174" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="294" y1="181" y2="174"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="294" y1="167" y2="174"/>
+<text font-family="Dialog" font-size="12" x="224" y="238">
+pencil</text>
+<polyline fill="none" points="294,158 206,158 206,246" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="199" x2="206" y1="234" y2="246"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="213" x2="206" y1="234" y2="246"/>
+<text font-family="Dialog" font-size="12" x="221" y="152">
+polygon</text>
+<polyline fill="none" points="363,174 438,174 438,246" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="431" x2="438" y1="234" y2="246"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="445" x2="438" y1="234" y2="246"/>
+<text font-family="Dialog" font-size="12" x="374" y="189">
+lines</text>
+<polyline fill="none" points="462,246 462,158 363,158" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="375" x2="363" y1="151" y2="158"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="375" x2="363" y1="165" y2="158"/>
+<text font-family="Dialog" font-size="12" x="464" y="225">
+pencil</text>
+<polyline fill="none" points="446,289 446,390 395,390" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="407" x2="395" y1="383" y2="390"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="407" x2="395" y1="397" y2="390"/>
+<text font-family="Dialog" font-size="12" x="366" y="319">
+inversePolygon</text>
+<polyline fill="none" points="395,414 470,414 470,289" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="477" x2="470" y1="301" y2="289"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="463" x2="470" y1="301" y2="289"/>
+<text font-family="Dialog" font-size="12" x="433" y="428">
+lines</text>
+<polyline fill="none" points="206,289 206,406 286,406" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="274" x2="286" y1="413" y2="406"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="274" x2="286" y1="399" y2="406"/>
+<text font-family="Dialog" font-size="12" x="123" y="318">
+inversePolygon</text>
+<polyline fill="none" points="286,382 222,382 222,289" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="229" x2="222" y1="301" y2="289"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="215" x2="222" y1="301" y2="289"/>
+<text font-family="Dialog" font-size="12" x="225" y="369">
+polygon</text>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="113" x="374" y="54"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="113" x="374" y="54"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="111" x="375" y="55"/>
+<text font-family="Dialog" font-size="12" x="395" y="67">
+draw pencil</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="374" x2="486" y1="77" y2="77"/>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="113" x="558" y="262"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="113" x="558" y="262"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="111" x="559" y="263"/>
+<text font-family="Dialog" font-size="12" x="583" y="275">
+drwa lines</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="558" x2="670" y1="285" y2="285"/>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="144" x="294" y="494"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="144" x="294" y="494"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="142" x="295" y="495"/>
+<text font-family="Dialog" font-size="12" x="300" y="507">
+draw inverse polygon</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="294" x2="437" y1="517" y2="517"/>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="95" x="22" y="142"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="95" x="22" y="142"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="93" x="23" y="143"/>
+<text font-family="Dialog" font-size="12" x="28" y="155">
+draw polygon</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="22" x2="116" y1="165" y2="165"/>
+<polyline fill="none" points="374,94 350,94 350,134" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="343" x2="350" y1="122" y2="134"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="357" x2="350" y1="122" y2="134"/>
+<text font-family="Dialog" font-size="12" x="318" y="100">
+stop</text>
+<polyline fill="none" points="363,142 454,142 454,97" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="461" x2="454" y1="109" y2="97"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="447" x2="454" y1="109" y2="97"/>
+<text font-family="Dialog" font-size="12" x="416" y="137">
+start</text>
+<polyline fill="none" points="116,182 142,182 142,246" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="135" x2="142" y1="234" y2="246"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="149" x2="142" y1="234" y2="246"/>
+<text font-family="Dialog" font-size="12" x="145" y="191">
+stop</text>
+<polyline fill="none" points="118,262 62,262 62,185" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="69" x2="62" y1="197" y2="185"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="55" x2="62" y1="197" y2="185"/>
+<text font-family="Dialog" font-size="12" x="70" y="277">
+start</text>
+<polyline fill="none" points="342,425 342,494" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="335" x2="342" y1="482" y2="494"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="349" x2="342" y1="482" y2="494"/>
+<text font-family="Dialog" font-size="12" x="309" y="466">
+start</text>
+<polyline fill="none" points="366,494 366,425" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="373" x2="366" y1="437" y2="425"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="359" x2="366" y1="437" y2="425"/>
+<text font-family="Dialog" font-size="12" x="370" y="466">
+stop</text>
+<polyline fill="none" points="477,262 558,262" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="546" x2="558" y1="269" y2="262"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="546" x2="558" y1="255" y2="262"/>
+<text font-family="Dialog" font-size="12" x="502" y="257">
+start</text>
+<polyline fill="none" points="558,286 477,286" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="489" x2="477" y1="279" y2="286"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="489" x2="477" y1="293" y2="286"/>
+<text font-family="Dialog" font-size="12" x="504" y="281">
+stop</text>
+</svg>
diff --git a/SE_Gr3/documentation/MakeShapedSD.svg b/SE_Gr3/documentation/MakeShapedSD.svg
new file mode 100755
index 0000000000000000000000000000000000000000..bab194ca08d0e7620609e778e43cb088f24a75b6
--- /dev/null
+++ b/SE_Gr3/documentation/MakeShapedSD.svg
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg height="500" version="1.1" width="892" xmlns="http://www.w3.org/2000/svg">
+<rect fill="#ffffff" height="472" stroke="#ffffff" stroke-width="1" width="752" x="126" y="14"/>
+<rect fill="none" height="472" stroke="#000000" stroke-width="1" width="752" x="126" y="14"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="111" y2="116"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="121" y2="126"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="131" y2="136"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="141" y2="146"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="151" y2="156"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="161" y2="166"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="171" y2="176"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="181" y2="186"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="191" y2="196"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="201" y2="206"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="211" y2="216"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="221" y2="226"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="231" y2="236"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="241" y2="246"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="251" y2="256"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="261" y2="266"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="271" y2="276"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="281" y2="286"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="291" y2="296"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="301" y2="306"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="311" y2="316"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="321" y2="326"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="331" y2="336"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="341" y2="346"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="351" y2="356"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="361" y2="366"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="371" y2="376"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="381" y2="386"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="391" y2="396"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="401" y2="406"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="411" y2="416"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="421" y2="426"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="281" x2="281" y1="431" y2="436"/>
+<rect fill="#ffffff" height="330" stroke="#ffffff" stroke-width="1" width="20" x="271" y="111"/>
+<rect fill="none" height="330" stroke="#000000" stroke-width="1" width="20" x="271" y="111"/>
+<rect fill="#ffffff" height="50" stroke="#ffffff" stroke-width="1" width="150" x="206" y="62"/>
+<rect fill="none" height="50" stroke="#000000" stroke-width="1" width="150" x="206" y="62"/>
+<text font-family="Dialog" font-size="12" x="239" y="75">
+:ImageViewer</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="111" y2="116"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="121" y2="126"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="131" y2="136"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="141" y2="146"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="151" y2="156"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="161" y2="166"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="171" y2="176"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="181" y2="186"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="191" y2="196"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="201" y2="206"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="211" y2="216"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="221" y2="226"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="231" y2="236"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="241" y2="246"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="251" y2="256"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="261" y2="266"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="271" y2="276"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="281" y2="286"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="291" y2="296"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="301" y2="306"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="311" y2="316"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="321" y2="326"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="331" y2="336"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="341" y2="346"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="351" y2="356"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="361" y2="366"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="371" y2="376"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="381" y2="386"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="391" y2="396"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="401" y2="406"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="411" y2="416"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="421" y2="426"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="431" y2="436"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="710" x2="710" y1="441" y2="443"/>
+<rect fill="#ffffff" height="332" stroke="#ffffff" stroke-width="1" width="20" x="700" y="111"/>
+<rect fill="none" height="332" stroke="#000000" stroke-width="1" width="20" x="700" y="111"/>
+<rect fill="#ffffff" height="50" stroke="#ffffff" stroke-width="1" width="128" x="646" y="62"/>
+<rect fill="none" height="50" stroke="#000000" stroke-width="1" width="128" x="646" y="62"/>
+<text font-family="Dialog" font-size="12" x="699" y="75">
+:Pic</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="111" y2="116"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="121" y2="126"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="131" y2="136"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="141" y2="146"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="151" y2="156"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="161" y2="166"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="171" y2="176"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="181" y2="186"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="191" y2="196"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="201" y2="206"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="211" y2="216"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="221" y2="226"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="231" y2="236"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="241" y2="246"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="251" y2="256"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="261" y2="266"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="271" y2="276"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="281" y2="286"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="291" y2="296"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="301" y2="306"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="311" y2="316"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="321" y2="326"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="331" y2="336"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="341" y2="346"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="351" y2="356"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="361" y2="366"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="371" y2="376"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="381" y2="386"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="391" y2="396"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="401" y2="406"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="411" y2="416"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="421" y2="426"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="431" y2="436"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="497" y1="441" y2="443"/>
+<rect fill="#ffffff" height="332" stroke="#ffffff" stroke-width="1" width="20" x="487" y="111"/>
+<rect fill="none" height="332" stroke="#000000" stroke-width="1" width="20" x="487" y="111"/>
+<rect fill="#ffffff" height="50" stroke="#ffffff" stroke-width="1" width="150" x="422" y="62"/>
+<rect fill="none" height="50" stroke="#000000" stroke-width="1" width="150" x="422" y="62"/>
+<text font-family="Dialog" font-size="12" x="448" y="75">
+:InteractionTool</text>
+<polyline fill="none" points="291,158 487,158" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="475" x2="487" y1="165" y2="158"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="475" x2="487" y1="151" y2="158"/>
+<text font-family="Dialog" font-size="12" x="343" y="153">
+getPicture()</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="487" x2="482" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="477" x2="472" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="467" x2="462" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="457" x2="452" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="447" x2="442" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="437" x2="432" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="427" x2="422" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="417" x2="412" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="407" x2="402" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="397" x2="392" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="387" x2="382" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="377" x2="372" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="367" x2="362" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="357" x2="352" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="347" x2="342" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="337" x2="332" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="327" x2="322" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="317" x2="312" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="307" x2="302" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="297" x2="292" y1="214" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="303" x2="291" y1="207" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="303" x2="291" y1="221" y2="214"/>
+<text font-family="Dialog" font-size="12" x="345" y="209">
+picture()</text>
+<polyline fill="none" points="291,270 700,270" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="688" x2="700" y1="277" y2="270"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="688" x2="700" y1="263" y2="270"/>
+<text font-family="Dialog" font-size="12" x="451" y="265">
+makeShaped()</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="700" x2="695" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="690" x2="685" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="680" x2="675" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="670" x2="665" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="660" x2="655" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="650" x2="645" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="640" x2="635" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="630" x2="625" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="620" x2="615" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="610" x2="605" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="600" x2="595" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="590" x2="585" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="580" x2="575" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="570" x2="565" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="560" x2="555" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="550" x2="545" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="540" x2="535" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="530" x2="525" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="520" x2="515" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="510" x2="505" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="500" x2="495" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="490" x2="485" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="480" x2="475" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="470" x2="465" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="460" x2="455" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="450" x2="445" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="440" x2="435" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="430" x2="425" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="420" x2="415" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="410" x2="405" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="400" x2="395" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="390" x2="385" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="380" x2="375" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="370" x2="365" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="360" x2="355" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="350" x2="345" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="340" x2="335" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="330" x2="325" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="320" x2="315" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="310" x2="305" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="300" x2="295" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="303" x2="291" y1="343" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="303" x2="291" y1="357" y2="350"/>
+<polygon fill="#ffffff" points="126,14 198,14 208,24 208,53 126,53 126,14" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="126,14 198,14 208,24 208,53 126,53 126,14" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="198,14 208,24 198,24 198,14" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="198,14 208,24 198,24 198,14" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="129" y="29">
+IntelliPhoto</text>
+<polygon fill="#ffffff" points="14,102 91,102 101,112 101,160 14,160 14,102" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="14,102 91,102 101,112 101,160 14,160 14,102" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="91,102 101,112 91,112 91,102" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="91,102 101,112 91,112 91,102" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="17" y="117">
+anonymous</text>
+<text font-family="Dialog" font-size="12" x="17" y="132">
+User</text>
+<polygon fill="#ffffff" points="14,358 91,358 101,368 101,416 14,416 14,358" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="14,358 91,358 101,368 101,416 14,416 14,358" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="91,358 101,368 91,368 91,358" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="91,358 101,368 91,368 91,358" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="17" y="373">
+anonymous</text>
+<text font-family="Dialog" font-size="12" x="17" y="388">
+user</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="270" x2="102" y1="390" y2="390"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="270" x2="102" y1="134" y2="134"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="270" x2="254" y1="134" y2="118"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="270" x2="254" y1="134" y2="150"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="102" x2="118" y1="390" y2="406"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="102" x2="118" y1="390" y2="374"/>
+</svg>
diff --git a/SE_Gr3/documentation/NewLayerSD.svg b/SE_Gr3/documentation/NewLayerSD.svg
new file mode 100755
index 0000000000000000000000000000000000000000..eceaeebcf3de9e2f2c2a9fb0653014ed1a4d39a1
--- /dev/null
+++ b/SE_Gr3/documentation/NewLayerSD.svg
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg height="684" version="1.1" width="1284" xmlns="http://www.w3.org/2000/svg">
+<rect fill="#ffffff" height="656" stroke="#ffffff" stroke-width="1" width="1144" x="126" y="14"/>
+<rect fill="none" height="656" stroke="#000000" stroke-width="1" width="1144" x="126" y="14"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="119" y2="124"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="129" y2="134"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="139" y2="144"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="149" y2="154"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="159" y2="164"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="169" y2="174"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="179" y2="184"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="189" y2="194"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="199" y2="204"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="209" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="219" y2="224"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="229" y2="234"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="239" y2="244"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="249" y2="254"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="259" y2="264"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="269" y2="274"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="279" y2="284"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="289" y2="294"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="299" y2="304"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="309" y2="314"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="319" y2="324"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="329" y2="334"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="339" y2="344"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="349" y2="354"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="359" y2="364"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="369" y2="374"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="379" y2="384"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="389" y2="394"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="399" y2="404"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="409" y2="414"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="419" y2="424"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="429" y2="434"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="439" y2="444"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="449" y2="454"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="459" y2="464"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="469" y2="474"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="479" y2="484"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="489" y2="494"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="499" y2="504"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="509" y2="514"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="519" y2="524"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="529" y2="534"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="539" y2="544"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="549" y2="554"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="559" y2="564"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="569" y2="574"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="579" y2="584"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="589" y2="594"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="599" y2="604"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="609" y2="614"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="282" x2="282" y1="619" y2="620"/>
+<rect fill="#ffffff" height="501" stroke="#ffffff" stroke-width="1" width="20" x="272" y="119"/>
+<rect fill="none" height="501" stroke="#000000" stroke-width="1" width="20" x="272" y="119"/>
+<rect fill="#ffffff" height="50" stroke="#ffffff" stroke-width="1" width="152" x="206" y="70"/>
+<rect fill="none" height="50" stroke="#000000" stroke-width="1" width="152" x="206" y="70"/>
+<text font-family="Dialog" font-size="12" x="235" y="83">
+:NewLayerDock</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="119" y2="124"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="129" y2="134"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="139" y2="144"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="149" y2="154"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="159" y2="164"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="169" y2="174"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="179" y2="184"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="189" y2="194"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="199" y2="204"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="209" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="219" y2="224"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="229" y2="234"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="239" y2="244"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="249" y2="254"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="259" y2="264"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="269" y2="274"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="279" y2="284"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="289" y2="294"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="299" y2="304"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="309" y2="314"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="319" y2="324"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="329" y2="334"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="339" y2="344"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="349" y2="354"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="359" y2="364"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="369" y2="374"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="379" y2="384"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="389" y2="394"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="399" y2="404"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="409" y2="414"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="419" y2="424"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="429" y2="434"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="439" y2="444"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="449" y2="454"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="459" y2="464"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="469" y2="474"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="479" y2="484"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="489" y2="494"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="499" y2="504"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="509" y2="514"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="519" y2="524"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="529" y2="534"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="539" y2="544"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="549" y2="554"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="559" y2="564"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="569" y2="574"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="579" y2="584"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="589" y2="594"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="599" y2="604"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="505" x2="505" y1="609" y2="614"/>
+<rect fill="#ffffff" height="500" stroke="#ffffff" stroke-width="1" width="20" x="495" y="119"/>
+<rect fill="none" height="500" stroke="#000000" stroke-width="1" width="20" x="495" y="119"/>
+<rect fill="#ffffff" height="50" stroke="#ffffff" stroke-width="1" width="150" x="430" y="70"/>
+<rect fill="none" height="50" stroke="#000000" stroke-width="1" width="150" x="430" y="70"/>
+<text font-family="Dialog" font-size="12" x="456" y="83">
+:InteractionTool</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="119" y2="124"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="129" y2="134"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="139" y2="144"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="149" y2="154"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="159" y2="164"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="169" y2="174"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="179" y2="184"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="189" y2="194"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="199" y2="204"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="209" y2="214"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="219" y2="224"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="229" y2="234"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="239" y2="244"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="249" y2="254"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="259" y2="264"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="269" y2="274"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="279" y2="284"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="289" y2="294"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="299" y2="304"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="309" y2="314"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="319" y2="324"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="329" y2="334"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="339" y2="344"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="349" y2="354"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="359" y2="364"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="369" y2="374"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="379" y2="384"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="389" y2="394"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="399" y2="404"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="409" y2="414"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="419" y2="424"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="429" y2="434"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="439" y2="444"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="449" y2="454"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="459" y2="464"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="469" y2="474"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="479" y2="484"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="489" y2="494"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="499" y2="504"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="509" y2="514"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="519" y2="524"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="529" y2="534"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="539" y2="544"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="549" y2="554"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="559" y2="564"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="569" y2="574"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="579" y2="584"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="589" y2="594"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="599" y2="604"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="609" y2="614"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="734" x2="734" y1="619" y2="620"/>
+<rect fill="#ffffff" height="501" stroke="#ffffff" stroke-width="1" width="20" x="724" y="119"/>
+<rect fill="none" height="501" stroke="#000000" stroke-width="1" width="20" x="724" y="119"/>
+<rect fill="#ffffff" height="50" stroke="#ffffff" stroke-width="1" width="144" x="662" y="70"/>
+<rect fill="none" height="50" stroke="#000000" stroke-width="1" width="144" x="662" y="70"/>
+<text font-family="Dialog" font-size="12" x="679" y="83">
+:ManipulationTool</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="238" y2="243"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="248" y2="253"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="258" y2="263"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="268" y2="273"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="278" y2="283"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="288" y2="293"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="298" y2="303"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="308" y2="313"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="318" y2="323"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="328" y2="333"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="338" y2="343"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="348" y2="353"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="358" y2="363"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="368" y2="373"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="378" y2="383"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="388" y2="393"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="398" y2="403"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="408" y2="413"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="418" y2="423"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="428" y2="433"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="438" y2="443"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="448" y2="453"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="458" y2="463"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="941" x2="941" y1="468" y2="473"/>
+<rect fill="#ffffff" height="240" stroke="#ffffff" stroke-width="1" width="20" x="931" y="238"/>
+<rect fill="none" height="240" stroke="#000000" stroke-width="1" width="20" x="931" y="238"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="931" x2="951" y1="478" y2="498"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="931" x2="951" y1="498" y2="478"/>
+<rect fill="#ffffff" height="50" stroke="#ffffff" stroke-width="1" width="142" x="870" y="189"/>
+<rect fill="none" height="50" stroke="#000000" stroke-width="1" width="142" x="870" y="189"/>
+<text font-family="Dialog" font-size="12" x="896" y="202">
+:NewLayerTool</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="310" y2="315"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="320" y2="325"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="330" y2="335"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="340" y2="345"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="350" y2="355"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="360" y2="365"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="370" y2="375"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="380" y2="385"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1137" x2="1137" y1="390" y2="395"/>
+<rect fill="#ffffff" height="88" stroke="#ffffff" stroke-width="1" width="20" x="1127" y="310"/>
+<rect fill="none" height="88" stroke="#000000" stroke-width="1" width="20" x="1127" y="310"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1127" x2="1147" y1="398" y2="418"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1127" x2="1147" y1="418" y2="398"/>
+<rect fill="#ffffff" height="50" stroke="#ffffff" stroke-width="1" width="150" x="1062" y="261"/>
+<rect fill="none" height="50" stroke="#000000" stroke-width="1" width="150" x="1062" y="261"/>
+<text font-family="Dialog" font-size="12" x="1088" y="274">
+:FloydSteinberg</text>
+<polyline fill="none" points="292,158 495,158" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="483" x2="495" y1="165" y2="158"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="483" x2="495" y1="151" y2="158"/>
+<text font-family="Dialog" font-size="12" x="347" y="153">
+useTool (toolparam)</text>
+<polyline fill="none" points="515,190 724,190" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="712" x2="724" y1="197" y2="190"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="712" x2="724" y1="183" y2="190"/>
+<text font-family="Dialog" font-size="12" x="573" y="185">
+useTool (toolparam)</text>
+<polyline fill="none" points="744,214 870,214" stroke="#000000" stroke-width="1"/>
+<polygon fill="#000000" points="870,214 858,221 858,207" stroke="#000000" stroke-width="1"/>
+<polygon fill="none" points="870,214 858,221 858,207" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="763" y="209">
+create (Pciture)</text>
+<polyline fill="none" points="951,286 1062,286" stroke="#000000" stroke-width="1"/>
+<polygon fill="#000000" points="1062,286 1050,293 1050,279" stroke="#000000" stroke-width="1"/>
+<polygon fill="none" points="1062,286 1050,293 1050,279" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1127" x2="1122" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1117" x2="1112" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1107" x2="1102" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1097" x2="1092" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1087" x2="1082" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1077" x2="1072" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1067" x2="1062" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1057" x2="1052" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1047" x2="1042" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1037" x2="1032" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1027" x2="1022" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1017" x2="1012" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="1007" x2="1002" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="997" x2="992" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="987" x2="982" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="977" x2="972" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="967" x2="962" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="957" x2="952" y1="350" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="963" x2="951" y1="343" y2="350"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="963" x2="951" y1="357" y2="350"/>
+<polyline fill="none" points="951,398 1127,398" stroke="#000000" stroke-width="1"/>
+<polygon fill="#000000" points="1127,398 1115,405 1115,391" stroke="#000000" stroke-width="1"/>
+<polygon fill="none" points="1127,398 1115,405 1115,391" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="931" x2="926" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="921" x2="916" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="911" x2="906" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="901" x2="896" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="891" x2="886" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="881" x2="876" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="871" x2="866" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="861" x2="856" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="851" x2="846" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="841" x2="836" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="831" x2="826" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="821" x2="816" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="811" x2="806" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="801" x2="796" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="791" x2="786" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="781" x2="776" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="771" x2="766" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="761" x2="756" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="751" x2="746" y1="430" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="756" x2="744" y1="423" y2="430"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="756" x2="744" y1="437" y2="430"/>
+<polyline fill="none" points="744,478 931,478" stroke="#000000" stroke-width="1"/>
+<polygon fill="#000000" points="931,478 919,485 919,471" stroke="#000000" stroke-width="1"/>
+<polygon fill="none" points="931,478 919,485 919,471" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="724" x2="719" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="714" x2="709" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="704" x2="699" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="694" x2="689" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="684" x2="679" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="674" x2="669" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="664" x2="659" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="654" x2="649" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="644" x2="639" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="634" x2="629" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="624" x2="619" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="614" x2="609" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="604" x2="599" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="594" x2="589" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="584" x2="579" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="574" x2="569" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="564" x2="559" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="554" x2="549" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="544" x2="539" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="534" x2="529" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="524" x2="519" y1="502" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="527" x2="515" y1="495" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="527" x2="515" y1="509" y2="502"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="495" x2="490" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="485" x2="480" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="475" x2="470" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="465" x2="460" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="455" x2="450" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="445" x2="440" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="435" x2="430" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="425" x2="420" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="415" x2="410" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="405" x2="400" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="395" x2="390" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="385" x2="380" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="375" x2="370" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="365" x2="360" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="355" x2="350" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="345" x2="340" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="335" x2="330" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="325" x2="320" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="315" x2="310" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="305" x2="300" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="295" x2="292" y1="558" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="304" x2="292" y1="551" y2="558"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="304" x2="292" y1="565" y2="558"/>
+<polygon fill="#ffffff" points="126,14 198,14 208,24 208,49 126,49 126,14" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="126,14 198,14 208,24 208,49 126,49 126,14" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="198,14 208,24 198,24 198,14" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="198,14 208,24 198,24 198,14" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="129" y="29">
+IntelliPhoto</text>
+<polygon fill="#ffffff" points="22,110 101,110 111,120 111,160 22,160 22,110" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="22,110 101,110 111,120 111,160 22,160 22,110" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="101,110 111,120 101,120 101,110" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="101,110 111,120 101,120 101,110" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="25" y="125">
+anonymous </text>
+<text font-family="Dialog" font-size="12" x="25" y="140">
+caller</text>
+<polygon fill="#ffffff" points="14,566 89,566 99,576 99,616 14,616 14,566" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="14,566 89,566 99,576 99,616 14,616 14,566" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="89,566 99,576 89,576 89,566" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="89,566 99,576 89,576 89,566" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="17" y="581">
+anonymous</text>
+<text font-family="Dialog" font-size="12" x="17" y="596">
+caller</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="110" x2="270" y1="134" y2="134"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="270" x2="262" y1="134" y2="142"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="270" x2="262" y1="134" y2="126"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="102" x2="270" y1="590" y2="590"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="102" x2="118" y1="590" y2="606"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="102" x2="118" y1="590" y2="582"/>
+</svg>
diff --git a/SE_Gr3/documentation/PictureZD.svg b/SE_Gr3/documentation/PictureZD.svg
new file mode 100755
index 0000000000000000000000000000000000000000..209b867d953cf164a47c1ce4a9b9e57ea14560aa
--- /dev/null
+++ b/SE_Gr3/documentation/PictureZD.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg height="300" version="1.1" width="532" xmlns="http://www.w3.org/2000/svg">
+<rect fill="#00ff" height="272" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="504" x="14" y="14"/>
+<rect fill="#ffffff" height="272" rx="16" ry="16" stroke="#000000" stroke-width="1" width="504" x="14" y="14"/>
+<rect fill="#ffffff" height="270" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="502" x="15" y="15"/>
+<text font-family="Dialog" font-size="12" x="244" y="27">
+Picture</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="14" x2="517" y1="37" y2="37"/>
+<ellipse cx="46" cy="62" fill="#000000" rx="8.0" ry="8.0" stroke="#000000" stroke-width="1"/>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="70" x="134" y="46"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="70" x="134" y="46"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="68" x="135" y="47"/>
+<text font-family="Dialog" font-size="12" x="150" y="59">
+empty</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="134" x2="203" y1="69" y2="69"/>
+<polyline fill="none" points="54,62 134,62" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="122" x2="134" y1="69" y2="62"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="122" x2="134" y1="55" y2="62"/>
+<text font-family="Dialog" font-size="12" x="74" y="57">
+create</text>
+<rect fill="#00ff" height="168" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="332" x="166" y="110"/>
+<rect fill="#ffffff" height="168" rx="16" ry="16" stroke="#000000" stroke-width="1" width="332" x="166" y="110"/>
+<rect fill="#ffffff" height="166" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="330" x="167" y="111"/>
+<text font-family="Dialog" font-size="12" x="304" y="123">
+hasLayer</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="166" x2="497" y1="133" y2="133"/>
+<polyline fill="none" points="203,62 430,62 430,110" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="423" x2="430" y1="98" y2="110"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="437" x2="430" y1="98" y2="110"/>
+<text font-family="Dialog" font-size="12" x="305" y="55">
+addLayer</text>
+<polyline fill="none" points="166,206 110,206 110,166 166,166" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="154" x2="166" y1="173" y2="166"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="154" x2="166" y1="159" y2="166"/>
+<text font-family="Dialog" font-size="12" x="51" y="188">
+addLayer</text>
+<rect fill="#00ff" height="44" rx="16" ry="16" stroke="#00ff" stroke-width="1" width="70" x="342" y="166"/>
+<rect fill="#ffffff" height="44" rx="16" ry="16" stroke="#000000" stroke-width="1" width="70" x="342" y="166"/>
+<rect fill="#ffffff" height="42" rx="16" ry="16" stroke="#ffffff" stroke-width="1" width="68" x="343" y="167"/>
+<text font-family="Dialog" font-size="12" x="366" y="179">
+idle</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="342" x2="411" y1="189" y2="189"/>
+<ellipse cx="470" cy="174" fill="#000000" rx="8.0" ry="8.0" stroke="#000000" stroke-width="1"/>
+<polyline fill="none" points="462,174 411,174" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="423" x2="411" y1="167" y2="174"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="423" x2="411" y1="181" y2="174"/>
+<polyline fill="none" points="342,198 262,198 262,166 342,166" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="330" x2="342" y1="173" y2="166"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="330" x2="342" y1="159" y2="166"/>
+<text font-family="Dialog" font-size="12" x="193" y="187">
+moveLayer</text>
+<polyline fill="none" points="350,209 350,246 406,246 406,209" stroke="#000000" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="413" x2="406" y1="221" y2="209"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="399" x2="406" y1="221" y2="209"/>
+<text font-family="Dialog" font-size="12" x="337" y="264">
+makeShaped</text>
+</svg>
diff --git a/SE_Gr3/documentation/ProgManual.pdf b/SE_Gr3/documentation/ProgManual.pdf
new file mode 100755
index 0000000000000000000000000000000000000000..5b1467ef51ac7edcd9a10db5b249b660db49b92b
Binary files /dev/null and b/SE_Gr3/documentation/ProgManual.pdf differ
diff --git a/SE_Gr3/documentation/UseCaseGeneral.svg b/SE_Gr3/documentation/UseCaseGeneral.svg
new file mode 100755
index 0000000000000000000000000000000000000000..de6e3663aca390585c5d0940743b3a953b952463
--- /dev/null
+++ b/SE_Gr3/documentation/UseCaseGeneral.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg height="604" version="1.1" width="844" xmlns="http://www.w3.org/2000/svg">
+<rect fill="#ffffff" height="576" stroke="#ffffff" stroke-width="1" width="456" x="254" y="14"/>
+<rect fill="none" height="576" stroke="#000000" stroke-width="1" width="456" x="254" y="14"/>
+<text font-family="Dialog" font-size="12" x="82" y="106">
+Casual User</text>
+<ellipse cx="119" cy="55" fill="#000000" rx="8.0" ry="7.5" stroke="#000000" stroke-width="1"/>
+<ellipse cx="119" cy="55" fill="#ffffff" rx="7.0" ry="6.5" stroke="#ffffff" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="119" x2="119" y1="63" y2="78"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="109" x2="129" y1="68" y2="68"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="119" x2="114" y1="78" y2="93"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="119" x2="124" y1="78" y2="93"/>
+<polygon fill="#ffffff" points="414,14 489,14 499,24 499,49 414,49 414,14" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="414,14 489,14 499,24 499,49 414,49 414,14" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="489,14 499,24 489,24 489,14" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="489,14 499,24 489,24 489,14" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="417" y="29">
+IntelliPhoto</text>
+<text font-family="Dialog" font-size="12" x="754" y="194">
+Einsteiger</text>
+<ellipse cx="785" cy="143" fill="#000000" rx="8.0" ry="7.5" stroke="#000000" stroke-width="1"/>
+<ellipse cx="785" cy="143" fill="#ffffff" rx="7.0" ry="6.5" stroke="#ffffff" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="785" x2="785" y1="151" y2="166"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="775" x2="795" y1="156" y2="156"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="785" x2="780" y1="166" y2="181"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="785" x2="790" y1="166" y2="181"/>
+<text font-family="Dialog" font-size="12" x="20" y="338">
+Freiberufliche Fotografen</text>
+<ellipse cx="99" cy="287" fill="#000000" rx="8.0" ry="7.5" stroke="#000000" stroke-width="1"/>
+<ellipse cx="99" cy="287" fill="#ffffff" rx="7.0" ry="6.5" stroke="#ffffff" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="99" x2="99" y1="295" y2="310"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="89" x2="109" y1="300" y2="300"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="99" x2="94" y1="310" y2="325"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="99" x2="104" y1="310" y2="325"/>
+<text font-family="Dialog" font-size="12" x="754" y="402">
+3D-Künstler</text>
+<ellipse cx="790" cy="351" fill="#000000" rx="8.0" ry="7.5" stroke="#000000" stroke-width="1"/>
+<ellipse cx="790" cy="351" fill="#ffffff" rx="7.0" ry="6.5" stroke="#ffffff" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="790" x2="790" y1="359" y2="374"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="780" x2="800" y1="364" y2="364"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="790" x2="785" y1="374" y2="389"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="790" x2="795" y1="374" y2="389"/>
+<ellipse cx="431" cy="195" fill="#000000" rx="57.0" ry="21.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="431" cy="195" fill="#ffffff" rx="56.0" ry="20.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="408" y="196">
+Drehen</text>
+<ellipse cx="463" cy="96" fill="#000000" rx="81.0" ry="26.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="463" cy="96" fill="#ffffff" rx="80.0" ry="25.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="395" y="97">
+Zusammenschneiden</text>
+<ellipse cx="446" cy="280" fill="#000000" rx="80.0" ry="26.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="446" cy="280" fill="#ffffff" rx="79.0" ry="25.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="379" y="281">
+Ändern Bildauflösung</text>
+<ellipse cx="471" cy="355" fill="#000000" rx="57.0" ry="21.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="471" cy="355" fill="#ffffff" rx="56.0" ry="20.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="432" y="356">
+Bildretusche</text>
+<ellipse cx="474" cy="439" fill="#000000" rx="76.0" ry="25.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="474" cy="439" fill="#ffffff" rx="75.0" ry="24.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="412" y="440">
+Korrekturwerkzeuge</text>
+<ellipse cx="494" cy="524" fill="#000000" rx="64.0" ry="22.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="494" cy="524" fill="#ffffff" rx="63.0" ry="21.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="444" y="525">
+3D-Schnittstelle</text>
+<ellipse cx="434" cy="147" fill="#000000" rx="60.0" ry="21.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="434" cy="147" fill="#ffffff" rx="59.0" ry="20.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="389" y="148">
+Layerstrucktur</text>
+<polyline fill="none" points="537,425 742,382 526,360" stroke="#000000" stroke-width="1"/>
+<polyline fill="none" points="129,68 384,89" stroke="#000000" stroke-width="1"/>
+<ellipse cx="256" cy="77" fill="#000000" rx="0.5" ry="0.5" stroke="#000000" stroke-width="1"/>
+<ellipse cx="257" cy="78" fill="#ffffff" rx="-0.5" ry="-0.5" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="385,134 134,70 393,179" stroke="#000000" stroke-width="1"/>
+<ellipse cx="144" cy="73" fill="#000000" rx="0.5" ry="0.5" stroke="#000000" stroke-width="1"/>
+<ellipse cx="145" cy="74" fill="#ffffff" rx="-0.5" ry="-0.5" stroke="#ffffff" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="134" x2="374" y1="70" y2="270"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="134" x2="422" y1="78" y2="358"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="118" x2="422" y1="318" y2="358"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="118" x2="414" y1="318" y2="422"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="542" x2="766" y1="102" y2="182"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="486" x2="766" y1="198" y2="182"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="526" x2="766" y1="278" y2="182"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="526" x2="758" y1="350" y2="182"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="382" x2="118" y1="158" y2="318"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="486" x2="742" y1="158" y2="382"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="518" x2="742" y1="502" y2="382"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="494" x2="766" y1="142" y2="182"/>
+</svg>
diff --git a/SE_Gr3/documentation/UseCaseSpezial.svg b/SE_Gr3/documentation/UseCaseSpezial.svg
new file mode 100755
index 0000000000000000000000000000000000000000..f2a5ca8f42101ed8c47477742c94ec95ec01dde8
--- /dev/null
+++ b/SE_Gr3/documentation/UseCaseSpezial.svg
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg height="548" version="1.1" width="988" xmlns="http://www.w3.org/2000/svg">
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="556" x2="556" y1="50" y2="54"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="557" x2="558" y1="59" y2="64"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="559" x2="559" y1="69" y2="74"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="560" x2="561" y1="79" y2="84"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="562" x2="562" y1="89" y2="94"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="563" x2="564" y1="99" y2="104"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="565" x2="565" y1="109" y2="114"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="566" x2="567" y1="119" y2="124"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="568" x2="568" y1="129" y2="134"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="569" x2="570" y1="139" y2="144"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="571" x2="571" y1="149" y2="153"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="572" x2="573" y1="158" y2="163"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="574" x2="574" y1="168" y2="173"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="575" x2="576" y1="178" y2="183"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="577" x2="577" y1="188" y2="193"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="578" x2="579" y1="198" y2="203"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="580" x2="580" y1="208" y2="213"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="581" x2="582" y1="218" y2="223"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="583" x2="583" y1="228" y2="233"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="584" x2="585" y1="238" y2="243"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="586" x2="586" y1="248" y2="253"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="587" x2="588" y1="257" y2="262"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="589" x2="590" y1="267" y2="272"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="590" x2="591" y1="277" y2="282"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="592" x2="593" y1="287" y2="292"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="593" x2="594" y1="297" y2="302"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="595" x2="596" y1="307" y2="312"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="596" x2="597" y1="317" y2="322"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="598" x2="599" y1="327" y2="332"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="599" x2="600" y1="337" y2="342"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="601" x2="602" y1="347" y2="352"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="602" x2="603" y1="357" y2="358"/>
+<text font-family="Dialog" font-size="12" x="18" y="354">
+Friberufliche Fotografen</text>
+<ellipse cx="93" cy="303" fill="#000000" rx="8.0" ry="7.5" stroke="#000000" stroke-width="1"/>
+<ellipse cx="93" cy="303" fill="#ffffff" rx="7.0" ry="6.5" stroke="#ffffff" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="93" x2="93" y1="311" y2="326"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="83" x2="103" y1="316" y2="316"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="93" x2="88" y1="326" y2="341"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="93" x2="98" y1="326" y2="341"/>
+<rect fill="#ffffff" height="520" stroke="#ffffff" stroke-width="1" width="656" x="190" y="14"/>
+<rect fill="none" height="520" stroke="#000000" stroke-width="1" width="656" x="190" y="14"/>
+<text font-family="Dialog" font-size="12" x="898" y="362">
+3D-Künstler</text>
+<ellipse cx="934" cy="311" fill="#000000" rx="8.0" ry="7.5" stroke="#000000" stroke-width="1"/>
+<ellipse cx="934" cy="311" fill="#ffffff" rx="7.0" ry="6.5" stroke="#ffffff" stroke-width="1"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="934" x2="934" y1="319" y2="334"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="924" x2="944" y1="324" y2="324"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="934" x2="929" y1="334" y2="349"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="934" x2="939" y1="334" y2="349"/>
+<ellipse cx="514" cy="247" fill="#000000" rx="76.0" ry="25.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="514" cy="247" fill="#ffffff" rx="75.0" ry="24.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="452" y="248">
+Korrekturwerkzeuge</text>
+<ellipse cx="607" cy="379" fill="#000000" rx="57.0" ry="21.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="607" cy="379" fill="#ffffff" rx="56.0" ry="20.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="568" y="380">
+3D-Interface</text>
+<polygon fill="#ffffff" points="470,14 545,14 555,24 555,49 470,49 470,14" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="470,14 545,14 555,24 555,49 470,49 470,14" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="545,14 555,24 545,24 545,14" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="545,14 555,24 545,24 545,14" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="473" y="29">
+IntelliPhoto</text>
+<ellipse cx="517" cy="86" fill="#000000" rx="71.0" ry="24.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="517" cy="86" fill="#ffffff" rx="70.0" ry="23.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="460" y="87">
+Helligkeit/Kontrast</text>
+<ellipse cx="693" cy="206" fill="#000000" rx="71.0" ry="24.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="693" cy="206" fill="#ffffff" rx="70.0" ry="23.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="636" y="207">
+Farbton/Sättigung</text>
+<ellipse cx="293" cy="198" fill="#000000" rx="71.0" ry="24.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="293" cy="198" fill="#ffffff" rx="70.0" ry="23.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="236" y="199">
+Gradiationskurven</text>
+<ellipse cx="375" cy="123" fill="#000000" rx="57.0" ry="21.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="375" cy="123" fill="#ffffff" rx="56.0" ry="20.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="356" y="124">
+Pinsel</text>
+<ellipse cx="565" cy="486" fill="#000000" rx="71.0" ry="24.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="565" cy="486" fill="#ffffff" rx="70.0" ry="23.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="508" y="487">
+Import 3D-Dateien</text>
+<ellipse cx="726" cy="439" fill="#000000" rx="80.0" ry="25.0" stroke="#000000" stroke-width="1"/>
+<ellipse cx="726" cy="439" fill="#ffffff" rx="79.0" ry="24.0" stroke="#ffffff" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="660" y="440">
+3D-Objekte Erzeugen</text>
+<polyline fill="none" points="352,210 451,232" stroke="#000000" stroke-width="1"/>
+<polygon fill="#ffffff" points="451,232 437,236 440,222" stroke="#ffffff" stroke-width="1"/>
+<polygon fill="none" points="451,232 437,236 440,222" stroke="#000000" stroke-width="1"/>
+<polyline fill="none" points="396,142 487,223" stroke="#000000" stroke-width="1"/>
+<polygon fill="#ffffff" points="487,223 473,220 482,209" stroke="#ffffff" stroke-width="1"/>
+<polygon fill="none" points="487,223 473,220 482,209" stroke="#000000" stroke-width="1"/>
+<polyline fill="none" points="515,109 515,222" stroke="#000000" stroke-width="1"/>
+<polygon fill="#ffffff" points="515,222 508,210 522,210" stroke="#ffffff" stroke-width="1"/>
+<polygon fill="none" points="515,222 508,210 522,210" stroke="#000000" stroke-width="1"/>
+<polyline fill="none" points="633,219 575,232" stroke="#000000" stroke-width="1"/>
+<polygon fill="#ffffff" points="575,232 585,222 588,236" stroke="#ffffff" stroke-width="1"/>
+<polygon fill="none" points="575,232 585,222 588,236" stroke="#000000" stroke-width="1"/>
+<polyline fill="none" points="574,462 598,399" stroke="#000000" stroke-width="1"/>
+<polygon fill="#ffffff" points="598,399 600,412 587,407" stroke="#ffffff" stroke-width="1"/>
+<polygon fill="none" points="598,399 600,412 587,407" stroke="#000000" stroke-width="1"/>
+<polyline fill="none" points="684,417 641,395" stroke="#000000" stroke-width="1"/>
+<polygon fill="#ffffff" points="641,395 654,394 648,406" stroke="#ffffff" stroke-width="1"/>
+<polygon fill="none" points="641,395 654,394 648,406" stroke="#000000" stroke-width="1"/>
+<polygon fill="#ffffff" points="646,38 796,38 806,48 806,103 646,103 646,38" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="646,38 796,38 806,48 806,103 646,103 646,38" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="796,38 806,48 796,48 796,38" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="796,38 806,48 796,48 796,38" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="649" y="53">
+1.IntelliPhoto starten</text>
+<text font-family="Dialog" font-size="12" x="649" y="68">
+2. Bild auswählen</text>
+<text font-family="Dialog" font-size="12" x="649" y="83">
+3. Werkzeug wählen</text>
+<text font-family="Dialog" font-size="12" x="649" y="98">
+4. Werkzeug anwenden</text>
+<polygon fill="#ffffff" points="230,414 399,414 409,424 409,509 230,509 230,414" stroke="#ffffff" stroke-width="1"/>
+<polyline fill="none" points="230,414 399,414 409,424 409,509 230,509 230,414" stroke="#000000" stroke-width="1"/>
+<polygon fill="#b2b2b2" points="399,414 409,424 399,424 399,414" stroke="#b2b2b2" stroke-width="1"/>
+<polyline fill="none" points="399,414 409,424 399,424 399,414" stroke="#000000" stroke-width="1"/>
+<text font-family="Dialog" font-size="12" x="233" y="429">
+1. IntelliPhoto starten</text>
+<text font-family="Dialog" font-size="12" x="233" y="444">
+2. 3D-Interface auswählen</text>
+<text font-family="Dialog" font-size="12" x="233" y="459">
+3. Bild laden/erzeugen</text>
+<text font-family="Dialog" font-size="12" x="233" y="474">
+4. Funktion wählen</text>
+<text font-family="Dialog" font-size="12" x="233" y="489">
+4. Funktion Anwenden</text>
+<text font-family="Dialog" font-size="12" x="233" y="504">
+5.Bild exportieren</text>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="409" x2="413" y1="414" y2="414"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="418" x2="423" y1="413" y2="412"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="428" x2="433" y1="411" y2="410"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="438" x2="443" y1="409" y2="408"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="448" x2="453" y1="407" y2="407"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="458" x2="463" y1="406" y2="405"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="468" x2="473" y1="404" y2="403"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="478" x2="482" y1="402" y2="401"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="487" x2="492" y1="400" y2="400"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="497" x2="502" y1="399" y2="398"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="507" x2="512" y1="397" y2="396"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="517" x2="522" y1="395" y2="394"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="527" x2="532" y1="393" y2="393"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="537" x2="542" y1="392" y2="391"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="547" x2="552" y1="390" y2="389"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="544" x2="555" y1="396" y2="388"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="541" x2="555" y1="383" y2="388"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="646" x2="643" y1="103" y2="106"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="640" x2="636" y1="110" y2="114"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="633" x2="629" y1="117" y2="121"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="626" x2="623" y1="125" y2="128"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="619" x2="616" y1="132" y2="136"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="612" x2="609" y1="139" y2="143"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="606" x2="602" y1="147" y2="150"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="599" x2="595" y1="154" y2="158"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="592" x2="589" y1="161" y2="165"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="585" x2="582" y1="169" y2="172"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="578" x2="575" y1="176" y2="180"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="572" x2="568" y1="183" y2="187"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="565" x2="561" y1="191" y2="195"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="558" x2="555" y1="198" y2="202"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="551" x2="548" y1="206" y2="209"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="544" x2="541" y1="213" y2="217"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="538" x2="535" y1="220" y2="223"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="538" x2="535" y1="209" y2="223"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="548" x2="535" y1="218" y2="223"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="118" x2="438" y1="326" y2="254"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="582" x2="902" y1="254" y2="326"/>
+<line fill="#000000" stroke="#000000" stroke-width="1" x1="662" x2="902" y1="374" y2="326"/>
+</svg>
diff --git a/SE_Gr3/documentation/UserManual.pdf b/SE_Gr3/documentation/UserManual.pdf
new file mode 100755
index 0000000000000000000000000000000000000000..70c2936ce170e16ab820b43c611e9e7db7aed793
Binary files /dev/null and b/SE_Gr3/documentation/UserManual.pdf differ
diff --git a/SE_Gr3/executable/intelliPhoto b/SE_Gr3/executable/intelliPhoto
new file mode 100755
index 0000000000000000000000000000000000000000..cdb22d09dd0d2fe6ad59a0f33f3f916f4aaab581
Binary files /dev/null and b/SE_Gr3/executable/intelliPhoto differ